barsa-calendar 2.3.103 → 2.3.107
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"barsa-calendar.mjs","sources":["../../../projects/barsa-calendar/src/lib/models.ts","../../../projects/barsa-calendar/src/lib/services/calendar.service.ts","../../../projects/barsa-calendar/src/lib/days-in-week.pipe.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.html","../../../projects/barsa-calendar/src/lib/constants.ts","../../../projects/barsa-calendar/src/lib/event-date.pipe.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.html","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-time.pipe.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.html","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.ts","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.html","../../../projects/barsa-calendar/src/lib/equal-date.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.html","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.ts","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.html","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.ts","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.html","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.ts","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.html","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.ts","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.html","../../../projects/barsa-calendar/src/lib/from-to-time.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.html","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.html","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.html","../../../projects/barsa-calendar/src/lib/barsa-calendar.module.ts","../../../projects/barsa-calendar/src/barsa-calendar.ts"],"sourcesContent":["import { DateInfo, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\n\nexport type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly';\nexport type CalendarType = 'Local' | 'CalDAV' | 'Exchange' | 'Subscription' | 'Birthday' | 'Mail';\n\ninterface Recurrence {\n frequency: RecurrenceFrequency;\n /**\n * Default 1 (every <RecurrenceFrequency>).\n */\n interval: number;\n endDate?: Date;\n count?: number;\n}\n\nexport interface Calendar {\n id: string;\n name: string;\n /**\n * iOS: same as 'name'\n * Android: usually the same as 'name' as well\n */\n displayName?: string;\n /**\n * iOS only\n */\n type?: CalendarType;\n}\nexport interface Reminder {\n minutes: number;\n}\nexport interface Attendee {\n name: string;\n url?: string;\n /**\n * One of: \"Unknown\", \"Pending\", \"Accepted\", \"Declined\", \"Tentative\", \"Delegated\", \"Completed\", \"In Process\"\n */\n status: string;\n /**\n * One of: \"Unknown\", \"Required\", \"Optional\", \"Chair\", \"Non Participant\"\n */\n role: string;\n /**\n * One of: \"Unknown\", \"Person\", \"Room\", \"Resource\", \"Group\"\n */\n type: string;\n}\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n location: string;\n notes: string;\n url?: string;\n startDate: Date;\n endDate: Date;\n allDay: boolean;\n calendar: Calendar;\n recurrence?: Recurrence;\n reminders?: Array<Reminder>;\n /**\n * iOS only.\n */\n attendees?: Array<Attendee>;\n //\n days?: Date[];\n order: number;\n color?: string;\n repeat?: string;\n}\nexport type CalendarMode = 'month' | 'customMonth' | 'week' | 'day' | 'year' | 'list';\nexport enum DayStatus {\n Open,\n Completed,\n Failed\n}\nexport class CalendarMonthInfo {\n dateInfo: DateInfo;\n days: Day[];\n tasks: any[];\n selectedWeek: number;\n weeksCount: number;\n id: string;\n get daysInWeek(): Day[] {\n const start = this.selectedWeek * 7;\n const days = this.days.slice(start, start + 7);\n return days;\n }\n}\n\nexport interface Day {\n [key: string]: any;\n index: number;\n momentOfDate: any;\n boxBound?: {\n data: CalendarMetaobjectDataModel;\n top: number;\n left: number;\n width: number;\n height: number;\n }[];\n dayInMonth: string;\n dayInWeek: number;\n month: number;\n year: number;\n dayName: string;\n date: Date;\n status: DayStatus;\n isToday: boolean;\n isInMonth: boolean;\n isEndOfMonth: boolean;\n isStartOfMonth: boolean;\n tasks: CalendarMetaobjectDataModel[];\n row: number;\n col: number;\n addingEventPoint1: number | null;\n addingEventPoint2: number | null;\n isAddingNewEvent: boolean;\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n DateService,\r\n getUniqueId,\r\n getDateService,\r\n DateInfo,\r\n MetaobjectDataModel,\r\n CalendarFields,\r\n CultureTypes,\r\n LogService\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day, DayStatus } from '../models';\r\nimport moment from 'moment/moment';\r\n\r\n@Injectable()\r\nexport class CalendarService implements OnDestroy {\r\n selected$: Observable<CalendarMonthInfo>;\r\n\r\n days$: Observable<Day[]>;\r\n mode$: Observable<CalendarMode>;\r\n weekModeDays$: Observable<Day[]>;\r\n calendars$: Observable<CalendarMonthInfo[]>;\r\n currentMonthIndex$: Observable<number>;\r\n today: Date;\r\n todayDay: Day | undefined;\r\n _dateService: DateService;\r\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\r\n private _todayMonthInfo: CalendarMonthInfo;\r\n private _calendarsSource = new BehaviorSubject<CalendarMonthInfo[]>([]);\r\n private _selectedSource: BehaviorSubject<CalendarMonthInfo>;\r\n private _modeSource = new BehaviorSubject<CalendarMode>('month');\r\n private _currentMonthIndexSource = new BehaviorSubject<number>(-1);\r\n private _weekModeDaysSource = new BehaviorSubject<Day[]>([]);\r\n private _daysSource = new BehaviorSubject<Day[]>([]);\r\n private _log = inject(LogService);\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy$.next();\r\n this._onDestroy$.complete();\r\n }\r\n\r\n get todayMonthInfo(): CalendarMonthInfo {\r\n return this._todayMonthInfo;\r\n }\r\n get selectedMonth(): CalendarMonthInfo {\r\n return this._selectedSource.getValue();\r\n }\r\n get calendars(): Array<CalendarMonthInfo> {\r\n return this._calendarsSource.getValue();\r\n }\r\n get weeksCount(): number {\r\n return this._daysSource.getValue().length / 7;\r\n }\r\n get days(): Array<Day> {\r\n return this._daysSource.getValue();\r\n }\r\n get Months(): string[] {\r\n return this._dateService.monthNames();\r\n }\r\n loadMonthByDate(value: Date): void {\r\n const monthInfo = this._dateService.getDateInfo(value);\r\n this.loadMonth(monthInfo);\r\n }\r\n setDays(days: Day[]): void {\r\n this._daysSource.next(days);\r\n }\r\n prepareWeek(monthInfo: CalendarMonthInfo, startIndex: number, daysCount: number): void {\r\n const startDays = monthInfo.days.slice(startIndex, startIndex + daysCount);\r\n this._weekModeDaysSource.next(startDays);\r\n }\r\n setSelected(selected: CalendarMonthInfo): void {\r\n this._selectedSource.next(selected);\r\n }\r\n weekDaysMin(): Array<string> {\r\n return this._dateService.weekdaysMin();\r\n }\r\n weekDays(): Array<string> {\r\n return this._dateService.weekDays();\r\n }\r\n gotoToday(): void {\r\n this.loadMonth(this._todayMonthInfo.dateInfo, 0);\r\n this.setMode(\r\n this._modeSource.getValue(),\r\n this._todayMonthInfo.days.find((c) => c.isToday),\r\n this._weekModeDaysSource.getValue().length\r\n );\r\n }\r\n rangeSelect(startDay: Day, endDay: Day, monthInfo: CalendarMonthInfo): void {\r\n const diff = endDay.index - startDay.index;\r\n if (diff < 7) {\r\n this.setMode('week', startDay, diff + 1);\r\n } else {\r\n const diff2 = diff + 1;\r\n this.setMode('customMonth');\r\n this.setMonth(monthInfo, startDay, diff2);\r\n }\r\n }\r\n setMonth(monthInfo: CalendarMonthInfo, startDay?: Day, diff: number = 0): void {\r\n if (startDay && diff > 0) {\r\n const startIndex = startDay.index;\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days.slice(startIndex, startIndex + diff));\r\n } else {\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days);\r\n // else if (mode === 'month') {\r\n // startDay = daysLoaded[0];\r\n // if (startDay) this.loadMonth(startDay.monthDateInfo);\r\n // }\r\n }\r\n }\r\n setMode(mode: CalendarMode, startDay?: Day, daysCount?: number): void {\r\n const oldMode = this._modeSource.getValue();\r\n this._modeSource.next(mode);\r\n if (mode === 'month') {\r\n this.setMonth(this.selectedMonth, startDay);\r\n return;\r\n } else if (mode === 'customMonth') {\r\n this.setMonth(this.selectedMonth, startDay, this.days.length);\r\n return;\r\n }\r\n const daysLoaded = this._weekModeDaysSource.getValue();\r\n daysCount = daysCount ?? (mode === 'week' ? 7 : 1);\r\n let startIndex = 0;\r\n if (!startDay) {\r\n if (mode === 'week' || mode === 'day') {\r\n if (oldMode === 'month') {\r\n {\r\n startDay = this.selectedMonth.days.find((c) => c.isToday);\r\n if (!startDay) {\r\n startDay = this.selectedMonth.days.find((c) => c.isStartOfMonth);\r\n }\r\n }\r\n } else if (oldMode === 'customMonth') {\r\n startDay = this.days[0];\r\n } else {\r\n startDay = daysLoaded[0];\r\n }\r\n }\r\n }\r\n if (startDay) {\r\n if (\r\n startDay.monthDateInfo.month !== this.selectedMonth.dateInfo.month ||\r\n startDay.monthDateInfo.year !== this.selectedMonth.dateInfo.year\r\n ) {\r\n this.loadMonth(startDay.monthDateInfo);\r\n }\r\n startIndex = this.selectedMonth.days.findIndex(\r\n (c) => c.month === startDay?.month && c.dayInMonth === startDay.dayInMonth\r\n );\r\n }\r\n this.prepareWeek(this._selectedSource.getValue(), startIndex, daysCount);\r\n }\r\n fillWeek(week: { [key: string]: any[] }, daysCount = 7): void {\r\n const arr: any[] = Object.values(week);\r\n arr.forEach(\r\n (\r\n element: {\r\n colSpan: number;\r\n event?: MetaobjectDataModel;\r\n opacity?: number;\r\n start?: Date;\r\n end?: Date;\r\n }[]\r\n ) => {\r\n for (const el of element) {\r\n const valueDate = el.end;\r\n if (valueDate && this._dateService.getMoment(valueDate).isBefore(this.today, 'day')) {\r\n el.opacity = 0.5;\r\n }\r\n }\r\n for (let i = element.length; i < daysCount; i++) {\r\n element.push({ colSpan: 1 });\r\n }\r\n }\r\n );\r\n }\r\n sortTasks(calendarTasks: MetaobjectDataModel[], calendarFields: CalendarFields): Array<MetaobjectDataModel> {\r\n const startDateField = calendarFields.StartDate;\r\n const endDateField = calendarFields.EndDate;\r\n calendarTasks.sort((taskA, taskB) => (taskA[startDateField] < taskB[startDateField] ? -1 : 1));\r\n calendarTasks.sort((taskA, taskB) => {\r\n const taskAStartDate = taskA[startDateField];\r\n const taskBStartDate = taskB[startDateField];\r\n const momentTaskAStartDate = this._dateService.getMoment(taskAStartDate);\r\n const momentTaskBStartDate = this._dateService.getMoment(taskBStartDate);\r\n if (momentTaskAStartDate.isSame(momentTaskBStartDate, 'day')) {\r\n const taskAEndDate = taskA[endDateField];\r\n const taskBEndDate = taskB[endDateField];\r\n const dayADiff = momentTaskAStartDate.diff(taskAEndDate, 'day');\r\n const dayBDiff = momentTaskBStartDate.diff(taskBEndDate, 'day');\r\n if (dayADiff > dayBDiff) {\r\n return 1;\r\n }\r\n if (dayADiff < dayBDiff) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n {\r\n return 0;\r\n }\r\n });\r\n return calendarTasks;\r\n }\r\n createWeekTask(\r\n days: Day[],\r\n moDataList: MetaobjectDataModel[],\r\n calendarFields: CalendarFields,\r\n taskHeight: number\r\n ): { [key: string]: any[] } {\r\n const week: { [key: string]: any[] } = {};\r\n days.forEach((day, dayIndex) => {\r\n let counter = 0;\r\n moDataList.forEach((event) => {\r\n const counterIndex = counter.toString();\r\n if (!week[counterIndex]) {\r\n week[counterIndex] = [];\r\n } else if (week[counterIndex].length > dayIndex) {\r\n counter++;\r\n return;\r\n }\r\n for (let m = week[counterIndex].length; m < dayIndex; m++) {\r\n week[counterIndex].push({ colSpan: 1 });\r\n }\r\n // agar week[counter] colspan ja dasht anjam gardad.\r\n const newTask: any = { colSpan: 1 };\r\n const momentDay = this._dateService.getMoment(day.date);\r\n const momentOfStartEvent = this._dateService.getMoment(event[calendarFields.StartDate]);\r\n const endDate = event[calendarFields.EndDate];\r\n const momentOfEndEvent = this._dateService.getMoment(endDate);\r\n const diff = Math.abs(momentOfStartEvent.diff(momentOfEndEvent, 'day'));\r\n if (diff === 0 && momentDay.isSame(momentOfStartEvent, 'day')) {\r\n newTask.colSpan = 1;\r\n const startMinuteTop = (event.$StartDateInfo.minutes * taskHeight) / 60;\r\n newTask.top = event.$StartDateInfo.hour * taskHeight + startMinuteTop;\r\n const endMinuteTop = (event.$EndDateInfo.minutes * taskHeight) / 60;\r\n newTask.height =\r\n (event.$EndDateInfo.hour - event.$StartDateInfo.hour) * taskHeight +\r\n endMinuteTop -\r\n startMinuteTop;\r\n newTask.event = event;\r\n newTask.enddayIsInRow = true;\r\n newTask.startdayIsInRow = true;\r\n newTask.isStartDay = true;\r\n newTask.isEndDay = true;\r\n newTask.start = newTask.end = day.date;\r\n newTask.inDay =\r\n event.$StartDateInfo.hour > 0 ||\r\n event.$StartDateInfo.minutes > 0 ||\r\n event.$EndDateInfo.hour > 0 ||\r\n event.$EndDateInfo.minutes > 0;\r\n week[counterIndex].splice(dayIndex, 0, newTask);\r\n day.tasks.push(newTask);\r\n counter++;\r\n } else {\r\n let diffFromEndOfEvent = 0;\r\n let diffFromStartOfEvent = 0;\r\n const isBetween =\r\n momentDay.isSameOrAfter(momentOfStartEvent, 'day') &&\r\n momentDay.isSameOrBefore(momentOfEndEvent, 'day');\r\n if (isBetween) {\r\n diffFromEndOfEvent = 0;\r\n if (diff === 0) {\r\n newTask.colSpan = 1;\r\n newTask.event = event;\r\n } else {\r\n diffFromEndOfEvent = Math.abs(momentDay.diff(momentOfEndEvent, 'day'));\r\n diffFromStartOfEvent = Math.abs(momentDay.diff(momentOfStartEvent, 'day'));\r\n const isStartDay = momentDay.isSame(momentOfStartEvent, 'day');\r\n const isEndDay = momentDay.isSame(momentOfEndEvent, 'day');\r\n let colSpan = diff;\r\n if (!isStartDay) {\r\n colSpan = diffFromEndOfEvent;\r\n } else {\r\n colSpan = diff + 1; // include the start\r\n }\r\n newTask.colSpan = this._calcColSpan(colSpan, dayIndex, days.length);\r\n newTask.isStartDay = isStartDay;\r\n newTask.isEndDay = isEndDay;\r\n newTask.isMiddle = !isStartDay && !isEndDay;\r\n newTask.event = event;\r\n }\r\n if (newTask.isStartDay || dayIndex === 0) {\r\n for (let span = 0; span < newTask.colSpan; span++) {\r\n const taskIndex = dayIndex + span;\r\n if (taskIndex > days.length - 1) {\r\n break;\r\n }\r\n const taskDayInfo = days[taskIndex];\r\n const taskInfo = {\r\n ...newTask,\r\n start: taskDayInfo.date,\r\n end: endDate,\r\n isStartDay: span === 0 ? newTask.isStartDay : null,\r\n startTask: event.$StartDayInfo,\r\n endTask: event.$EndDayInfo,\r\n startdayIsInRow: dayIndex - diffFromStartOfEvent > -1,\r\n enddayIsInRow: !!days[diffFromEndOfEvent],\r\n isMiddle:\r\n span === 0\r\n ? newTask.isMiddle\r\n : this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .isBetween(momentOfStartEvent, momentOfEndEvent, 'day'),\r\n isEndDay:\r\n span === 0\r\n ? newTask.isEndDay\r\n : Math.abs(\r\n this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .diff(momentOfEndEvent, 'day')\r\n ) <= 1,\r\n colSpan: span === 0 ? newTask.colSpan : null\r\n };\r\n week[counter.toString()].splice(taskIndex, 0, taskInfo);\r\n taskDayInfo.tasks.push(taskInfo);\r\n }\r\n counter++;\r\n }\r\n }\r\n }\r\n });\r\n day.tasks = day.tasks\r\n .map((t) => {\r\n t.positionCausedByOverlap = 0;\r\n return t;\r\n })\r\n .map((t) => {\r\n const tasksInDay = day.tasks.filter((innerT) => innerT.isStartDay && innerT.isEndDay);\r\n const overlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const endTime = moment(t.event.$EndDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return (\r\n (startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime)) ||\r\n endTime.isAfter(innerStartTime)\r\n );\r\n });\r\n t.countOfOverlaps = overlaps.length;\r\n const beforeOverlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime);\r\n });\r\n const index = beforeOverlaps.findIndex((innerT) => innerT.event.Id === t.event.Id);\r\n t.positionCausedByOverlap = index < 0 ? 0 : index;\r\n return t;\r\n });\r\n });\r\n return week;\r\n }\r\n loadNext(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadNextMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadNextWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n gotoMonth(_monthName: string, monthIndex: number): void {\r\n const selectedMonth = this.selectedMonth.dateInfo.month;\r\n const val = monthIndex - selectedMonth;\r\n this.loadMonth(this.selectedMonth.dateInfo, val);\r\n }\r\n gotoYear(year: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.year;\r\n const val = year - selectedYear;\r\n this.increaseYear(val);\r\n }\r\n loadNextYear(): void {\r\n this.increaseYear(1);\r\n }\r\n loadPrevYear(): void {\r\n this.increaseYear(-1);\r\n }\r\n increaseYear(value: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.moment.toDate();\r\n selectedYear.setFullYear(selectedYear.getFullYear() + value); // next year\r\n this.loadMonthByDate(selectedYear);\r\n }\r\n loadPrevious(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadPrevMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadPrevWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n loadMonth(dateInfo: DateInfo, addMonth: number = 0): CalendarMonthInfo {\r\n let loadedMonthDate = this._dateService.getMoment(dateInfo.date);\r\n if (addMonth > 0) {\r\n loadedMonthDate = this._dateService.addMonth(loadedMonthDate, addMonth);\r\n }\r\n if (addMonth < 0) {\r\n loadedMonthDate = this._dateService.subtractMonth(loadedMonthDate, Math.abs(addMonth));\r\n }\r\n let loadedCalendarMonthInfo = this.calendars.find((c) => c.dateInfo.moment.isSame(loadedMonthDate, 'day'));\r\n if (!loadedCalendarMonthInfo) {\r\n loadedCalendarMonthInfo = this.getMonthInfo(loadedMonthDate, this.today);\r\n }\r\n this.loadCalendarMonthInfo(loadedCalendarMonthInfo);\r\n return loadedCalendarMonthInfo;\r\n }\r\n loadCalendarMonthInfo(loadedCalendarMonthInfo: CalendarMonthInfo): void {\r\n const calendarsInfo = [...this.calendars];\r\n const exists = calendarsInfo.find(\r\n (c) =>\r\n c.dateInfo.year === loadedCalendarMonthInfo.dateInfo.year &&\r\n c.dateInfo.month === loadedCalendarMonthInfo.dateInfo.month\r\n );\r\n if (!exists) {\r\n calendarsInfo.push(loadedCalendarMonthInfo);\r\n this._calendarsSource.next(calendarsInfo);\r\n }\r\n this.setSelected(loadedCalendarMonthInfo);\r\n }\r\n addCalendarMonthInfo(calendarMonthInfo: CalendarMonthInfo): void {\r\n const newList = this.calendars;\r\n newList.push(calendarMonthInfo);\r\n this._calendarsSource.next(newList);\r\n }\r\n getNumber(value): number {\r\n const find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];\r\n const replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\r\n let replaceString = value;\r\n let regex;\r\n for (let i = 0; i < find.length; i++) {\r\n regex = new RegExp(find[i], 'g');\r\n replaceString = replaceString.replace(regex, replace[i]);\r\n }\r\n return Number(replaceString);\r\n }\r\n setCulture(culture: CultureTypes): void {\r\n this._dateService = getDateService(this._log, culture);\r\n this.days$ = this._daysSource.asObservable();\r\n this.mode$ = this._modeSource.asObservable();\r\n this.weekModeDays$ = this._weekModeDaysSource.asObservable();\r\n this.calendars$ = this._calendarsSource.asObservable();\r\n this.currentMonthIndex$ = this._currentMonthIndexSource.asObservable();\r\n this._initilize();\r\n this.setMode(this._modeSource.getValue());\r\n }\r\n private _initilize(): void {\r\n this.today = this._dateService.getMoment(new Date());\r\n const todayMonthInfo = this.getCalendarMonthInfo(new Date());\r\n this.todayDay = todayMonthInfo.days.find((c) => c.isToday);\r\n this._selectedSource = new BehaviorSubject<CalendarMonthInfo>(todayMonthInfo);\r\n this.selected$ = this._selectedSource.asObservable();\r\n this._calendarsSource.next([todayMonthInfo]);\r\n this.setDays(todayMonthInfo.days);\r\n this.setSelected(todayMonthInfo);\r\n this._currentMonthIndexSource.next(todayMonthInfo.dateInfo.month);\r\n this._todayMonthInfo = todayMonthInfo;\r\n this.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe();\r\n }\r\n private _calcColSpan(diff: number, dayIndex: number, maxColSpan: number): number {\r\n if (diff === 0) {\r\n return 2;\r\n }\r\n if (Math.floor(diff / maxColSpan) > 0) {\r\n return maxColSpan;\r\n }\r\n if (dayIndex + diff > maxColSpan) {\r\n return maxColSpan - dayIndex;\r\n }\r\n return diff;\r\n }\r\n private _loadNextMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = lastDayIndex > -1 ? monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount) : [];\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n if (newDays.length > 0) {\r\n lastDay = newDays[newDays.length - 1];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n let startPosition = 0;\r\n if (needCountDay < 42) {\r\n startPosition = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n if (startPosition === -1) {\r\n startPosition = 0;\r\n } else {\r\n startPosition++;\r\n }\r\n }\r\n const nextDays = nextMonth.days.slice(startPosition, startPosition + needCountDay);\r\n newDays = [...newDays, ...nextDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadNextWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount);\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n let lastNewDay = newDays[newDays.length - 1];\r\n if (!lastNewDay) {\r\n lastNewDay = lastDay;\r\n }\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n const lastDayIndex2 = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastNewDay.dayInMonth && c.month === lastNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n nextMonth.days.slice(lastDayIndex2 + 1, lastDayIndex2 + 1 + (daysCount - newDays.length))\r\n );\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n let newDays: Day[] = monthInfo.days.slice(\r\n firstDayIndex - daysCount > 0 ? firstDayIndex - daysCount : 0,\r\n firstDayIndex\r\n );\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n if (newDays.length > 0) {\r\n firstDay = newDays[0];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n let endPosition = prevMonth.days.length;\r\n if (needCountDay < 42) {\r\n endPosition = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n if (endPosition === -1) {\r\n endPosition = prevMonth.days.length;\r\n }\r\n }\r\n const prevDays = prevMonth.days.slice(endPosition - needCountDay, endPosition);\r\n newDays = [...prevDays, ...newDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n const partIndexPrev = firstDayIndex - daysCount;\r\n let newDays: Day[] = [];\r\n if (partIndexPrev < 0) {\r\n newDays = firstDayIndex - 1 >= 0 ? monthInfo.days.slice(0, firstDayIndex - 1) : [];\r\n } else {\r\n newDays = monthInfo.days.slice(firstDayIndex - daysCount, firstDayIndex);\r\n }\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n let firstNewDay = newDays[0];\r\n if (!firstNewDay) {\r\n firstNewDay = firstDay;\r\n }\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n const firstDayIndex2 = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstNewDay.dayInMonth && c.month === firstNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n prevMonth.days.slice(firstDayIndex2 - (daysCount - newDays.length), firstDayIndex2)\r\n );\r\n }\r\n return newDays;\r\n }\r\n private getCalendarMonthInfo(date): CalendarMonthInfo {\r\n const startOfMonth = this._dateService.startOfMonth(date);\r\n const momentDate = this._dateService.getMoment(date);\r\n return this.getMonthInfo(startOfMonth, momentDate);\r\n }\r\n private getMonthInfo(date, today): CalendarMonthInfo {\r\n const days: Day[] = [];\r\n const activeDate = this._dateService.getMoment(date);\r\n const startOfMonth: Date = this._dateService.startOfMonth(activeDate);\r\n const endOfMonth: Date = this._dateService.endOfMonth(activeDate);\r\n const dateInfo = this._dateService.getDateInfo(activeDate);\r\n const dayInWeek = this._dateService.day(startOfMonth); // we add 1 to the dayInWeek because it's starts with zero\r\n let weekCounter = 0;\r\n let dayCounter = 0;\r\n for (let i = 0; i < 42; i++) {\r\n const dateOfStartOfMonth: Date = new Date(startOfMonth);\r\n dateOfStartOfMonth.setDate(dateOfStartOfMonth.getDate() + i - dayInWeek);\r\n const { day, isInMonth }: { day: Day; isInMonth: any } = this._getDay(\r\n dateOfStartOfMonth,\r\n activeDate,\r\n today,\r\n endOfMonth,\r\n startOfMonth,\r\n dateInfo,\r\n i\r\n );\r\n days.push(day);\r\n dayCounter++;\r\n if (isInMonth && dayCounter > weekCounter * 7) {\r\n weekCounter++;\r\n }\r\n }\r\n // const endOfMonthIndex = days.findIndex((c) => c.isEndOfMonth);\r\n // if (endOfMonthIndex > -1 && days.length - endOfMonthIndex > 7) {\r\n // // days.splice(days.length - 7, 7);\r\n // }\r\n const calendarInfo = new CalendarMonthInfo();\r\n calendarInfo.id = getUniqueId(3);\r\n calendarInfo.dateInfo = dateInfo;\r\n calendarInfo.days = days;\r\n calendarInfo.weeksCount = weekCounter;\r\n // this.cdr.detectChanges();\r\n return calendarInfo;\r\n }\r\n private _getDay(\r\n date: Date,\r\n activeDate: any,\r\n today: any,\r\n endOfMonth: Date,\r\n startOfMonth: Date,\r\n dateInfo: DateInfo,\r\n i: number\r\n ): { day: Day; isInMonth: boolean } {\r\n const isInMonth = this._dateService.isSame(date, activeDate, 'month');\r\n const momentOfDate = this._dateService.getMoment(date);\r\n const isToday = momentOfDate.isSame(today, 'day');\r\n const dayInMonth = this._dateService.strDate(date);\r\n const dayInWeek = this._dateService.day(date);\r\n const isEndOfMonth = momentOfDate.isSame(endOfMonth, 'day');\r\n const isStartOfMonth = momentOfDate.isSame(startOfMonth, 'day');\r\n const monthDateInfo = isInMonth ? dateInfo : this._dateService.getDateInfo(date);\r\n const day: Day = {\r\n index: i,\r\n date,\r\n dayInWeek,\r\n status: DayStatus.Open,\r\n dayInMonth,\r\n dayInMonthN: this.getNumber(dayInMonth),\r\n isToday,\r\n isInMonth,\r\n isEndOfMonth,\r\n isStartOfMonth,\r\n momentOfDate,\r\n month: monthDateInfo.month,\r\n year: monthDateInfo.year,\r\n monthName: monthDateInfo.monthName,\r\n dayName: momentOfDate.format('dddd'),\r\n tasks: [],\r\n monthDateInfo,\r\n row: Math.floor(i / 7 + 1),\r\n col: 6 - (i % 7),\r\n isAddingNewEvent: false,\r\n addingEventPoint1: null,\r\n addingEventPoint2: null\r\n };\r\n return { day, isInMonth };\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { Day } from './models';\r\n\r\n@Pipe({\r\n name: 'daysInWeek',\r\n standalone: false\r\n})\r\nexport class DaysInWeekPipe implements PipeTransform {\r\n constructor() {}\r\n transform(days: Day[], weekNumber: number): Day[] {\r\n return days.slice(7 * weekNumber, 7 * weekNumber + 7);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, PreventDefaulEvent } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-number-box',\r\n templateUrl: './day-number-box.component.html',\r\n styleUrls: ['./day-number-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DayNumberBoxComponent extends BaseComponent implements OnInit, OnChanges {\r\n @HostBinding('style.display') display;\r\n @Input() isWeekMode: boolean;\r\n @Input() isSingleDay: boolean;\r\n @Input() day: Day;\r\n @Input() isPickerMode: Day;\r\n @Input() itemInRange: boolean;\r\n @Input() isActive: boolean;\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @HostBinding('style.cursor') _cursor = 'default';\r\n @HostBinding('class') _hover = '';\r\n @HostBinding('class.fd-calendar__item--range') _itemInRange = false;\r\n @HostBinding('class.is-active') _isActive = false;\r\n\r\n @HostListener('mouseup') mouseup(): void {\r\n this.dayMouseUp.emit(this.day);\r\n }\r\n @HostListener('mousedown') mousedown(): void {\r\n this.dayMouseDown.emit(this.day);\r\n }\r\n @HostListener('mousemove') mousemove(): void {\r\n this.dayMouseMove.emit(this.day);\r\n }\r\n @HostListener('click') onClick(): void {\r\n this.dayClick.emit(this.day);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._cursor = this.isPickerMode ? 'pointer' : 'default';\r\n this.display = this.isSingleDay ? 'inline-block' : 'flex';\r\n this._hover = this.isPickerMode ? 'hover' : '';\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { itemInRange, isActive } = changes;\r\n if (itemInRange) {\r\n this._itemInRange = itemInRange.currentValue;\r\n }\r\n if (isActive) {\r\n this._isActive = isActive.currentValue;\r\n }\r\n }\r\n onDayBoxNumberClick(e, day: Day): void {\r\n // change calendar mode to Day\r\n PreventDefaulEvent(e);\r\n this.dayClick.emit(day);\r\n }\r\n}\r\n","<button\r\n fd-button\r\n class=\"bg-transparent hover:!bg-transparent tw-relative\"\r\n (click)=\"onDayBoxNumberClick($event, day)\"\r\n [style.width]=\"isSingleDay ? 'auto' : '100%'\"\r\n [style.maxWidth]=\"isSingleDay ? 'auto' : '100%'\"\r\n [ngClass]=\"day.isInMonth ? 'inMonth' : 'notInMonth'\"\r\n [fdType]=\"!isPickerMode && day.isToday && !isActive ? 'emphasized' : 'transparent'\"\r\n>\r\n <div\r\n [ngClass]=\"{\r\n 'fd-avatar--s': isWeekMode,\r\n 'fd-avatar--xs': !isWeekMode || (day.isToday && isPickerMode)\r\n }\"\r\n class=\"day-number-value\"\r\n [style.fontSize]=\"isWeekMode ? '1.7rem' : null\"\r\n >\r\n <span>{{ day.dayInMonth }}</span>\r\n </div>\r\n @if(isPickerMode && day.isToday){\r\n <div class=\"tw-absolute tw-top-1 tw-left-1 tw-w-1 tw-h-1 tw-rounded tw-bg-blue-700\"></div>\r\n }\r\n</button>\r\n","export function getPadedTime(value): string {\r\n return String(value.toString().padStart(2, '0'));\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventDate',\r\n standalone: false\r\n})\r\nexport class EventDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(from: DateInfo, to: DateInfo, onlyTime: boolean = false): string {\r\n const showTime = from.hour || from.minutes || to.hour || to.minutes > 0;\r\n const fromTime = `${getPadedTime(from.hour)}:${getPadedTime(from.minutes)}`;\r\n const toTime = `${getPadedTime(to.hour)}:${getPadedTime(to.hour)}`;\r\n if (onlyTime) {\r\n return `${fromTime}`;\r\n }\r\n\r\n return `${from.strDay} ${from.monthName} ${from.strYear}${showTime ? `, ${fromTime}` : ''} – ${to.strDay} ${\r\n to.monthName\r\n } ${to.strYear}${showTime ? `, ${toTime}` : ''}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, HostBinding, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n\r\n@Component({\r\n selector: 'bc-event-preview',\r\n templateUrl: './event-preview.component.html',\r\n styleUrls: ['./event-preview.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventPreviewComponent extends BaseComponent implements OnInit {\r\n @Input() event: MetaobjectDataModel;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() popover: any;\r\n @Input() popover2: any;\r\n @Input() canEdit: boolean;\r\n @Input() canView: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() inDialog: boolean;\r\n\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @HostBinding('style.width') _width = '460px;';\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() closeEvent = new EventEmitter<void>();\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n if (this.deviceSize === 's') {\r\n this._width = 'auto';\r\n }\r\n }\r\n onDelete(event, popover, popover2): void {\r\n this.deleteEvent.emit(event);\r\n\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onEdit(event, popover, popover2): void {\r\n this.editEvent.emit(event);\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onClosePopover(popover): void {\r\n this._closePopover(popover);\r\n }\r\n private _closePopover(popover: any): void {\r\n if (popover) {\r\n popover.close();\r\n return;\r\n }\r\n this.closeEvent.emit();\r\n }\r\n}\r\n","<fd-layout-panel [ngClass]=\"deviceSize\">\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-actions>\r\n <fd-toolbar [clearBorder]=\"true\" [fdType]=\"'transparent'\">\r\n @if (canEdit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"edit\"\r\n fdType=\"transparent\"\r\n (click)=\"onEdit(event, popover, popover2)\"\r\n ></button>\r\n } @if (!canEdit && canView) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"show\"\r\n fdType=\"transparent\"\r\n (click)=\"onEdit(event, popover, popover2)\"\r\n ></button>\r\n } @if (canDelete) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n (click)=\"onDelete(event, popover, popover2)\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"decline\"\r\n fdType=\"transparent\"\r\n (click)=\"onClosePopover(popover)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body>\r\n <fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n size=\"xs\"\r\n glyph=\"color-fill\"\r\n [transparent]=\"true\"\r\n [style.color]=\"event[calendarFields.Color] ? event[calendarFields.Color] : ''\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ event[calendarFields.Title] }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n <span>{{ event.$StartDateInfo | eventDate: event.$EndDateInfo }} </span>\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n <fd-quick-view-group>\r\n @if (event | barsaVisibleValue: calendarFields.Notes; as notes) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n <fd-icon glyph=\"text-align-justified\"></fd-icon>\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <div fd-quick-view-group-item-content-element style=\"white-space: normal\">\r\n {{ notes }}\r\n </div>\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n <fd-icon glyph=\"appointment\"></fd-icon>\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <span>کاربر</span>\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-end-arrow',\r\n templateUrl: './event-button-end-arrow.component.html',\r\n styleUrls: ['./event-button-end-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonEndArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"end-day-continue\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-start-arrow',\r\n templateUrl: './event-button-start-arrow.component.html',\r\n styleUrls: ['./event-button-start-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonStartArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"start-day-middle\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarFields, CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventTime',\r\n standalone: false\r\n})\r\nexport class EventTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel, calendarFields: CalendarFields): string {\r\n const event = task.event;\r\n const dateInfo: DateInfo = event.$StartDateInfo;\r\n const showTime = dateInfo.hour || dateInfo.minutes > 0;\r\n const fromTime = `${getPadedTime(dateInfo.hour)}:${getPadedTime(dateInfo.minutes)}`;\r\n return `${showTime ? fromTime : ''} ${event[calendarFields.Title]}`;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { DialogService, PopoverComponent } from '@fundamental-ngx/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button',\r\n templateUrl: './event-button.component.html',\r\n styleUrls: ['./event-button.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonComponent extends BaseComponent implements OnInit {\r\n @ViewChild('defaultButton', { static: true })\r\n defaultButtonTemplate: TemplateRef<any>;\r\n @ViewChild(PopoverComponent, { static: true })\r\n popoverComponent: PopoverComponent;\r\n\r\n @ViewChild('dialogTemplate', { static: true })\r\n _dialogTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('btnFocus', { static: true }) btnFocus: ElementRef;\r\n @Input() buttonTemplate: TemplateRef<any>;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() canView = false;\r\n @Input() index: number;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() openPopoverChange = new EventEmitter<boolean>();\r\n @HostBinding('style.opacity') opacity = 1;\r\n @HostBinding('attr.rtl') _rtl = true;\r\n\r\n private _dialogService = inject(DialogService);\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n this.opacity = this.task.opacity ?? 1;\r\n if (!this.buttonTemplate) {\r\n this.buttonTemplate = this.defaultButtonTemplate;\r\n }\r\n if (this.index === 0) {\r\n (this.btnFocus.nativeElement as HTMLLIElement).scrollIntoView();\r\n (this.btnFocus.nativeElement as HTMLLIElement).tabIndex = -1;\r\n }\r\n }\r\n onPopOverOpenChange(isOpen): void {\r\n this.openPopoverChange.emit(isOpen);\r\n }\r\n onButtonClick(popover): void {\r\n if (this.deviceSize === 's') {\r\n this._dialogService.open(this._dialogTemplate, {\r\n mobile: true\r\n });\r\n return;\r\n }\r\n popover.open();\r\n }\r\n}\r\n","<button\r\n #btnFocus\r\n [attr.id]=\"task.id\"\r\n style=\"width: 0; height: 0; visibility: hidden; max-height: 1px; min-height: 1px; position: absolute\"\r\n></button>\r\n@if ( (task.startdayIsInRow && !task.isStartDay) || (task.isMiddle && !task.isStartDay && !task.isEndDay) ||\r\n(task.isEndDay && !task.isStartDay && !task.isMiddle) ) {\r\n<bc-event-button-start-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\"> </bc-event-button-start-arrow>\r\n}\r\n\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n buttonTemplate;\r\n context: {\r\n $implicit: task,\r\n calendarFields: calendarFields,\r\n popover: popover,\r\n onButtonClick: onButtonClick.bind(this)\r\n }\r\n \"\r\n></ng-container>\r\n\r\n@if (!task.enddayIsInRow) {\r\n<bc-event-button-end-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\"> </bc-event-button-end-arrow>\r\n}\r\n\r\n<fd-popover\r\n #popover\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n (isOpenChange)=\"onPopOverOpenChange($event)\"\r\n>\r\n <fd-popover-control></fd-popover-control>\r\n <fd-popover-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popover\"\r\n [canDelete]=\"canDelete\"\r\n [canView]=\"canView\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (closeEvent)=\"dialog.dismiss()\"\r\n ></bc-event-preview>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template\r\n #defaultButton\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n fd-button\r\n [compact]=\"true\"\r\n (click)=\"onButtonClick(popover)\"\r\n [fdType]=\"task.inDay ? 'standard' : 'emphasized'\"\r\n [label]=\"task | eventTime: calendarFields\"\r\n [style.background-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"task-title noborder\"\r\n ></button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-event-list',\r\n templateUrl: './day-event-list.component.html',\r\n styleUrls: ['./day-event-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DayEventListComponent extends BaseComponent {\r\n @Input() day: Day;\r\n @Input() deviceSize: string;\r\n @Input() weekDays: string[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() canView = false;\r\n @Input() popover: any;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() openPopOver = new EventEmitter<any>();\r\n\r\n onClosePopover(popover, popover2?): void {\r\n popover.close();\r\n if (popover2) {\r\n popover2.close();\r\n }\r\n }\r\n}\r\n","<div fd-bar [barDesign]=\"'header-with-subheader'\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <button fd-button glyph=\"decline\" [fdType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></button>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-middle>\r\n <fd-bar-element>\r\n {{ weekDays[day.dayInWeek] }}\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-bar-element> </fd-bar-element>\r\n </div>\r\n</div>\r\n<div fd-bar [barDesign]=\"'subheader'\">\r\n <div fd-bar-middle>\r\n <fd-bar-element [fullWidth]=\"true\">\r\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\r\n </fd-bar-element>\r\n </div>\r\n</div>\r\n<ul fd-list>\r\n @for (task of day.tasks; track task) {\r\n <li fd-list-item class=\"task-start-end\" (click)=\"popoverPreview.open()\">\r\n @if (task.isMiddle && !task.isStartDay) {\r\n <bc-event-button-start-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\">\r\n </bc-event-button-start-arrow>\r\n }\r\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\r\n @if ((task.isMiddle || task.isStartDay) && !task.isEndDay) {\r\n <bc-event-button-end-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\">\r\n </bc-event-button-end-arrow>\r\n }\r\n <fd-popover\r\n #popoverPreview\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n >\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popoverPreview\"\r\n [canDelete]=\"canDelete\"\r\n [canView]=\"canView\"\r\n [canEdit]=\"canEdit\"\r\n [popover2]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover>\r\n </li>\r\n }\r\n</ul>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'equalDate',\r\n standalone: false\r\n})\r\nexport class EqualDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(value: Date, secondValue: Date | null | undefined): boolean {\r\n if ((value && !secondValue) || (!value && secondValue)) {\r\n return false;\r\n }\r\n const yearEqual = value.getFullYear() === secondValue?.getFullYear();\r\n const monthEqual = value.getMonth() === secondValue?.getMonth();\r\n const dayEqual = value.getDate() === secondValue?.getDate();\r\n return yearEqual && monthEqual && dayEqual;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\n\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-month',\r\n templateUrl: './calendar-month.component.html',\r\n styleUrls: ['./calendar-month.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarMonthComponent extends BaseComponent implements OnChanges, OnInit {\r\n @Input() monthWeeksCount: number;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Input() canView = false;\r\n @Input() selectedDate: Date | undefined;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n\r\n private _hasPopoverOpened: boolean[] = [];\r\n private daysInWeek = inject(DaysInWeekPipe);\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n let needToDetectChange = false;\r\n const {\r\n containerHeight,\r\n deviceSize,\r\n moDataList,\r\n days,\r\n monthWeeksCount,\r\n startSelectedDayIndex,\r\n endSelectedDayIndex,\r\n weekDays,\r\n weekDaysMin\r\n } = changes;\r\n if (containerHeight && !containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this._prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (weekDays && !weekDays.firstChange) {\r\n this._prepareWeekDays(this.deviceSize, weekDays.currentValue);\r\n }\r\n if (weekDaysMin && !weekDaysMin.firstChange) {\r\n this._prepareWeekDays(this.deviceSize, undefined, weekDaysMin.currentValue);\r\n }\r\n if (moDataList && !moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n needToDetectChange = true;\r\n }\r\n if (days && !days.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (monthWeeksCount && !monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (\r\n (startSelectedDayIndex && !startSelectedDayIndex.firstChange) ||\r\n (endSelectedDayIndex && !endSelectedDayIndex.firstChange)\r\n ) {\r\n needToDetectChange = true;\r\n }\r\n if (needToDetectChange) {\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this._prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(_e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: day.date\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private _prepareWeekDays(deviceSize: string, weekDays?, weekDaysMin?): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = weekDays || this.weekDays;\r\n } else {\r\n this.selectedWeekDays = weekDaysMin || this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n\r\n if (this.monthWeeksCount > 0) {\r\n const weeksCount = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / (_weeksCount + 1));\r\n\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n if (this.maxTaskCount > 0) {\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((_x, i) => i);\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n\r\n const calendarFields = this.calendarFields;\r\n\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [fdCompact] [attr.picker]=\"datePicker\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n @for (weekDay of selectedWeekDays; track weekDay) {\r\n <th class=\"weekday-header\" fd-table-cell [class.noborder]=\"isPickerMode\">\r\n {{ weekDay | slice: 0:1 }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (weekDay of numberOfWeek; track weekDay) {\r\n <tr fd-table-row>\r\n <td [style.height.px]=\"dayHeight\" fd-table-cell colspan=\"7\" [style.border]=\"isPickerMode ? 'none' : null\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n deviceSize: deviceSize,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\" [attr.rtl]=\"rtl\">\r\n @for (day of days; track day) {\r\n <td fd-table-cell [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [ngClass]=\"{\r\n 'fd-calendar__item': isPickerMode,\r\n '!tw-border !tw-rounded-md tw-transition-all tw-cursor-pointer':\r\n isPickerMode && day.isInMonth,\r\n '!tw-bg-transparent tw-border-gray-100 hover:!tw-border-gray-300':\r\n isPickerMode && day.isInMonth && !day.isToday,\r\n 'fd-calendar__item--other-month': isPickerMode && !day.isInMonth,\r\n 'fd-calendar__item--weekend': isPickerMode && day.isWeekend,\r\n '!tw-bg-blue-500 hover:!tw-bg-blue-600 !tx-text-white':!isPickerMode && day.isToday,\r\n }\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [isActive]=\"\r\n day.index === startSelectedDayIndex || day.index === endSelectedDayIndex || day.date\r\n | equalDate: selectedDate\r\n \"\r\n [itemInRange]=\"\r\n startSelectedDayIndex !== undefined &&\r\n endSelectedDayIndex !== undefined &&\r\n day.index >= startSelectedDayIndex &&\r\n day.index <= endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n @if (!isPickerMode) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n @for (day of days; track day) {\r\n <td fd-table-cell class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n @if (maxRowTasks?.length < day.tasks.length) {\r\n <button fd-button (click)=\"onMoreButton($event, popover)\" [fdType]=\"'transparent'\" [compact]=\"true\">\r\n {{ day.tasks?.length - maxRowTasks?.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n @for (rowTask of maxRowTasks; track rowTask; let i = $index) {\r\n <tr fd-table-row>\r\n @if (!weekTasks[i] || weekTasks[i].length === 0) { @for (day of weekDays; track day) {\r\n <td fd-table-cell></td>\r\n } } @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan) {\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\">\r\n @if (task.event) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" (dblclick)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\nimport { BarsaApi, BaseComponent, DateService, getDateService, PortalService } from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n@Component({\r\n selector: 'bc-calendar-selection-days',\r\n templateUrl: './calendar-selection-days.component.html',\r\n styleUrls: ['./calendar-selection-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService\r\n },\r\n CalendarService\r\n ],\r\n standalone: false\r\n})\r\nexport class CalendarSelectionDaysComponent extends BaseComponent implements OnChanges {\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() inline: boolean;\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n deviceSize$: Observable<string>;\r\n months: string[] = [];\r\n years: string[];\r\n private _isMouseDown = false;\r\n\r\n private _calendarService = inject(CalendarService, { self: true });\r\n private _portalService = inject(PortalService);\r\n\r\n constructor() {\r\n super();\r\n this.rtl$ = this._portalService.rtl$;\r\n this.width$ = this._portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 480;\r\n case 's':\r\n return 320;\r\n default:\r\n return 480;\r\n }\r\n })\r\n );\r\n this._calendarService.setCulture(BarsaApi.LoginFormData.Culture);\r\n\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this._calendarService.setMode('month');\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { monthInfo } = changes;\r\n if (monthInfo) {\r\n this._calendarService.loadCalendarMonthInfo(monthInfo.currentValue);\r\n }\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onDayMouseMove(day: Day, monthInfo: CalendarMonthInfo): void {\r\n if (this._isMouseDown) {\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDayIndex = startDay?.index;\r\n this.endSelectedDayIndex = endDay?.index;\r\n // console.log('-move-', this.startSelectedDay?.index, this.endSelectedDay?.index);\r\n }\r\n }\r\n\r\n onDayMouseDown(day: Day): void {\r\n this._isMouseDown = true;\r\n this.startSelectedDay = null;\r\n this.endSelectedDay = null;\r\n this.startSelectedDay = day;\r\n this.startSelectedDayIndex = day.index;\r\n }\r\n onDayMouseUp(day: Day, monthInfo, popover): void {\r\n this._isMouseDown = false;\r\n\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDay = startDay;\r\n this.endSelectedDay = endDay;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n onDayClick(day: Day, monthInfo, popover): void {\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private getStartAndEndDay(\r\n monthInfo: CalendarMonthInfo,\r\n day: Day | null\r\n ): { endDay: Day | null; startDay: Day | null } {\r\n let startDay: Day | null = null;\r\n let endDay: Day | null = null;\r\n if (this.startSelectedDay && !this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date > day.date) {\r\n startDay = day;\r\n endDay = this.startSelectedDay;\r\n } else {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n }\r\n } else if (this.startSelectedDay && this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date < day.date) {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n } else {\r\n startDay = day;\r\n endDay = this.endSelectedDay;\r\n }\r\n }\r\n // console.log('-2-', startDay, endDay);\r\n if (startDay && endDay) {\r\n const diff = Math.abs(startDay.momentOfDate.diff(endDay.momentOfDate, 'day'));\r\n if (diff > 6) {\r\n startDay = monthInfo.days[Math.floor(startDay.index / 7) * 7];\r\n // const end = endDay.index % 7;\r\n const indexEnd = Math.ceil((endDay.index + 1) / 7);\r\n // if (end > 0) {\r\n // indexEnd++;\r\n // }\r\n endDay = monthInfo.days[indexEnd * 7 - 1];\r\n // console.log('-3-', startDay, endDay);\r\n }\r\n }\r\n return { endDay, startDay };\r\n }\r\n\r\n private _setFirstAndEndDay(monthInfo, popover): void {\r\n // console.log('-finish-', this.startSelectedDay, this.endSelectedDay);\r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n if (popover) {\r\n popover.close();\r\n }\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay,\r\n endDay: this.endSelectedDay,\r\n monthInfo\r\n });\r\n }\r\n }\r\n}\r\n","@if (inline) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n} @else {\r\n<button fd-button glyph=\"calendar\" fdType=\"transparent\" [fdPopoverTrigger]=\"popover\"></button>\r\n}\r\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\" class=\"popover-selection-day\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"6\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\r\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\r\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\r\n (dayMouseDown)=\"onDayMouseDown($event)\"\r\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\r\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\r\n ></bc-calendar-month>\r\n } }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Injectable,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport {\r\n BaseComponent,\r\n BbbTranslatePipe,\r\n PortalService,\r\n BarsaApi,\r\n AbbrevationDeviceSize,\r\n CultureTypes,\r\n getDateService,\r\n DateService\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport {\r\n DatetimeAdapter,\r\n DialogService,\r\n FdDate,\r\n FdDatetimeAdapter,\r\n InputGroupComponent,\r\n TimeComponent\r\n} from '@fundamental-ngx/core';\r\n\r\n@Injectable()\r\nexport class TimeConfigI18n {\r\n /** Aria label for the 'increase hours' button */\r\n increaseHoursLabel = 'Increase hours';\r\n\r\n /** label for the 'hours' column */\r\n\r\n /** Aria label for the 'decrease hours' button */\r\n decreaseHoursLabel = 'Decrease hours';\r\n\r\n /** Aria label for the 'increase minutes' button */\r\n increaseMinutesLabel = 'Increase minutes';\r\n\r\n /** label for the 'minutes' column */\r\n hoursLabel = '';\r\n minutesLabel = '';\r\n secondsLabel = '';\r\n\r\n /** Aria label for the 'decrease minutes' button */\r\n decreaseMinutesLabel = 'Decrease minutes';\r\n\r\n /** Aria label for the 'increase seconds' button */\r\n increaseSecondsLabel = 'Increase seconds';\r\n\r\n /** label for the 'seconds' column */\r\n\r\n /** Aria label for the 'decrease seconds' button */\r\n decreaseSecondsLabel = 'Decrease seconds';\r\n\r\n /** Aria label for the 'increase period' button */\r\n increasePeriodLabel = 'Increase period';\r\n\r\n /** label for the 'period' column */\r\n periodLabel = 'Period';\r\n\r\n /** Aria label for the 'decrease period' button */\r\n decreasePeriodLabel = 'Decrease period';\r\n\r\n private _bbbTranslate = inject(BbbTranslatePipe);\r\n\r\n constructor() {\r\n this.hoursLabel = this._bbbTranslate.transform('Hours');\r\n this.minutesLabel = this._bbbTranslate.transform('Minutes');\r\n this.secondsLabel = this._bbbTranslate.transform('Sec');\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'bc-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DatetimeAdapter,\r\n useClass: FdDatetimeAdapter\r\n },\r\n CalendarService\r\n ],\r\n standalone: false\r\n})\r\nexport class DateTimePickerComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() placeholder: string;\r\n @Input() calendarType: 'Gregorian' | 'Persian' | string;\r\n @Input() formatPattern: string;\r\n @Input() value: Date | undefined;\r\n @Input() timeValue: FdDate;\r\n @Input() startRangeDate: Date;\r\n @Input() endRangeDate: Date;\r\n @Input() isRangePicker: boolean;\r\n @Input() showTime: boolean;\r\n @Input() showDate: boolean;\r\n @Input() rtl = true;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() isMobile: boolean;\r\n @Input() readonly: boolean;\r\n @Input() disabled: boolean;\r\n @Input() buttonMenuMode: boolean;\r\n @Input() inlineMode: boolean;\r\n @Input() daterangeMode: boolean;\r\n @Input() culture: CultureTypes;\r\n @Output() rangeChange = new EventEmitter<{ startDay: Date; endDay: Date }>();\r\n @Output() valueChange = new EventEmitter<Date>();\r\n @ViewChild(TimeComponent) timeComponent: TimeComponent<FdDate>;\r\n @ViewChild(InputGroupComponent, { static: true }) inputGroupComponent: InputGroupComponent;\r\n valueCaption = '';\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n valueDay: Day | null;\r\n supportCultureTypes = { 'fa-IR': 'Hijri Shamsi', 'en-US': 'Gregorian' };\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n todayIndex = -1;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n originalCulture: CultureTypes;\r\n isValid = true;\r\n months: string[] = [];\r\n years: string[];\r\n tempFormmatedDate = '';\r\n cultureName = '';\r\n private _calendarService = inject(CalendarService, { self: true });\r\n private _lastValue: Date | undefined;\r\n private _datetimeAdapter = inject<DatetimeAdapter<FdDate>>(DatetimeAdapter);\r\n private _dialogService = inject(DialogService);\r\n private _portalService = inject(PortalService);\r\n\r\n constructor() {\r\n super();\r\n this.rtl$ = this._portalService.rtl$;\r\n this.width$ = this._portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n if (!this.showDate) {\r\n return 260;\r\n }\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 560;\r\n case 's':\r\n return 320;\r\n default:\r\n return 520;\r\n }\r\n })\r\n );\r\n\r\n this.height = 420;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.originalCulture = this.culture;\r\n this.cultureName = this.supportCultureTypes[this.culture];\r\n this._initCalendarService();\r\n this._setFormattedDateToInput(this.value);\r\n if (this.inputGroupComponent) {\r\n (this.inputGroupComponent as any)._cva.onChange = this.onCaptionChanged.bind(this);\r\n }\r\n }\r\n onCultureChange(culture: string): void {\r\n this.culture = culture as CultureTypes;\r\n this.cultureName = this.supportCultureTypes[culture];\r\n this._initCalendarService();\r\n }\r\n onHourTextChange(e): void {\r\n const val = Number(e.target.value);\r\n if (isNaN(val)) {\r\n return;\r\n }\r\n this.timeValue = new FdDate(\r\n this.timeValue.year,\r\n this.timeValue.month,\r\n this.timeValue.day,\r\n val,\r\n this.timeValue.minute,\r\n this.timeValue.second\r\n );\r\n }\r\n onMinuteTextChange(e): void {\r\n const val = Number(e.target.value);\r\n if (isNaN(val)) {\r\n return;\r\n }\r\n this.timeValue = new FdDate(\r\n this.timeValue.year,\r\n this.timeValue.month,\r\n this.timeValue.day,\r\n this.timeValue.hour,\r\n val,\r\n this.timeValue.second\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (value && !value.firstChange) {\r\n const caption = this._getFormattedDate(value.currentValue);\r\n if (caption !== this.inputGroupComponent?.inputText) {\r\n this._setFormattedDateToInput(this.value);\r\n }\r\n }\r\n }\r\n onRangeChange(e): void {\r\n this.rangeChange.emit({\r\n startDay: e.startDay,\r\n endDay: e.endDay\r\n });\r\n }\r\n onOpenPopover(popover, dialogTemplate): void {\r\n if (this.readonly || this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.timeComponent) {\r\n setTimeout(() => this.timeComponent.refreshColumns(), 0);\r\n }\r\n if (this.isMobile) {\r\n this._dialogService.open(dialogTemplate, {\r\n mobile: true\r\n });\r\n return;\r\n }\r\n popover.open();\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onCaptionChanged(e): void {\r\n if (e.length < 10 && this.showDate) {\r\n if (e.length === 0) {\r\n this._raisValueChanged(undefined);\r\n return;\r\n }\r\n this.isValid = false;\r\n\r\n return;\r\n }\r\n const englishDateStr = BarsaApi.Common.Util.ReplaceFaToArCharchter(e);\r\n let format = this.formatPattern;\r\n if (this.showTime) {\r\n if (this.showDate) {\r\n format += ' HH:mm';\r\n } else {\r\n format = 'HH:mm';\r\n }\r\n }\r\n const dateService = this._getDateServiceOriginal();\r\n\r\n const moment = dateService.stringToMoment(englishDateStr, format);\r\n // const isValid = moment.isValid();// برای شمسی همیشه false نشون میده\r\n if (this.showDate && isNaN(Date.parse(englishDateStr))) {\r\n this.isValid = false;\r\n return;\r\n }\r\n const tdate = new Date();\r\n const date = moment.toDate();\r\n if (date.getFullYear() < tdate.getFullYear() && !this.showDate) {\r\n date.setFullYear(tdate.getFullYear());\r\n date.setMonth(tdate.getMonth());\r\n date.setDate(tdate.getDate());\r\n }\r\n if (isNaN(date)) {\r\n this.isValid = false;\r\n return;\r\n }\r\n this.isValid = true;\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n );\r\n this.startSelectedDay = this.endSelectedDay = null;\r\n this._raisValueChanged(date, false);\r\n }\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n const today = new Date();\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n today.getHours(),\r\n today.getMinutes(),\r\n today.getSeconds()\r\n );\r\n if (this._calendarService.todayDay) {\r\n this.startSelectedDay = this._calendarService.todayDay;\r\n }\r\n this._calendarService.gotoToday();\r\n }\r\n\r\n onDayClick(day: Day, popover, dialog): void {\r\n this.isValid = true;\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n if (this.showTime) {\r\n return;\r\n }\r\n this._setFirstAndEndDay(day, popover, dialog);\r\n }\r\n\r\n onPopoverOpenChange(isOpen): void {\r\n if (isOpen) {\r\n this._lastValue = this.value;\r\n } else {\r\n this._lastValue = undefined;\r\n }\r\n }\r\n onClear(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n this.value = undefined;\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n onOk(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n if (!this.value) {\r\n this.value = new Date();\r\n }\r\n this._handleValueChange();\r\n }\r\n onCancel(popover, dialog): void {\r\n if (this._lastValue !== this.value) {\r\n this.value = this._lastValue;\r\n this._setCaption(this.value);\r\n }\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n }\r\n private _initCalendarService(): void {\r\n this._calendarService.setCulture(this.culture);\r\n this._calendarService.setMode('month');\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n\r\n if (this.value) {\r\n this.timeValue = FdDate.getFdDateByDate(this.value);\r\n this._setCaption(this.value);\r\n this._calendarService.loadMonthByDate(this.value);\r\n } else {\r\n this.timeValue = FdDate.getFdDateByDate(new Date());\r\n }\r\n // if (this.isRangePicker) {\r\n // if (this.startRangeDate) {\r\n // this._calendarService.loadMonthByDate(this.startRangeDate);\r\n // }\r\n // if (this.endRangeDate) {\r\n // }\r\n // } else {\r\n // this._calendarService.loadMonthByDate(this.value);\r\n // }\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n }\r\n private _setFormattedDateToInput(date: Date | undefined): void {\r\n if (date) {\r\n const formattedDate = this._getFormattedDate(date);\r\n this.tempFormmatedDate = formattedDate;\r\n this._setInputGroupText(formattedDate);\r\n return;\r\n }\r\n this.tempFormmatedDate = '';\r\n this._setInputGroupText('');\r\n }\r\n private _setInputGroupText(val: string): void {\r\n if (this.inputGroupComponent) {\r\n this.inputGroupComponent.inputText = val;\r\n }\r\n }\r\n private _getDateServiceOriginal(): DateService {\r\n let x = this._calendarService._dateService;\r\n if (this.culture !== this.originalCulture) {\r\n x = getDateService(this._log, this.originalCulture);\r\n }\r\n return x;\r\n }\r\n private _getFormattedDate(date: Date): string {\r\n const x2 = new Date(date);\r\n const x = this._getDateServiceOriginal();\r\n return x.format(x2, this.formatPattern);\r\n }\r\n\r\n private _handleValueChange(): void {\r\n this.value = this.showDate ? this.startSelectedDay?.date ?? this.value : new Date();\r\n if (this.value) {\r\n this.value = new Date(this.value);\r\n this.value.setHours(this.timeValue.hour);\r\n this.value.setMinutes(this.timeValue.minute);\r\n this.value.setSeconds(this.timeValue.second);\r\n }\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private _setCaption(value): void {\r\n if (!value) {\r\n this.valueCaption = '';\r\n return;\r\n }\r\n let formatPattern = this.formatPattern.replace('YYYY', 'jYYYY');\r\n formatPattern = formatPattern.replace('MM', 'jMM');\r\n formatPattern = formatPattern.replace('DD', 'jDD');\r\n this.valueCaption = this._calendarService._dateService.getMoment(value).format(formatPattern);\r\n }\r\n private _raisValueChanged(date, setCaption = true): void {\r\n // this.value = date;\r\n if (setCaption) {\r\n this._setCaption(date);\r\n }\r\n this.valueChange.emit(date);\r\n }\r\n\r\n private _setFirstAndEndDay(day: Day, popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n }\r\n if (popover) {\r\n popover.close();\r\n }\r\n if (!this.isRangePicker) {\r\n this._setFormattedDateToInput(day.date);\r\n this._raisValueChanged(day.date);\r\n return;\r\n }\r\n if (this.startSelectedDay) {\r\n this.endSelectedDay = day;\r\n } else {\r\n this.startSelectedDay = day;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay && this.startSelectedDay.date > this.endSelectedDay.date) {\r\n const temp = this.startSelectedDay;\r\n this.startSelectedDay = this.endSelectedDay;\r\n this.endSelectedDay = temp;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay.date,\r\n endDay: this.endSelectedDay.date\r\n });\r\n }\r\n }\r\n}\r\n","@if (inlineMode) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n daterangeMode ? dateRangeTpl : month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n}\r\n<ng-template #dateRangeTpl>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n</ng-template>\r\n<fd-input-group\r\n placement=\"after\"\r\n glyph=\"calendar\"\r\n glyphAriaLabel=\"select day\"\r\n ariaLabelledBy=\"fd-input-group-icon-label-2\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n [button]=\"true\"\r\n [state]=\"isValid ? 'success' : 'error'\"\r\n [showFocus]=\"true\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [style.display]=\"!buttonMenuMode || inlineMode ? 'inherit' : 'none'\"\r\n (addOnButtonClicked)=\"onOpenPopover(popover, dialogTemplate)\"\r\n>\r\n</fd-input-group>\r\n@if (buttonMenuMode) {\r\n<button\r\n fd-button\r\n [label]=\"tempFormmatedDate || placeholder\"\r\n [title]=\"placeholder\"\r\n [fdType]=\"value ? 'standard' : 'transparent'\"\r\n [fdMenu]=\"true\"\r\n (click)=\"onOpenPopover(popover, dialogTemplate)\"\r\n [class.placeholder-custom]=\"!value\"\r\n class=\"menu-button-datepicker\"\r\n></button>\r\n}\r\n\r\n<fd-popover #popover (isOpenChange)=\"onPopoverOpenChange($event)\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n daterangeMode ? dateRangeTpl : month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n <div fd-popover-body-footer>\r\n <div fd-bar [barDesign]=\"'footer'\">\r\n <div fd-bar-right>\r\n <container *ngTemplateOutlet=\"footerButtons\"></container>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n</fd-popover>\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover,\r\n dialog: dialog\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <container *ngTemplateOutlet=\"footerButtons; context: { dialog: dialog }\"></container>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #footerButtons let-dialog=\"dialog\">\r\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover, dialog)\"></fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Clear' | bbbTranslate\"\r\n fdType=\"standard\"\r\n (click)=\"onClear(popover, dialog)\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover, dialog)\"></fd-button-bar>\r\n</ng-template>\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n let-dialog=\"dialog\"\r\n>\r\n @if (showDate) {\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\r\n (click)=\"onToday()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n <fd-split-button\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: cultureName | bbbTranslate,\r\n keepMainAction: false\r\n }\"\r\n >\r\n <fd-menu>\r\n @for(culture of supportCultureTypes | keyvalue;track culture){\r\n <li fd-menu-item (click)=\"onCultureChange(culture.key)\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ culture.value | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n </fd-toolbar>\r\n }\r\n <div style=\"display: flex\">\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <div style=\"display: flex\">\r\n @if (showDate) {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, popover, dialog)\"\r\n ></bc-calendar-month>\r\n }\r\n <div class=\"seperator\"></div>\r\n @if (showTime) {\r\n <div>\r\n <fd-time\r\n style=\"direction: ltr\"\r\n fdCompact\r\n [keepTwoDigits]=\"true\"\r\n [(ngModel)]=\"timeValue\"\r\n [displaySeconds]=\"false\"\r\n ></fd-time>\r\n <div style=\"display: flex; gap: 0.2rem; padding: 0.5rem\">\r\n <input\r\n fd-form-control\r\n class=\"remove-arrow\"\r\n style=\"width: 3rem\"\r\n [value]=\"timeValue?.minute\"\r\n type=\"number\"\r\n maxValue=\"23\"\r\n (input)=\"onMinuteTextChange($event)\"\r\n />\r\n <input\r\n fd-form-control\r\n style=\"width: 3rem\"\r\n class=\"remove-arrow\"\r\n [value]=\"timeValue?.hour\"\r\n type=\"number\"\r\n maxValue=\"59\"\r\n (input)=\"onHourTextChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\nimport moment from 'moment';\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-month-days',\r\n templateUrl: './month-days.component.html',\r\n styleUrls: ['./month-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MonthDaysComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() monthWeeksCount: { firstWeekIndex: number; weeksCount: number };\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n private _hasPopoverOpened: boolean[] = [];\r\n private daysInWeek = inject(DaysInWeekPipe);\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.containerHeight && !changes.containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthInfo && !changes.monthInfo.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthWeeksCount && !changes.monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(_e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: moment(day.date)\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n let _firstWeekIndex;\r\n if (this.monthWeeksCount?.weeksCount > 0) {\r\n const { weeksCount, firstWeekIndex } = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n _firstWeekIndex = firstWeekIndex;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n _firstWeekIndex = 0;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value + _firstWeekIndex);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / _weeksCount) + 1;\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((_x, i) => i);\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [compact]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n @for (weekDay of selectedWeekDays; track weekDay) {\r\n <th class=\"weekday-header\" fd-table-cell [class.noborder]=\"isPickerMode\">\r\n {{ weekDay }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (weekDay of numberOfWeek; track weekDay) {\r\n <tr fd-table-row>\r\n <td [style.height.px]=\"dayHeight\" fd-table-cell colspan=\"7\" [style.border]=\"isPickerMode ? 'none' : null\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\">\r\n @for (day of days | daysInWeek: weekIndex; track day) {\r\n <td fd-table-cell [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [class.fd-calendar__item]=\"isPickerMode\"\r\n [class.fd-calendar__item--other-month]=\"isPickerMode && !day.isInMonth\"\r\n [class.fd-calendar__item--weekend]=\"isPickerMode && day.isWeekend\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [class.is-active]=\"day.index === startSelectedDayIndex || day.index === endSelectedDayIndex\"\r\n [class.fd-calendar__item--range]=\"\r\n startSelectedDayIndex &&\r\n endSelectedDayIndex &&\r\n day.index > startSelectedDayIndex &&\r\n day.index < endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n @if (!isPickerMode) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n @for (day of days; track day) {\r\n <td fd-table-cell class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n @if (maxRowTasks.length < day.tasks.length) {\r\n <button fd-button (click)=\"onMoreButton($event, popover)\" [fdType]=\"'transparent'\" [compact]=\"true\">\r\n {{ day.tasks?.length - maxRowTasks.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n @for (rowTask of maxRowTasks; track rowTask; let i = $index) {\r\n <tr fd-table-row>\r\n @if (!weekTasks[i] || weekTasks[i].length === 0) { @for (day of weekDays; track day) {\r\n <td fd-table-cell></td>\r\n } } @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan) {\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\">\r\n @if (task.event) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { BaseComponent, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-header',\r\n templateUrl: './calendar-header.component.html',\r\n styleUrls: ['./calendar-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarHeaderComponent extends BaseComponent {\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() weekModeDays: Day[];\r\n @Input() hideModeButton;\r\n @Input() modeTitle: string;\r\n @Input() title: string;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() rtl: boolean;\r\n @Input() mode: CalendarMode;\r\n @Input() hideTodayButton: boolean;\r\n @Input() hidePrevNext: boolean;\r\n @Input() hideDailyButton: boolean;\r\n @Input() hideMonthlyButton: boolean;\r\n @Input() hideWeeklyButton: boolean;\r\n @Input() hideSelectionDays: boolean;\r\n @Input() hideLisButton: boolean;\r\n @Input() hideYearButton: boolean;\r\n @Output() prevTap = new EventEmitter();\r\n @Output() nextTap = new EventEmitter();\r\n @Output() modeChange = new EventEmitter<CalendarMode>();\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n @Output() today = new EventEmitter();\r\n year: string;\r\n monthName = '';\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n onModeChange(menu, mode: CalendarMode): void {\r\n menu.close();\r\n this.modeChange.emit(mode);\r\n }\r\n onRangeChange(range): void {\r\n this.rangeChange.emit(range);\r\n }\r\n onPrint(): void {}\r\n}\r\n","<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\" [class.rtl]=\"rtl\">\r\n @if(!hideTodayButton){\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></button>\r\n } @if(!hidePrevNext){\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></button>\r\n }\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <!-- <button fd-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" fdType=\"transparent\"></button> -->\r\n @if (deviceSize === 's' || deviceSize === 'm') {\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n } @if (!hideModeButton ) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu #menu>\r\n @if(!hideDailyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'day')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }@if(!hideWeeklyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'week')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n }\r\n @if(!hideMonthlyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'month')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'list')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'List' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n</fd-toolbar>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'fromToTime',\r\n standalone: false\r\n})\r\nexport class FromToTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel): string {\r\n const event = task.event;\r\n const fromDateInfo: DateInfo = event.$StartDateInfo;\r\n const toDateInfo: DateInfo = event.$EndDateInfo;\r\n const fromTime = `${getPadedTime(fromDateInfo.hour)}:${getPadedTime(fromDateInfo.minutes)}`;\r\n const toTime = `${getPadedTime(toDateInfo.hour)}:${getPadedTime(toDateInfo.minutes)}`;\r\n return `${fromTime} - ${toTime}`;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport {\r\n BaseComponent,\r\n CalendarFields,\r\n CalendarMetaobjectDataModel,\r\n MetaobjectDataModel,\r\n PreventDefaulEvent,\r\n AbbrevationDeviceSize\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-calendar-week',\r\n templateUrl: './calendar-week.component.html',\r\n styleUrls: ['./calendar-week.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarWeekComponent extends BaseComponent implements OnChanges, OnInit {\r\n @ViewChild('tableTop') tableTopEl: ElementRef<HTMLDivElement>;\r\n @ViewChild('sectionRef') _sectionRef: ElementRef<HTMLElement>;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() inDialog: boolean;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() days: Day[];\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Input() canView = false;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ startDate: Date; endDate: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n selectedTaskId = '';\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount = 4;\r\n maxRowTasks: number[];\r\n weekTasksArray: { [key: string]: [] }[];\r\n extraRow: number[];\r\n width: any;\r\n hours: string[];\r\n Math = Math;\r\n private _hasPopoverOpened: boolean[] = [];\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.days && !changes.days.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.hours = new Array(24).fill(0).map((_x, i) => `${i > 9 ? '' + i : '0' + i}:00`);\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n }\r\n setSelectedId(id: string): void {\r\n this.selectedTaskId = id;\r\n this._cdr.detectChanges();\r\n }\r\n onDayBoxSelect(_day: Day): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n // this._fireDaySelect(day.date);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n onColumnClick(e, day: Day): void {\r\n const { offsetY } = e;\r\n const hour = Math.floor(offsetY / 50);\r\n const minutes = Math.floor((offsetY % 50) / 15) * 15;\r\n const date = new Date(day.date);\r\n date.setHours(hour);\r\n date.setMinutes(minutes);\r\n // this._fireDaySelect(date);\r\n }\r\n onEventButton(e): void {\r\n if (e.currentTarget?.localName === 'bc-event-button') {\r\n PreventDefaulEvent(e);\r\n }\r\n }\r\n onMoreButton(e, popover): void {\r\n PreventDefaulEvent(e);\r\n this._openPopover(popover);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n mousedown(ev, dayIndex): void {\r\n this.days.forEach((d) => {\r\n d.isAddingNewEvent = false;\r\n d.addingEventPoint1 = null;\r\n d.addingEventPoint2 = null;\r\n });\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(ev.offsetY / 25);\r\n this.days[dayIndex].addingEventPoint2 = null;\r\n }\r\n mousedownForResize(_day, dayIndex, taskIndex): void {\r\n const task = this.days[dayIndex].tasks[taskIndex];\r\n this.days[dayIndex].tasks[taskIndex].hidden = true;\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(task.top / 25);\r\n this.days[dayIndex].addingEventPoint2 = Math.floor((task.top + task.height) / 25);\r\n this._cdr.detectChanges();\r\n }\r\n mousemove(ev, dayIndex): void {\r\n if (!this.days[dayIndex].isAddingNewEvent) {\r\n return;\r\n }\r\n if (ev.target.tagName !== 'DIV') {\r\n return;\r\n }\r\n this.days[dayIndex].addingEventPoint2 = Math.floor(ev.offsetY / 25);\r\n }\r\n mouseup(_ev, dayIndex, replacingTaskIndex: number | null = null): void {\r\n const day = this.days[dayIndex];\r\n if (replacingTaskIndex) {\r\n this.days[dayIndex].tasks[replacingTaskIndex].hidden = false;\r\n }\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n day.isAddingNewEvent = false;\r\n const { addingEventPoint1, addingEventPoint2 } = day;\r\n if (addingEventPoint1 !== null && addingEventPoint2 !== null) {\r\n const startDateTotalMinutes = Math.min(addingEventPoint1, addingEventPoint2) * 30;\r\n const startDateHour = Math.floor(startDateTotalMinutes / 60);\r\n const startDateMinutes = Math.floor(startDateTotalMinutes % 60);\r\n const startDate = new Date(day.date);\r\n startDate.setHours(startDateHour);\r\n startDate.setMinutes(startDateMinutes);\r\n const endDateTotalMinutes = (Math.max(addingEventPoint1, addingEventPoint2) + 1) * 30;\r\n const endDateHour = Math.floor(endDateTotalMinutes / 60);\r\n const endDateMinutes = Math.floor(endDateTotalMinutes % 60);\r\n const endDate = new Date(day.date);\r\n endDate.setHours(endDateHour);\r\n endDate.setMinutes(endDateMinutes);\r\n this._rangeSelect({ startDate, endDate });\r\n day.addingEventPoint1 = null;\r\n day.addingEventPoint2 = null;\r\n this._sectionRef?.nativeElement.remove();\r\n }\r\n }\r\n private _fireDaySelect(date: Date): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit(date);\r\n }\r\n }\r\n private _rangeSelect({ startDate, endDate }): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.rangeSelect.emit({ startDate, endDate });\r\n }\r\n }\r\n private _openPopover(popover: any): void {\r\n if (popover.isOpen) {\r\n this._hasPopoverOpened.push(popover);\r\n } else {\r\n this._hasPopoverOpened.pop();\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n const taskHeight = 50;\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: { [key: string]: any[] }[] = [];\r\n const days = this.days;\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, taskHeight);\r\n weekTasksArray.push(week);\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((weekTask) => {\r\n this._calendarService.fillWeek(weekTask, days.length);\r\n });\r\n const tasks = [];\r\n let counter = 0;\r\n Object.values(weekTasksArray).forEach(() => {\r\n Object.values(week).forEach((element) => {\r\n const filtered = element.some((c) => c.colSpan > 1 || (c.colSpan === 1 && !c.inDay && c.event));\r\n if (filtered) {\r\n tasks[counter.toString()] = element;\r\n counter++;\r\n }\r\n });\r\n });\r\n this.weekTasksArray = tasks;\r\n }\r\n}\r\n","<div\r\n class=\"table-container\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n style=\"overflow-y: hidden; flex-shrink: 0\"\r\n #tableTop\r\n>\r\n <table fd-table class=\"table-top\" fdCompact [attr.daysCount]=\"days.length\">\r\n <tbody fd-table-body>\r\n <tr fd-table-row class=\"week-days\">\r\n <td class=\"td-time\"></td>\r\n @for (day of days; track day) {\r\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" fd-table-cell style=\"width: 100%\">\r\n {{ day.dayName }}\r\n </td>\r\n }\r\n </tr>\r\n <tr fd-table-row class=\"week-numbers\">\r\n <td class=\"td-time\"></td>\r\n @for (day of days; track day) {\r\n <td fd-table-cell [attr.rtl]=\"rtl\">\r\n <bc-day-number-box\r\n [day]=\"day\"\r\n [isWeekMode]=\"true\"\r\n [isSingleDay]=\"days.length === 1\"\r\n (dayClick)=\"onDayClick(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray,\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: 0\r\n }\r\n \"\r\n ></ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\r\n @for (rowTask of weekTasks | keyvalue; track rowTask; let i = $index) {\r\n <tr fd-table-row class=\"task-row\">\r\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\r\n @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan && dayIndex < days.length) {\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\r\n class=\"td-button\"\r\n [attr.hasevent]=\"!!task.event\"\r\n >\r\n @if (task.event && !task.inDay) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n<div\r\n class=\"table-container\"\r\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1; display: inline-table\"\r\n [style.height.px]=\"inDialog ? containerHeight : null\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody #tbody>\r\n <tr class=\"tr-time\" style=\"height: 0rem\">\r\n <td class=\"td-time\" style=\"height: 0rem\"></td>\r\n <td [colspan]=\"days.length\" style=\"height: 0rem\">\r\n <div class=\"tasks-wrapper\">\r\n @for (hour of hours; track hour) {\r\n <div class=\"row-border\"></div>\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n <tr fd-table-row style=\"height: 100%\">\r\n <td fd-table-cell class=\"td-time\">\r\n <div class=\"calc-time\">\r\n @for (hour of hours; track hour) {\r\n <div>{{ hour }}</div>\r\n }\r\n </div>\r\n </td>\r\n @for (day of days; track day; let dayIndex = $index) {\r\n <td class=\"tw-relative\" fd-table-cell (click)=\"onColumnClick($event, day)\">\r\n @if (day.addingEventPoint2 !== null && day.addingEventPoint1 !== null) {\r\n <section\r\n #sectionRef\r\n class=\"tw-w-[98%] tw-border tw-border-blue-400 tw-absolute tw-left-1/2 -tw-translate-x-1/2 tw-rounded-md tw-transition-colors\"\r\n [ngStyle]=\"{\r\n top: Math.min(day.addingEventPoint2, day.addingEventPoint1) * 25 + 'px',\r\n height: (Math.abs(day.addingEventPoint1 - day.addingEventPoint2) + 1) * 25 + 'px'\r\n }\"\r\n [ngClass]=\"{\r\n 'tw-bg-blue-400/[.4]': day.isAddingNewEvent,\r\n 'tw-bg-blue-400': !day.isAddingNewEvent\r\n }\"\r\n ></section>\r\n }\r\n <div\r\n style=\"position: absolute; left: 0; right: 0; top: 0; bottom: 0\"\r\n (mousedown)=\"mousedown($event, dayIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n >\r\n @for (task of day.tasks; track task; let taskIndex = $index) { @if (task.inDay) {\r\n <bc-event-button\r\n (click)=\"setSelectedId(task.event.Id); onEventButton($event)\"\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n [style.top.px]=\"task.top\"\r\n [style.right]=\"\r\n rtl\r\n ? 'calc(' + (task.positionCausedByOverlap / task.countOfOverlaps) * 100 + '%)'\r\n : null\r\n \"\r\n [style.left]=\"\r\n rtl\r\n ? null\r\n : 'calc(100% - ' +\r\n (task.positionCausedByOverlap / task.countOfOverlaps) * 100 +\r\n '%)'\r\n \"\r\n [style.width]=\"\r\n 'calc(' + (100 - (task.positionCausedByOverlap / task.countOfOverlaps) * 100) + '%)'\r\n \"\r\n [style.height.px]=\"task.height || 5\"\r\n [style.maxHeight.px]=\"task.height || 5\"\r\n [style.visibility]=\"task.hidden ? 'hidden' : 'visible'\"\r\n [style.opacity]=\"task.opacity\"\r\n [style.zIndex]=\"task.positionCausedByOverlap + (selectedTaskId === task.event.Id ? 0 : 0)\"\r\n [buttonTemplate]=\"eventButtonTemplate\"\r\n class=\"task-day\"\r\n [task]=\"task\"\r\n [index]=\"taskIndex\"\r\n [deviceSize]=\"deviceSize\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <div\r\n class=\"tw-absolute tw-bottom-0 tw-h-1 tw-cursor-ns-resize tw-w-full tw-left-0\"\r\n (mousedown)=\"$event.stopPropagation(); mousedownForResize(day, dayIndex, taskIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex, taskIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n ></div>\r\n </bc-event-button>\r\n } }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template\r\n #eventButtonTemplate\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n class=\"task-title tw-border !tw-border-gray-300 tw-shadow-lg\"\r\n fd-button\r\n [compact]=\"true\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onButtonClick(popover)\"\r\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\r\n >\r\n @if (task.height > 49) {\r\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\r\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\r\n }\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list-item',\r\n templateUrl: './calendar-list-item.component.html',\r\n styleUrls: ['./calendar-list-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListItemComponent extends BaseComponent {\r\n @Input() mo: MetaobjectDataModel;\r\n @Input() startTime: string;\r\n @Input() endTime: string;\r\n @Input() title: string;\r\n @Input() notes: string;\r\n @Input() bgColor: string;\r\n @Input() id: string;\r\n}\r\n","<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <fd-text [text]=\"startTime\"></fd-text>\r\n <fd-text class=\"ela\" [text]=\"'الی'\"></fd-text>\r\n <fd-text [text]=\"endTime\"></fd-text>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"bgColor\"></div>\r\n <div class=\"event-wrapper\">\r\n <fd-text class=\"title\" [text]=\"title\"></fd-text>\r\n <fd-text class=\"desc\" [text]=\"notes\"></fd-text>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list-container',\r\n templateUrl: './calendar-list-container.component.html',\r\n styleUrls: ['./calendar-list-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListContainerComponent extends BaseComponent {\r\n @Input() view: any;\r\n @Input() reportItemComponentName: string;\r\n @Input() showEvents: boolean;\r\n @Input() moDataList: MetaobjectDataModel[] | null;\r\n @Input() calendarFields: CalendarFields;\r\n @Output() showEventsTap = new EventEmitter();\r\n public trackById(_index: number, item: MetaobjectDataModel): string {\r\n return item.Id;\r\n }\r\n}\r\n","<ul fd-list [subline]=\"true\">\r\n @for (item of moDataList; track trackById($index, item)) {\r\n <li fd-list-item [interactive]=\"true\">\r\n <fd-avatar size=\"s\" label=\"Jane Doe\"></fd-avatar>\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item[calendarFields.Title] }}</div>\r\n <div fd-list-subline>{{ item[calendarFields.Notes] }}</div>\r\n <div fd-list-byline [twoCol]=\"true\">\r\n <div fd-list-byline-left>{{ item[calendarFields.StartDate+'$Caption'] }}</div>\r\n <div fd-list-byline-right>{{ item[calendarFields.EndDate+'$Caption'] }}</div>\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n</ul>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list',\r\n templateUrl: './calendar-list.component.html',\r\n styleUrls: ['./calendar-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListComponent extends BaseComponent {\r\n @Input() moDataList: MetaobjectDataModel[];\r\n public trackById(_index: number, item: MetaobjectDataModel): string {\r\n return item.Id;\r\n }\r\n}\r\n","@for (item of moDataList; track trackById($index, item)) {\r\n<bc-calendar-list-item [mo]=\"item\"> </bc-calendar-list-item>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\r\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n UiReportViewBaseSetting,\r\n ReportViewBaseComponent,\r\n DateService,\r\n LogService,\r\n getDateService,\r\n MetaobjectDataModel,\r\n CalendarMetaobjectDataModel,\r\n BarsaApi\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-container',\r\n templateUrl: './calendar-container.component.html',\r\n styleUrls: ['./calendar-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService,\r\n deps: [LogService]\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class CalendarContainerComponent\r\n extends ReportViewBaseComponent<UiReportViewBaseSetting>\r\n implements OnInit, OnChanges\r\n{\r\n @ViewChild('divRef', { static: true }) _divRef: ElementRef;\r\n @Input() calendarFields;\r\n @Input() userCalendars;\r\n @Input() viewSetting: UiCalendarSettings;\r\n @Output() deleteTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ [key: string]: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() loadData = new EventEmitter<{ start: Date; end: any }>();\r\n selectedDay: Day;\r\n todayIndex = -1;\r\n selectedIndex: any;\r\n calendars: CalendarMonthInfo[];\r\n showEvents: boolean;\r\n width: number;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n mode$: Observable<CalendarMode>;\r\n selectedWeek$: Observable<number>;\r\n weekModeDays$: Observable<Day[]>;\r\n days$: Observable<Day[]>;\r\n weeksCount: number;\r\n firstWeekIndex: number;\r\n monthWeeksCount$: Observable<number>;\r\n modeTitle$: Observable<string>;\r\n title$: Observable<string>;\r\n eventMoDataList$ = new BehaviorSubject<MetaobjectDataModel[]>([]);\r\n private _calendarService = inject(CalendarService);\r\n private _dateService = inject(DateService);\r\n\r\n ngOnInit(): void {\r\n this.calendarFields = this.contextSetting.View.CalendarFields;\r\n if (this.viewSetting?.CalendarColorField) {\r\n this.calendarFields.Color = this.viewSetting.CalendarColorField;\r\n }\r\n this.userCalendars = this.contextSetting.View.UserCalendars;\r\n super.ngOnInit();\r\n if (!this.viewSetting) {\r\n const x: any = { DefaultMode$Caption: 'month' };\r\n this.viewSetting = x;\r\n }\r\n this._calendarService.setCulture(BarsaApi.LoginFormData.Culture);\r\n this._calendarService.setMode(this.viewSetting.DefaultMode$Caption);\r\n\r\n this.prepare();\r\n this._setWidthAndHeight();\r\n this.prepareMoDataList(this.moDataList);\r\n this.selectedMonth$.pipe(takeUntil(this._onDestroy$)).subscribe((month: CalendarMonthInfo) => {\r\n this.loadData.emit({\r\n start: month.days[0].date,\r\n end: month.days[month.days.length - 1].date\r\n });\r\n });\r\n\r\n // this.setTasks(this.calendars, this.moDataList, this.calendarFields);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { moDataList, deviceSize } = changes;\r\n if (moDataList && !moDataList.firstChange) {\r\n this.prepareMoDataList(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this._setWidthAndHeight();\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n onCalendarCheckChange(_calendar: MetaobjectDataModel): void {\r\n this._handleUserCalendarsChecked();\r\n }\r\n onDayClick(day: Day): void {\r\n this._calendarService.setMode('day', day);\r\n }\r\n onShowTask(): void {}\r\n onSlideChange(selected: CalendarMonthInfo): void {\r\n this._calendarService.setSelected(selected);\r\n }\r\n onMonthCarouselLoaded({ object }): void {\r\n object.selectedPage = 1;\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onModeChange(mode: CalendarMode): void {\r\n this._calendarService.setMode(mode);\r\n }\r\n onRangeChange(e: { startDay: Day; endDay: Day; monthInfo: CalendarMonthInfo }): void {\r\n this._calendarService.rangeSelect(e.startDay, e.endDay, e.monthInfo);\r\n }\r\n onPrevTap(): void {\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage - 1);\r\n this._calendarService.loadPrevious();\r\n }\r\n\r\n onNextTap(): void {\r\n this._calendarService.loadNext();\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage + 1);\r\n }\r\n\r\n onSelectedChange(day: Day): void {\r\n this.selectedDay = { ...day };\r\n }\r\n onRangeSelect({ startDate, endDate }): void {\r\n const x = { [this.calendarFields.StartDate]: startDate, [this.calendarFields.EndDate]: endDate };\r\n this.rangeSelect.emit(x);\r\n }\r\n\r\n prepareMoDataList(moDataList: MetaobjectDataModel[]): void {\r\n this.eventMoDataList$.next(\r\n moDataList.map((event) => ({\r\n ...event,\r\n id: event.Id, // because in core.js calendar selection adapter read id with lowercase\r\n $StartDateInfo: this._dateService.getDateInfo(event[this.calendarFields.StartDate]),\r\n $EndDateInfo: this._dateService.getDateInfo(event[this.calendarFields.EndDate])\r\n }))\r\n );\r\n }\r\n\r\n addTd(table: any[], tr: any[], event: CalendarMetaobjectDataModel, colSpan: number): void {\r\n const colSpanCount = tr.length > 0 ? tr.map((c) => c.colSpan).reduce((a, b) => a + b) > 6 : 0;\r\n if (colSpanCount) {\r\n table.push(tr);\r\n tr = [];\r\n }\r\n tr.push({ type: 'td', colSpan, event });\r\n }\r\n private _handleUserCalendarsChecked(): void {\r\n const userCalendars = this.userCalendars?.Data?.MoDataList;\r\n if (!userCalendars?.length) {\r\n return;\r\n }\r\n const calendars = userCalendars.filter((c) => c.$IsChecked).map((c) => c.Id);\r\n let moList = this.moDataList;\r\n\r\n if (calendars.length > 0) {\r\n moList = this.moDataList.filter(\r\n (c) => c[this.calendarFields.Calendar] && calendars.indexOf(c[this.calendarFields.Calendar].Id) > -1\r\n );\r\n }\r\n this.prepareMoDataList(moList);\r\n }\r\n private prepare(): void {\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.days$ = this._calendarService.days$;\r\n this.today = this._calendarService.today;\r\n this.mode$ = this._calendarService.mode$;\r\n\r\n this.monthWeeksCount$ = this.mode$.pipe(\r\n map((mode) => {\r\n if (mode === 'month') {\r\n return this._calendarService.selectedMonth.weeksCount;\r\n }\r\n return 0;\r\n })\r\n );\r\n this.modeTitle$ = combineLatest([this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([, mode]) => {\r\n if (mode === 'customMonth') {\r\n return of(`${this._calendarService.weeksCount} ${this._bbbTranslate.transform('Week')}`);\r\n }\r\n return of(this._bbbTranslate.transform(this._titleCase.transform(mode)));\r\n })\r\n );\r\n\r\n this.weekModeDays$ = this._calendarService.weekModeDays$;\r\n this._calendarService.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe((calendars) => {\r\n const eventCalendars = [...calendars];\r\n // eventCalendars = eventCalendars.splice(this.selectedIndex, 3);\r\n this.calendars = eventCalendars;\r\n // if (this.monthCarouselView) {\r\n // this.monthCarouselView.nativeElement.selectedPage = 1;\r\n // }\r\n });\r\n\r\n // .pipe(takeUntil(this._onDestroy$))\r\n // .subscribe((todayIndex) => {\r\n // this.selectedIndex = this.todayIndex = todayIndex;\r\n // this.gotoPage(this.todayIndex);\r\n // });\r\n this.title$ = combineLatest([this.weekModeDays$, this.selectedMonth$, this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([weekModeDays, monthInfo, days, mode]) => {\r\n let monthName = monthInfo.dateInfo.monthName;\r\n const year = monthInfo.dateInfo.strYear;\r\n\r\n if (mode !== 'month') {\r\n let firstDayInfo: Day;\r\n let lastDayInfo: Day;\r\n const daysTemp = mode === 'customMonth' ? days : weekModeDays;\r\n if (daysTemp.length > 0) {\r\n firstDayInfo = daysTemp[0];\r\n lastDayInfo = daysTemp[daysTemp.length - 1];\r\n monthName = firstDayInfo.monthName;\r\n if (firstDayInfo.month !== lastDayInfo.month) {\r\n monthName = `${firstDayInfo.monthName} -\r\n ${lastDayInfo.monthName}`;\r\n }\r\n }\r\n }\r\n return of(`${monthName} ${year}`);\r\n })\r\n );\r\n }\r\n\r\n private _setWidthAndHeight(): void {\r\n // const divRef= this._el.nativeElement;\r\n const divRef = this._divRef.nativeElement;\r\n\r\n this.width = divRef.offsetWidth;\r\n this.height = divRef.offsetHeight - 45;\r\n }\r\n}\r\ninterface UiCalendarSettings extends UiReportViewBaseSetting {\r\n CalendarColorField: string;\r\n HideDailyButton: boolean;\r\n HideHeader: boolean;\r\n HideMonthlyButton: boolean;\r\n HidePrevNex: boolean;\r\n HideSelectionDays: boolean;\r\n HideTodayButton: boolean;\r\n HideWeeklyButton: boolean;\r\n HideModeButton: boolean;\r\n DefaultMode$Caption: CalendarMode;\r\n}\r\n","<div style=\"display: flex; width: 100%; height: 100%; flex-direction: row\">\r\n @if ((deviceSize !== 's' && deviceSize !== 'm') && (!viewSetting.HideSelectionDays &&\r\n !userCalendars?.Data?.MoDataList?.length)) {\r\n <div style=\"width: 320px; height: 100%\">\r\n @if(!viewSetting.HideSelectionDays){\r\n <bc-calendar-selection-days\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n <div style=\"height: 1px; background: #ccc\"></div>\r\n } @if (userCalendars?.Data?.MoDataList?.length) {\r\n <div>\r\n <h4>تقویمهایمن</h4>\r\n @for (calendar of userCalendars.Data.MoDataList; track calendar) {\r\n <ul fd-list>\r\n <li fd-list-item style=\"padding: 0\" class=\"user-calendar\">\r\n <span\r\n [style.background]=\"calendar.Color ? calendar.Color : null\"\r\n style=\"width: 5px; height: 100%; position: absolute\"\r\n ></span>\r\n <fd-checkbox\r\n [(ngModel)]=\"calendar.$IsChecked\"\r\n (change)=\"onCalendarCheckChange(calendar)\"\r\n ></fd-checkbox>\r\n <span fd-list-title>{{ calendar.$Caption }}</span>\r\n </li>\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div style=\"flex: 1\" #divRef>\r\n @if(!viewSetting.HideHeader){\r\n <bc-calendar-header\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\r\n [rtl]=\"rtl\"\r\n [hidePrevNext]=\"viewSetting.HidePrevNex\"\r\n [hideTodayButton]=\"viewSetting.HideTodayButton\"\r\n [hideSelectionDays]=\"viewSetting.HideSelectionDays\"\r\n [hideDailyButton]=\"viewSetting.HideDailyButton\"\r\n [hideMonthlyButton]=\"viewSetting.HideMonthlyButton\"\r\n [hideWeeklyButton]=\"viewSetting.HideWeeklyButton\"\r\n [hideModeButton]=\"viewSetting.HideModeButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [mode]=\"(mode$ | async)!!\"\r\n [modeTitle]=\"(modeTitle$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n (modeChange)=\"onModeChange($event)\"\r\n (prevTap)=\"onPrevTap()\"\r\n (nextTap)=\"onNextTap()\"\r\n (today)=\"onToday()\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n >\r\n </bc-calendar-header>\r\n } @switch (mode$ | async) { @case ('week') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @case ('day') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @case ('list') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n listCalendar;\r\n context: {\r\n $implicit: days$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n monthWeeksCount: monthWeeksCount$ | async,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @default {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n monthCalendar;\r\n context: {\r\n $implicit: days$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n monthWeeksCount: monthWeeksCount$ | async,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } }\r\n </div>\r\n</div>\r\n<ng-template\r\n #monthCalendar\r\n let-days\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-monthWeeksCount=\"monthWeeksCount\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [monthWeeksCount]=\"monthWeeksCount\"\r\n [rtl]=\"rtl\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"days\"\r\n [canView]=\"access.View\"\r\n [canAdd]=\"access.Add\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n ></bc-calendar-month>\r\n</ng-template>\r\n\r\n<ng-template #listCalendar>\r\n <bc-calendar-list-container\r\n [showEvents]=\"showEvents\"\r\n [selectedDay]=\"selectedDay\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"eventMoDataList$ | async\"\r\n (showEventsTap)=\"showEvents = !showEvents\"\r\n ></bc-calendar-list-container>\r\n</ng-template>\r\n\r\n<ng-template\r\n #weekCalendar\r\n let-selectedMonth\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-weekModeDays=\"weekModeDays\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-week\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [inDialog]=\"inDialog\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [rtl]=\"rtl\"\r\n [canAdd]=\"access.Add\"\r\n [canView]=\"access.View\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"weekModeDays\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n (rangeSelect)=\"onRangeSelect($event)\"\r\n ></bc-calendar-week>\r\n</ng-template>\r\n","import { ComponentFactoryResolver, NgModule, NO_ERRORS_SCHEMA, inject } from '@angular/core';\nimport { CommonModule, TitleCasePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\nimport { CardModule } from '@fundamental-ngx/core/card';\nimport { QuickViewModule } from '@fundamental-ngx/core/quick-view';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\n\nimport { BarsaNovinRayCoreModule, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';\n\nimport { CalendarContainerComponent } from './calendar-container/calendar-container.component';\nimport { CalendarListComponent } from './calendar-list/calendar-list.component';\nimport { CalendarListContainerComponent } from './calendar-list-container/calendar-list-container.component';\nimport { CalendarListItemComponent } from './calendar-list-item/calendar-list-item.component';\nimport { CalendarWeekComponent } from './calendar-week/calendar-week.component';\nimport { CalendarMonthComponent } from './calendar-month/calendar-month.component';\nimport { CalendarService } from './services/calendar.service';\nimport { MonthDaysComponent } from './month-days/month-days.component';\nimport { DaysInWeekPipe } from './days-in-week.pipe';\nimport { EventDatePipe } from './event-date.pipe';\nimport { EventTimePipe } from './event-time.pipe';\nimport { FromToTimePipe } from './from-to-time.pipe';\nimport { EqualDatePipe } from './equal-date.pipe';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { EventPreviewComponent } from './event-preview/event-preview.component';\nimport { DayNumberBoxComponent } from './day-number-box/day-number-box.component';\nimport { EventButtonComponent } from './event-button/event-button.component';\nimport { DayEventListComponent } from './day-event-list/day-event-list.component';\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\nimport { CalendarSelectionDaysComponent } from './calendar-selection-days/calendar-selection-days.component';\nimport { EventButtonEndArrowComponent } from './event-button-end-arrow/event-button-end-arrow.component';\nimport { EventButtonStartArrowComponent } from './event-button-start-arrow/event-button-start-arrow.component';\n\nconst components = [\n CalendarContainerComponent,\n CalendarListComponent,\n CalendarListContainerComponent,\n CalendarListItemComponent,\n CalendarWeekComponent,\n CalendarMonthComponent,\n MonthDaysComponent,\n CalendarHeaderComponent,\n EventPreviewComponent,\n DayNumberBoxComponent,\n EventButtonComponent,\n DayEventListComponent,\n EventButtonEndArrowComponent,\n EventButtonStartArrowComponent,\n DateTimePickerComponent, \n CalendarSelectionDaysComponent\n];\nconst pipes = [DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe];\n@NgModule({\n schemas: [NO_ERRORS_SCHEMA],\n imports: [\n CommonModule,\n FormsModule,\n BarsaNovinRayCoreModule,\n FundamentalNgxCoreModule,\n PopoverModule,\n CardModule,\n QuickViewModule\n ],\n declarations: [...components, ...pipes],\n providers: [TitleCasePipe, CalendarService, ...pipes],\n exports: [...components]\n})\nexport class BarsaCalendarModule extends BaseModule {\n protected dcm: DynamicComponentService;\n protected componentFactoryResolver: ComponentFactoryResolver;\n\n protected dynamicComponents = [...components];\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n \n constructor() {\n const dcm = inject(DynamicComponentService);\n const componentFactoryResolver = inject(ComponentFactoryResolver);\n\n super(dcm, componentFactoryResolver, 'BarsaCalendarModule');\n \n this.dcm = dcm;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i7","i8","i9.EventDatePipe","i4","i5","i6.EventPreviewComponent","i7.EventButtonEndArrowComponent","i8.EventButtonStartArrowComponent","i9.EventTimePipe","i1","i7.DayNumberBoxComponent","i8.EventButtonEndArrowComponent","i9.EventButtonStartArrowComponent","i3","i6","i8.EventButtonComponent","i9.DayEventListComponent","i10.DaysInWeekPipe","i11.EqualDatePipe","i7.CalendarMonthComponent","i11","i12","i15","i16.CalendarMonthComponent","i17.CalendarSelectionDaysComponent","moment","i6.DayNumberBoxComponent","i7.EventButtonComponent","i8.DayEventListComponent","i9.DaysInWeekPipe","i7.CalendarSelectionDaysComponent","i5.DayNumberBoxComponent","i6.EventButtonComponent","i7.FromToTimePipe","i1.CalendarListItemComponent","i5.CalendarListContainerComponent","i6.CalendarWeekComponent","i8.CalendarHeaderComponent","i9.CalendarSelectionDaysComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"barsa-calendar.mjs","sources":["../../../projects/barsa-calendar/src/lib/models.ts","../../../projects/barsa-calendar/src/lib/services/calendar.service.ts","../../../projects/barsa-calendar/src/lib/days-in-week.pipe.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.ts","../../../projects/barsa-calendar/src/lib/day-number-box/day-number-box.component.html","../../../projects/barsa-calendar/src/lib/constants.ts","../../../projects/barsa-calendar/src/lib/event-date.pipe.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.ts","../../../projects/barsa-calendar/src/lib/event-preview/event-preview.component.html","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-end-arrow/event-button-end-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.ts","../../../projects/barsa-calendar/src/lib/event-button-start-arrow/event-button-start-arrow.component.html","../../../projects/barsa-calendar/src/lib/event-time.pipe.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.ts","../../../projects/barsa-calendar/src/lib/event-button/event-button.component.html","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.ts","../../../projects/barsa-calendar/src/lib/day-event-list/day-event-list.component.html","../../../projects/barsa-calendar/src/lib/equal-date.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.ts","../../../projects/barsa-calendar/src/lib/calendar-month/calendar-month.component.html","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.ts","../../../projects/barsa-calendar/src/lib/calendar-selection-days/calendar-selection-days.component.html","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.ts","../../../projects/barsa-calendar/src/lib/date-time-picker/date-time-picker.component.html","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.ts","../../../projects/barsa-calendar/src/lib/month-days/month-days.component.html","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.ts","../../../projects/barsa-calendar/src/lib/calendar-header/calendar-header.component.html","../../../projects/barsa-calendar/src/lib/from-to-time.pipe.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.ts","../../../projects/barsa-calendar/src/lib/calendar-week/calendar-week.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-item/calendar-list-item.component.html","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list-container/calendar-list-container.component.html","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.ts","../../../projects/barsa-calendar/src/lib/calendar-list/calendar-list.component.html","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.ts","../../../projects/barsa-calendar/src/lib/calendar-container/calendar-container.component.html","../../../projects/barsa-calendar/src/lib/barsa-calendar.module.ts","../../../projects/barsa-calendar/src/barsa-calendar.ts"],"sourcesContent":["import { DateInfo, CalendarMetaobjectDataModel } from 'barsa-novin-ray-core';\n\nexport type RecurrenceFrequency = 'daily' | 'weekly' | 'monthly' | 'yearly';\nexport type CalendarType = 'Local' | 'CalDAV' | 'Exchange' | 'Subscription' | 'Birthday' | 'Mail';\n\ninterface Recurrence {\n frequency: RecurrenceFrequency;\n /**\n * Default 1 (every <RecurrenceFrequency>).\n */\n interval: number;\n endDate?: Date;\n count?: number;\n}\n\nexport interface Calendar {\n id: string;\n name: string;\n /**\n * iOS: same as 'name'\n * Android: usually the same as 'name' as well\n */\n displayName?: string;\n /**\n * iOS only\n */\n type?: CalendarType;\n}\nexport interface Reminder {\n minutes: number;\n}\nexport interface Attendee {\n name: string;\n url?: string;\n /**\n * One of: \"Unknown\", \"Pending\", \"Accepted\", \"Declined\", \"Tentative\", \"Delegated\", \"Completed\", \"In Process\"\n */\n status: string;\n /**\n * One of: \"Unknown\", \"Required\", \"Optional\", \"Chair\", \"Non Participant\"\n */\n role: string;\n /**\n * One of: \"Unknown\", \"Person\", \"Room\", \"Resource\", \"Group\"\n */\n type: string;\n}\n\nexport interface CalendarEvent {\n id: string;\n title: string;\n location: string;\n notes: string;\n url?: string;\n startDate: Date;\n endDate: Date;\n allDay: boolean;\n calendar: Calendar;\n recurrence?: Recurrence;\n reminders?: Array<Reminder>;\n /**\n * iOS only.\n */\n attendees?: Array<Attendee>;\n //\n days?: Date[];\n order: number;\n color?: string;\n repeat?: string;\n}\nexport type CalendarMode = 'month' | 'customMonth' | 'week' | 'day' | 'year' | 'list';\nexport enum DayStatus {\n Open,\n Completed,\n Failed\n}\nexport class CalendarMonthInfo {\n dateInfo: DateInfo;\n days: Day[];\n tasks: any[];\n selectedWeek: number;\n weeksCount: number;\n id: string;\n get daysInWeek(): Day[] {\n const start = this.selectedWeek * 7;\n const days = this.days.slice(start, start + 7);\n return days;\n }\n}\n\nexport interface Day {\n [key: string]: any;\n index: number;\n momentOfDate: any;\n boxBound?: {\n data: CalendarMetaobjectDataModel;\n top: number;\n left: number;\n width: number;\n height: number;\n }[];\n dayInMonth: string;\n dayInWeek: number;\n month: number;\n year: number;\n dayName: string;\n date: Date;\n status: DayStatus;\n isToday: boolean;\n isInMonth: boolean;\n isEndOfMonth: boolean;\n isStartOfMonth: boolean;\n tasks: CalendarMetaobjectDataModel[];\n row: number;\n col: number;\n addingEventPoint1: number | null;\n addingEventPoint2: number | null;\n isAddingNewEvent: boolean;\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\r\nimport { Observable, BehaviorSubject, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport {\r\n DateService,\r\n getUniqueId,\r\n getDateService,\r\n DateInfo,\r\n MetaobjectDataModel,\r\n CalendarFields,\r\n CultureTypes,\r\n LogService\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day, DayStatus } from '../models';\r\nimport moment from 'moment/moment';\r\n\r\n@Injectable()\r\nexport class CalendarService implements OnDestroy {\r\n selected$: Observable<CalendarMonthInfo>;\r\n\r\n days$: Observable<Day[]>;\r\n mode$: Observable<CalendarMode>;\r\n weekModeDays$: Observable<Day[]>;\r\n calendars$: Observable<CalendarMonthInfo[]>;\r\n currentMonthIndex$: Observable<number>;\r\n today: Date;\r\n todayDay: Day | undefined;\r\n _dateService: DateService;\r\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\r\n private _todayMonthInfo: CalendarMonthInfo;\r\n private _calendarsSource = new BehaviorSubject<CalendarMonthInfo[]>([]);\r\n private _selectedSource: BehaviorSubject<CalendarMonthInfo>;\r\n private _modeSource = new BehaviorSubject<CalendarMode>('month');\r\n private _currentMonthIndexSource = new BehaviorSubject<number>(-1);\r\n private _weekModeDaysSource = new BehaviorSubject<Day[]>([]);\r\n private _daysSource = new BehaviorSubject<Day[]>([]);\r\n private _log = inject(LogService);\r\n\r\n ngOnDestroy(): void {\r\n this._onDestroy$.next();\r\n this._onDestroy$.complete();\r\n }\r\n\r\n get todayMonthInfo(): CalendarMonthInfo {\r\n return this._todayMonthInfo;\r\n }\r\n get selectedMonth(): CalendarMonthInfo {\r\n return this._selectedSource.getValue();\r\n }\r\n get calendars(): Array<CalendarMonthInfo> {\r\n return this._calendarsSource.getValue();\r\n }\r\n get weeksCount(): number {\r\n return this._daysSource.getValue().length / 7;\r\n }\r\n get days(): Array<Day> {\r\n return this._daysSource.getValue();\r\n }\r\n get Months(): string[] {\r\n return this._dateService.monthNames();\r\n }\r\n loadMonthByDate(value: Date): void {\r\n const monthInfo = this._dateService.getDateInfo(value);\r\n this.loadMonth(monthInfo);\r\n }\r\n setDays(days: Day[]): void {\r\n this._daysSource.next(days);\r\n }\r\n prepareWeek(monthInfo: CalendarMonthInfo, startIndex: number, daysCount: number): void {\r\n const startDays = monthInfo.days.slice(startIndex, startIndex + daysCount);\r\n this._weekModeDaysSource.next(startDays);\r\n }\r\n setSelected(selected: CalendarMonthInfo): void {\r\n this._selectedSource.next(selected);\r\n }\r\n weekDaysMin(): Array<string> {\r\n return this._dateService.weekdaysMin();\r\n }\r\n weekDays(): Array<string> {\r\n return this._dateService.weekDays();\r\n }\r\n gotoToday(): void {\r\n this.loadMonth(this._todayMonthInfo.dateInfo, 0);\r\n this.setMode(\r\n this._modeSource.getValue(),\r\n this._todayMonthInfo.days.find((c) => c.isToday),\r\n this._weekModeDaysSource.getValue().length\r\n );\r\n }\r\n rangeSelect(startDay: Day, endDay: Day, monthInfo: CalendarMonthInfo): void {\r\n const diff = endDay.index - startDay.index;\r\n if (diff < 7) {\r\n this.setMode('week', startDay, diff + 1);\r\n } else {\r\n const diff2 = diff + 1;\r\n this.setMode('customMonth');\r\n this.setMonth(monthInfo, startDay, diff2);\r\n }\r\n }\r\n setMonth(monthInfo: CalendarMonthInfo, startDay?: Day, diff: number = 0): void {\r\n if (startDay && diff > 0) {\r\n const startIndex = startDay.index;\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days.slice(startIndex, startIndex + diff));\r\n } else {\r\n this.loadCalendarMonthInfo(monthInfo);\r\n this.setDays(monthInfo.days);\r\n // else if (mode === 'month') {\r\n // startDay = daysLoaded[0];\r\n // if (startDay) this.loadMonth(startDay.monthDateInfo);\r\n // }\r\n }\r\n }\r\n setMode(mode: CalendarMode, startDay?: Day, daysCount?: number): void {\r\n const oldMode = this._modeSource.getValue();\r\n this._modeSource.next(mode);\r\n if (mode === 'month') {\r\n this.setMonth(this.selectedMonth, startDay);\r\n return;\r\n } else if (mode === 'customMonth') {\r\n this.setMonth(this.selectedMonth, startDay, this.days.length);\r\n return;\r\n }\r\n const daysLoaded = this._weekModeDaysSource.getValue();\r\n daysCount = daysCount ?? (mode === 'week' ? 7 : 1);\r\n let startIndex = 0;\r\n if (!startDay) {\r\n if (mode === 'week' || mode === 'day') {\r\n if (oldMode === 'month') {\r\n {\r\n startDay = this.selectedMonth.days.find((c) => c.isToday);\r\n if (!startDay) {\r\n startDay = this.selectedMonth.days.find((c) => c.isStartOfMonth);\r\n }\r\n }\r\n } else if (oldMode === 'customMonth') {\r\n startDay = this.days[0];\r\n } else {\r\n startDay = daysLoaded[0];\r\n }\r\n }\r\n }\r\n if (startDay) {\r\n if (\r\n startDay.monthDateInfo.month !== this.selectedMonth.dateInfo.month ||\r\n startDay.monthDateInfo.year !== this.selectedMonth.dateInfo.year\r\n ) {\r\n this.loadMonth(startDay.monthDateInfo);\r\n }\r\n startIndex = this.selectedMonth.days.findIndex(\r\n (c) => c.month === startDay?.month && c.dayInMonth === startDay.dayInMonth\r\n );\r\n }\r\n this.prepareWeek(this._selectedSource.getValue(), startIndex, daysCount);\r\n }\r\n fillWeek(week: { [key: string]: any[] }, daysCount = 7): void {\r\n const arr: any[] = Object.values(week);\r\n arr.forEach(\r\n (\r\n element: {\r\n colSpan: number;\r\n event?: MetaobjectDataModel;\r\n opacity?: number;\r\n start?: Date;\r\n end?: Date;\r\n }[]\r\n ) => {\r\n for (const el of element) {\r\n const valueDate = el.end;\r\n if (valueDate && this._dateService.getMoment(valueDate).isBefore(this.today, 'day')) {\r\n el.opacity = 0.5;\r\n }\r\n }\r\n for (let i = element.length; i < daysCount; i++) {\r\n element.push({ colSpan: 1 });\r\n }\r\n }\r\n );\r\n }\r\n sortTasks(calendarTasks: MetaobjectDataModel[], calendarFields: CalendarFields): Array<MetaobjectDataModel> {\r\n const startDateField = calendarFields.StartDate;\r\n const endDateField = calendarFields.EndDate;\r\n calendarTasks.sort((taskA, taskB) => (taskA[startDateField] < taskB[startDateField] ? -1 : 1));\r\n calendarTasks.sort((taskA, taskB) => {\r\n const taskAStartDate = taskA[startDateField];\r\n const taskBStartDate = taskB[startDateField];\r\n const momentTaskAStartDate = this._dateService.getMoment(taskAStartDate);\r\n const momentTaskBStartDate = this._dateService.getMoment(taskBStartDate);\r\n if (momentTaskAStartDate.isSame(momentTaskBStartDate, 'day')) {\r\n const taskAEndDate = taskA[endDateField];\r\n const taskBEndDate = taskB[endDateField];\r\n const dayADiff = momentTaskAStartDate.diff(taskAEndDate, 'day');\r\n const dayBDiff = momentTaskBStartDate.diff(taskBEndDate, 'day');\r\n if (dayADiff > dayBDiff) {\r\n return 1;\r\n }\r\n if (dayADiff < dayBDiff) {\r\n return -1;\r\n }\r\n return 0;\r\n }\r\n {\r\n return 0;\r\n }\r\n });\r\n return calendarTasks;\r\n }\r\n createWeekTask(\r\n days: Day[],\r\n moDataList: MetaobjectDataModel[],\r\n calendarFields: CalendarFields,\r\n taskHeight: number\r\n ): { [key: string]: any[] } {\r\n const week: { [key: string]: any[] } = {};\r\n days.forEach((day, dayIndex) => {\r\n let counter = 0;\r\n moDataList.forEach((event) => {\r\n const counterIndex = counter.toString();\r\n if (!week[counterIndex]) {\r\n week[counterIndex] = [];\r\n } else if (week[counterIndex].length > dayIndex) {\r\n counter++;\r\n return;\r\n }\r\n for (let m = week[counterIndex].length; m < dayIndex; m++) {\r\n week[counterIndex].push({ colSpan: 1 });\r\n }\r\n // agar week[counter] colspan ja dasht anjam gardad.\r\n const newTask: any = { colSpan: 1 };\r\n const momentDay = this._dateService.getMoment(day.date);\r\n const momentOfStartEvent = this._dateService.getMoment(event[calendarFields.StartDate]);\r\n const endDate = event[calendarFields.EndDate];\r\n const momentOfEndEvent = this._dateService.getMoment(endDate);\r\n const diff = Math.abs(momentOfStartEvent.diff(momentOfEndEvent, 'day'));\r\n if (diff === 0 && momentDay.isSame(momentOfStartEvent, 'day')) {\r\n newTask.colSpan = 1;\r\n const startMinuteTop = (event.$StartDateInfo.minutes * taskHeight) / 60;\r\n newTask.top = event.$StartDateInfo.hour * taskHeight + startMinuteTop;\r\n const endMinuteTop = (event.$EndDateInfo.minutes * taskHeight) / 60;\r\n newTask.height =\r\n (event.$EndDateInfo.hour - event.$StartDateInfo.hour) * taskHeight +\r\n endMinuteTop -\r\n startMinuteTop;\r\n newTask.event = event;\r\n newTask.enddayIsInRow = true;\r\n newTask.startdayIsInRow = true;\r\n newTask.isStartDay = true;\r\n newTask.isEndDay = true;\r\n newTask.start = newTask.end = day.date;\r\n newTask.inDay =\r\n event.$StartDateInfo.hour > 0 ||\r\n event.$StartDateInfo.minutes > 0 ||\r\n event.$EndDateInfo.hour > 0 ||\r\n event.$EndDateInfo.minutes > 0;\r\n week[counterIndex].splice(dayIndex, 0, newTask);\r\n day.tasks.push(newTask);\r\n counter++;\r\n } else {\r\n let diffFromEndOfEvent = 0;\r\n let diffFromStartOfEvent = 0;\r\n const isBetween =\r\n momentDay.isSameOrAfter(momentOfStartEvent, 'day') &&\r\n momentDay.isSameOrBefore(momentOfEndEvent, 'day');\r\n if (isBetween) {\r\n diffFromEndOfEvent = 0;\r\n if (diff === 0) {\r\n newTask.colSpan = 1;\r\n newTask.event = event;\r\n } else {\r\n diffFromEndOfEvent = Math.abs(momentDay.diff(momentOfEndEvent, 'day'));\r\n diffFromStartOfEvent = Math.abs(momentDay.diff(momentOfStartEvent, 'day'));\r\n const isStartDay = momentDay.isSame(momentOfStartEvent, 'day');\r\n const isEndDay = momentDay.isSame(momentOfEndEvent, 'day');\r\n let colSpan = diff;\r\n if (!isStartDay) {\r\n colSpan = diffFromEndOfEvent;\r\n } else {\r\n colSpan = diff + 1; // include the start\r\n }\r\n newTask.colSpan = this._calcColSpan(colSpan, dayIndex, days.length);\r\n newTask.isStartDay = isStartDay;\r\n newTask.isEndDay = isEndDay;\r\n newTask.isMiddle = !isStartDay && !isEndDay;\r\n newTask.event = event;\r\n }\r\n if (newTask.isStartDay || dayIndex === 0) {\r\n for (let span = 0; span < newTask.colSpan; span++) {\r\n const taskIndex = dayIndex + span;\r\n if (taskIndex > days.length - 1) {\r\n break;\r\n }\r\n const taskDayInfo = days[taskIndex];\r\n const taskInfo = {\r\n ...newTask,\r\n start: taskDayInfo.date,\r\n end: endDate,\r\n isStartDay: span === 0 ? newTask.isStartDay : null,\r\n startTask: event.$StartDayInfo,\r\n endTask: event.$EndDayInfo,\r\n startdayIsInRow: dayIndex - diffFromStartOfEvent > -1,\r\n enddayIsInRow: !!days[diffFromEndOfEvent],\r\n isMiddle:\r\n span === 0\r\n ? newTask.isMiddle\r\n : this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .isBetween(momentOfStartEvent, momentOfEndEvent, 'day'),\r\n isEndDay:\r\n span === 0\r\n ? newTask.isEndDay\r\n : Math.abs(\r\n this._dateService\r\n .getMoment(taskDayInfo.date)\r\n .diff(momentOfEndEvent, 'day')\r\n ) <= 1,\r\n colSpan: span === 0 ? newTask.colSpan : null\r\n };\r\n week[counter.toString()].splice(taskIndex, 0, taskInfo);\r\n taskDayInfo.tasks.push(taskInfo);\r\n }\r\n counter++;\r\n }\r\n }\r\n }\r\n });\r\n day.tasks = day.tasks\r\n .map((t) => {\r\n t.positionCausedByOverlap = 0;\r\n return t;\r\n })\r\n .map((t) => {\r\n const tasksInDay = day.tasks.filter((innerT) => innerT.isStartDay && innerT.isEndDay);\r\n const overlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const endTime = moment(t.event.$EndDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return (\r\n (startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime)) ||\r\n endTime.isAfter(innerStartTime)\r\n );\r\n });\r\n t.countOfOverlaps = overlaps.length;\r\n const beforeOverlaps = tasksInDay.filter((innerT) => {\r\n const startTime = moment(t.event.$StartDateInfo.date);\r\n const innerStartTime = moment(innerT.event.$StartDateInfo.date);\r\n const innerEndTime = moment(innerT.event.$EndDateInfo.date);\r\n return startTime.isSameOrAfter(innerStartTime) && startTime.isBefore(innerEndTime);\r\n });\r\n const index = beforeOverlaps.findIndex((innerT) => innerT.event.Id === t.event.Id);\r\n t.positionCausedByOverlap = index < 0 ? 0 : index;\r\n return t;\r\n });\r\n });\r\n return week;\r\n }\r\n loadNext(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadNextMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadNextWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n gotoMonth(_monthName: string, monthIndex: number): void {\r\n const selectedMonth = this.selectedMonth.dateInfo.month;\r\n const val = monthIndex - selectedMonth;\r\n this.loadMonth(this.selectedMonth.dateInfo, val);\r\n }\r\n gotoYear(year: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.year;\r\n const val = year - selectedYear;\r\n this.increaseYear(val);\r\n }\r\n loadNextYear(): void {\r\n this.increaseYear(1);\r\n }\r\n loadPrevYear(): void {\r\n this.increaseYear(-1);\r\n }\r\n increaseYear(value: number): void {\r\n const selectedYear = this.selectedMonth.dateInfo.moment.toDate();\r\n selectedYear.setFullYear(selectedYear.getFullYear() + value); // next year\r\n this.loadMonthByDate(selectedYear);\r\n }\r\n loadPrevious(): void {\r\n const mode = this._modeSource.getValue();\r\n const selectedMonth = this._selectedSource.getValue();\r\n switch (mode) {\r\n case 'customMonth':\r\n case 'month':\r\n {\r\n const days = this.days;\r\n const newDays = this._loadPrevMonth(days, selectedMonth);\r\n this.setDays(newDays);\r\n }\r\n break;\r\n case 'week':\r\n case 'day':\r\n {\r\n const days = this._weekModeDaysSource.getValue();\r\n const newDays = this._loadPrevWeek(days, selectedMonth);\r\n this._weekModeDaysSource.next(newDays);\r\n }\r\n break;\r\n break;\r\n case 'list':\r\n break;\r\n }\r\n }\r\n loadMonth(dateInfo: DateInfo, addMonth: number = 0): CalendarMonthInfo {\r\n let loadedMonthDate = this._dateService.getMoment(dateInfo.date);\r\n if (addMonth > 0) {\r\n loadedMonthDate = this._dateService.addMonth(loadedMonthDate, addMonth);\r\n }\r\n if (addMonth < 0) {\r\n loadedMonthDate = this._dateService.subtractMonth(loadedMonthDate, Math.abs(addMonth));\r\n }\r\n let loadedCalendarMonthInfo = this.calendars.find((c) => c.dateInfo.moment.isSame(loadedMonthDate, 'day'));\r\n if (!loadedCalendarMonthInfo) {\r\n loadedCalendarMonthInfo = this.getMonthInfo(loadedMonthDate, this.today);\r\n }\r\n this.loadCalendarMonthInfo(loadedCalendarMonthInfo);\r\n return loadedCalendarMonthInfo;\r\n }\r\n loadCalendarMonthInfo(loadedCalendarMonthInfo: CalendarMonthInfo): void {\r\n const calendarsInfo = [...this.calendars];\r\n const exists = calendarsInfo.find(\r\n (c) =>\r\n c.dateInfo.year === loadedCalendarMonthInfo.dateInfo.year &&\r\n c.dateInfo.month === loadedCalendarMonthInfo.dateInfo.month\r\n );\r\n if (!exists) {\r\n calendarsInfo.push(loadedCalendarMonthInfo);\r\n this._calendarsSource.next(calendarsInfo);\r\n }\r\n this.setSelected(loadedCalendarMonthInfo);\r\n }\r\n addCalendarMonthInfo(calendarMonthInfo: CalendarMonthInfo): void {\r\n const newList = this.calendars;\r\n newList.push(calendarMonthInfo);\r\n this._calendarsSource.next(newList);\r\n }\r\n getNumber(value): number {\r\n const find = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];\r\n const replace = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\r\n let replaceString = value;\r\n let regex;\r\n for (let i = 0; i < find.length; i++) {\r\n regex = new RegExp(find[i], 'g');\r\n replaceString = replaceString.replace(regex, replace[i]);\r\n }\r\n return Number(replaceString);\r\n }\r\n setCulture(culture: CultureTypes): void {\r\n this._dateService = getDateService(this._log, culture);\r\n this.days$ = this._daysSource.asObservable();\r\n this.mode$ = this._modeSource.asObservable();\r\n this.weekModeDays$ = this._weekModeDaysSource.asObservable();\r\n this.calendars$ = this._calendarsSource.asObservable();\r\n this.currentMonthIndex$ = this._currentMonthIndexSource.asObservable();\r\n this._initilize();\r\n this.setMode(this._modeSource.getValue());\r\n }\r\n private _initilize(): void {\r\n this.today = this._dateService.getMoment(new Date());\r\n const todayMonthInfo = this.getCalendarMonthInfo(new Date());\r\n this.todayDay = todayMonthInfo.days.find((c) => c.isToday);\r\n this._selectedSource = new BehaviorSubject<CalendarMonthInfo>(todayMonthInfo);\r\n this.selected$ = this._selectedSource.asObservable();\r\n this._calendarsSource.next([todayMonthInfo]);\r\n this.setDays(todayMonthInfo.days);\r\n this.setSelected(todayMonthInfo);\r\n this._currentMonthIndexSource.next(todayMonthInfo.dateInfo.month);\r\n this._todayMonthInfo = todayMonthInfo;\r\n this.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe();\r\n }\r\n private _calcColSpan(diff: number, dayIndex: number, maxColSpan: number): number {\r\n if (diff === 0) {\r\n return 2;\r\n }\r\n if (Math.floor(diff / maxColSpan) > 0) {\r\n return maxColSpan;\r\n }\r\n if (dayIndex + diff > maxColSpan) {\r\n return maxColSpan - dayIndex;\r\n }\r\n return diff;\r\n }\r\n private _loadNextMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = lastDayIndex > -1 ? monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount) : [];\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n if (newDays.length > 0) {\r\n lastDay = newDays[newDays.length - 1];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n let startPosition = 0;\r\n if (needCountDay < 42) {\r\n startPosition = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n if (startPosition === -1) {\r\n startPosition = 0;\r\n } else {\r\n startPosition++;\r\n }\r\n }\r\n const nextDays = nextMonth.days.slice(startPosition, startPosition + needCountDay);\r\n newDays = [...newDays, ...nextDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadNextWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const lastDay = days[daysCount - 1];\r\n const lastDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === lastDay.dayInMonth && c.month === lastDay.month\r\n );\r\n let newDays = monthInfo.days.slice(lastDayIndex + 1, lastDayIndex + 1 + daysCount);\r\n if (newDays.length < daysCount) {\r\n // we move to next month\r\n let lastNewDay = newDays[newDays.length - 1];\r\n if (!lastNewDay) {\r\n lastNewDay = lastDay;\r\n }\r\n const nextMonth = this.loadMonth(monthInfo.dateInfo, 1);\r\n const lastDayIndex2 = nextMonth.days.findIndex(\r\n (c) => c.dayInMonth === lastNewDay.dayInMonth && c.month === lastNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n nextMonth.days.slice(lastDayIndex2 + 1, lastDayIndex2 + 1 + (daysCount - newDays.length))\r\n );\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevMonth(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n let firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n let newDays: Day[] = monthInfo.days.slice(\r\n firstDayIndex - daysCount > 0 ? firstDayIndex - daysCount : 0,\r\n firstDayIndex\r\n );\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n if (newDays.length > 0) {\r\n firstDay = newDays[0];\r\n }\r\n const needCountDay = daysCount - newDays.length;\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n let endPosition = prevMonth.days.length;\r\n if (needCountDay < 42) {\r\n endPosition = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n if (endPosition === -1) {\r\n endPosition = prevMonth.days.length;\r\n }\r\n }\r\n const prevDays = prevMonth.days.slice(endPosition - needCountDay, endPosition);\r\n newDays = [...prevDays, ...newDays];\r\n }\r\n return newDays;\r\n }\r\n private _loadPrevWeek(days: Day[], monthInfo: CalendarMonthInfo): Array<Day> {\r\n const daysCount = days.length;\r\n const firstDay = days[0];\r\n const firstDayIndex = monthInfo.days.findIndex(\r\n (c) => c.dayInMonth === firstDay.dayInMonth && c.month === firstDay.month\r\n );\r\n const partIndexPrev = firstDayIndex - daysCount;\r\n let newDays: Day[] = [];\r\n if (partIndexPrev < 0) {\r\n newDays = firstDayIndex - 1 >= 0 ? monthInfo.days.slice(0, firstDayIndex - 1) : [];\r\n } else {\r\n newDays = monthInfo.days.slice(firstDayIndex - daysCount, firstDayIndex);\r\n }\r\n if (newDays.length < daysCount) {\r\n // we move to prev month\r\n let firstNewDay = newDays[0];\r\n if (!firstNewDay) {\r\n firstNewDay = firstDay;\r\n }\r\n const prevMonth = this.loadMonth(monthInfo.dateInfo, -1);\r\n const firstDayIndex2 = prevMonth.days.findIndex(\r\n (c) => c.dayInMonth === firstNewDay.dayInMonth && c.month === firstNewDay.month\r\n );\r\n newDays = newDays.concat(\r\n prevMonth.days.slice(firstDayIndex2 - (daysCount - newDays.length), firstDayIndex2)\r\n );\r\n }\r\n return newDays;\r\n }\r\n private getCalendarMonthInfo(date): CalendarMonthInfo {\r\n const startOfMonth = this._dateService.startOfMonth(date);\r\n const momentDate = this._dateService.getMoment(date);\r\n return this.getMonthInfo(startOfMonth, momentDate);\r\n }\r\n private getMonthInfo(date, today): CalendarMonthInfo {\r\n const days: Day[] = [];\r\n const activeDate = this._dateService.getMoment(date);\r\n const startOfMonth: Date = this._dateService.startOfMonth(activeDate);\r\n const endOfMonth: Date = this._dateService.endOfMonth(activeDate);\r\n const dateInfo = this._dateService.getDateInfo(activeDate);\r\n const dayInWeek = this._dateService.day(startOfMonth); // we add 1 to the dayInWeek because it's starts with zero\r\n let weekCounter = 0;\r\n let dayCounter = 0;\r\n for (let i = 0; i < 42; i++) {\r\n const dateOfStartOfMonth: Date = new Date(startOfMonth);\r\n dateOfStartOfMonth.setDate(dateOfStartOfMonth.getDate() + i - dayInWeek);\r\n const { day, isInMonth }: { day: Day; isInMonth: any } = this._getDay(\r\n dateOfStartOfMonth,\r\n activeDate,\r\n today,\r\n endOfMonth,\r\n startOfMonth,\r\n dateInfo,\r\n i\r\n );\r\n days.push(day);\r\n dayCounter++;\r\n if (isInMonth && dayCounter > weekCounter * 7) {\r\n weekCounter++;\r\n }\r\n }\r\n // const endOfMonthIndex = days.findIndex((c) => c.isEndOfMonth);\r\n // if (endOfMonthIndex > -1 && days.length - endOfMonthIndex > 7) {\r\n // // days.splice(days.length - 7, 7);\r\n // }\r\n const calendarInfo = new CalendarMonthInfo();\r\n calendarInfo.id = getUniqueId(3);\r\n calendarInfo.dateInfo = dateInfo;\r\n calendarInfo.days = days;\r\n calendarInfo.weeksCount = weekCounter;\r\n // this.cdr.detectChanges();\r\n return calendarInfo;\r\n }\r\n private _getDay(\r\n date: Date,\r\n activeDate: any,\r\n today: any,\r\n endOfMonth: Date,\r\n startOfMonth: Date,\r\n dateInfo: DateInfo,\r\n i: number\r\n ): { day: Day; isInMonth: boolean } {\r\n const isInMonth = this._dateService.isSame(date, activeDate, 'month');\r\n const momentOfDate = this._dateService.getMoment(date);\r\n const isToday = momentOfDate.isSame(today, 'day');\r\n const dayInMonth = this._dateService.strDate(date);\r\n const dayInWeek = this._dateService.day(date);\r\n const isEndOfMonth = momentOfDate.isSame(endOfMonth, 'day');\r\n const isStartOfMonth = momentOfDate.isSame(startOfMonth, 'day');\r\n const monthDateInfo = isInMonth ? dateInfo : this._dateService.getDateInfo(date);\r\n const day: Day = {\r\n index: i,\r\n date,\r\n dayInWeek,\r\n status: DayStatus.Open,\r\n dayInMonth,\r\n dayInMonthN: this.getNumber(dayInMonth),\r\n isToday,\r\n isInMonth,\r\n isEndOfMonth,\r\n isStartOfMonth,\r\n momentOfDate,\r\n month: monthDateInfo.month,\r\n year: monthDateInfo.year,\r\n monthName: monthDateInfo.monthName,\r\n dayName: momentOfDate.format('dddd'),\r\n tasks: [],\r\n monthDateInfo,\r\n row: Math.floor(i / 7 + 1),\r\n col: 6 - (i % 7),\r\n isAddingNewEvent: false,\r\n addingEventPoint1: null,\r\n addingEventPoint2: null\r\n };\r\n return { day, isInMonth };\r\n }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { Day } from './models';\r\n\r\n@Pipe({\r\n name: 'daysInWeek',\r\n standalone: false\r\n})\r\nexport class DaysInWeekPipe implements PipeTransform {\r\n constructor() {}\r\n transform(days: Day[], weekNumber: number): Day[] {\r\n return days.slice(7 * weekNumber, 7 * weekNumber + 7);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, PreventDefaulEvent } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-number-box',\r\n templateUrl: './day-number-box.component.html',\r\n styleUrls: ['./day-number-box.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DayNumberBoxComponent extends BaseComponent implements OnInit, OnChanges {\r\n @HostBinding('style.display') display;\r\n @Input() isWeekMode: boolean;\r\n @Input() isSingleDay: boolean;\r\n @Input() day: Day;\r\n @Input() isPickerMode: Day;\r\n @Input() itemInRange: boolean;\r\n @Input() isActive: boolean;\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @HostBinding('style.cursor') _cursor = 'default';\r\n @HostBinding('class') _hover = '';\r\n @HostBinding('class.fd-calendar__item--range') _itemInRange = false;\r\n @HostBinding('class.is-active') _isActive = false;\r\n\r\n @HostListener('mouseup') mouseup(): void {\r\n this.dayMouseUp.emit(this.day);\r\n }\r\n @HostListener('mousedown') mousedown(): void {\r\n this.dayMouseDown.emit(this.day);\r\n }\r\n @HostListener('mousemove') mousemove(): void {\r\n this.dayMouseMove.emit(this.day);\r\n }\r\n @HostListener('click') onClick(): void {\r\n this.dayClick.emit(this.day);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._cursor = this.isPickerMode ? 'pointer' : 'default';\r\n this.display = this.isSingleDay ? 'inline-block' : 'flex';\r\n this._hover = this.isPickerMode ? 'hover' : '';\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { itemInRange, isActive } = changes;\r\n if (itemInRange) {\r\n this._itemInRange = itemInRange.currentValue;\r\n }\r\n if (isActive) {\r\n this._isActive = isActive.currentValue;\r\n }\r\n }\r\n onDayBoxNumberClick(e, day: Day): void {\r\n // change calendar mode to Day\r\n PreventDefaulEvent(e);\r\n this.dayClick.emit(day);\r\n }\r\n}\r\n","<button\r\n fd-button\r\n class=\"bg-transparent hover:!bg-transparent tw-relative\"\r\n (click)=\"onDayBoxNumberClick($event, day)\"\r\n [style.width]=\"isSingleDay ? 'auto' : '100%'\"\r\n [style.maxWidth]=\"isSingleDay ? 'auto' : '100%'\"\r\n [ngClass]=\"day.isInMonth ? 'inMonth' : 'notInMonth'\"\r\n [fdType]=\"!isPickerMode && day.isToday && !isActive ? 'emphasized' : 'transparent'\"\r\n>\r\n <div\r\n [ngClass]=\"{\r\n 'fd-avatar--s': isWeekMode,\r\n 'fd-avatar--xs': !isWeekMode || (day.isToday && isPickerMode)\r\n }\"\r\n class=\"day-number-value\"\r\n [style.fontSize]=\"isWeekMode ? '1.7rem' : null\"\r\n >\r\n <span>{{ day.dayInMonth }}</span>\r\n </div>\r\n @if(isPickerMode && day.isToday){\r\n <div class=\"tw-absolute tw-top-1 tw-left-1 tw-w-1 tw-h-1 tw-rounded tw-bg-blue-700\"></div>\r\n }\r\n</button>\r\n","export function getPadedTime(value): string {\r\n return String(value.toString().padStart(2, '0'));\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventDate',\r\n standalone: false\r\n})\r\nexport class EventDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(from: DateInfo, to: DateInfo, onlyTime: boolean = false): string {\r\n const showTime = from.hour || from.minutes || to.hour || to.minutes > 0;\r\n const fromTime = `${getPadedTime(from.hour)}:${getPadedTime(from.minutes)}`;\r\n const toTime = `${getPadedTime(to.hour)}:${getPadedTime(to.hour)}`;\r\n if (onlyTime) {\r\n return `${fromTime}`;\r\n }\r\n\r\n return `${from.strDay} ${from.monthName} ${from.strYear}${showTime ? `, ${fromTime}` : ''} – ${to.strDay} ${\r\n to.monthName\r\n } ${to.strYear}${showTime ? `, ${toTime}` : ''}`;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, Output, EventEmitter, HostBinding, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n\r\n@Component({\r\n selector: 'bc-event-preview',\r\n templateUrl: './event-preview.component.html',\r\n styleUrls: ['./event-preview.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventPreviewComponent extends BaseComponent implements OnInit {\r\n @Input() event: MetaobjectDataModel;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() popover: any;\r\n @Input() popover2: any;\r\n @Input() canEdit: boolean;\r\n @Input() canView: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() inDialog: boolean;\r\n\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @HostBinding('style.width') _width = '460px;';\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() closeEvent = new EventEmitter<void>();\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n if (this.deviceSize === 's') {\r\n this._width = 'auto';\r\n }\r\n }\r\n onDelete(event, popover, popover2): void {\r\n this.deleteEvent.emit(event);\r\n\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onEdit(event, popover, popover2): void {\r\n this.editEvent.emit(event);\r\n this._closePopover(popover);\r\n this._closePopover(popover2);\r\n }\r\n onClosePopover(popover): void {\r\n this._closePopover(popover);\r\n }\r\n private _closePopover(popover: any): void {\r\n if (popover) {\r\n popover.close();\r\n return;\r\n }\r\n this.closeEvent.emit();\r\n }\r\n}\r\n","<fd-layout-panel [ngClass]=\"deviceSize\">\r\n <fd-layout-panel-header>\r\n <fd-layout-panel-actions>\r\n <fd-toolbar [clearBorder]=\"true\" [fdType]=\"'transparent'\">\r\n @if (canEdit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"edit\"\r\n fdType=\"transparent\"\r\n (click)=\"onEdit(event, popover, popover2)\"\r\n ></button>\r\n } @if (!canEdit && canView) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"show\"\r\n fdType=\"transparent\"\r\n (click)=\"onEdit(event, popover, popover2)\"\r\n ></button>\r\n } @if (canDelete) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"delete\"\r\n fdType=\"transparent\"\r\n (click)=\"onDelete(event, popover, popover2)\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n glyph=\"decline\"\r\n fdType=\"transparent\"\r\n (click)=\"onClosePopover(popover)\"\r\n ></button>\r\n </fd-toolbar>\r\n </fd-layout-panel-actions>\r\n </fd-layout-panel-header>\r\n <fd-layout-panel-body>\r\n <fd-quick-view>\r\n <fd-quick-view-subheader>\r\n <fd-avatar\r\n size=\"xs\"\r\n glyph=\"color-fill\"\r\n [transparent]=\"true\"\r\n [style.color]=\"event[calendarFields.Color] ? event[calendarFields.Color] : ''\"\r\n ></fd-avatar>\r\n <fd-quick-view-subheader-title>\r\n {{ event[calendarFields.Title] }}\r\n </fd-quick-view-subheader-title>\r\n <fd-quick-view-subheader-subtitle>\r\n <span>{{ event.$StartDateInfo | eventDate: event.$EndDateInfo }} </span>\r\n </fd-quick-view-subheader-subtitle>\r\n </fd-quick-view-subheader>\r\n\r\n <fd-quick-view-group>\r\n @if (event | barsaVisibleValue: calendarFields.Notes; as notes) {\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n <fd-icon glyph=\"text-align-justified\"></fd-icon>\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <div fd-quick-view-group-item-content-element style=\"white-space: normal\">\r\n {{ notes }}\r\n </div>\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n }\r\n <fd-quick-view-group-item>\r\n <fd-quick-view-group-item-label>\r\n <fd-icon glyph=\"appointment\"></fd-icon>\r\n </fd-quick-view-group-item-label>\r\n <fd-quick-view-group-item-content>\r\n <span>کاربر</span>\r\n </fd-quick-view-group-item-content>\r\n </fd-quick-view-group-item>\r\n </fd-quick-view-group>\r\n </fd-quick-view>\r\n </fd-layout-panel-body>\r\n</fd-layout-panel>\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-end-arrow',\r\n templateUrl: './event-button-end-arrow.component.html',\r\n styleUrls: ['./event-button-end-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonEndArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"end-day-continue\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button-start-arrow',\r\n templateUrl: './event-button-start-arrow.component.html',\r\n styleUrls: ['./event-button-start-arrow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonStartArrowComponent extends BaseComponent implements OnInit {\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() calendarFields: CalendarFields;\r\n @HostBinding('class.rtl') _rtl = true;\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n }\r\n}\r\n","<span\r\n [style.border-left-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n [style.border-right-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"start-day-middle\"\r\n></span>\r\n<!-- [class.end-day]=\"(!task.isEndDay && task.isMiddle) || (task.isStartDay && !task.isEndDay)\" -->\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarFields, CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'eventTime',\r\n standalone: false\r\n})\r\nexport class EventTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel, calendarFields: CalendarFields): string {\r\n const event = task.event;\r\n const dateInfo: DateInfo = event.$StartDateInfo;\r\n const showTime = dateInfo.hour || dateInfo.minutes > 0;\r\n const fromTime = `${getPadedTime(dateInfo.hour)}:${getPadedTime(dateInfo.minutes)}`;\r\n return `${showTime ? fromTime : ''} ${event[calendarFields.Title]}`;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { DialogService, PopoverComponent } from '@fundamental-ngx/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-event-button',\r\n templateUrl: './event-button.component.html',\r\n styleUrls: ['./event-button.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class EventButtonComponent extends BaseComponent implements OnInit {\r\n @ViewChild('defaultButton', { static: true })\r\n defaultButtonTemplate: TemplateRef<any>;\r\n @ViewChild(PopoverComponent, { static: true })\r\n popoverComponent: PopoverComponent;\r\n\r\n @ViewChild('dialogTemplate', { static: true })\r\n _dialogTemplate: TemplateRef<any>;\r\n\r\n @ViewChild('btnFocus', { static: true }) btnFocus: ElementRef;\r\n @Input() buttonTemplate: TemplateRef<any>;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() task: any;\r\n @Input() rtl: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() canView = false;\r\n @Input() index: number;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() openPopoverChange = new EventEmitter<boolean>();\r\n @HostBinding('style.opacity') opacity = 1;\r\n @HostBinding('attr.rtl') _rtl = true;\r\n\r\n private _dialogService = inject(DialogService);\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this._rtl = this.rtl;\r\n this.opacity = this.task.opacity ?? 1;\r\n if (!this.buttonTemplate) {\r\n this.buttonTemplate = this.defaultButtonTemplate;\r\n }\r\n if (this.index === 0) {\r\n (this.btnFocus.nativeElement as HTMLLIElement).scrollIntoView();\r\n (this.btnFocus.nativeElement as HTMLLIElement).tabIndex = -1;\r\n }\r\n }\r\n onPopOverOpenChange(isOpen): void {\r\n this.openPopoverChange.emit(isOpen);\r\n }\r\n onButtonClick(popover): void {\r\n if (this.deviceSize === 's') {\r\n this._dialogService.open(this._dialogTemplate, {\r\n mobile: true\r\n });\r\n return;\r\n }\r\n popover.open();\r\n }\r\n}\r\n","<button\r\n #btnFocus\r\n [attr.id]=\"task.id\"\r\n style=\"width: 0; height: 0; visibility: hidden; max-height: 1px; min-height: 1px; position: absolute\"\r\n></button>\r\n@if ( (task.startdayIsInRow && !task.isStartDay) || (task.isMiddle && !task.isStartDay && !task.isEndDay) ||\r\n(task.isEndDay && !task.isStartDay && !task.isMiddle) ) {\r\n<bc-event-button-start-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\"> </bc-event-button-start-arrow>\r\n}\r\n\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n buttonTemplate;\r\n context: {\r\n $implicit: task,\r\n calendarFields: calendarFields,\r\n popover: popover,\r\n onButtonClick: onButtonClick.bind(this)\r\n }\r\n \"\r\n></ng-container>\r\n\r\n@if (!task.enddayIsInRow) {\r\n<bc-event-button-end-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\"> </bc-event-button-end-arrow>\r\n}\r\n\r\n<fd-popover\r\n #popover\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n (isOpenChange)=\"onPopOverOpenChange($event)\"\r\n>\r\n <fd-popover-control></fd-popover-control>\r\n <fd-popover-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popover\"\r\n [canDelete]=\"canDelete\"\r\n [canView]=\"canView\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-content></ng-content>\r\n\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [deviceSize]=\"deviceSize\"\r\n [canEdit]=\"canEdit\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (closeEvent)=\"dialog.dismiss()\"\r\n ></bc-event-preview>\r\n </fd-dialog-body>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template\r\n #defaultButton\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n fd-button\r\n [compact]=\"true\"\r\n (click)=\"onButtonClick(popover)\"\r\n [fdType]=\"task.inDay ? 'standard' : 'emphasized'\"\r\n [label]=\"task | eventTime: calendarFields\"\r\n [style.background-color]=\"task.event[calendarFields.Color] ? task.event[calendarFields.Color] : null\"\r\n class=\"task-title noborder\"\r\n ></button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-day-event-list',\r\n templateUrl: './day-event-list.component.html',\r\n styleUrls: ['./day-event-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class DayEventListComponent extends BaseComponent {\r\n @Input() day: Day;\r\n @Input() deviceSize: string;\r\n @Input() weekDays: string[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() canDelete: boolean;\r\n @Input() canEdit: boolean;\r\n @Input() canView = false;\r\n @Input() popover: any;\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() openPopOver = new EventEmitter<any>();\r\n\r\n onClosePopover(popover, popover2?): void {\r\n popover.close();\r\n if (popover2) {\r\n popover2.close();\r\n }\r\n }\r\n}\r\n","<div fd-bar [barDesign]=\"'header-with-subheader'\">\r\n <div fd-bar-left>\r\n <fd-bar-element>\r\n <button fd-button glyph=\"decline\" [fdType]=\"'transparent'\" (click)=\"onClosePopover(popover)\"></button>\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-middle>\r\n <fd-bar-element>\r\n {{ weekDays[day.dayInWeek] }}\r\n </fd-bar-element>\r\n </div>\r\n <div fd-bar-right>\r\n <fd-bar-element> </fd-bar-element>\r\n </div>\r\n</div>\r\n<div fd-bar [barDesign]=\"'subheader'\">\r\n <div fd-bar-middle>\r\n <fd-bar-element [fullWidth]=\"true\">\r\n <bc-day-number-box [day]=\"day\" [isWeekMode]=\"true\"></bc-day-number-box>\r\n </fd-bar-element>\r\n </div>\r\n</div>\r\n<ul fd-list>\r\n @for (task of day.tasks; track task) {\r\n <li fd-list-item class=\"task-start-end\" (click)=\"popoverPreview.open()\">\r\n @if (task.isMiddle && !task.isStartDay) {\r\n <bc-event-button-start-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\">\r\n </bc-event-button-start-arrow>\r\n }\r\n <span class=\"middle-day\">{{ task.event[calendarFields.Title] }}</span>\r\n @if ((task.isMiddle || task.isStartDay) && !task.isEndDay) {\r\n <bc-event-button-end-arrow [task]=\"task\" [calendarFields]=\"calendarFields\" [rtl]=\"rtl\">\r\n </bc-event-button-end-arrow>\r\n }\r\n <fd-popover\r\n #popoverPreview\r\n placement=\"bottom\"\r\n [mobile]=\"deviceSize === 's'\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n [title]=\"task.event[calendarFields.Title]\"\r\n >\r\n <bc-event-preview\r\n [event]=\"task.event\"\r\n [calendarFields]=\"calendarFields\"\r\n [popover]=\"popoverPreview\"\r\n [canDelete]=\"canDelete\"\r\n [canView]=\"canView\"\r\n [canEdit]=\"canEdit\"\r\n [popover2]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-preview>\r\n </fd-popover>\r\n </li>\r\n }\r\n</ul>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'equalDate',\r\n standalone: false\r\n})\r\nexport class EqualDatePipe implements PipeTransform {\r\n constructor() {}\r\n transform(value: Date, secondValue: Date | null | undefined): boolean {\r\n if ((value && !secondValue) || (!value && secondValue)) {\r\n return false;\r\n }\r\n const yearEqual = value.getFullYear() === secondValue?.getFullYear();\r\n const monthEqual = value.getMonth() === secondValue?.getMonth();\r\n const dayEqual = value.getDate() === secondValue?.getDate();\r\n return yearEqual && monthEqual && dayEqual;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\n\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-month',\r\n templateUrl: './calendar-month.component.html',\r\n styleUrls: ['./calendar-month.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarMonthComponent extends BaseComponent implements OnChanges, OnInit {\r\n @Input() monthWeeksCount: number;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Input() canView = false;\r\n @Input() selectedDate: Date | undefined;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n\r\n private _hasPopoverOpened: boolean[] = [];\r\n private daysInWeek = inject(DaysInWeekPipe);\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n let needToDetectChange = false;\r\n const {\r\n containerHeight,\r\n deviceSize,\r\n moDataList,\r\n days,\r\n monthWeeksCount,\r\n startSelectedDayIndex,\r\n endSelectedDayIndex,\r\n weekDays,\r\n weekDaysMin\r\n } = changes;\r\n if (containerHeight && !containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this._prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (weekDays && !weekDays.firstChange) {\r\n this._prepareWeekDays(this.deviceSize, weekDays.currentValue);\r\n }\r\n if (weekDaysMin && !weekDaysMin.firstChange) {\r\n this._prepareWeekDays(this.deviceSize, undefined, weekDaysMin.currentValue);\r\n }\r\n if (moDataList && !moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n needToDetectChange = true;\r\n }\r\n if (days && !days.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (monthWeeksCount && !monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n needToDetectChange = true;\r\n }\r\n if (\r\n (startSelectedDayIndex && !startSelectedDayIndex.firstChange) ||\r\n (endSelectedDayIndex && !endSelectedDayIndex.firstChange)\r\n ) {\r\n needToDetectChange = true;\r\n }\r\n if (needToDetectChange) {\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this._prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(_e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: day.date\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private _prepareWeekDays(deviceSize: string, weekDays?, weekDaysMin?): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = weekDays || this.weekDays;\r\n } else {\r\n this.selectedWeekDays = weekDaysMin || this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n\r\n if (this.monthWeeksCount > 0) {\r\n const weeksCount = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / (_weeksCount + 1));\r\n\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n if (this.maxTaskCount > 0) {\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((_x, i) => i);\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n\r\n const calendarFields = this.calendarFields;\r\n\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [fdCompact] [attr.picker]=\"datePicker\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n @for (weekDay of selectedWeekDays; track weekDay) {\r\n <th class=\"weekday-header\" fd-table-cell [class.noborder]=\"isPickerMode\">\r\n {{ weekDay | slice: 0:1 }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (weekDay of numberOfWeek; track weekDay) {\r\n <tr fd-table-row>\r\n <td [style.height.px]=\"dayHeight\" fd-table-cell colspan=\"7\" [style.border]=\"isPickerMode ? 'none' : null\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n deviceSize: deviceSize,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\" [attr.rtl]=\"rtl\">\r\n @for (day of days; track day) {\r\n <td fd-table-cell [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [ngClass]=\"{\r\n 'fd-calendar__item': isPickerMode,\r\n '!tw-border !tw-rounded-md tw-transition-all tw-cursor-pointer':\r\n isPickerMode && day.isInMonth,\r\n '!tw-bg-transparent tw-border-gray-100 hover:!tw-border-gray-300':\r\n isPickerMode && day.isInMonth && !day.isToday,\r\n 'fd-calendar__item--other-month': isPickerMode && !day.isInMonth,\r\n 'fd-calendar__item--weekend': isPickerMode && day.isWeekend,\r\n '!tw-bg-blue-500 hover:!tw-bg-blue-600 !tx-text-white':!isPickerMode && day.isToday,\r\n }\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [isActive]=\"\r\n day.index === startSelectedDayIndex || day.index === endSelectedDayIndex || day.date\r\n | equalDate: selectedDate\r\n \"\r\n [itemInRange]=\"\r\n startSelectedDayIndex !== undefined &&\r\n endSelectedDayIndex !== undefined &&\r\n day.index >= startSelectedDayIndex &&\r\n day.index <= endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n @if (!isPickerMode) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n @for (day of days; track day) {\r\n <td fd-table-cell class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n @if (maxRowTasks?.length < day.tasks.length) {\r\n <button fd-button (click)=\"onMoreButton($event, popover)\" [fdType]=\"'transparent'\" [compact]=\"true\">\r\n {{ day.tasks?.length - maxRowTasks?.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n @for (rowTask of maxRowTasks; track rowTask; let i = $index) {\r\n <tr fd-table-row>\r\n @if (!weekTasks[i] || weekTasks[i].length === 0) { @for (day of weekDays; track day) {\r\n <td fd-table-cell></td>\r\n } } @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan) {\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\">\r\n @if (task.event) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" (dblclick)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\nimport { BarsaApi, BaseComponent, DateService, getDateService, PortalService } from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n@Component({\r\n selector: 'bc-calendar-selection-days',\r\n templateUrl: './calendar-selection-days.component.html',\r\n styleUrls: ['./calendar-selection-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService\r\n },\r\n CalendarService\r\n ],\r\n standalone: false\r\n})\r\nexport class CalendarSelectionDaysComponent extends BaseComponent implements OnChanges {\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() inline: boolean;\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n deviceSize$: Observable<string>;\r\n months: string[] = [];\r\n years: string[];\r\n private _isMouseDown = false;\r\n\r\n private _calendarService = inject(CalendarService, { self: true });\r\n private _portalService = inject(PortalService);\r\n\r\n constructor() {\r\n super();\r\n this.rtl$ = this._portalService.rtl$;\r\n this.width$ = this._portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 480;\r\n case 's':\r\n return 320;\r\n default:\r\n return 480;\r\n }\r\n })\r\n );\r\n this._calendarService.setCulture(BarsaApi.LoginFormData.Culture);\r\n\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this._calendarService.setMode('month');\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { monthInfo } = changes;\r\n if (monthInfo) {\r\n this._calendarService.loadCalendarMonthInfo(monthInfo.currentValue);\r\n }\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onDayMouseMove(day: Day, monthInfo: CalendarMonthInfo): void {\r\n if (this._isMouseDown) {\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDayIndex = startDay?.index;\r\n this.endSelectedDayIndex = endDay?.index; \r\n }\r\n }\r\n\r\n onDayMouseDown(day: Day): void {\r\n this._isMouseDown = true;\r\n this.startSelectedDay = null;\r\n this.endSelectedDay = null;\r\n this.startSelectedDay = day;\r\n this.startSelectedDayIndex = day.index;\r\n }\r\n onDayMouseUp(day: Day, monthInfo, popover): void {\r\n this._isMouseDown = false;\r\n\r\n const { endDay, startDay } = this.getStartAndEndDay(monthInfo, day);\r\n this.startSelectedDay = startDay;\r\n this.endSelectedDay = endDay;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n onDayClick(day: Day, monthInfo, popover): void {\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n this._setFirstAndEndDay(monthInfo, popover);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private getStartAndEndDay(\r\n monthInfo: CalendarMonthInfo,\r\n day: Day | null\r\n ): { endDay: Day | null; startDay: Day | null } {\r\n let startDay: Day | null = null;\r\n let endDay: Day | null = null;\r\n if (this.startSelectedDay && !this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date > day.date) {\r\n startDay = day;\r\n endDay = this.startSelectedDay;\r\n } else {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n }\r\n } else if (this.startSelectedDay && this.endSelectedDay) {\r\n if (day && this.startSelectedDay.date < day.date) {\r\n startDay = this.startSelectedDay;\r\n endDay = day;\r\n } else {\r\n startDay = day;\r\n endDay = this.endSelectedDay;\r\n }\r\n } \r\n if (startDay && endDay) {\r\n const diff = Math.abs(startDay.momentOfDate.diff(endDay.momentOfDate, 'day'));\r\n if (diff > 6) {\r\n startDay = monthInfo.days[Math.floor(startDay.index / 7) * 7];\r\n // const end = endDay.index % 7;\r\n const indexEnd = Math.ceil((endDay.index + 1) / 7);\r\n // if (end > 0) {\r\n // indexEnd++;\r\n // }\r\n endDay = monthInfo.days[indexEnd * 7 - 1]; \r\n }\r\n }\r\n return { endDay, startDay };\r\n }\r\n\r\n private _setFirstAndEndDay(monthInfo, popover): void { \r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n if (popover) {\r\n popover.close();\r\n }\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay,\r\n endDay: this.endSelectedDay,\r\n monthInfo\r\n });\r\n }\r\n }\r\n}\r\n","@if (inline) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n} @else {\r\n<button fd-button glyph=\"calendar\" fdType=\"transparent\" [fdPopoverTrigger]=\"popover\"></button>\r\n}\r\n<fd-popover #popover [focusTrapped]=\"true\" [focusAutoCapture]=\"true\" [mobile]=\"(deviceSize$ | async) === 's'\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\" class=\"popover-selection-day\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize$ | async,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-popover-body>\r\n</fd-popover>\r\n\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n>\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"onToday()\"></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n </fd-toolbar>\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"6\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, selectedMonth, popover)\"\r\n (dayMouseMove)=\"onDayMouseMove($event, selectedMonth)\"\r\n (dayMouseUp)=\"onDayMouseUp($event, selectedMonth, popover)\"\r\n (dayMouseDown)=\"onDayMouseDown($event)\"\r\n [startSelectedDayIndex]=\"startSelectedDayIndex\"\r\n [endSelectedDayIndex]=\"endSelectedDayIndex\"\r\n ></bc-calendar-month>\r\n } }\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Injectable,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\n\r\nimport {\r\n BaseComponent,\r\n BbbTranslatePipe,\r\n PortalService,\r\n BarsaApi,\r\n AbbrevationDeviceSize,\r\n CultureTypes,\r\n getDateService,\r\n DateService\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport {\r\n DatetimeAdapter,\r\n DialogService,\r\n FdDate,\r\n FdDatetimeAdapter,\r\n InputGroupComponent,\r\n TimeComponent\r\n} from '@fundamental-ngx/core';\r\n\r\n@Injectable()\r\nexport class TimeConfigI18n {\r\n /** Aria label for the 'increase hours' button */\r\n increaseHoursLabel = 'Increase hours';\r\n\r\n /** label for the 'hours' column */\r\n\r\n /** Aria label for the 'decrease hours' button */\r\n decreaseHoursLabel = 'Decrease hours';\r\n\r\n /** Aria label for the 'increase minutes' button */\r\n increaseMinutesLabel = 'Increase minutes';\r\n\r\n /** label for the 'minutes' column */\r\n hoursLabel = '';\r\n minutesLabel = '';\r\n secondsLabel = '';\r\n\r\n /** Aria label for the 'decrease minutes' button */\r\n decreaseMinutesLabel = 'Decrease minutes';\r\n\r\n /** Aria label for the 'increase seconds' button */\r\n increaseSecondsLabel = 'Increase seconds';\r\n\r\n /** label for the 'seconds' column */\r\n\r\n /** Aria label for the 'decrease seconds' button */\r\n decreaseSecondsLabel = 'Decrease seconds';\r\n\r\n /** Aria label for the 'increase period' button */\r\n increasePeriodLabel = 'Increase period';\r\n\r\n /** label for the 'period' column */\r\n periodLabel = 'Period';\r\n\r\n /** Aria label for the 'decrease period' button */\r\n decreasePeriodLabel = 'Decrease period';\r\n\r\n private _bbbTranslate = inject(BbbTranslatePipe);\r\n\r\n constructor() {\r\n this.hoursLabel = this._bbbTranslate.transform('Hours');\r\n this.minutesLabel = this._bbbTranslate.transform('Minutes');\r\n this.secondsLabel = this._bbbTranslate.transform('Sec');\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'bc-date-time-picker',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DatetimeAdapter,\r\n useClass: FdDatetimeAdapter\r\n },\r\n CalendarService\r\n ],\r\n standalone: false\r\n})\r\nexport class DateTimePickerComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() placeholder: string;\r\n @Input() calendarType: 'Gregorian' | 'Persian' | string;\r\n @Input() formatPattern: string;\r\n @Input() value: Date | undefined;\r\n @Input() timeValue: FdDate;\r\n @Input() startRangeDate: Date;\r\n @Input() endRangeDate: Date;\r\n @Input() isRangePicker: boolean;\r\n @Input() showTime: boolean;\r\n @Input() showDate: boolean;\r\n @Input() rtl = true;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() isMobile: boolean;\r\n @Input() readonly: boolean;\r\n @Input() disabled: boolean;\r\n @Input() buttonMenuMode: boolean;\r\n @Input() inlineMode: boolean;\r\n @Input() daterangeMode: boolean;\r\n @Input() culture: CultureTypes;\r\n @Output() rangeChange = new EventEmitter<{ startDay: Date; endDay: Date }>();\r\n @Output() valueChange = new EventEmitter<Date>();\r\n @ViewChild(TimeComponent) timeComponent: TimeComponent<FdDate>;\r\n @ViewChild(InputGroupComponent, { static: true }) inputGroupComponent: InputGroupComponent;\r\n valueCaption = '';\r\n endSelectedDay: Day | null;\r\n startSelectedDay: Day | null;\r\n valueDay: Day | null;\r\n supportCultureTypes = { 'fa-IR': 'Hijri Shamsi', 'en-US': 'Gregorian' };\r\n selectionMode: 'day' | 'month' | 'year' = 'day';\r\n todayIndex = -1;\r\n width$: Observable<number>;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n rtl$: Observable<boolean>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n originalCulture: CultureTypes;\r\n isValid = true;\r\n months: string[] = [];\r\n years: string[];\r\n tempFormmatedDate = '';\r\n cultureName = '';\r\n private _calendarService = inject(CalendarService, { self: true });\r\n private _lastValue: Date | undefined;\r\n private _datetimeAdapter = inject<DatetimeAdapter<FdDate>>(DatetimeAdapter);\r\n private _dialogService = inject(DialogService);\r\n private _portalService = inject(PortalService);\r\n\r\n constructor() {\r\n super();\r\n this.rtl$ = this._portalService.rtl$;\r\n this.width$ = this._portalService.deviceSize$.pipe(\r\n distinctUntilChanged(),\r\n map((deviceSize) => {\r\n if (!this.showDate) {\r\n return 260;\r\n }\r\n switch (deviceSize) {\r\n case 'l':\r\n case 'xl':\r\n return 560;\r\n case 's':\r\n return 320;\r\n default:\r\n return 520;\r\n }\r\n })\r\n );\r\n\r\n this.height = 420;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.originalCulture = this.culture;\r\n this.cultureName = this.supportCultureTypes[this.culture];\r\n this._initCalendarService();\r\n this._setFormattedDateToInput(this.value);\r\n if (this.inputGroupComponent) {\r\n (this.inputGroupComponent as any)._cva.onChange = this.onCaptionChanged.bind(this);\r\n }\r\n }\r\n onCultureChange(culture: string): void {\r\n this.culture = culture as CultureTypes;\r\n this.cultureName = this.supportCultureTypes[culture];\r\n this._initCalendarService();\r\n }\r\n onHourTextChange(e): void {\r\n const val = Number(e.target.value);\r\n if (isNaN(val)) {\r\n return;\r\n }\r\n this.timeValue = new FdDate(\r\n this.timeValue.year,\r\n this.timeValue.month,\r\n this.timeValue.day,\r\n val,\r\n this.timeValue.minute,\r\n this.timeValue.second\r\n );\r\n }\r\n onMinuteTextChange(e): void {\r\n const val = Number(e.target.value);\r\n if (isNaN(val)) {\r\n return;\r\n }\r\n this.timeValue = new FdDate(\r\n this.timeValue.year,\r\n this.timeValue.month,\r\n this.timeValue.day,\r\n this.timeValue.hour,\r\n val,\r\n this.timeValue.second\r\n );\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (value && !value.firstChange) {\r\n const caption = this._getFormattedDate(value.currentValue);\r\n if (caption !== this.inputGroupComponent?.inputText) {\r\n this._setFormattedDateToInput(this.value);\r\n }\r\n }\r\n }\r\n onRangeChange(e): void {\r\n this.rangeChange.emit({\r\n startDay: e.startDay,\r\n endDay: e.endDay\r\n });\r\n }\r\n onOpenPopover(popover, dialogTemplate): void {\r\n if (this.readonly || this.disabled) {\r\n return;\r\n }\r\n\r\n if (this.timeComponent) {\r\n setTimeout(() => this.timeComponent.refreshColumns(), 0);\r\n }\r\n if (this.isMobile) {\r\n this._dialogService.open(dialogTemplate, {\r\n mobile: true\r\n });\r\n return;\r\n }\r\n popover.open();\r\n }\r\n onMonthSelected(monthName: string, index: number): void {\r\n this._calendarService.gotoMonth(monthName, index);\r\n }\r\n onYearSelected(year: string): void {\r\n this._calendarService.gotoYear(+year);\r\n }\r\n\r\n onCaptionChanged(e): void {\r\n if (e.length < 10 && this.showDate) {\r\n if (e.length === 0) {\r\n this._raisValueChanged(undefined);\r\n return;\r\n }\r\n this.isValid = false;\r\n\r\n return;\r\n }\r\n const englishDateStr = BarsaApi.Common.Util.ReplaceFaToArCharchter(e);\r\n let format = this.formatPattern;\r\n if (this.showTime) {\r\n if (this.showDate) {\r\n format += ' HH:mm';\r\n } else {\r\n format = 'HH:mm';\r\n }\r\n }\r\n const dateService = this._getDateServiceOriginal();\r\n\r\n const moment = dateService.stringToMoment(englishDateStr, format);\r\n // const isValid = moment.isValid();// برای شمسی همیشه false نشون میده\r\n if (this.showDate && isNaN(Date.parse(englishDateStr))) {\r\n this.isValid = false;\r\n return;\r\n }\r\n const tdate = new Date();\r\n const date = moment.toDate();\r\n if (date.getFullYear() < tdate.getFullYear() && !this.showDate) {\r\n date.setFullYear(tdate.getFullYear());\r\n date.setMonth(tdate.getMonth());\r\n date.setDate(tdate.getDate());\r\n }\r\n if (isNaN(date)) {\r\n this.isValid = false;\r\n return;\r\n }\r\n this.isValid = true;\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n date.getHours(),\r\n date.getMinutes(),\r\n date.getSeconds()\r\n );\r\n this.startSelectedDay = this.endSelectedDay = null;\r\n this._raisValueChanged(date, false);\r\n }\r\n onPrevTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadPrevious();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadPrevYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[0]) - 20);\r\n }\r\n }\r\n\r\n onNextTap(): void {\r\n if (this.selectionMode === 'day') {\r\n this._calendarService.loadNext();\r\n } else if (this.selectionMode === 'month') {\r\n this._calendarService.loadNextYear();\r\n } else if (this.selectionMode === 'year') {\r\n this._prepareYear(Number(this.years[this.years.length - 1]) + 1);\r\n }\r\n }\r\n\r\n onToday(): void {\r\n const today = new Date();\r\n this.timeValue = this._datetimeAdapter.setTime(\r\n this.timeValue,\r\n today.getHours(),\r\n today.getMinutes(),\r\n today.getSeconds()\r\n );\r\n if (this._calendarService.todayDay) {\r\n this.startSelectedDay = this._calendarService.todayDay;\r\n }\r\n this._calendarService.gotoToday();\r\n }\r\n\r\n onDayClick(day: Day, popover, dialog): void {\r\n this.isValid = true;\r\n this.startSelectedDay = this.endSelectedDay = day;\r\n if (this.showTime) {\r\n return;\r\n }\r\n this._setFirstAndEndDay(day, popover, dialog);\r\n }\r\n\r\n onPopoverOpenChange(isOpen): void {\r\n if (isOpen) {\r\n this._lastValue = this.value;\r\n } else {\r\n this._lastValue = undefined;\r\n }\r\n }\r\n onClear(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n this.value = undefined;\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n onOk(popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n if (!this.value) {\r\n this.value = new Date();\r\n }\r\n this._handleValueChange();\r\n }\r\n onCancel(popover, dialog): void {\r\n if (this._lastValue !== this.value) {\r\n this.value = this._lastValue;\r\n this._setCaption(this.value);\r\n }\r\n if (dialog) {\r\n dialog.dismiss();\r\n } else {\r\n popover.close();\r\n }\r\n }\r\n private _initCalendarService(): void {\r\n this._calendarService.setCulture(this.culture);\r\n this._calendarService.setMode('month');\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.today = this._calendarService.today;\r\n\r\n if (this.value) {\r\n this.timeValue = FdDate.getFdDateByDate(this.value);\r\n this._setCaption(this.value);\r\n this._calendarService.loadMonthByDate(this.value);\r\n } else {\r\n this.timeValue = FdDate.getFdDateByDate(new Date());\r\n }\r\n // if (this.isRangePicker) {\r\n // if (this.startRangeDate) {\r\n // this._calendarService.loadMonthByDate(this.startRangeDate);\r\n // }\r\n // if (this.endRangeDate) {\r\n // }\r\n // } else {\r\n // this._calendarService.loadMonthByDate(this.value);\r\n // }\r\n this.months = this._calendarService.Months;\r\n this._prepareYear(this._calendarService.selectedMonth.dateInfo.year);\r\n }\r\n private _setFormattedDateToInput(date: Date | undefined): void {\r\n if (date) {\r\n const formattedDate = this._getFormattedDate(date);\r\n this.tempFormmatedDate = formattedDate;\r\n this._setInputGroupText(formattedDate);\r\n return;\r\n }\r\n this.tempFormmatedDate = '';\r\n this._setInputGroupText('');\r\n }\r\n private _setInputGroupText(val: string): void {\r\n if (this.inputGroupComponent) {\r\n this.inputGroupComponent.inputText = val;\r\n }\r\n }\r\n private _getDateServiceOriginal(): DateService {\r\n let x = this._calendarService._dateService;\r\n if (this.culture !== this.originalCulture) {\r\n x = getDateService(this._log, this.originalCulture);\r\n }\r\n return x;\r\n }\r\n private _getFormattedDate(date: Date): string {\r\n const x2 = new Date(date);\r\n const x = this._getDateServiceOriginal();\r\n return x.format(x2, this.formatPattern);\r\n }\r\n\r\n private _handleValueChange(): void {\r\n this.value = this.showDate ? this.startSelectedDay?.date ?? this.value : new Date();\r\n if (this.value) {\r\n this.value = new Date(this.value);\r\n this.value.setHours(this.timeValue.hour);\r\n this.value.setMinutes(this.timeValue.minute);\r\n this.value.setSeconds(this.timeValue.second);\r\n }\r\n this._setFormattedDateToInput(this.value);\r\n this._raisValueChanged(this.value);\r\n }\r\n private _prepareYear(from: number): void {\r\n const years: string[] = [];\r\n for (let i = 0; i < 20; i++) {\r\n years.push(`${from + i}`);\r\n }\r\n this.years = years;\r\n }\r\n private _setCaption(value): void {\r\n if (!value) {\r\n this.valueCaption = '';\r\n return;\r\n }\r\n let formatPattern = this.formatPattern.replace('YYYY', 'jYYYY');\r\n formatPattern = formatPattern.replace('MM', 'jMM');\r\n formatPattern = formatPattern.replace('DD', 'jDD');\r\n this.valueCaption = this._calendarService._dateService.getMoment(value).format(formatPattern);\r\n }\r\n private _raisValueChanged(date, setCaption = true): void {\r\n // this.value = date;\r\n if (setCaption) {\r\n this._setCaption(date);\r\n }\r\n this.valueChange.emit(date);\r\n }\r\n\r\n private _setFirstAndEndDay(day: Day, popover, dialog): void {\r\n if (dialog) {\r\n dialog.dismiss();\r\n }\r\n if (popover) {\r\n popover.close();\r\n }\r\n if (!this.isRangePicker) {\r\n this._setFormattedDateToInput(day.date);\r\n this._raisValueChanged(day.date);\r\n return;\r\n }\r\n if (this.startSelectedDay) {\r\n this.endSelectedDay = day;\r\n } else {\r\n this.startSelectedDay = day;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay && this.startSelectedDay.date > this.endSelectedDay.date) {\r\n const temp = this.startSelectedDay;\r\n this.startSelectedDay = this.endSelectedDay;\r\n this.endSelectedDay = temp;\r\n }\r\n if (this.startSelectedDay && this.endSelectedDay) {\r\n this.rangeChange.emit({\r\n startDay: this.startSelectedDay.date,\r\n endDay: this.endSelectedDay.date\r\n });\r\n }\r\n }\r\n}\r\n","@if (inlineMode) {\r\n<ng-container\r\n *ngTemplateOutlet=\"\r\n daterangeMode ? dateRangeTpl : month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n>\r\n</ng-container>\r\n}\r\n<ng-template #dateRangeTpl>\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n</ng-template>\r\n<fd-input-group\r\n placement=\"after\"\r\n glyph=\"calendar\"\r\n glyphAriaLabel=\"select day\"\r\n ariaLabelledBy=\"fd-input-group-icon-label-2\"\r\n [placeholder]=\"placeholder\"\r\n [value]=\"value\"\r\n [button]=\"true\"\r\n [state]=\"isValid ? 'success' : 'error'\"\r\n [showFocus]=\"true\"\r\n [disabled]=\"disabled\"\r\n [readonly]=\"readonly\"\r\n [style.display]=\"!buttonMenuMode || inlineMode ? 'inherit' : 'none'\"\r\n (addOnButtonClicked)=\"onOpenPopover(popover, dialogTemplate)\"\r\n>\r\n</fd-input-group>\r\n@if (buttonMenuMode) {\r\n<button\r\n fd-button\r\n [label]=\"tempFormmatedDate || placeholder\"\r\n [title]=\"placeholder\"\r\n [fdType]=\"value ? 'standard' : 'transparent'\"\r\n [fdMenu]=\"true\"\r\n (click)=\"onOpenPopover(popover, dialogTemplate)\"\r\n [class.placeholder-custom]=\"!value\"\r\n class=\"menu-button-datepicker\"\r\n></button>\r\n}\r\n\r\n<fd-popover #popover (isOpenChange)=\"onPopoverOpenChange($event)\" [focusTrapped]=\"true\" [focusAutoCapture]=\"true\">\r\n <fd-popover-body [style.width.px]=\"width$ | async\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n daterangeMode ? dateRangeTpl : month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n <div fd-popover-body-footer>\r\n <div fd-bar [barDesign]=\"'footer'\">\r\n <div fd-bar-right>\r\n <container *ngTemplateOutlet=\"footerButtons\"></container>\r\n </div>\r\n </div>\r\n </div>\r\n </fd-popover-body>\r\n</fd-popover>\r\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #dialogTemplate>\r\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\r\n <fd-dialog-body>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n month;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n width: width$ | async,\r\n height: height,\r\n rtl: rtl$ | async,\r\n weekDays: weekDays,\r\n weekDaysMin: weekDaysMin,\r\n today: today,\r\n deviceSize: deviceSize,\r\n popover: popover,\r\n dialog: dialog\r\n }\r\n \"\r\n >\r\n </ng-container>\r\n </fd-dialog-body>\r\n <fd-dialog-footer>\r\n <container *ngTemplateOutlet=\"footerButtons; context: { dialog: dialog }\"></container>\r\n </fd-dialog-footer>\r\n </fd-dialog>\r\n</ng-template>\r\n<ng-template #footerButtons let-dialog=\"dialog\">\r\n <fd-button-bar [label]=\"'Ok' | bbbTranslate\" fdType=\"emphasized\" (click)=\"onOk(popover, dialog)\"></fd-button-bar>\r\n <fd-button-bar\r\n [label]=\"'Clear' | bbbTranslate\"\r\n fdType=\"standard\"\r\n (click)=\"onClear(popover, dialog)\"\r\n ></fd-button-bar>\r\n <fd-button-bar [label]=\"'Cancel' | bbbTranslate\" (click)=\"onCancel(popover, dialog)\"></fd-button-bar>\r\n</ng-template>\r\n<ng-template\r\n #month\r\n let-selectedMonth\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-popover=\"popover\"\r\n let-dialog=\"dialog\"\r\n>\r\n @if (showDate) {\r\n <fd-toolbar [fdType]=\"'transparent'\">\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [label]=\"(showDate ? 'DateR_Today' : 'Now') | bbbTranslate\"\r\n (click)=\"onToday()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"onPrevTap()\"\r\n ></button>\r\n\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"onNextTap()\"\r\n ></button>\r\n <div class=\"month-years-wrapper\" fd-title fd-toolbar-item>\r\n @if (selectionMode === 'day' || selectionMode === 'month') {\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.monthName\"\r\n (click)=\"selectionMode = 'month'\"\r\n ></button>\r\n }\r\n <button\r\n fd-button\r\n [fdType]=\"'transparent'\"\r\n [label]=\"selectedMonth.dateInfo.year\"\r\n (click)=\"selectionMode = 'year'\"\r\n ></button>\r\n </div>\r\n <fd-split-button\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: cultureName | bbbTranslate,\r\n keepMainAction: false\r\n }\"\r\n >\r\n <fd-menu>\r\n @for(culture of supportCultureTypes | keyvalue;track culture){\r\n <li fd-menu-item (click)=\"onCultureChange(culture.key)\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ culture.value | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n </fd-toolbar>\r\n }\r\n <div style=\"display: flex\">\r\n @switch (selectionMode) { @case ('month') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (month of months; track month; let i = $index) {\r\n <button\r\n style=\"flex-grow: 1; width: 33%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.monthName === month ? 'emphasized' : 'transparent'\"\r\n [label]=\"month\"\r\n (click)=\"selectionMode = 'day'; onMonthSelected(month, i)\"\r\n ></button>\r\n }\r\n </div>\r\n } @case ('year') {\r\n <div class=\"month-year-selection-wrapper\">\r\n @for (year of years; track year) {\r\n <button\r\n style=\"flex-grow: 1; width: 25%\"\r\n fd-button\r\n [fdType]=\"selectedMonth.dateInfo.year === +year ? 'emphasized' : 'transparent'\"\r\n [label]=\"year\"\r\n (click)=\"selectionMode = 'day'; onYearSelected(year)\"\r\n ></button>\r\n }\r\n </div>\r\n } @default {\r\n <div style=\"display: flex\">\r\n @if (showDate) {\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"height\"\r\n [containerWidth]=\"width\"\r\n [rtl]=\"rtl\"\r\n [monthWeeksCount]=\"selectedMonth.weeksCount\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [datePicker]=\"true\"\r\n [dateRange]=\"true\"\r\n [selectedDate]=\"startSelectedDay ? startSelectedDay.date : value\"\r\n [days]=\"selectedMonth.days\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event, popover, dialog)\"\r\n ></bc-calendar-month>\r\n }\r\n <div class=\"seperator\"></div>\r\n @if (showTime) {\r\n <div>\r\n <fd-time\r\n style=\"direction: ltr\"\r\n fdCompact\r\n [keepTwoDigits]=\"true\"\r\n [(ngModel)]=\"timeValue\"\r\n [displaySeconds]=\"false\"\r\n ></fd-time>\r\n <div style=\"display: flex; gap: 0.2rem; padding: 0.5rem\">\r\n <input\r\n fd-form-control\r\n class=\"remove-arrow\"\r\n style=\"width: 3rem\"\r\n [value]=\"timeValue?.minute\"\r\n type=\"number\"\r\n maxValue=\"23\"\r\n (input)=\"onMinuteTextChange($event)\"\r\n />\r\n <input\r\n fd-form-control\r\n style=\"width: 3rem\"\r\n class=\"remove-arrow\"\r\n [value]=\"timeValue?.hour\"\r\n type=\"number\"\r\n maxValue=\"59\"\r\n (input)=\"onHourTextChange($event)\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n } }\r\n </div>\r\n</ng-template>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n inject\r\n} from '@angular/core';\r\nimport moment from 'moment';\r\nimport { BaseComponent, CalendarFields, CalendarMetaobjectDataModel, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\nimport { Day } from '../models';\r\nimport { DaysInWeekPipe } from '../days-in-week.pipe';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-month-days',\r\n templateUrl: './month-days.component.html',\r\n styleUrls: ['./month-days.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MonthDaysComponent extends BaseComponent implements OnInit, OnChanges {\r\n @Input() monthWeeksCount: { firstWeekIndex: number; weeksCount: number };\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() days: Day[];\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() deviceSize: string;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() datePicker = false;\r\n @Input() rangePicker = false;\r\n @Input() startSelectedDayIndex: number | undefined;\r\n @Input() endSelectedDayIndex: number | undefined;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() daySelect = new EventEmitter<any>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n @Output() dayMouseMove = new EventEmitter<Day>();\r\n @Output() dayMouseUp = new EventEmitter<Day>();\r\n @Output() dayMouseDown = new EventEmitter<Day>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n defaultWeeksCountD: number;\r\n defaultFirstWeekIndex: number;\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount: number;\r\n maxRowTasks: number[];\r\n weekTasksArray: any;\r\n extraRow: number[];\r\n isPickerMode: boolean;\r\n private _hasPopoverOpened: boolean[] = [];\r\n private daysInWeek = inject(DaysInWeekPipe);\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.containerHeight && !changes.containerHeight.firstChange) {\r\n this.fitToContainer(changes.containerHeight.currentValue);\r\n }\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthInfo && !changes.monthInfo.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.monthWeeksCount && !changes.monthWeeksCount.firstChange) {\r\n this.fitToContainer(this.containerHeight);\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.isPickerMode = this.datePicker || this.rangePicker;\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n this.fitToContainer(this.containerHeight);\r\n }\r\n onDayBoxSelect(day: Day): void {\r\n this._fireDaySelect(day);\r\n }\r\n onDaySelect(weekIndex: number, dayIndex: number): void {\r\n const day = this.days[weekIndex * 7 + dayIndex];\r\n this._fireDaySelect(day);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n this._openPopover(isOpen);\r\n }\r\n onMoreButton(e, popover): void {\r\n this._preventEvent(e);\r\n popover.open();\r\n }\r\n onTask(_e, task: CalendarMetaobjectDataModel): void {\r\n this.showEvent.emit(task);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n onDayMouseMove(day: Day): void {\r\n this.dayMouseMove.emit(day);\r\n }\r\n onDayMouseDown(day: Day): void {\r\n this.dayMouseDown.emit(day);\r\n }\r\n onDayMouseUp(day: Day): void {\r\n this.dayMouseUp.emit(day);\r\n }\r\n private _preventEvent(e): void {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n private _fireDaySelect(day: Day): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit({\r\n date: moment(day.date)\r\n });\r\n }\r\n }\r\n private _openPopover(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private fitToContainer(containerHeight): void {\r\n let _weeksCount;\r\n let _firstWeekIndex;\r\n if (this.monthWeeksCount?.weeksCount > 0) {\r\n const { weeksCount, firstWeekIndex } = this.monthWeeksCount;\r\n _weeksCount = weeksCount;\r\n _firstWeekIndex = firstWeekIndex;\r\n } else {\r\n _weeksCount = this.days.length / 7;\r\n _firstWeekIndex = 0;\r\n }\r\n this.numberOfWeek = Array.from(Array(_weeksCount).keys());\r\n this.numberOfWeek = this.numberOfWeek.map((value) => value + _firstWeekIndex);\r\n if (this.isPickerMode) {\r\n this.dayHeight = 40;\r\n return;\r\n }\r\n this.dayHeight = Math.floor(containerHeight / _weeksCount) + 1;\r\n this.maxTaskCount = Math.floor((this.dayHeight - this.taskHeight) / this.taskHeight);\r\n this.maxRowTasks = new Array(this.maxTaskCount).fill(0).map((_x, i) => i);\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n if (this.isPickerMode) {\r\n this.weekTasksArray = {};\r\n return;\r\n }\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: any = [];\r\n for (let j = 0; j < this.days.length / 7; j++) {\r\n const days = this.daysInWeek.transform(this.days, j);\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, 0);\r\n weekTasksArray.push(week);\r\n }\r\n weekTasksArray.forEach((week) => {\r\n const arr: any[] = Object.values(week);\r\n for (let i = arr.length; i < this.maxTaskCount; i++) {\r\n week[i.toString()] = [];\r\n }\r\n });\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((week) => {\r\n this._calendarService.fillWeek(week);\r\n });\r\n this.weekTasksArray = weekTasksArray;\r\n }\r\n}\r\n","<table fd-table class=\"table-header\" [compact]=\"true\">\r\n <thead fd-table-header>\r\n <tr fd-table-row>\r\n @for (weekDay of selectedWeekDays; track weekDay) {\r\n <th class=\"weekday-header\" fd-table-cell [class.noborder]=\"isPickerMode\">\r\n {{ weekDay }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody fd-table-body>\r\n @for (weekDay of numberOfWeek; track weekDay) {\r\n <tr fd-table-row>\r\n <td [style.height.px]=\"dayHeight\" fd-table-cell colspan=\"7\" [style.border]=\"isPickerMode ? 'none' : null\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderTasks;\r\n context: {\r\n $implicit: isPickerMode ? null : moDataList[weekDay],\r\n weekIndex: weekDay,\r\n days: days | daysInWeek: weekDay,\r\n maxRowTasks: maxRowTasks,\r\n weekDays: weekDays,\r\n calendarFields: calendarFields,\r\n rtl: rtl,\r\n isPickerMode: isPickerMode\r\n }\r\n \"\r\n ></ng-container>\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n</table>\r\n<ng-template\r\n #renderTasks\r\n let-task\r\n let-weekIndex=\"weekIndex\"\r\n let-weekDays=\"weekDays\"\r\n let-days=\"days\"\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-calendarFields=\"calendarFields\"\r\n let-deviceSize=\"deviceSize\"\r\n let-rtl=\"rtl\"\r\n let-isPickerMode=\"isPickerMode\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody>\r\n <tr fd-table-row class=\"row-day-number\">\r\n @for (day of days | daysInWeek: weekIndex; track day) {\r\n <td fd-table-cell [class.noborder]=\"isPickerMode\">\r\n <bc-day-number-box\r\n [class.fd-calendar__item]=\"isPickerMode\"\r\n [class.fd-calendar__item--other-month]=\"isPickerMode && !day.isInMonth\"\r\n [class.fd-calendar__item--weekend]=\"isPickerMode && day.isWeekend\"\r\n [isPickerMode]=\"isPickerMode\"\r\n [day]=\"day\"\r\n [class.is-active]=\"day.index === startSelectedDayIndex || day.index === endSelectedDayIndex\"\r\n [class.fd-calendar__item--range]=\"\r\n startSelectedDayIndex &&\r\n endSelectedDayIndex &&\r\n day.index > startSelectedDayIndex &&\r\n day.index < endSelectedDayIndex\r\n \"\r\n (dayClick)=\"onDayClick(day)\"\r\n (dayMouseMove)=\"onDayMouseMove(day)\"\r\n (dayMouseDown)=\"onDayMouseDown(day)\"\r\n (dayMouseUp)=\"onDayMouseUp(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n @if (!isPickerMode) {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray[weekIndex],\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: weekIndex,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n weekDays: weekDays\r\n }\r\n \"\r\n ></ng-container>\r\n <tr fd-table-row>\r\n @for (day of days; track day) {\r\n <td fd-table-cell class=\"more-fd\" (click)=\"onDayBoxSelect(day)\">\r\n @if (maxRowTasks.length < day.tasks.length) {\r\n <button fd-button (click)=\"onMoreButton($event, popover)\" [fdType]=\"'transparent'\" [compact]=\"true\">\r\n {{ day.tasks?.length - maxRowTasks.length }}\r\n {{ 'More' | bbbTranslate }}\r\n </button>\r\n <fd-popover\r\n #popover\r\n [mobile]=\"deviceSize === 's'\"\r\n placement=\"bottom\"\r\n [focusTrapped]=\"true\"\r\n [focusAutoCapture]=\"true\"\r\n (isOpenChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <bc-day-event-list\r\n [day]=\"day\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n [weekDays]=\"weekDays\"\r\n [rtl]=\"rtl\"\r\n [popover]=\"popover\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-day-event-list>\r\n </fd-popover>\r\n }\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n</ng-template>\r\n\r\n<ng-template\r\n #renderDayTasks\r\n let-weekTasks\r\n let-maxRowTasks=\"maxRowTasks\"\r\n let-weekIndex=\"weekIndex\"\r\n let-deviceSize=\"deviceSize\"\r\n let-calendarFields=\"calendarFields\"\r\n let-weekDays=\"weekDays\"\r\n>\r\n @for (rowTask of maxRowTasks; track rowTask; let i = $index) {\r\n <tr fd-table-row>\r\n @if (!weekTasks[i] || weekTasks[i].length === 0) { @for (day of weekDays; track day) {\r\n <td fd-table-cell></td>\r\n } } @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan) {\r\n <td fd-table-cell [attr.colspan]=\"task.colSpan\">\r\n @if (task.event) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" (click)=\"onDaySelect(weekIndex, dayIndex)\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { BaseComponent, AbbrevationDeviceSize } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-header',\r\n templateUrl: './calendar-header.component.html',\r\n styleUrls: ['./calendar-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarHeaderComponent extends BaseComponent {\r\n @Input() monthInfo: CalendarMonthInfo;\r\n @Input() weekModeDays: Day[];\r\n @Input() hideModeButton;\r\n @Input() modeTitle: string;\r\n @Input() title: string;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() rtl: boolean;\r\n @Input() mode: CalendarMode;\r\n @Input() hideTodayButton: boolean;\r\n @Input() hidePrevNext: boolean;\r\n @Input() hideDailyButton: boolean;\r\n @Input() hideMonthlyButton: boolean;\r\n @Input() hideWeeklyButton: boolean;\r\n @Input() hideSelectionDays: boolean;\r\n @Input() hideLisButton: boolean;\r\n @Input() hideYearButton: boolean;\r\n @Output() prevTap = new EventEmitter();\r\n @Output() nextTap = new EventEmitter();\r\n @Output() modeChange = new EventEmitter<CalendarMode>();\r\n @Output() rangeChange = new EventEmitter<{\r\n startDay: Day;\r\n endDay: Day;\r\n monthInfo: CalendarMonthInfo;\r\n }>();\r\n @Output() today = new EventEmitter();\r\n year: string;\r\n monthName = '';\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n }\r\n\r\n onModeChange(menu, mode: CalendarMode): void {\r\n menu.close();\r\n this.modeChange.emit(mode);\r\n }\r\n onRangeChange(range): void {\r\n this.rangeChange.emit(range);\r\n }\r\n onPrint(): void {}\r\n}\r\n","<fd-toolbar [shouldOverflow]=\"true\" [fdType]=\"'transparent'\" [class.rtl]=\"rtl\">\r\n @if(!hideTodayButton){\r\n <button fd-button fd-toolbar-item [label]=\"'DateR_Today' | bbbTranslate\" (click)=\"today.emit()\"></button>\r\n } @if(!hidePrevNext){\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-right-arrow' : 'navigation-left-arrow'\"\r\n (click)=\"prevTap.emit()\"\r\n ></button>\r\n <button\r\n fd-button\r\n fdType=\"transparent\"\r\n fd-toolbar-item\r\n [glyph]=\"rtl ? 'navigation-left-arrow' : 'navigation-right-arrow'\"\r\n (click)=\"nextTap.emit()\"\r\n ></button>\r\n }\r\n <h3 fd-title fd-toolbar-item>{{ title }}</h3>\r\n <fd-toolbar-spacer></fd-toolbar-spacer>\r\n <!-- <button fd-button fd-toolbar-item glyph=\"print\" (click)=\"onPrint()\" fdType=\"transparent\"></button> -->\r\n @if (deviceSize === 's' || deviceSize === 'm') {\r\n <bc-calendar-selection-days\r\n fd-toolbar-item\r\n [monthInfo]=\"monthInfo\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n } @if (!hideModeButton ) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [fixedWidth]=\"false\"\r\n [mainAction]=\"{\r\n mainActionTitle: modeTitle,\r\n keepMainAction: true\r\n }\"\r\n >\r\n <fd-menu #menu>\r\n @if(!hideDailyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'day')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Day' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }@if(!hideWeeklyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'week')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Week' | bbbTranslate }} </span>\r\n </div>\r\n </li>\r\n }\r\n @if(!hideMonthlyButton){\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'month')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'Month' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n <li fd-menu-item (click)=\"onModeChange(menu, 'list')\" bodyClick>\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ 'List' | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n <!-- <li fd-menu-item (click)=\"onModeChange('year')\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ \"Year\" | bbbTranslate }}</span>\r\n </div>\r\n </li> -->\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n</fd-toolbar>\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { CalendarMetaobjectDataModel, DateInfo } from 'barsa-novin-ray-core';\r\nimport { getPadedTime } from './constants';\r\n\r\n@Pipe({\r\n name: 'fromToTime',\r\n standalone: false\r\n})\r\nexport class FromToTimePipe implements PipeTransform {\r\n constructor() {}\r\n transform(task: CalendarMetaobjectDataModel): string {\r\n const event = task.event;\r\n const fromDateInfo: DateInfo = event.$StartDateInfo;\r\n const toDateInfo: DateInfo = event.$EndDateInfo;\r\n const fromTime = `${getPadedTime(fromDateInfo.hour)}:${getPadedTime(fromDateInfo.minutes)}`;\r\n const toTime = `${getPadedTime(toDateInfo.hour)}:${getPadedTime(toDateInfo.minutes)}`;\r\n return `${fromTime} - ${toTime}`;\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild,\r\n inject\r\n} from '@angular/core';\r\nimport {\r\n BaseComponent,\r\n CalendarFields,\r\n CalendarMetaobjectDataModel,\r\n MetaobjectDataModel,\r\n PreventDefaulEvent,\r\n AbbrevationDeviceSize\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarService } from '../services/calendar.service';\r\nimport { Day } from '../models';\r\n@Component({\r\n selector: 'bc-calendar-week',\r\n templateUrl: './calendar-week.component.html',\r\n styleUrls: ['./calendar-week.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarWeekComponent extends BaseComponent implements OnChanges, OnInit {\r\n @ViewChild('tableTop') tableTopEl: ElementRef<HTMLDivElement>;\r\n @ViewChild('sectionRef') _sectionRef: ElementRef<HTMLElement>;\r\n @Input() weekDays: string[];\r\n @Input() weekDaysMin: string[];\r\n @Input() today: Date;\r\n @Input() containerHeight: number;\r\n @Input() calendarFields: CalendarFields;\r\n @Input() rtl: boolean;\r\n @Input() inDialog: boolean;\r\n @Input() deviceSize: AbbrevationDeviceSize;\r\n @Input() moDataList: MetaobjectDataModel[];\r\n @Input() days: Day[];\r\n @Input() canDelete = false;\r\n @Input() canAdd = false;\r\n @Input() canEdit = false;\r\n @Input() canView = false;\r\n @Output() editEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() deleteEvent = new EventEmitter<MetaobjectDataModel>();\r\n @Output() showEvent = new EventEmitter<CalendarMetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ startDate: Date; endDate: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() dayClick = new EventEmitter<Day>();\r\n selectedTaskId = '';\r\n selectedWeekDays: string[];\r\n selected: Day;\r\n numberOfWeek: number[];\r\n dayHeight: number;\r\n taskHeight = 30;\r\n maxTaskCount = 4;\r\n maxRowTasks: number[];\r\n weekTasksArray: { [key: string]: [] }[];\r\n extraRow: number[];\r\n width: any;\r\n hours: string[];\r\n Math = Math;\r\n private _hasPopoverOpened: boolean[] = [];\r\n private _cdr = inject(ChangeDetectorRef);\r\n private _calendarService = inject(CalendarService);\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n if (changes.deviceSize && !changes.deviceSize.firstChange) {\r\n this.prepareWeekDays(changes.deviceSize.currentValue);\r\n }\r\n if (changes.moDataList && !changes.moDataList.firstChange) {\r\n this._prepareDaysTasks(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (changes.days && !changes.days.firstChange) {\r\n this._prepareDaysTasks(this.moDataList);\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.hours = new Array(24).fill(0).map((_x, i) => `${i > 9 ? '' + i : '0' + i}:00`);\r\n this.prepareWeekDays(this.deviceSize);\r\n this._prepareDaysTasks(this.moDataList);\r\n }\r\n setSelectedId(id: string): void {\r\n this.selectedTaskId = id;\r\n this._cdr.detectChanges();\r\n }\r\n onDayBoxSelect(_day: Day): void {\r\n if (!this.canAdd) {\r\n return;\r\n }\r\n // this._fireDaySelect(day.date);\r\n }\r\n onOpenPopoverChange(isOpen: boolean): void {\r\n if (isOpen) {\r\n this._hasPopoverOpened.push(true);\r\n } else {\r\n setTimeout(() => {\r\n this._hasPopoverOpened = [];\r\n }, 0);\r\n }\r\n }\r\n onColumnClick(e, day: Day): void {\r\n const { offsetY } = e;\r\n const hour = Math.floor(offsetY / 50);\r\n const minutes = Math.floor((offsetY % 50) / 15) * 15;\r\n const date = new Date(day.date);\r\n date.setHours(hour);\r\n date.setMinutes(minutes);\r\n // this._fireDaySelect(date);\r\n }\r\n onEventButton(e): void {\r\n if (e.currentTarget?.localName === 'bc-event-button') {\r\n PreventDefaulEvent(e);\r\n }\r\n }\r\n onMoreButton(e, popover): void {\r\n PreventDefaulEvent(e);\r\n this._openPopover(popover);\r\n }\r\n onDayClick(day: Day): void {\r\n this.selected = day;\r\n this.dayClick.emit(day);\r\n }\r\n mousedown(ev, dayIndex): void {\r\n this.days.forEach((d) => {\r\n d.isAddingNewEvent = false;\r\n d.addingEventPoint1 = null;\r\n d.addingEventPoint2 = null;\r\n });\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(ev.offsetY / 25);\r\n this.days[dayIndex].addingEventPoint2 = null;\r\n }\r\n mousedownForResize(_day, dayIndex, taskIndex): void {\r\n const task = this.days[dayIndex].tasks[taskIndex];\r\n this.days[dayIndex].tasks[taskIndex].hidden = true;\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n this.days[dayIndex].addingEventPoint1 = Math.floor(task.top / 25);\r\n this.days[dayIndex].addingEventPoint2 = Math.floor((task.top + task.height) / 25);\r\n this._cdr.detectChanges();\r\n }\r\n mousemove(ev, dayIndex): void {\r\n if (!this.days[dayIndex].isAddingNewEvent) {\r\n return;\r\n }\r\n if (ev.target.tagName !== 'DIV') {\r\n return;\r\n }\r\n this.days[dayIndex].addingEventPoint2 = Math.floor(ev.offsetY / 25);\r\n }\r\n mouseup(_ev, dayIndex, replacingTaskIndex: number | null = null): void {\r\n const day = this.days[dayIndex];\r\n if (replacingTaskIndex) {\r\n this.days[dayIndex].tasks[replacingTaskIndex].hidden = false;\r\n }\r\n this.days[dayIndex].isAddingNewEvent = true;\r\n day.isAddingNewEvent = false;\r\n const { addingEventPoint1, addingEventPoint2 } = day;\r\n if (addingEventPoint1 !== null && addingEventPoint2 !== null) {\r\n const startDateTotalMinutes = Math.min(addingEventPoint1, addingEventPoint2) * 30;\r\n const startDateHour = Math.floor(startDateTotalMinutes / 60);\r\n const startDateMinutes = Math.floor(startDateTotalMinutes % 60);\r\n const startDate = new Date(day.date);\r\n startDate.setHours(startDateHour);\r\n startDate.setMinutes(startDateMinutes);\r\n const endDateTotalMinutes = (Math.max(addingEventPoint1, addingEventPoint2) + 1) * 30;\r\n const endDateHour = Math.floor(endDateTotalMinutes / 60);\r\n const endDateMinutes = Math.floor(endDateTotalMinutes % 60);\r\n const endDate = new Date(day.date);\r\n endDate.setHours(endDateHour);\r\n endDate.setMinutes(endDateMinutes);\r\n this._rangeSelect({ startDate, endDate });\r\n day.addingEventPoint1 = null;\r\n day.addingEventPoint2 = null;\r\n this._sectionRef?.nativeElement.remove();\r\n }\r\n }\r\n private _fireDaySelect(date: Date): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.daySelect.emit(date);\r\n }\r\n }\r\n private _rangeSelect({ startDate, endDate }): void {\r\n if (this._hasPopoverOpened.length === 0) {\r\n this.rangeSelect.emit({ startDate, endDate });\r\n }\r\n }\r\n private _openPopover(popover: any): void {\r\n if (popover.isOpen) {\r\n this._hasPopoverOpened.push(popover);\r\n } else {\r\n this._hasPopoverOpened.pop();\r\n }\r\n }\r\n private prepareWeekDays(deviceSize: string): void {\r\n if (deviceSize !== 's' && deviceSize !== 'm') {\r\n this.selectedWeekDays = this.weekDays;\r\n } else {\r\n this.selectedWeekDays = this.weekDaysMin;\r\n }\r\n }\r\n private _prepareDaysTasks(calendarTasks): void {\r\n const calendarFields = this.calendarFields;\r\n // Sort all Tasks\r\n const moDataList = this._calendarService.sortTasks(calendarTasks, calendarFields);\r\n const taskHeight = 50;\r\n this.days.forEach((day) => (day.tasks = []));\r\n const weekTasksArray: { [key: string]: any[] }[] = [];\r\n const days = this.days;\r\n const week = this._calendarService.createWeekTask(days, moDataList, calendarFields, taskHeight);\r\n weekTasksArray.push(week);\r\n // به ازای هر ردیف تسک باید تعداد 7 ستون اضافه گردد و برای ستونی که تسکی ندارد یک جای خالی colspan 1 میگذاریم\r\n weekTasksArray.forEach((weekTask) => {\r\n this._calendarService.fillWeek(weekTask, days.length);\r\n });\r\n const tasks = [];\r\n let counter = 0;\r\n Object.values(weekTasksArray).forEach(() => {\r\n Object.values(week).forEach((element) => {\r\n const filtered = element.some((c) => c.colSpan > 1 || (c.colSpan === 1 && !c.inDay && c.event));\r\n if (filtered) {\r\n tasks[counter.toString()] = element;\r\n counter++;\r\n }\r\n });\r\n });\r\n this.weekTasksArray = tasks;\r\n }\r\n}\r\n","<div\r\n class=\"table-container\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n style=\"overflow-y: hidden; flex-shrink: 0\"\r\n #tableTop\r\n>\r\n <table fd-table class=\"table-top\" fdCompact [attr.daysCount]=\"days.length\">\r\n <tbody fd-table-body>\r\n <tr fd-table-row class=\"week-days\">\r\n <td class=\"td-time\"></td>\r\n @for (day of days; track day) {\r\n <td [attr.rtl]=\"rtl\" class=\"weekday-header\" fd-table-cell style=\"width: 100%\">\r\n {{ day.dayName }}\r\n </td>\r\n }\r\n </tr>\r\n <tr fd-table-row class=\"week-numbers\">\r\n <td class=\"td-time\"></td>\r\n @for (day of days; track day) {\r\n <td fd-table-cell [attr.rtl]=\"rtl\">\r\n <bc-day-number-box\r\n [day]=\"day\"\r\n [isWeekMode]=\"true\"\r\n [isSingleDay]=\"days.length === 1\"\r\n (dayClick)=\"onDayClick(day)\"\r\n ></bc-day-number-box>\r\n </td>\r\n }\r\n </tr>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n renderDayTasks;\r\n context: {\r\n $implicit: weekTasksArray,\r\n maxRowTasks: maxRowTasks,\r\n weekIndex: 0\r\n }\r\n \"\r\n ></ng-container>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template #renderDayTasks let-weekTasks let-maxRowTasks=\"maxRowTasks\" let-weekIndex=\"weekIndex\">\r\n @for (rowTask of weekTasks | keyvalue; track rowTask; let i = $index) {\r\n <tr fd-table-row class=\"task-row\">\r\n <td fd-table-cell class=\"fd-time\" style=\"border: none\"></td>\r\n @for (task of weekTasks[i]; track task; let dayIndex = $index) { @if (task.colSpan && dayIndex < days.length) {\r\n <td\r\n fd-table-cell\r\n [attr.colspan]=\"task.colSpan > days.length ? days.length : task.colSpan\"\r\n class=\"td-button\"\r\n [attr.hasevent]=\"!!task.event\"\r\n >\r\n @if (task.event && !task.inDay) {\r\n <bc-event-button\r\n [task]=\"task\"\r\n [rtl]=\"rtl\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n [calendarFields]=\"calendarFields\"\r\n [deviceSize]=\"deviceSize\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n ></bc-event-button>\r\n } @else {\r\n <div style=\"width: 100%; height: 100%\" [attr.newDay]=\"true\"></div>\r\n }\r\n </td>\r\n } }\r\n </tr>\r\n }\r\n</ng-template>\r\n<div\r\n class=\"table-container\"\r\n style=\"overflow-y: hidden; overflow-x: auto; flex-grow: 1; display: inline-table\"\r\n [style.height.px]=\"inDialog ? containerHeight : null\"\r\n [style.overflow-y]=\"inDialog ? 'scroll' : 'hidden'\"\r\n>\r\n <table fd-table-body class=\"table-content\" [compact]=\"true\">\r\n <tbody #tbody>\r\n <tr class=\"tr-time\" style=\"height: 0rem\">\r\n <td class=\"td-time\" style=\"height: 0rem\"></td>\r\n <td [colspan]=\"days.length\" style=\"height: 0rem\">\r\n <div class=\"tasks-wrapper\">\r\n @for (hour of hours; track hour) {\r\n <div class=\"row-border\"></div>\r\n }\r\n </div>\r\n </td>\r\n </tr>\r\n <tr fd-table-row style=\"height: 100%\">\r\n <td fd-table-cell class=\"td-time\">\r\n <div class=\"calc-time\">\r\n @for (hour of hours; track hour) {\r\n <div>{{ hour }}</div>\r\n }\r\n </div>\r\n </td>\r\n @for (day of days; track day; let dayIndex = $index) {\r\n <td class=\"tw-relative\" fd-table-cell (click)=\"onColumnClick($event, day)\">\r\n @if (day.addingEventPoint2 !== null && day.addingEventPoint1 !== null) {\r\n <section\r\n #sectionRef\r\n class=\"tw-w-[98%] tw-border tw-border-blue-400 tw-absolute tw-left-1/2 -tw-translate-x-1/2 tw-rounded-md tw-transition-colors\"\r\n [ngStyle]=\"{\r\n top: Math.min(day.addingEventPoint2, day.addingEventPoint1) * 25 + 'px',\r\n height: (Math.abs(day.addingEventPoint1 - day.addingEventPoint2) + 1) * 25 + 'px'\r\n }\"\r\n [ngClass]=\"{\r\n 'tw-bg-blue-400/[.4]': day.isAddingNewEvent,\r\n 'tw-bg-blue-400': !day.isAddingNewEvent\r\n }\"\r\n ></section>\r\n }\r\n <div\r\n style=\"position: absolute; left: 0; right: 0; top: 0; bottom: 0\"\r\n (mousedown)=\"mousedown($event, dayIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n >\r\n @for (task of day.tasks; track task; let taskIndex = $index) { @if (task.inDay) {\r\n <bc-event-button\r\n (click)=\"setSelectedId(task.event.Id); onEventButton($event)\"\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n [style.top.px]=\"task.top\"\r\n [style.right]=\"\r\n rtl\r\n ? 'calc(' + (task.positionCausedByOverlap / task.countOfOverlaps) * 100 + '%)'\r\n : null\r\n \"\r\n [style.left]=\"\r\n rtl\r\n ? null\r\n : 'calc(100% - ' +\r\n (task.positionCausedByOverlap / task.countOfOverlaps) * 100 +\r\n '%)'\r\n \"\r\n [style.width]=\"\r\n 'calc(' + (100 - (task.positionCausedByOverlap / task.countOfOverlaps) * 100) + '%)'\r\n \"\r\n [style.height.px]=\"task.height || 5\"\r\n [style.maxHeight.px]=\"task.height || 5\"\r\n [style.visibility]=\"task.hidden ? 'hidden' : 'visible'\"\r\n [style.opacity]=\"task.opacity\"\r\n [style.zIndex]=\"task.positionCausedByOverlap + (selectedTaskId === task.event.Id ? 0 : 0)\"\r\n [buttonTemplate]=\"eventButtonTemplate\"\r\n class=\"task-day\"\r\n [task]=\"task\"\r\n [index]=\"taskIndex\"\r\n [deviceSize]=\"deviceSize\"\r\n [calendarFields]=\"calendarFields\"\r\n [canDelete]=\"canDelete\"\r\n [canEdit]=\"canEdit\"\r\n [canView]=\"canView\"\r\n (deleteEvent)=\"deleteEvent.emit($event)\"\r\n (editEvent)=\"editEvent.emit($event)\"\r\n (openPopoverChange)=\"onOpenPopoverChange($event)\"\r\n >\r\n <div\r\n class=\"tw-absolute tw-bottom-0 tw-h-1 tw-cursor-ns-resize tw-w-full tw-left-0\"\r\n (mousedown)=\"$event.stopPropagation(); mousedownForResize(day, dayIndex, taskIndex)\"\r\n (mouseup)=\"mouseup($event, dayIndex, taskIndex)\"\r\n (mousemove)=\"mousemove($event, dayIndex)\"\r\n ></div>\r\n </bc-event-button>\r\n } }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n<ng-template\r\n #eventButtonTemplate\r\n let-task\r\n let-popover=\"popover\"\r\n let-calendarFields=\"calendarFields\"\r\n let-onButtonClick=\"onButtonClick\"\r\n>\r\n <button\r\n [style.background]=\"task.event[calendarFields.Color]\"\r\n class=\"task-title tw-border !tw-border-gray-300 tw-shadow-lg\"\r\n fd-button\r\n [compact]=\"true\"\r\n [fdType]=\"'emphasized'\"\r\n (click)=\"onButtonClick(popover)\"\r\n [label]=\"task.height > 49 ? '' : task.event[calendarFields.Title] + ' ' + (task | fromToTime)\"\r\n >\r\n @if (task.height > 49) {\r\n <span class=\"ellipsis\">{{ task.event[calendarFields.Title] }}</span>\r\n <span class=\"ellipsis\">{{ task | fromToTime }}</span>\r\n }\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list-item',\r\n templateUrl: './calendar-list-item.component.html',\r\n styleUrls: ['./calendar-list-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListItemComponent extends BaseComponent {\r\n @Input() mo: MetaobjectDataModel;\r\n @Input() startTime: string;\r\n @Input() endTime: string;\r\n @Input() title: string;\r\n @Input() notes: string;\r\n @Input() bgColor: string;\r\n @Input() id: string;\r\n}\r\n","<div class=\"wrapper\">\r\n <div flexShrink=\"1\" class=\"day-wrapper\">\r\n <fd-text [text]=\"startTime\"></fd-text>\r\n <fd-text class=\"ela\" [text]=\"'الی'\"></fd-text>\r\n <fd-text [text]=\"endTime\"></fd-text>\r\n </div>\r\n <div class=\"color\" [style.background-color]=\"bgColor\"></div>\r\n <div class=\"event-wrapper\">\r\n <fd-text class=\"title\" [text]=\"title\"></fd-text>\r\n <fd-text class=\"desc\" [text]=\"notes\"></fd-text>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nimport { BaseComponent, CalendarFields, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list-container',\r\n templateUrl: './calendar-list-container.component.html',\r\n styleUrls: ['./calendar-list-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListContainerComponent extends BaseComponent {\r\n @Input() view: any;\r\n @Input() reportItemComponentName: string;\r\n @Input() showEvents: boolean;\r\n @Input() moDataList: MetaobjectDataModel[] | null;\r\n @Input() calendarFields: CalendarFields;\r\n @Output() showEventsTap = new EventEmitter();\r\n public trackById(_index: number, item: MetaobjectDataModel): string {\r\n return item.Id;\r\n }\r\n}\r\n","<ul fd-list [subline]=\"true\">\r\n @for (item of moDataList; track trackById($index, item)) {\r\n <li fd-list-item [interactive]=\"true\">\r\n <fd-avatar size=\"s\" label=\"Jane Doe\"></fd-avatar>\r\n <div fd-list-content>\r\n <div fd-list-title>{{ item[calendarFields.Title] }}</div>\r\n <div fd-list-subline>{{ item[calendarFields.Notes] }}</div>\r\n <div fd-list-byline [twoCol]=\"true\">\r\n <div fd-list-byline-left>{{ item[calendarFields.StartDate+'$Caption'] }}</div>\r\n <div fd-list-byline-right>{{ item[calendarFields.EndDate+'$Caption'] }}</div>\r\n </div>\r\n </div>\r\n </li>\r\n }\r\n</ul>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { BaseComponent, MetaobjectDataModel } from 'barsa-novin-ray-core';\r\n@Component({\r\n selector: 'bc-calendar-list',\r\n templateUrl: './calendar-list.component.html',\r\n styleUrls: ['./calendar-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarListComponent extends BaseComponent {\r\n @Input() moDataList: MetaobjectDataModel[];\r\n public trackById(_index: number, item: MetaobjectDataModel): string {\r\n return item.Id;\r\n }\r\n}\r\n","@for (item of moDataList; track trackById($index, item)) {\r\n<bc-calendar-list-item [mo]=\"item\"> </bc-calendar-list-item>\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\r\nimport { map, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport {\r\n UiReportViewBaseSetting,\r\n ReportViewBaseComponent,\r\n DateService,\r\n LogService,\r\n getDateService,\r\n MetaobjectDataModel,\r\n CalendarMetaobjectDataModel,\r\n BarsaApi\r\n} from 'barsa-novin-ray-core';\r\nimport { CalendarMode, CalendarMonthInfo, Day } from '../models';\r\nimport { CalendarService } from '../services/calendar.service';\r\n\r\n@Component({\r\n selector: 'bc-calendar-container',\r\n templateUrl: './calendar-container.component.html',\r\n styleUrls: ['./calendar-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: DateService,\r\n useFactory: getDateService,\r\n deps: [LogService]\r\n }\r\n ],\r\n standalone: false\r\n})\r\nexport class CalendarContainerComponent\r\n extends ReportViewBaseComponent<UiReportViewBaseSetting>\r\n implements OnInit, OnChanges\r\n{\r\n @ViewChild('divRef', { static: true }) _divRef: ElementRef;\r\n @Input() calendarFields;\r\n @Input() userCalendars;\r\n @Input() viewSetting: UiCalendarSettings;\r\n @Output() deleteTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() editTask = new EventEmitter<MetaobjectDataModel>();\r\n @Output() rangeSelect = new EventEmitter<{ [key: string]: Date }>();\r\n @Output() daySelect = new EventEmitter<Date>();\r\n @Output() loadData = new EventEmitter<{ start: Date; end: any }>();\r\n selectedDay: Day;\r\n todayIndex = -1;\r\n selectedIndex: any;\r\n calendars: CalendarMonthInfo[];\r\n showEvents: boolean;\r\n width: number;\r\n height: number;\r\n selectedMonth$: Observable<CalendarMonthInfo>;\r\n today: Date;\r\n weekDaysMin: string[];\r\n weekDays: string[];\r\n mode$: Observable<CalendarMode>;\r\n selectedWeek$: Observable<number>;\r\n weekModeDays$: Observable<Day[]>;\r\n days$: Observable<Day[]>;\r\n weeksCount: number;\r\n firstWeekIndex: number;\r\n monthWeeksCount$: Observable<number>;\r\n modeTitle$: Observable<string>;\r\n title$: Observable<string>;\r\n eventMoDataList$ = new BehaviorSubject<MetaobjectDataModel[]>([]);\r\n private _calendarService = inject(CalendarService);\r\n private _dateService = inject(DateService);\r\n\r\n ngOnInit(): void {\r\n this.calendarFields = this.contextSetting.View.CalendarFields;\r\n if (this.viewSetting?.CalendarColorField) {\r\n this.calendarFields.Color = this.viewSetting.CalendarColorField;\r\n }\r\n this.userCalendars = this.contextSetting.View.UserCalendars;\r\n super.ngOnInit();\r\n if (!this.viewSetting) {\r\n const x: any = { DefaultMode$Caption: 'month' };\r\n this.viewSetting = x;\r\n }\r\n this._calendarService.setCulture(BarsaApi.LoginFormData.Culture);\r\n this._calendarService.setMode(this.viewSetting.DefaultMode$Caption);\r\n\r\n this.prepare();\r\n this._setWidthAndHeight();\r\n this.prepareMoDataList(this.moDataList);\r\n this.selectedMonth$.pipe(takeUntil(this._onDestroy$)).subscribe((month: CalendarMonthInfo) => {\r\n this.loadData.emit({\r\n start: month.days[0].date,\r\n end: month.days[month.days.length - 1].date\r\n });\r\n });\r\n\r\n // this.setTasks(this.calendars, this.moDataList, this.calendarFields);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n super.ngOnChanges(changes);\r\n const { moDataList, deviceSize } = changes;\r\n if (moDataList && !moDataList.firstChange) {\r\n this.prepareMoDataList(changes.moDataList.currentValue);\r\n this._cdr.detectChanges();\r\n }\r\n if (deviceSize && !deviceSize.firstChange) {\r\n this._setWidthAndHeight();\r\n this._cdr.detectChanges();\r\n }\r\n }\r\n onCalendarCheckChange(_calendar: MetaobjectDataModel): void {\r\n this._handleUserCalendarsChecked();\r\n }\r\n onDayClick(day: Day): void {\r\n this._calendarService.setMode('day', day);\r\n }\r\n onShowTask(): void {}\r\n onSlideChange(selected: CalendarMonthInfo): void {\r\n this._calendarService.setSelected(selected);\r\n }\r\n onMonthCarouselLoaded({ object }): void {\r\n object.selectedPage = 1;\r\n }\r\n\r\n onToday(): void {\r\n this._calendarService.gotoToday();\r\n }\r\n onModeChange(mode: CalendarMode): void {\r\n this._calendarService.setMode(mode);\r\n }\r\n onRangeChange(e: { startDay: Day; endDay: Day; monthInfo: CalendarMonthInfo }): void {\r\n this._calendarService.rangeSelect(e.startDay, e.endDay, e.monthInfo);\r\n }\r\n onPrevTap(): void {\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage - 1);\r\n this._calendarService.loadPrevious();\r\n }\r\n\r\n onNextTap(): void {\r\n this._calendarService.loadNext();\r\n // this.gotoPage(this.monthCarouselView.nativeElement.selectedPage + 1);\r\n }\r\n\r\n onSelectedChange(day: Day): void {\r\n this.selectedDay = { ...day };\r\n }\r\n onRangeSelect({ startDate, endDate }): void {\r\n const x = { [this.calendarFields.StartDate]: startDate, [this.calendarFields.EndDate]: endDate };\r\n this.rangeSelect.emit(x);\r\n }\r\n\r\n prepareMoDataList(moDataList: MetaobjectDataModel[]): void {\r\n this.eventMoDataList$.next(\r\n moDataList.map((event) => ({\r\n ...event,\r\n id: event.Id, // because in core.js calendar selection adapter read id with lowercase\r\n $StartDateInfo: this._dateService.getDateInfo(event[this.calendarFields.StartDate]),\r\n $EndDateInfo: this._dateService.getDateInfo(event[this.calendarFields.EndDate])\r\n }))\r\n );\r\n }\r\n\r\n addTd(table: any[], tr: any[], event: CalendarMetaobjectDataModel, colSpan: number): void {\r\n const colSpanCount = tr.length > 0 ? tr.map((c) => c.colSpan).reduce((a, b) => a + b) > 6 : 0;\r\n if (colSpanCount) {\r\n table.push(tr);\r\n tr = [];\r\n }\r\n tr.push({ type: 'td', colSpan, event });\r\n }\r\n private _handleUserCalendarsChecked(): void {\r\n const userCalendars = this.userCalendars?.Data?.MoDataList;\r\n if (!userCalendars?.length) {\r\n return;\r\n }\r\n const calendars = userCalendars.filter((c) => c.$IsChecked).map((c) => c.Id);\r\n let moList = this.moDataList;\r\n\r\n if (calendars.length > 0) {\r\n moList = this.moDataList.filter(\r\n (c) => c[this.calendarFields.Calendar] && calendars.indexOf(c[this.calendarFields.Calendar].Id) > -1\r\n );\r\n }\r\n this.prepareMoDataList(moList);\r\n }\r\n private prepare(): void {\r\n this.weekDaysMin = this._calendarService.weekDaysMin();\r\n this.weekDays = this._calendarService.weekDays();\r\n this.selectedMonth$ = this._calendarService.selected$;\r\n this.days$ = this._calendarService.days$;\r\n this.today = this._calendarService.today;\r\n this.mode$ = this._calendarService.mode$;\r\n\r\n this.monthWeeksCount$ = this.mode$.pipe(\r\n map((mode) => {\r\n if (mode === 'month') {\r\n return this._calendarService.selectedMonth.weeksCount;\r\n }\r\n return 0;\r\n })\r\n );\r\n this.modeTitle$ = combineLatest([this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([, mode]) => {\r\n if (mode === 'customMonth') {\r\n return of(`${this._calendarService.weeksCount} ${this._bbbTranslate.transform('Week')}`);\r\n }\r\n return of(this._bbbTranslate.transform(this._titleCase.transform(mode)));\r\n })\r\n );\r\n\r\n this.weekModeDays$ = this._calendarService.weekModeDays$;\r\n this._calendarService.calendars$.pipe(takeUntil(this._onDestroy$)).subscribe((calendars) => {\r\n const eventCalendars = [...calendars];\r\n // eventCalendars = eventCalendars.splice(this.selectedIndex, 3);\r\n this.calendars = eventCalendars;\r\n // if (this.monthCarouselView) {\r\n // this.monthCarouselView.nativeElement.selectedPage = 1;\r\n // }\r\n });\r\n\r\n // .pipe(takeUntil(this._onDestroy$))\r\n // .subscribe((todayIndex) => {\r\n // this.selectedIndex = this.todayIndex = todayIndex;\r\n // this.gotoPage(this.todayIndex);\r\n // });\r\n this.title$ = combineLatest([this.weekModeDays$, this.selectedMonth$, this.days$, this.mode$]).pipe(\r\n takeUntil(this._onDestroy$),\r\n switchMap(([weekModeDays, monthInfo, days, mode]) => {\r\n let monthName = monthInfo.dateInfo.monthName;\r\n const year = monthInfo.dateInfo.strYear;\r\n\r\n if (mode !== 'month') {\r\n let firstDayInfo: Day;\r\n let lastDayInfo: Day;\r\n const daysTemp = mode === 'customMonth' ? days : weekModeDays;\r\n if (daysTemp.length > 0) {\r\n firstDayInfo = daysTemp[0];\r\n lastDayInfo = daysTemp[daysTemp.length - 1];\r\n monthName = firstDayInfo.monthName;\r\n if (firstDayInfo.month !== lastDayInfo.month) {\r\n monthName = `${firstDayInfo.monthName} -\r\n ${lastDayInfo.monthName}`;\r\n }\r\n }\r\n }\r\n return of(`${monthName} ${year}`);\r\n })\r\n );\r\n }\r\n\r\n private _setWidthAndHeight(): void {\r\n // const divRef= this._el.nativeElement;\r\n const divRef = this._divRef.nativeElement;\r\n\r\n this.width = divRef.offsetWidth;\r\n this.height = divRef.offsetHeight - 45;\r\n }\r\n}\r\ninterface UiCalendarSettings extends UiReportViewBaseSetting {\r\n CalendarColorField: string;\r\n HideDailyButton: boolean;\r\n HideHeader: boolean;\r\n HideMonthlyButton: boolean;\r\n HidePrevNex: boolean;\r\n HideSelectionDays: boolean;\r\n HideTodayButton: boolean;\r\n HideWeeklyButton: boolean;\r\n HideModeButton: boolean;\r\n DefaultMode$Caption: CalendarMode;\r\n}\r\n","<div style=\"display: flex; width: 100%; height: 100%; flex-direction: row\">\r\n @if ((deviceSize !== 's' && deviceSize !== 'm') && (!viewSetting.HideSelectionDays &&\r\n !userCalendars?.Data?.MoDataList?.length)) {\r\n <div style=\"width: 320px; height: 100%\">\r\n @if(!viewSetting.HideSelectionDays){\r\n <bc-calendar-selection-days\r\n [inline]=\"true\"\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n ></bc-calendar-selection-days>\r\n <div style=\"height: 1px; background: #ccc\"></div>\r\n } @if (userCalendars?.Data?.MoDataList?.length) {\r\n <div>\r\n <h4>تقویمهایمن</h4>\r\n @for (calendar of userCalendars.Data.MoDataList; track calendar) {\r\n <ul fd-list>\r\n <li fd-list-item style=\"padding: 0\" class=\"user-calendar\">\r\n <span\r\n [style.background]=\"calendar.Color ? calendar.Color : null\"\r\n style=\"width: 5px; height: 100%; position: absolute\"\r\n ></span>\r\n <fd-checkbox\r\n [(ngModel)]=\"calendar.$IsChecked\"\r\n (change)=\"onCalendarCheckChange(calendar)\"\r\n ></fd-checkbox>\r\n <span fd-list-title>{{ calendar.$Caption }}</span>\r\n </li>\r\n </ul>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div style=\"flex: 1\" #divRef>\r\n @if(!viewSetting.HideHeader){\r\n <bc-calendar-header\r\n [monthInfo]=\"(selectedMonth$ | async)!!\"\r\n [weekModeDays]=\"(weekModeDays$ | async)!!\"\r\n [rtl]=\"rtl\"\r\n [hidePrevNext]=\"viewSetting.HidePrevNex\"\r\n [hideTodayButton]=\"viewSetting.HideTodayButton\"\r\n [hideSelectionDays]=\"viewSetting.HideSelectionDays\"\r\n [hideDailyButton]=\"viewSetting.HideDailyButton\"\r\n [hideMonthlyButton]=\"viewSetting.HideMonthlyButton\"\r\n [hideWeeklyButton]=\"viewSetting.HideWeeklyButton\"\r\n [hideModeButton]=\"viewSetting.HideModeButton\"\r\n [deviceSize]=\"deviceSize\"\r\n [mode]=\"(mode$ | async)!!\"\r\n [modeTitle]=\"(modeTitle$ | async)!!\"\r\n [title]=\"(title$ | async)!!\"\r\n (modeChange)=\"onModeChange($event)\"\r\n (prevTap)=\"onPrevTap()\"\r\n (nextTap)=\"onNextTap()\"\r\n (today)=\"onToday()\"\r\n (rangeChange)=\"onRangeChange($event)\"\r\n >\r\n </bc-calendar-header>\r\n } @switch (mode$ | async) { @case ('week') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @case ('day') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n weekCalendar;\r\n context: {\r\n $implicit: selectedMonth$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n weekModeDays: weekModeDays$ | async,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @case ('list') {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n listCalendar;\r\n context: {\r\n $implicit: days$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n monthWeeksCount: monthWeeksCount$ | async,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } @default {\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n monthCalendar;\r\n context: {\r\n $implicit: days$ | async,\r\n moDataList: eventMoDataList$ | async,\r\n width: width,\r\n height: height,\r\n rtl: rtl,\r\n showEvents: showEvents,\r\n today: today,\r\n deviceSize: deviceSize,\r\n calendarFields: calendarFields,\r\n monthWeeksCount: monthWeeksCount$ | async,\r\n access: access\r\n }\r\n \"\r\n ></ng-container>\r\n } }\r\n </div>\r\n</div>\r\n<ng-template\r\n #monthCalendar\r\n let-days\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-monthWeeksCount=\"monthWeeksCount\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-month\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [monthWeeksCount]=\"monthWeeksCount\"\r\n [rtl]=\"rtl\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"days\"\r\n [canView]=\"access.View\"\r\n [canAdd]=\"access.Add\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n ></bc-calendar-month>\r\n</ng-template>\r\n\r\n<ng-template #listCalendar>\r\n <bc-calendar-list-container\r\n [showEvents]=\"showEvents\"\r\n [selectedDay]=\"selectedDay\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"eventMoDataList$ | async\"\r\n (showEventsTap)=\"showEvents = !showEvents\"\r\n ></bc-calendar-list-container>\r\n</ng-template>\r\n\r\n<ng-template\r\n #weekCalendar\r\n let-selectedMonth\r\n let-moDataList=\"moDataList\"\r\n let-width=\"width\"\r\n let-height=\"height\"\r\n let-calendarFields=\"calendarFields\"\r\n let-rtl=\"rtl\"\r\n let-today=\"today\"\r\n let-showEvents=\"showEvents\"\r\n let-deviceSize=\"deviceSize\"\r\n let-weekModeDays=\"weekModeDays\"\r\n let-access=\"access\"\r\n>\r\n <bc-calendar-week\r\n [style.width]=\"width\"\r\n [containerHeight]=\"parentHeight !== 0 ? parentHeight : height\"\r\n [containerWidth]=\"width\"\r\n [inDialog]=\"inDialog\"\r\n [calendarFields]=\"calendarFields\"\r\n [moDataList]=\"moDataList\"\r\n [rtl]=\"rtl\"\r\n [canAdd]=\"access.Add\"\r\n [canView]=\"access.View\"\r\n [canEdit]=\"access.Edit\"\r\n [canDelete]=\"access.Delete\"\r\n [weekDays]=\"weekDays\"\r\n [weekDaysMin]=\"weekDaysMin\"\r\n [today]=\"today\"\r\n [showEvents]=\"showEvents\"\r\n [days]=\"weekModeDays\"\r\n [deviceSize]=\"deviceSize\"\r\n (dayClick)=\"onDayClick($event)\"\r\n (showEvent)=\"onShowTask()\"\r\n (deleteEvent)=\"deleteTask.emit($event)\"\r\n (editEvent)=\"editTask.emit($event)\"\r\n (daySelect)=\"daySelect.emit($event)\"\r\n (rangeSelect)=\"onRangeSelect($event)\"\r\n ></bc-calendar-week>\r\n</ng-template>\r\n","import { ComponentFactoryResolver, NgModule, NO_ERRORS_SCHEMA, inject } from '@angular/core';\nimport { CommonModule, TitleCasePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { FundamentalNgxCoreModule } from '@fundamental-ngx/core';\nimport { CardModule } from '@fundamental-ngx/core/card';\nimport { QuickViewModule } from '@fundamental-ngx/core/quick-view';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\n\nimport { BarsaNovinRayCoreModule, BaseModule, DynamicComponentService } from 'barsa-novin-ray-core';\n\nimport { CalendarContainerComponent } from './calendar-container/calendar-container.component';\nimport { CalendarListComponent } from './calendar-list/calendar-list.component';\nimport { CalendarListContainerComponent } from './calendar-list-container/calendar-list-container.component';\nimport { CalendarListItemComponent } from './calendar-list-item/calendar-list-item.component';\nimport { CalendarWeekComponent } from './calendar-week/calendar-week.component';\nimport { CalendarMonthComponent } from './calendar-month/calendar-month.component';\nimport { CalendarService } from './services/calendar.service';\nimport { MonthDaysComponent } from './month-days/month-days.component';\nimport { DaysInWeekPipe } from './days-in-week.pipe';\nimport { EventDatePipe } from './event-date.pipe';\nimport { EventTimePipe } from './event-time.pipe';\nimport { FromToTimePipe } from './from-to-time.pipe';\nimport { EqualDatePipe } from './equal-date.pipe';\nimport { CalendarHeaderComponent } from './calendar-header/calendar-header.component';\nimport { EventPreviewComponent } from './event-preview/event-preview.component';\nimport { DayNumberBoxComponent } from './day-number-box/day-number-box.component';\nimport { EventButtonComponent } from './event-button/event-button.component';\nimport { DayEventListComponent } from './day-event-list/day-event-list.component';\nimport { DateTimePickerComponent } from './date-time-picker/date-time-picker.component';\nimport { CalendarSelectionDaysComponent } from './calendar-selection-days/calendar-selection-days.component';\nimport { EventButtonEndArrowComponent } from './event-button-end-arrow/event-button-end-arrow.component';\nimport { EventButtonStartArrowComponent } from './event-button-start-arrow/event-button-start-arrow.component';\n\nconst components = [\n CalendarContainerComponent,\n CalendarListComponent,\n CalendarListContainerComponent,\n CalendarListItemComponent,\n CalendarWeekComponent,\n CalendarMonthComponent,\n MonthDaysComponent,\n CalendarHeaderComponent,\n EventPreviewComponent,\n DayNumberBoxComponent,\n EventButtonComponent,\n DayEventListComponent,\n EventButtonEndArrowComponent,\n EventButtonStartArrowComponent,\n DateTimePickerComponent, \n CalendarSelectionDaysComponent\n];\nconst pipes = [DaysInWeekPipe, EventDatePipe, EventTimePipe, FromToTimePipe, EqualDatePipe];\n@NgModule({\n schemas: [NO_ERRORS_SCHEMA],\n imports: [\n CommonModule,\n FormsModule,\n BarsaNovinRayCoreModule,\n FundamentalNgxCoreModule,\n PopoverModule,\n CardModule,\n QuickViewModule\n ],\n declarations: [...components, ...pipes],\n providers: [TitleCasePipe, CalendarService, ...pipes],\n exports: [...components]\n})\nexport class BarsaCalendarModule extends BaseModule {\n protected dcm: DynamicComponentService;\n protected componentFactoryResolver: ComponentFactoryResolver;\n\n protected dynamicComponents = [...components];\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n \n constructor() {\n const dcm = inject(DynamicComponentService);\n const componentFactoryResolver = inject(ComponentFactoryResolver);\n\n super(dcm, componentFactoryResolver, 'BarsaCalendarModule');\n \n this.dcm = dcm;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i7","i8","i9.EventDatePipe","i4","i5","i6.EventPreviewComponent","i7.EventButtonEndArrowComponent","i8.EventButtonStartArrowComponent","i9.EventTimePipe","i1","i7.DayNumberBoxComponent","i8.EventButtonEndArrowComponent","i9.EventButtonStartArrowComponent","i3","i6","i8.EventButtonComponent","i9.DayEventListComponent","i10.DaysInWeekPipe","i11.EqualDatePipe","i7.CalendarMonthComponent","i11","i12","i15","i16.CalendarMonthComponent","i17.CalendarSelectionDaysComponent","moment","i6.DayNumberBoxComponent","i7.EventButtonComponent","i8.DayEventListComponent","i9.DaysInWeekPipe","i7.CalendarSelectionDaysComponent","i5.DayNumberBoxComponent","i6.EventButtonComponent","i7.FromToTimePipe","i1.CalendarListItemComponent","i5.CalendarListContainerComponent","i6.CalendarWeekComponent","i8.CalendarHeaderComponent","i9.CalendarSelectionDaysComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuEY;AAAZ,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS;AACT,IAAA,SAAA,CAAA,SAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACV,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA;MACY,iBAAiB,CAAA;AAO1B,IAAA,IAAI,UAAU,GAAA;AACV,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC;AACnC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC;AAC9C,QAAA,OAAO,IAAI;;AAElB;;MCvEY,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAYqB,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAQ;AAEzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAsB,EAAE,CAAC;AAE/D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAe,OAAO,CAAC;AACxD,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;AAC1D,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAQ,EAAE,CAAC;AAC5C,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AA8pBpC;IA5pBG,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;AAG/B,IAAA,IAAI,cAAc,GAAA;QACd,OAAO,IAAI,CAAC,eAAe;;AAE/B,IAAA,IAAI,aAAa,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;;AAE1C,IAAA,IAAI,SAAS,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;AAE3C,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC;;AAEjD,IAAA,IAAI,IAAI,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;;AAEtC,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;;AAEzC,IAAA,eAAe,CAAC,KAAW,EAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC;AACtD,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;AAE7B,IAAA,OAAO,CAAC,IAAW,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE/B,IAAA,WAAW,CAAC,SAA4B,EAAE,UAAkB,EAAE,SAAiB,EAAA;AAC3E,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;AAC1E,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC;;AAE5C,IAAA,WAAW,CAAC,QAA2B,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;;IAEvC,WAAW,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;;IAE1C,QAAQ,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;;IAEvC,SAAS,GAAA;QACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,OAAO,CACR,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAChD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,MAAM,CAC7C;;AAEL,IAAA,WAAW,CAAC,QAAa,EAAE,MAAW,EAAE,SAA4B,EAAA;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK;AAC1C,QAAA,IAAI,IAAI,GAAG,CAAC,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC;;aACrC;AACH,YAAA,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC;;;AAGjD,IAAA,QAAQ,CAAC,SAA4B,EAAE,QAAc,EAAE,OAAe,CAAC,EAAA;AACnE,QAAA,IAAI,QAAQ,IAAI,IAAI,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK;AACjC,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC,CAAC;;aAC9D;AACH,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;;;;;;;AAOpC,IAAA,OAAO,CAAC,IAAkB,EAAE,QAAc,EAAE,SAAkB,EAAA;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;YAC3C;;AACG,aAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7D;;QAEJ,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;AACtD,QAAA,SAAS,GAAG,SAAS,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,CAAC,QAAQ,EAAE;YACX,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAI,OAAO,KAAK,OAAO,EAAE;oBACrB;AACI,wBAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;wBACzD,IAAI,CAAC,QAAQ,EAAE;AACX,4BAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC;;;;AAGrE,qBAAA,IAAI,OAAO,KAAK,aAAa,EAAE;AAClC,oBAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;qBACpB;AACH,oBAAA,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC;;;;QAIpC,IAAI,QAAQ,EAAE;AACV,YAAA,IACI,QAAQ,CAAC,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK;AAClE,gBAAA,QAAQ,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAClE;AACE,gBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;;AAE1C,YAAA,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CAC7E;;AAEL,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC;;AAE5E,IAAA,QAAQ,CAAC,IAA8B,EAAE,SAAS,GAAG,CAAC,EAAA;QAClD,MAAM,GAAG,GAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,QAAA,GAAG,CAAC,OAAO,CACP,CACI,OAMG,KACH;AACA,YAAA,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE;AACtB,gBAAA,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG;gBACxB,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;AACjF,oBAAA,EAAE,CAAC,OAAO,GAAG,GAAG;;;AAGxB,YAAA,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;AAEpC,SAAC,CACJ;;IAEL,SAAS,CAAC,aAAoC,EAAE,cAA8B,EAAA;AAC1E,QAAA,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS;AAC/C,QAAA,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO;AAC3C,QAAA,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9F,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAChC,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AAC5C,YAAA,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;YAC5C,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;YACxE,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;YACxE,IAAI,oBAAoB,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;AAC1D,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AACxC,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACxC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;gBAC/D,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC;AAC/D,gBAAA,IAAI,QAAQ,GAAG,QAAQ,EAAE;AACrB,oBAAA,OAAO,CAAC;;AAEZ,gBAAA,IAAI,QAAQ,GAAG,QAAQ,EAAE;oBACrB,OAAO,CAAC,CAAC;;AAEb,gBAAA,OAAO,CAAC;;YAEZ;AACI,gBAAA,OAAO,CAAC;;AAEhB,SAAC,CAAC;AACF,QAAA,OAAO,aAAa;;AAExB,IAAA,cAAc,CACV,IAAW,EACX,UAAiC,EACjC,cAA8B,EAC9B,UAAkB,EAAA;QAElB,MAAM,IAAI,GAA6B,EAAE;QACzC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAI;YAC3B,IAAI,OAAO,GAAG,CAAC;AACf,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACzB,gBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE;AACvC,gBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACrB,oBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;;qBACpB,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,QAAQ,EAAE;AAC7C,oBAAA,OAAO,EAAE;oBACT;;AAEJ,gBAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;AACvD,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;;AAG3C,gBAAA,MAAM,OAAO,GAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;AACnC,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACvD,gBAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACvF,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7D,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACvE,gBAAA,IAAI,IAAI,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE;AAC3D,oBAAA,OAAO,CAAC,OAAO,GAAG,CAAC;AACnB,oBAAA,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACvE,oBAAA,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,UAAU,GAAG,cAAc;AACrE,oBAAA,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,UAAU,IAAI,EAAE;AACnE,oBAAA,OAAO,CAAC,MAAM;AACV,wBAAA,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,UAAU;4BAClE,YAAY;AACZ,4BAAA,cAAc;AAClB,oBAAA,OAAO,CAAC,KAAK,GAAG,KAAK;AACrB,oBAAA,OAAO,CAAC,aAAa,GAAG,IAAI;AAC5B,oBAAA,OAAO,CAAC,eAAe,GAAG,IAAI;AAC9B,oBAAA,OAAO,CAAC,UAAU,GAAG,IAAI;AACzB,oBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI;oBACvB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI;AACtC,oBAAA,OAAO,CAAC,KAAK;AACT,wBAAA,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC;AAC7B,4BAAA,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC;AAChC,4BAAA,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;AAC3B,4BAAA,KAAK,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC;AAClC,oBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC;AAC/C,oBAAA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACvB,oBAAA,OAAO,EAAE;;qBACN;oBACH,IAAI,kBAAkB,GAAG,CAAC;oBAC1B,IAAI,oBAAoB,GAAG,CAAC;oBAC5B,MAAM,SAAS,GACX,SAAS,CAAC,aAAa,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAClD,wBAAA,SAAS,CAAC,cAAc,CAAC,gBAAgB,EAAE,KAAK,CAAC;oBACrD,IAAI,SAAS,EAAE;wBACX,kBAAkB,GAAG,CAAC;AACtB,wBAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACZ,4BAAA,OAAO,CAAC,OAAO,GAAG,CAAC;AACnB,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK;;6BAClB;AACH,4BAAA,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AACtE,4BAAA,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;4BAC1E,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC;4BAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC;4BAC1D,IAAI,OAAO,GAAG,IAAI;4BAClB,IAAI,CAAC,UAAU,EAAE;gCACb,OAAO,GAAG,kBAAkB;;iCACzB;AACH,gCAAA,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;;AAEvB,4BAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACnE,4BAAA,OAAO,CAAC,UAAU,GAAG,UAAU;AAC/B,4BAAA,OAAO,CAAC,QAAQ,GAAG,QAAQ;4BAC3B,OAAO,CAAC,QAAQ,GAAG,CAAC,UAAU,IAAI,CAAC,QAAQ;AAC3C,4BAAA,OAAO,CAAC,KAAK,GAAG,KAAK;;wBAEzB,IAAI,OAAO,CAAC,UAAU,IAAI,QAAQ,KAAK,CAAC,EAAE;AACtC,4BAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;AAC/C,gCAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI;gCACjC,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oCAC7B;;AAEJ,gCAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,gCAAA,MAAM,QAAQ,GAAG;AACb,oCAAA,GAAG,OAAO;oCACV,KAAK,EAAE,WAAW,CAAC,IAAI;AACvB,oCAAA,GAAG,EAAE,OAAO;AACZ,oCAAA,UAAU,EAAE,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI;oCAClD,SAAS,EAAE,KAAK,CAAC,aAAa;oCAC9B,OAAO,EAAE,KAAK,CAAC,WAAW;AAC1B,oCAAA,eAAe,EAAE,QAAQ,GAAG,oBAAoB,GAAG,CAAC,CAAC;AACrD,oCAAA,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;oCACzC,QAAQ,EACJ,IAAI,KAAK;0CACH,OAAO,CAAC;0CACR,IAAI,CAAC;AACA,6CAAA,SAAS,CAAC,WAAW,CAAC,IAAI;AAC1B,6CAAA,SAAS,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,CAAC;oCACrE,QAAQ,EACJ,IAAI,KAAK;0CACH,OAAO,CAAC;AACV,0CAAE,IAAI,CAAC,GAAG,CACJ,IAAI,CAAC;AACA,6CAAA,SAAS,CAAC,WAAW,CAAC,IAAI;AAC1B,6CAAA,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CACrC,IAAI,CAAC;AAChB,oCAAA,OAAO,EAAE,IAAI,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG;iCAC3C;AACD,gCAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,CAAC;AACvD,gCAAA,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAEpC,4BAAA,OAAO,EAAE;;;;AAIzB,aAAC,CAAC;AACF,YAAA,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;AACX,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAI;AACP,gBAAA,CAAC,CAAC,uBAAuB,GAAG,CAAC;AAC7B,gBAAA,OAAO,CAAC;AACZ,aAAC;AACA,iBAAA,GAAG,CAAC,CAAC,CAAC,KAAI;gBACP,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC;gBACrF,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC1C,oBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AACrD,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AACjD,oBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/D,oBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AAC3D,oBAAA,QACI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AAC5E,wBAAA,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;AAEvC,iBAAC,CAAC;AACF,gBAAA,CAAC,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM;gBACnC,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAChD,oBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AACrD,oBAAA,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;AAC/D,oBAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC;AAC3D,oBAAA,OAAO,SAAS,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AACtF,iBAAC,CAAC;gBACF,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAClF,gBAAA,CAAC,CAAC,uBAAuB,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AACjD,gBAAA,OAAO,CAAC;AACZ,aAAC,CAAC;AACV,SAAC,CAAC;AACF,QAAA,OAAO,IAAI;;IAEf,QAAQ,GAAA;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;QACrD,QAAQ,IAAI;AACR,YAAA,KAAK,aAAa;AAClB,YAAA,KAAK,OAAO;gBACR;AACI,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;oBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;AACxD,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;;gBAEzB;AACJ,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,KAAK;gBACN;oBACI,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;oBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;AACvD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;;gBAE1C;gBACA;AACJ,YAAA,KAAK,MAAM;gBACP;;;IAGZ,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAA;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK;AACvD,QAAA,MAAM,GAAG,GAAG,UAAU,GAAG,aAAa;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;;AAEpD,IAAA,QAAQ,CAAC,IAAY,EAAA;QACjB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;AACrD,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,YAAY;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;;IAE1B,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;;IAExB,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;AAEzB,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;AAChE,QAAA,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;;IAEtC,YAAY,GAAA;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;QACxC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;QACrD,QAAQ,IAAI;AACR,YAAA,KAAK,aAAa;AAClB,YAAA,KAAK,OAAO;gBACR;AACI,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;oBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC;AACxD,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;;gBAEzB;AACJ,YAAA,KAAK,MAAM;AACX,YAAA,KAAK,KAAK;gBACN;oBACI,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE;oBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC;AACvD,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;;gBAE1C;gBACA;AACJ,YAAA,KAAK,MAAM;gBACP;;;AAGZ,IAAA,SAAS,CAAC,QAAkB,EAAE,QAAA,GAAmB,CAAC,EAAA;AAC9C,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChE,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;YACd,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAC;;AAE3E,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;AACd,YAAA,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;QAE1F,IAAI,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC1G,IAAI,CAAC,uBAAuB,EAAE;YAC1B,uBAAuB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC;;AAE5E,QAAA,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAC;AACnD,QAAA,OAAO,uBAAuB;;AAElC,IAAA,qBAAqB,CAAC,uBAA0C,EAAA;QAC5D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAC7B,CAAC,CAAC,KACE,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,uBAAuB,CAAC,QAAQ,CAAC,IAAI;YACzD,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAClE;QACD,IAAI,CAAC,MAAM,EAAE;AACT,YAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAC;AAC3C,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC;;AAE7C,QAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;;AAE7C,IAAA,oBAAoB,CAAC,iBAAoC,EAAA;AACrD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;AAC9B,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAEvC,IAAA,SAAS,CAAC,KAAK,EAAA;QACX,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC/D,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAClE,IAAI,aAAa,GAAG,KAAK;AACzB,QAAA,IAAI,KAAK;AACT,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;AAChC,YAAA,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;AAE5D,QAAA,OAAO,MAAM,CAAC,aAAa,CAAC;;AAEhC,IAAA,UAAU,CAAC,OAAqB,EAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;QAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE;QAC5D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;QACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;QACtE,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;;IAErC,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAoB,cAAc,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;QACpD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;QAChC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE;;AAEzD,IAAA,YAAY,CAAC,IAAY,EAAE,QAAgB,EAAE,UAAkB,EAAA;AACnE,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACZ,YAAA,OAAO,CAAC;;QAEZ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE;AACnC,YAAA,OAAO,UAAU;;AAErB,QAAA,IAAI,QAAQ,GAAG,IAAI,GAAG,UAAU,EAAE;YAC9B,OAAO,UAAU,GAAG,QAAQ;;AAEhC,QAAA,OAAO,IAAI;;IAEP,cAAc,CAAC,IAAW,EAAE,SAA4B,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACjC,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAC1E;AACD,QAAA,IAAI,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE;AAC3G,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE;;AAE5B,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;;AAEzC,YAAA,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,IAAI,aAAa,GAAG,CAAC;AACrB,YAAA,IAAI,YAAY,GAAG,EAAE,EAAE;AACnB,gBAAA,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CACpC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAC1E;AACD,gBAAA,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACtB,aAAa,GAAG,CAAC;;qBACd;AACH,oBAAA,aAAa,EAAE;;;AAGvB,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,aAAa,GAAG,YAAY,CAAC;YAClF,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC;;AAEvC,QAAA,OAAO,OAAO;;IAEV,aAAa,CAAC,IAAW,EAAE,SAA4B,EAAA;AAC3D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACnC,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CACzC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAC1E;AACD,QAAA,IAAI,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,GAAG,SAAS,CAAC;AAClF,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE;;YAE5B,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG,OAAO;;AAExB,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,YAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAChF;AACD,YAAA,OAAO,GAAG,OAAO,CAAC,MAAM,CACpB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAC5F;;AAEL,QAAA,OAAO,OAAO;;IAEV,cAAc,CAAC,IAAW,EAAE,SAA4B,EAAA;AAC5D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;AAC7B,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AACtB,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAC5E;QACD,IAAI,OAAO,GAAU,SAAS,CAAC,IAAI,CAAC,KAAK,CACrC,aAAa,GAAG,SAAS,GAAG,CAAC,GAAG,aAAa,GAAG,SAAS,GAAG,CAAC,EAC7D,aAAa,CAChB;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE;;AAE5B,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gBAAA,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;;AAEzB,YAAA,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM;AAC/C,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxD,YAAA,IAAI,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM;AACvC,YAAA,IAAI,YAAY,GAAG,EAAE,EAAE;AACnB,gBAAA,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAClC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAC5E;AACD,gBAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;AACpB,oBAAA,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM;;;AAG3C,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,YAAY,EAAE,WAAW,CAAC;YAC9E,OAAO,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;;AAEvC,QAAA,OAAO,OAAO;;IAEV,aAAa,CAAC,IAAW,EAAE,SAA4B,EAAA;AAC3D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;AACxB,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAC5E;AACD,QAAA,MAAM,aAAa,GAAG,aAAa,GAAG,SAAS;QAC/C,IAAI,OAAO,GAAU,EAAE;AACvB,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;YACnB,OAAO,GAAG,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE;;aAC/E;AACH,YAAA,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,EAAE,aAAa,CAAC;;AAE5E,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,EAAE;;AAE5B,YAAA,IAAI,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,WAAW,EAAE;gBACd,WAAW,GAAG,QAAQ;;AAE1B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACxD,YAAA,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAClF;YACD,OAAO,GAAG,OAAO,CAAC,MAAM,CACpB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CACtF;;AAEL,QAAA,OAAO,OAAO;;AAEV,IAAA,oBAAoB,CAAC,IAAI,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QACpD,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC;;IAE9C,YAAY,CAAC,IAAI,EAAE,KAAK,EAAA;QAC5B,MAAM,IAAI,GAAU,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QACpD,MAAM,YAAY,GAAS,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC;QACrE,MAAM,UAAU,GAAS,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC;AAC1D,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,WAAW,GAAG,CAAC;QACnB,IAAI,UAAU,GAAG,CAAC;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACzB,YAAA,MAAM,kBAAkB,GAAS,IAAI,IAAI,CAAC,YAAY,CAAC;AACvD,YAAA,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;YACxE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAiC,IAAI,CAAC,OAAO,CACjE,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,CAAC,CACJ;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACd,YAAA,UAAU,EAAE;YACZ,IAAI,SAAS,IAAI,UAAU,GAAG,WAAW,GAAG,CAAC,EAAE;AAC3C,gBAAA,WAAW,EAAE;;;;;;;AAOrB,QAAA,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAE;AAC5C,QAAA,YAAY,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;AAChC,QAAA,YAAY,CAAC,QAAQ,GAAG,QAAQ;AAChC,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI;AACxB,QAAA,YAAY,CAAC,UAAU,GAAG,WAAW;;AAErC,QAAA,OAAO,YAAY;;AAEf,IAAA,OAAO,CACX,IAAU,EACV,UAAe,EACf,KAAU,EACV,UAAgB,EAChB,YAAkB,EAClB,QAAkB,EAClB,CAAS,EAAA;AAET,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC;QACtD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;QAC7C,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC;QAC3D,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;AAC/D,QAAA,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;AAChF,QAAA,MAAM,GAAG,GAAQ;AACb,YAAA,KAAK,EAAE,CAAC;YACR,IAAI;YACJ,SAAS;YACT,MAAM,EAAE,SAAS,CAAC,IAAI;YACtB,UAAU;AACV,YAAA,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YACvC,OAAO;YACP,SAAS;YACT,YAAY;YACZ,cAAc;YACd,YAAY;YACZ,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,SAAS,EAAE,aAAa,CAAC,SAAS;AAClC,YAAA,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;AACpC,YAAA,KAAK,EAAE,EAAE;YACT,aAAa;YACb,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,YAAA,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChB,YAAA,gBAAgB,EAAE,KAAK;AACvB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,iBAAiB,EAAE;SACtB;AACD,QAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE;;8GA/qBpB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCTY,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA;IACA,SAAS,CAAC,IAAW,EAAE,UAAkB,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;;8GAHhD,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACgBK,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAPxD,IAAA,WAAA,GAAA;;AAec,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;QACnB,IAAO,CAAA,OAAA,GAAG,SAAS;QAC1B,IAAM,CAAA,MAAA,GAAG,EAAE;QACc,IAAY,CAAA,YAAA,GAAG,KAAK;QACnC,IAAS,CAAA,SAAA,GAAG,KAAK;AAoCpD;IAlC4B,OAAO,GAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;IAEP,SAAS,GAAA;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;IAET,SAAS,GAAA;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;IAEb,OAAO,GAAA;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;;IAGhC,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,GAAG,SAAS;AACxD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,cAAc,GAAG,MAAM;AACzD,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO,GAAG,EAAE;;AAElD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO;QACzC,IAAI,WAAW,EAAE;AACb,YAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;;QAEhD,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY;;;IAG9C,mBAAmB,CAAC,CAAC,EAAE,GAAQ,EAAA;;QAE3B,kBAAkB,CAAC,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;8GAjDlB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,qtBCtBlC,25BAuBA,EAAA,MAAA,EAAA,CAAA,4pBAAA,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,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,25BAAA,EAAA,MAAA,EAAA,CAAA,4pBAAA,CAAA,EAAA;8BAGa,OAAO,EAAA,CAAA;sBAApC,WAAW;uBAAC,eAAe;gBACnB,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBAC4B,OAAO,EAAA,CAAA;sBAAnC,WAAW;uBAAC,cAAc;gBACL,MAAM,EAAA,CAAA;sBAA3B,WAAW;uBAAC,OAAO;gBAC2B,YAAY,EAAA,CAAA;sBAA1D,WAAW;uBAAC,gCAAgC;gBACb,SAAS,EAAA,CAAA;sBAAxC,WAAW;uBAAC,iBAAiB;gBAEL,OAAO,EAAA,CAAA;sBAA/B,YAAY;uBAAC,SAAS;gBAGI,SAAS,EAAA,CAAA;sBAAnC,YAAY;uBAAC,WAAW;gBAGE,SAAS,EAAA,CAAA;sBAAnC,YAAY;uBAAC,WAAW;gBAGF,OAAO,EAAA,CAAA;sBAA7B,YAAY;uBAAC,OAAO;;;AEhDnB,SAAU,YAAY,CAAC,KAAK,EAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD;;MCMa,aAAa,CAAA;AACtB,IAAA,WAAA,GAAA;AACA,IAAA,SAAS,CAAC,IAAc,EAAE,EAAY,EAAE,WAAoB,KAAK,EAAA;AAC7D,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC;AACvE,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC3E,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAClE,IAAI,QAAQ,EAAE;YACV,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;;QAGxB,OAAO,CAAA,EAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,OAAO,CAAG,EAAA,QAAQ,GAAG,KAAK,QAAQ,CAAA,CAAE,GAAG,EAAE,MAAM,EAAE,CAAC,MAAM,CACpG,CAAA,EAAA,EAAE,CAAC,SACP,CAAA,CAAA,EAAI,EAAE,CAAC,OAAO,CAAA,EAAG,QAAQ,GAAG,CAAA,EAAA,EAAK,MAAM,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE;;8GAZ3C,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACIK,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAPxD,IAAA,WAAA,GAAA;;QAkBgC,IAAM,CAAA,MAAA,GAAG,QAAQ;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAQ;AA6BlD;IA3BG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM;;;AAG5B,IAAA,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAA;AAC7B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAEhC,IAAA,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;;AAEhC,IAAA,cAAc,CAAC,OAAO,EAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;;AAEvB,IAAA,aAAa,CAAC,OAAY,EAAA;QAC9B,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,EAAE;YACf;;AAEJ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;;8GAzCjB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+cCXlC,qlHAiFA,EAAA,MAAA,EAAA,CAAA,yPAAA,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,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,IAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kCAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yCAAA,EAAA,QAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDtEa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,qlHAAA,EAAA,MAAA,EAAA,CAAA,yPAAA,CAAA,EAAA;8BAGR,KAAK,EAAA,CAAA;sBAAb;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBAC2B,MAAM,EAAA,CAAA;sBAAjC,WAAW;uBAAC,aAAa;gBAChB,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,UAAU,EAAA,CAAA;sBAAnB;;;AEfC,MAAO,4BAA6B,SAAQ,aAAa,CAAA;AAP/D,IAAA,WAAA,GAAA;;QAW8B,IAAI,CAAA,IAAA,GAAG,IAAI;AAKxC;IAJG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;;8GAPf,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,yOCVzC,mYAMA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDIa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAPxC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAGpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,yNAAA,CAAA,EAAA;8BAGR,IAAI,EAAA,CAAA;sBAAZ;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACyB,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;;;AEJtB,MAAO,8BAA+B,SAAQ,aAAa,CAAA;AAPjE,IAAA,WAAA,GAAA;;QAW8B,IAAI,CAAA,IAAA,GAAG,IAAI;AAKxC;IAJG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;;8GAPf,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,2OCV3C,mYAMA,EAAA,MAAA,EAAA,CAAA,wNAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDIa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAGtB,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,mYAAA,EAAA,MAAA,EAAA,CAAA,wNAAA,CAAA,EAAA;8BAGR,IAAI,EAAA,CAAA;sBAAZ;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACyB,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW;;;MENf,aAAa,CAAA;AACtB,IAAA,WAAA,GAAA;IACA,SAAS,CAAC,IAAiC,EAAE,cAA8B,EAAA;AACvE,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,QAAQ,GAAa,KAAK,CAAC,cAAc;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC;AACtD,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;AACnF,QAAA,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAA,EAAI,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;8GAP9D,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACgBK,MAAO,oBAAqB,SAAQ,aAAa,CAAA;AAPvD,IAAA,WAAA,GAAA;;QAuBa,IAAO,CAAA,OAAA,GAAG,KAAK;AAGd,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAW;QAC3B,IAAO,CAAA,OAAA,GAAG,CAAC;QAChB,IAAI,CAAA,IAAA,GAAG,IAAI;AAE5B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AA0BjD;IAxBG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB;;AAEpD,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,aAA+B,CAAC,cAAc,EAAE;YAC9D,IAAI,CAAC,QAAQ,CAAC,aAA+B,CAAC,QAAQ,GAAG,CAAC,CAAC;;;AAGpE,IAAA,mBAAmB,CAAC,MAAM,EAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEvC,IAAA,aAAa,CAAC,OAAO,EAAA;AACjB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE;YACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC3C,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;YACF;;QAEJ,OAAO,CAAC,IAAI,EAAE;;8GAjDT,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGlB,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B/B,+oGAuFA,EAAA,MAAA,EAAA,CAAA,ycAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDhEa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAGV,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,+oGAAA,EAAA,MAAA,EAAA,CAAA,ycAAA,CAAA,EAAA;8BAIjB,qBAAqB,EAAA,CAAA;sBADpB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAG5C,gBAAgB,EAAA,CAAA;sBADf,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAI7C,eAAe,EAAA,CAAA;sBADd,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAGJ,QAAQ,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC9B,cAAc,EAAA,CAAA;sBAAtB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,iBAAiB,EAAA,CAAA;sBAA1B;gBAC6B,OAAO,EAAA,CAAA;sBAApC,WAAW;uBAAC,eAAe;gBACH,IAAI,EAAA,CAAA;sBAA5B,WAAW;uBAAC,UAAU;;;AEnCrB,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAPxD,IAAA,WAAA,GAAA;;QAea,IAAO,CAAA,OAAA,GAAG,KAAK;AAEd,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;AAQlD;IANG,cAAc,CAAC,OAAO,EAAE,QAAS,EAAA;QAC7B,OAAO,CAAC,KAAK,EAAE;QACf,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,KAAK,EAAE;;;8GAjBf,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,4YCXlC,mwEAyDA,EAAA,MAAA,EAAA,CAAA,s5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FD9Ca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,mwEAAA,EAAA,MAAA,EAAA,CAAA,s5BAAA,CAAA,EAAA;8BAGR,GAAG,EAAA,CAAA;sBAAX;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;MEjBQ,aAAa,CAAA;AACtB,IAAA,WAAA,GAAA;IACA,SAAS,CAAC,KAAW,EAAE,WAAoC,EAAA;AACvD,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,EAAE;AACpD,YAAA,OAAO,KAAK;;QAEhB,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE;QACpE,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,WAAW,EAAE,QAAQ,EAAE;QAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,WAAW,EAAE,OAAO,EAAE;AAC3D,QAAA,OAAO,SAAS,IAAI,UAAU,IAAI,QAAQ;;8GATrC,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,WAAW;AACjB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACqBK,MAAO,sBAAuB,SAAQ,aAAa,CAAA;AAPzD,IAAA,WAAA,GAAA;;QAkBa,IAAU,CAAA,UAAA,GAAG,KAAK;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK;QACnB,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAM,CAAA,MAAA,GAAG,KAAK;QACd,IAAO,CAAA,OAAA,GAAG,KAAK;QACf,IAAO,CAAA,OAAA,GAAG,KAAK;AAId,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA+B;QAQrE,IAAU,CAAA,UAAA,GAAG,EAAE;QAOP,IAAiB,CAAA,iBAAA,GAAc,EAAE;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AA8KrD;AA5KG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,kBAAkB,GAAG,KAAK;QAC9B,MAAM,EACF,eAAe,EACf,UAAU,EACV,UAAU,EACV,IAAI,EACJ,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACd,GAAG,OAAO;AACX,QAAA,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;YACjD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;;AAE7D,QAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;;AAE1D,QAAA,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YACnC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC;;AAEjE,QAAA,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC;;AAE/E,QAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;YACvD,kBAAkB,GAAG,IAAI;;AAE7B,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,kBAAkB,GAAG,IAAI;;AAE7B,QAAA,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;AACjD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YACvC,kBAAkB,GAAG,IAAI;;AAE7B,QAAA,IACI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB,CAAC,WAAW;aAC3D,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAC3D;YACE,kBAAkB,GAAG,IAAI;;QAE7B,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;;IAIjC,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;AACvD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;AACtC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;;AAG7C,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;IAE5B,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAA;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd;;AAEJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;AAG5B,IAAA,mBAAmB,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;IAE7B,YAAY,CAAC,CAAC,EAAE,OAAO,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,EAAE;;IAElB,MAAM,CAAC,EAAE,EAAE,IAAiC,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE7B,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE3B,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/B,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/B,IAAA,YAAY,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;AAErB,IAAA,aAAa,CAAC,CAAC,EAAA;QACnB,CAAC,CAAC,eAAe,EAAE;QACnB,CAAC,CAAC,cAAc,EAAE;;AAEd,IAAA,cAAc,CAAC,GAAQ,EAAA;QAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,GAAG,CAAC;AACb,aAAA,CAAC;;;AAGF,IAAA,YAAY,CAAC,MAAe,EAAA;QAChC,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;aAC9B;YACH,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;aAC9B,EAAE,CAAC,CAAC;;;AAGL,IAAA,gBAAgB,CAAC,UAAkB,EAAE,QAAS,EAAE,WAAY,EAAA;QAChE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE;YAC1C,IAAI,CAAC,gBAAgB,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ;;aAC9C;YACH,IAAI,CAAC,gBAAgB,GAAG,WAAW,IAAI,IAAI,CAAC,WAAW;;;AAGvD,IAAA,cAAc,CAAC,eAAe,EAAA;AAClC,QAAA,IAAI,WAAW;AAEf,QAAA,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE;AAC1B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;YACvC,WAAW,GAAG,UAAU;;aACrB;YACH,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;;AAEtC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;AAC3D,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB;;AAEJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;AACpF,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;;;AAGzE,IAAA,iBAAiB,CAAC,aAAa,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB;;AAGJ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;;AAG1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAQ,EAAE;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;AACtF,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAG7B,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC5B,MAAM,GAAG,GAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;;AAE/B,SAAC,CAAC;;AAEF,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;8GAzN/B,sBAAsB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,+1BC1BnC,2uPA4KA,EAAA,MAAA,EAAA,CAAA,okEAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qUAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAjB,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkB,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDlJa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAGZ,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,2uPAAA,EAAA,MAAA,EAAA,CAAA,okEAAA,CAAA,EAAA;8BAGR,eAAe,EAAA,CAAA;sBAAvB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;AExBC,MAAO,8BAA+B,SAAQ,aAAa,CAAA;AA6B7D,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;AAzBD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAIpC;QACJ,IAAa,CAAA,aAAA,GAA6B,KAAK;QAY/C,IAAM,CAAA,MAAA,GAAa,EAAE;QAEb,IAAY,CAAA,YAAA,GAAG,KAAK;QAEpB,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1D,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;QAI1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAC9C,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,UAAU,KAAI;YACf,QAAQ,UAAU;AACd,gBAAA,KAAK,GAAG;AACR,gBAAA,KAAK,IAAI;AACL,oBAAA,OAAO,GAAG;AACd,gBAAA,KAAK,GAAG;AACJ,oBAAA,OAAO,GAAG;AACd,gBAAA;AACI,oBAAA,OAAO,GAAG;;SAErB,CAAC,CACL;QACD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QAEhE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;AACtD,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAGxE,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO;QAC7B,IAAI,SAAS,EAAE;YACX,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,YAAY,CAAC;;;IAG3E,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC5C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;;AAErD,IAAA,cAAc,CAAC,IAAY,EAAA;QACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;;IAGzC,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;;IAIrD,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;AAC7B,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;;IAIxE,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;;IAErC,cAAc,CAAC,GAAQ,EAAE,SAA4B,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;AACnE,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,EAAE,KAAK;AAC5C,YAAA,IAAI,CAAC,mBAAmB,GAAG,MAAM,EAAE,KAAK;;;AAIhD,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;AAC5B,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,QAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;AAC3B,QAAA,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,KAAK;;AAE1C,IAAA,YAAY,CAAC,GAAQ,EAAE,SAAS,EAAE,OAAO,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAEzB,QAAA,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,GAAG,CAAC;AACnE,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ;AAChC,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC;;AAE/C,IAAA,UAAU,CAAC,GAAQ,EAAE,SAAS,EAAE,OAAO,EAAA;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC;;AAEvC,IAAA,YAAY,CAAC,IAAY,EAAA;QAC7B,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,GAAG,CAAC,CAAE,CAAA,CAAC;;AAE7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;IAEd,iBAAiB,CACrB,SAA4B,EAC5B,GAAe,EAAA;QAEf,IAAI,QAAQ,GAAe,IAAI;QAC/B,IAAI,MAAM,GAAe,IAAI;QAC7B,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC/C,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE;gBAC9C,QAAQ,GAAG,GAAG;AACd,gBAAA,MAAM,GAAG,IAAI,CAAC,gBAAgB;;iBAC3B;AACH,gBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB;gBAChC,MAAM,GAAG,GAAG;;;aAEb,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AACrD,YAAA,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE;AAC9C,gBAAA,QAAQ,GAAG,IAAI,CAAC,gBAAgB;gBAChC,MAAM,GAAG,GAAG;;iBACT;gBACH,QAAQ,GAAG,GAAG;AACd,gBAAA,MAAM,GAAG,IAAI,CAAC,cAAc;;;AAGpC,QAAA,IAAI,QAAQ,IAAI,MAAM,EAAE;AACpB,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAC7E,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACV,gBAAA,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;;AAE7D,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;;;;gBAIlD,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;;;AAGjD,QAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;;IAGvB,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAA;QACzC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,IAAI,OAAO,EAAE;gBACT,OAAO,CAAC,KAAK,EAAE;;AAEnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,IAAI,CAAC,gBAAgB;gBAC/B,MAAM,EAAE,IAAI,CAAC,cAAc;gBAC3B;AACH,aAAA,CAAC;;;8GA/KD,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,EAT5B,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,UAAU,EAAE;AACf,aAAA;YACD;AACH,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1BL,m5JAsIA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAApB,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDzGa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAd1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAGrB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,UAAU,EAAE;AACf,yBAAA;wBACD;AACH,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,m5JAAA,EAAA,MAAA,EAAA,CAAA,mFAAA,CAAA,EAAA;wDAGR,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACS,WAAW,EAAA,CAAA;sBAApB;;;MEIQ,cAAc,CAAA;AAuCvB,IAAA,WAAA,GAAA;;QArCA,IAAkB,CAAA,kBAAA,GAAG,gBAAgB;;;QAKrC,IAAkB,CAAA,kBAAA,GAAG,gBAAgB;;QAGrC,IAAoB,CAAA,oBAAA,GAAG,kBAAkB;;QAGzC,IAAU,CAAA,UAAA,GAAG,EAAE;QACf,IAAY,CAAA,YAAA,GAAG,EAAE;QACjB,IAAY,CAAA,YAAA,GAAG,EAAE;;QAGjB,IAAoB,CAAA,oBAAA,GAAG,kBAAkB;;QAGzC,IAAoB,CAAA,oBAAA,GAAG,kBAAkB;;;QAKzC,IAAoB,CAAA,oBAAA,GAAG,kBAAkB;;QAGzC,IAAmB,CAAA,mBAAA,GAAG,iBAAiB;;QAGvC,IAAW,CAAA,WAAA,GAAG,QAAQ;;QAGtB,IAAmB,CAAA,mBAAA,GAAG,iBAAiB;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAG5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;;8GA1ClD,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAd,cAAc,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;AA6DK,MAAO,uBAAwB,SAAQ,aAAa,CAAA;AAkDtD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAxCF,IAAG,CAAA,GAAA,GAAG,IAAI;AAST,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAoC;AAClE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ;QAGhD,IAAY,CAAA,YAAA,GAAG,EAAE;QAIjB,IAAmB,CAAA,mBAAA,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE;QACvE,IAAa,CAAA,aAAA,GAA6B,KAAK;QAC/C,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QASf,IAAO,CAAA,OAAA,GAAG,IAAI;QACd,IAAM,CAAA,MAAA,GAAa,EAAE;QAErB,IAAiB,CAAA,iBAAA,GAAG,EAAE;QACtB,IAAW,CAAA,WAAA,GAAG,EAAE;QACR,IAAgB,CAAA,gBAAA,GAAG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAE1D,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAA0B,eAAe,CAAC;AACnE,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;QAI1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI;AACpC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAC9C,oBAAoB,EAAE,EACtB,GAAG,CAAC,CAAC,UAAU,KAAI;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,gBAAA,OAAO,GAAG;;YAEd,QAAQ,UAAU;AACd,gBAAA,KAAK,GAAG;AACR,gBAAA,KAAK,IAAI;AACL,oBAAA,OAAO,GAAG;AACd,gBAAA,KAAK,GAAG;AACJ,oBAAA,OAAO,GAAG;AACd,gBAAA;AACI,oBAAA,OAAO,GAAG;;SAErB,CAAC,CACL;AAED,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;;IAGrB,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QACzD,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACzB,YAAA,IAAI,CAAC,mBAA2B,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAG1F,IAAA,eAAe,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAuB;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACpD,IAAI,CAAC,oBAAoB,EAAE;;AAE/B,IAAA,gBAAgB,CAAC,CAAC,EAAA;QACd,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACZ;;AAEJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CACvB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,GAAG,EAClB,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CACxB;;AAEL,IAAA,kBAAkB,CAAC,CAAC,EAAA;QAChB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAClC,QAAA,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YACZ;;AAEJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CACvB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EACpB,IAAI,CAAC,SAAS,CAAC,GAAG,EAClB,IAAI,CAAC,SAAS,CAAC,IAAI,EACnB,GAAG,EACH,IAAI,CAAC,SAAS,CAAC,MAAM,CACxB;;AAGL,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO;AACzB,QAAA,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC;YAC1D,IAAI,OAAO,KAAK,IAAI,CAAC,mBAAmB,EAAE,SAAS,EAAE;AACjD,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;;;;AAIrD,IAAA,aAAa,CAAC,CAAC,EAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC;AACb,SAAA,CAAC;;IAEN,aAAa,CAAC,OAAO,EAAE,cAAc,EAAA;QACjC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC;;AAGJ,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACpB,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;;AAE5D,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE;AACrC,gBAAA,MAAM,EAAE;AACX,aAAA,CAAC;YACF;;QAEJ,OAAO,CAAC,IAAI,EAAE;;IAElB,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAA;QAC5C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;;AAErD,IAAA,cAAc,CAAC,IAAY,EAAA;QACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;;AAGzC,IAAA,gBAAgB,CAAC,CAAC,EAAA;QACd,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;gBACjC;;AAEJ,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YAEpB;;AAEJ,QAAA,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACrE,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,IAAI,QAAQ;;iBACf;gBACH,MAAM,GAAG,OAAO;;;AAGxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,uBAAuB,EAAE;QAElD,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC;;AAEjE,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB;;AAEJ,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;AAC5B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC5D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;;AAEjC,QAAA,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;AACb,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB;;AAEJ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC1C,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,UAAU,EAAE,CACpB;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI;AAClD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC;;IAEvC,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;;IAIrD,SAAS,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;AAC7B,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,OAAO,EAAE;AACvC,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;AACjC,aAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;YACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;;;IAIxE,OAAO,GAAA;AACH,QAAA,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAC1C,IAAI,CAAC,SAAS,EACd,KAAK,CAAC,QAAQ,EAAE,EAChB,KAAK,CAAC,UAAU,EAAE,EAClB,KAAK,CAAC,UAAU,EAAE,CACrB;AACD,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;YAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;;AAE1D,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;;AAGrC,IAAA,UAAU,CAAC,GAAQ,EAAE,OAAO,EAAE,MAAM,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG;AACjD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf;;QAEJ,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC;;AAGjD,IAAA,mBAAmB,CAAC,MAAM,EAAA;QACtB,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK;;aACzB;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS;;;IAGnC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAA;QACnB,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,OAAO,EAAE;;aACb;YACH,OAAO,CAAC,KAAK,EAAE;;AAEnB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;AACtB,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;IAEtC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAA;QAChB,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,OAAO,EAAE;;aACb;YACH,OAAO,CAAC,KAAK,EAAE;;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;;QAE3B,IAAI,CAAC,kBAAkB,EAAE;;IAE7B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAA;QACpB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;QAEhC,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,OAAO,EAAE;;aACb;YACH,OAAO,CAAC,KAAK,EAAE;;;IAGf,oBAAoB,GAAA;QACxB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9C,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAExC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;AACnD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;;aAC9C;YACH,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC;;;;;;;;;;;QAWvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAC1C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;;AAEhE,IAAA,wBAAwB,CAAC,IAAsB,EAAA;QACnD,IAAI,IAAI,EAAE;YACN,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAClD,YAAA,IAAI,CAAC,iBAAiB,GAAG,aAAa;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;YACtC;;AAEJ,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;AAC3B,QAAA,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;;AAEvB,IAAA,kBAAkB,CAAC,GAAW,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,GAAG,GAAG;;;IAGxC,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY;QAC1C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,eAAe,EAAE;YACvC,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC;;AAEvD,QAAA,OAAO,CAAC;;AAEJ,IAAA,iBAAiB,CAAC,IAAU,EAAA;AAChC,QAAA,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AACzB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,EAAE;QACxC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC;;IAGnC,kBAAkB,GAAA;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;AACnF,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;;AAEhD,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE9B,IAAA,YAAY,CAAC,IAAY,EAAA;QAC7B,MAAM,KAAK,GAAa,EAAE;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YACzB,KAAK,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,GAAG,CAAC,CAAE,CAAA,CAAC;;AAE7B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEd,IAAA,WAAW,CAAC,KAAK,EAAA;QACrB,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE;YACtB;;AAEJ,QAAA,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QAC/D,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QAClD,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;;AAEzF,IAAA,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,EAAA;;QAE7C,IAAI,UAAU,EAAE;AACZ,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;;AAE1B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGvB,IAAA,kBAAkB,CAAC,GAAQ,EAAE,OAAO,EAAE,MAAM,EAAA;QAChD,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,OAAO,EAAE;;QAEpB,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,EAAE;;AAEnB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACrB,YAAA,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YAChC;;AAEJ,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG;;aACtB;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG;;QAE/B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AACvG,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB;AAClC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,cAAc;AAC3C,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;QAE9B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AAClB,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;AACpC,gBAAA,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC;AAC/B,aAAA,CAAC;;;8GAnZD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EATrB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,QAAQ,EAAE;AACb,aAAA;YACD;AACH,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAyBU,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACb,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzHlC,2rUAgRA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,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,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,IAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qUAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,iDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FD9Ka,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAdnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAGd,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,eAAe;AACxB,4BAAA,QAAQ,EAAE;AACb,yBAAA;wBACD;AACH,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,2rUAAA,EAAA,MAAA,EAAA,CAAA,0KAAA,CAAA,EAAA;wDAGR,WAAW,EAAA,CAAA;sBAAnB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACyB,aAAa,EAAA,CAAA;sBAAtC,SAAS;uBAAC,aAAa;gBAC0B,mBAAmB,EAAA,CAAA;sBAApE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;AEhG9C,MAAO,kBAAmB,SAAQ,aAAa,CAAA;AAPrD,IAAA,WAAA,GAAA;;QAkBa,IAAU,CAAA,UAAA,GAAG,KAAK;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK;AAGlB,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAO;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA+B;QAOrE,IAAU,CAAA,UAAA,GAAG,EAAE;QAMP,IAAiB,CAAA,iBAAA,GAAc,EAAE;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AAwIrD;AAtIG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE;YACjE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,YAAY,CAAC;;QAE7D,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;;QAEzD,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;QAE7B,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;AACrD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;QAE7B,IAAI,OAAO,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE;AACjE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;;IAGjC,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;AACvD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;;AAE7C,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;IAE5B,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;;AAE5B,IAAA,mBAAmB,CAAC,MAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;IAE7B,YAAY,CAAC,CAAC,EAAE,OAAO,EAAA;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,EAAE;;IAElB,MAAM,CAAC,EAAE,EAAE,IAAiC,EAAA;AACxC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE7B,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE3B,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/B,IAAA,cAAc,CAAC,GAAQ,EAAA;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;;AAE/B,IAAA,YAAY,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;AAErB,IAAA,aAAa,CAAC,CAAC,EAAA;QACnB,CAAC,CAAC,eAAe,EAAE;QACnB,CAAC,CAAC,cAAc,EAAE;;AAEd,IAAA,cAAc,CAAC,GAAQ,EAAA;QAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAChB,gBAAA,IAAI,EAAEY,QAAM,CAAC,GAAG,CAAC,IAAI;AACxB,aAAA,CAAC;;;AAGF,IAAA,YAAY,CAAC,MAAe,EAAA;QAChC,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;aAC9B;YACH,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;aAC9B,EAAE,CAAC,CAAC;;;AAGL,IAAA,eAAe,CAAC,UAAkB,EAAA;QACtC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE;AAC1C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;;aAClC;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW;;;AAGxC,IAAA,cAAc,CAAC,eAAe,EAAA;AAClC,QAAA,IAAI,WAAW;AACf,QAAA,IAAI,eAAe;QACnB,IAAI,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,CAAC,EAAE;YACtC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,eAAe;YAC3D,WAAW,GAAG,UAAU;YACxB,eAAe,GAAG,cAAc;;aAC7B;YACH,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAClC,eAAe,GAAG,CAAC;;AAEvB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,eAAe,CAAC;AAC7E,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE;YACnB;;AAEJ,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACpF,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;;AAErE,IAAA,iBAAiB,CAAC,aAAa,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,YAAA,IAAI,CAAC,cAAc,GAAG,EAAE;YACxB;;AAEJ,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;;AAE1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,cAAc,GAAQ,EAAE;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC3C,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACpD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;AACtF,YAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE7B,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YAC5B,MAAM,GAAG,GAAU,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,YAAA,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;;AAE/B,SAAC,CAAC;;AAEF,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC5B,YAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC;AACxC,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;;8GA5K/B,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2uBCzB/B,guNA2JA,EAAA,MAAA,EAAA,CAAA,6/DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1B,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsB,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA7B,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA8B,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDlIa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAGR,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,guNAAA,EAAA,MAAA,EAAA,CAAA,6/DAAA,CAAA,EAAA;8BAGR,eAAe,EAAA,CAAA;sBAAvB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBACQ,mBAAmB,EAAA,CAAA;sBAA3B;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,YAAY,EAAA,CAAA;sBAArB;gBACS,SAAS,EAAA,CAAA;sBAAlB;;;AErCC,MAAO,uBAAwB,SAAQ,aAAa,CAAA;AAP1D,IAAA,WAAA,GAAA;;AAwBc,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAE;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAgB;AAC7C,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAIpC;AACM,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,YAAY,EAAE;QAEpC,IAAS,CAAA,SAAA,GAAG,EAAE;AAcjB;IAZG,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;;IAGpB,YAAY,CAAC,IAAI,EAAE,IAAkB,EAAA;QACjC,IAAI,CAAC,KAAK,EAAE;AACZ,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE9B,IAAA,aAAa,CAAC,KAAK,EAAA;AACf,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAEhC,IAAA,OAAO;8GAxCE,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,+rBCVpC,o2FAwEA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAApB,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,GAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,UAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,4DAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,IAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FD9Da,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAGb,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,o2FAAA,EAAA,MAAA,EAAA,CAAA,kWAAA,CAAA,EAAA;8BAGR,SAAS,EAAA,CAAA;sBAAjB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,OAAO,EAAA,CAAA;sBAAhB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBAKS,KAAK,EAAA,CAAA;sBAAd;;;ME3BQ,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA;AACA,IAAA,SAAS,CAAC,IAAiC,EAAA;AACvC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,QAAA,MAAM,YAAY,GAAa,KAAK,CAAC,cAAc;AACnD,QAAA,MAAM,UAAU,GAAa,KAAK,CAAC,YAAY;AAC/C,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;AAC3F,QAAA,MAAM,MAAM,GAAG,CAAA,EAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AACrF,QAAA,OAAO,CAAG,EAAA,QAAQ,CAAM,GAAA,EAAA,MAAM,EAAE;;8GAR3B,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACwBK,MAAO,qBAAsB,SAAQ,aAAa,CAAA;AAPxD,IAAA,WAAA,GAAA;;QAoBa,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAM,CAAA,MAAA,GAAG,KAAK;QACd,IAAO,CAAA,OAAA,GAAG,KAAK;QACf,IAAO,CAAA,OAAA,GAAG,KAAK;AACd,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAuB;AACnD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAuB;AACrD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAA+B;AAC3D,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAsC;AACpE,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAO;QAC5C,IAAc,CAAA,cAAA,GAAG,EAAE;QAKnB,IAAU,CAAA,UAAA,GAAG,EAAE;QACf,IAAY,CAAA,YAAA,GAAG,CAAC;QAMhB,IAAI,CAAA,IAAA,GAAG,IAAI;QACH,IAAiB,CAAA,iBAAA,GAAc,EAAE;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AAwKrD;AAtKG,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;QAC1B,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;;QAEzD,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE;YACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;QAE7B,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;;IAGjC,QAAQ,GAAA;QACJ,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAG,EAAA,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA,GAAA,CAAK,CAAC;AACnF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;;AAE3C,IAAA,aAAa,CAAC,EAAU,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAE7B,IAAA,cAAc,CAAC,IAAS,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACd;;;;AAIR,IAAA,mBAAmB,CAAC,MAAe,EAAA;QAC/B,IAAI,MAAM,EAAE;AACR,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;;aAC9B;YACH,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;aAC9B,EAAE,CAAC,CAAC;;;IAGb,aAAa,CAAC,CAAC,EAAE,GAAQ,EAAA;AACrB,QAAA,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE;QACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;;;AAG5B,IAAA,aAAa,CAAC,CAAC,EAAA;QACX,IAAI,CAAC,CAAC,aAAa,EAAE,SAAS,KAAK,iBAAiB,EAAE;YAClD,kBAAkB,CAAC,CAAC,CAAC;;;IAG7B,YAAY,CAAC,CAAC,EAAE,OAAO,EAAA;QACnB,kBAAkB,CAAC,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;;AAE9B,IAAA,UAAU,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;IAE3B,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACpB,YAAA,CAAC,CAAC,gBAAgB,GAAG,KAAK;AAC1B,YAAA,CAAC,CAAC,iBAAiB,GAAG,IAAI;AAC1B,YAAA,CAAC,CAAC,iBAAiB,GAAG,IAAI;AAC9B,SAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,GAAG,IAAI;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI;;AAEhD,IAAA,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAA;AACxC,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,IAAI;QAClD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,GAAG,IAAI;AAC3C,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AACjF,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;IAE7B,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAA;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE;YACvC;;QAEJ,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;YAC7B;;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;;AAEvE,IAAA,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAoC,IAAI,EAAA;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,kBAAkB,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,KAAK;;QAEhE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,gBAAgB,GAAG,IAAI;AAC3C,QAAA,GAAG,CAAC,gBAAgB,GAAG,KAAK;AAC5B,QAAA,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GAAG,GAAG;QACpD,IAAI,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC1D,YAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,EAAE;YACjF,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC;YAC/D,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACpC,YAAA,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AACjC,YAAA,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACtC,YAAA,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE;YACrF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC;YACxD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAClC,YAAA,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7B,YAAA,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AACzC,YAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI;AAC5B,YAAA,GAAG,CAAC,iBAAiB,GAAG,IAAI;AAC5B,YAAA,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,EAAE;;;AAGxC,IAAA,cAAc,CAAC,IAAU,EAAA;QAC7B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAGzB,IAAA,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAA;QACvC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;;;AAG7C,IAAA,YAAY,CAAC,OAAY,EAAA;AAC7B,QAAA,IAAI,OAAO,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;;aACjC;AACH,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE;;;AAG5B,IAAA,eAAe,CAAC,UAAkB,EAAA;QACtC,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE;AAC1C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;;aAClC;AACH,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW;;;AAGxC,IAAA,iBAAiB,CAAC,aAAa,EAAA;AACnC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;;AAE1C,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc,CAAC;QACjF,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,cAAc,GAA+B,EAAE;AACrD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC;AAC/F,QAAA,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEzB,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAI;YAChC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;AACzD,SAAC,CAAC;QACF,MAAM,KAAK,GAAG,EAAE;QAChB,IAAI,OAAO,GAAG,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,MAAK;YACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACpC,gBAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC/F,IAAI,QAAQ,EAAE;oBACV,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO;AACnC,oBAAA,OAAO,EAAE;;AAEjB,aAAC,CAAC;AACN,SAAC,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;8GA5MtB,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0yBC/BlC,05SAoMA,EAAA,MAAA,EAAA,CAAA,04FAAA,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,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,qUAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,kDAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,eAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,YAAA,EAAA,WAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA4B,qBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,cAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,WAAA,EAAA,SAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,WAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDrKa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,05SAAA,EAAA,MAAA,EAAA,CAAA,04FAAA,CAAA,EAAA;8BAGM,UAAU,EAAA,CAAA;sBAAhC,SAAS;uBAAC,UAAU;gBACI,WAAW,EAAA,CAAA;sBAAnC,SAAS;uBAAC,YAAY;gBACd,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,GAAG,EAAA,CAAA;sBAAX;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;AE3CC,MAAO,yBAA0B,SAAQ,aAAa,CAAA;8GAA/C,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,yBAAyB,yOCVtC,shBAYA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDFa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAPrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGhB,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,shBAAA,EAAA,MAAA,EAAA,CAAA,4IAAA,CAAA,EAAA;8BAGR,EAAE,EAAA,CAAA;sBAAV;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,EAAE,EAAA,CAAA;sBAAV;;;AEPC,MAAO,8BAA+B,SAAQ,aAAa,CAAA;AAPjE,IAAA,WAAA,GAAA;;AAac,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAI/C;IAHU,SAAS,CAAC,MAAc,EAAE,IAAyB,EAAA;QACtD,OAAO,IAAI,CAAC,EAAE;;8GART,8BAA8B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,8BAA8B,+TCV3C,6sBAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,aAAA,EAAA,aAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDLa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAP1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAGrB,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,6sBAAA,EAAA;8BAGR,IAAI,EAAA,CAAA;sBAAZ;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACS,aAAa,EAAA,CAAA;sBAAtB;;;AENC,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IAE7C,SAAS,CAAC,MAAc,EAAE,IAAyB,EAAA;QACtD,OAAO,IAAI,CAAC,EAAE;;8GAHT,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,0ICVlC,uIAGA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,yBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAGX,eAAA,EAAA,uBAAuB,CAAC,MAAM,cACnC,KAAK,EAAA,QAAA,EAAA,uIAAA,EAAA;8BAGR,UAAU,EAAA,CAAA;sBAAlB;;;AEiCC,MAAO,0BACT,SAAQ,uBAAgD,CAAA;AAf5D,IAAA,WAAA,GAAA;;AAsBc,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAuB;AACpD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAuB;AAClD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAA2B;AACzD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAA6B;QAElE,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAmBf,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAwB,EAAE,CAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC;AAC1C,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AA4L7C;IA1LG,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc;AAC7D,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,kBAAkB,EAAE;YACtC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB;;QAEnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa;QAC3D,KAAK,CAAC,QAAQ,EAAE;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,MAAM,CAAC,GAAQ,EAAE,mBAAmB,EAAE,OAAO,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC;;QAExB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;QAChE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAEnE,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAwB,KAAI;AACzF,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACzB,gBAAA,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1C,aAAA,CAAC;AACN,SAAC,CAAC;;;AAIN,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,OAAO;AAC1C,QAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;AACvD,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAE7B,QAAA,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,kBAAkB,EAAE;AACzB,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;;AAGjC,IAAA,qBAAqB,CAAC,SAA8B,EAAA;QAChD,IAAI,CAAC,2BAA2B,EAAE;;AAEtC,IAAA,UAAU,CAAC,GAAQ,EAAA;QACf,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;;AAE7C,IAAA,UAAU;AACV,IAAA,aAAa,CAAC,QAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC;;IAE/C,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAA;AAC5B,QAAA,MAAM,CAAC,YAAY,GAAG,CAAC;;IAG3B,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;;AAErC,IAAA,YAAY,CAAC,IAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;;AAEvC,IAAA,aAAa,CAAC,CAA+D,EAAA;AACzE,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;;IAExE,SAAS,GAAA;;AAEL,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;;IAGxC,SAAS,GAAA;AACL,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;;;AAIpC,IAAA,gBAAgB,CAAC,GAAQ,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,GAAG,EAAE;;AAEjC,IAAA,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAA;QAChC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE;AAChG,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG5B,IAAA,iBAAiB,CAAC,UAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACtB,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AACvB,YAAA,GAAG,KAAK;AACR,YAAA,EAAE,EAAE,KAAK,CAAC,EAAE;AACZ,YAAA,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACnF,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;SACjF,CAAC,CAAC,CACN;;AAGL,IAAA,KAAK,CAAC,KAAY,EAAE,EAAS,EAAE,KAAkC,EAAE,OAAe,EAAA;AAC9E,QAAA,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7F,IAAI,YAAY,EAAE;AACd,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACd,EAAE,GAAG,EAAE;;AAEX,QAAA,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;IAEnC,2BAA2B,GAAA;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU;AAC1D,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;YACxB;;QAEJ,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AAC5E,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU;AAE5B,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CACvG;;AAEL,QAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;;IAE1B,OAAO,GAAA;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE;QACtD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK;AAExC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACnC,GAAG,CAAC,CAAC,IAAI,KAAI;AACT,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,gBAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU;;AAEzD,YAAA,OAAO,CAAC;SACX,CAAC,CACL;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1D,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,KAAI;AACnB,YAAA,IAAI,IAAI,KAAK,aAAa,EAAE;AACxB,gBAAA,OAAO,EAAE,CAAC,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAA,EAAA,EAAK,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;;AAE7F,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SAC3E,CAAC,CACL;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa;QACxD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACvF,YAAA,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC;;AAErC,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc;;;;AAInC,SAAC,CAAC;;;;;;QAOF,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC/F,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAC3B,SAAS,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,KAAI;AAChD,YAAA,IAAI,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,SAAS;AAC5C,YAAA,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO;AAEvC,YAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AAClB,gBAAA,IAAI,YAAiB;AACrB,gBAAA,IAAI,WAAgB;AACpB,gBAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,aAAa,GAAG,IAAI,GAAG,YAAY;AAC7D,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,oBAAA,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC;oBAC1B,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,oBAAA,SAAS,GAAG,YAAY,CAAC,SAAS;oBAClC,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,EAAE;AAC1C,wBAAA,SAAS,GAAG,CAAA,EAAG,YAAY,CAAC,SAAS,CAAA;gBACjD,WAAW,CAAC,SAAS,CAAA,CAAE;;;;YAIvB,OAAO,EAAE,CAAC,CAAG,EAAA,SAAS,KAAK,IAAI,CAAA,CAAE,CAAC;SACrC,CAAC,CACL;;IAGG,kBAAkB,GAAA;;AAEtB,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;AAEzC,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,YAAY,GAAG,EAAE;;8GA7NjC,0BAA0B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EATxB,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,WAAW;AACpB,gBAAA,UAAU,EAAE,cAAc;gBAC1B,IAAI,EAAE,CAAC,UAAU;AACpB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzCL,ivRAkOA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnC,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,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,aAAA,EAAA,SAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjB,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,WAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,uBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,OAAA,EAAA,YAAA,EAAA,KAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDtLa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAdtC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uBAAuB,EAGhB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,WAAW;AACpB,4BAAA,UAAU,EAAE,cAAc;4BAC1B,IAAI,EAAE,CAAC,UAAU;AACpB;AACJ,qBAAA,EAAA,UAAA,EACW,KAAK,EAAA,QAAA,EAAA,ivRAAA,EAAA,MAAA,EAAA,CAAA,kHAAA,CAAA,EAAA;8BAMsB,OAAO,EAAA,CAAA;sBAA7C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC5B,cAAc,EAAA,CAAA;sBAAtB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;gBACS,WAAW,EAAA,CAAA;sBAApB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,QAAQ,EAAA,CAAA;sBAAjB;;;AEtBL,MAAM,UAAU,GAAG;IACf,0BAA0B;IAC1B,qBAAqB;IACrB,8BAA8B;IAC9B,yBAAyB;IACzB,qBAAqB;IACrB,sBAAsB;IACtB,kBAAkB;IAClB,uBAAuB;IACvB,qBAAqB;IACrB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,4BAA4B;IAC5B,8BAA8B;IAC9B,uBAAuB;IACvB;CACH;AACD,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;AAgBrF,MAAO,mBAAoB,SAAQ,UAAU,CAAA;;AAQ/C,IAAA,WAAA,GAAA;AACI,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAC3C,QAAA,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAEjE,QAAA,KAAK,CAAC,GAAG,EAAE,wBAAwB,EAAE,qBAAqB,CAAC;AARrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,GAAG,UAAU,CAAC;AAUzC,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;AACd,QAAA,IAAI,CAAC,wBAAwB,GAAG,wBAAwB;;8GAfnD,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,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,mBAAmB,iBAjC5B,0BAA0B;YAC1B,qBAAqB;YACrB,8BAA8B;YAC9B,yBAAyB;YACzB,qBAAqB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,uBAAuB;YACvB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,qBAAqB;YACrB,4BAA4B;YAC5B,8BAA8B;YAC9B,uBAAuB;YACvB,8BAA8B,EAEnB,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAIlF,YAAY;YACZ,WAAW;YACX,uBAAuB;YACvB,wBAAwB;YACxB,aAAa;YACb,UAAU;AACV,YAAA,eAAe,aA3BnB,0BAA0B;YAC1B,qBAAqB;YACrB,8BAA8B;YAC9B,yBAAyB;YACzB,qBAAqB;YACrB,sBAAsB;YACtB,kBAAkB;YAClB,uBAAuB;YACvB,qBAAqB;YACrB,qBAAqB;YACrB,oBAAoB;YACpB,qBAAqB;YACrB,4BAA4B;YAC5B,8BAA8B;YAC9B,uBAAuB;YACvB,8BAA8B,CAAA,EAAA,CAAA,CAAA;+GAkBrB,mBAAmB,EAAA,SAAA,EAHjB,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,EAAA,OAAA,EAAA,CATjD,YAAY;YACZ,WAAW;YACX,uBAAuB;YACvB,wBAAwB;YACxB,aAAa;YACb,UAAU;YACV,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAMV,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC3B,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX,uBAAuB;wBACvB,wBAAwB;wBACxB,aAAa;wBACb,UAAU;wBACV;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;oBACvC,SAAS,EAAE,CAAC,aAAa,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;AACrD,oBAAA,OAAO,EAAE,CAAC,GAAG,UAAU;AAC1B,iBAAA;;;ACnED;;AAEG;;;;"}
|