{"version":3,"file":"basic-month-table.vue2.mjs","sources":["../../../../../../../packages/components/date-picker-panel/src/date-picker-com/basic-month-table.vue"],"sourcesContent":["<template>\n  <table\n    role=\"grid\"\n    :aria-label=\"t('el.datepicker.monthTablePrompt')\"\n    :class=\"ns.b()\"\n    @click=\"handleMonthTableClick\"\n    @mousemove=\"handleMouseMove\"\n  >\n    <tbody ref=\"tbodyRef\">\n      <tr v-for=\"(row, key) in rows\" :key=\"key\">\n        <td\n          v-for=\"(cell, key_) in row\"\n          :key=\"key_\"\n          :ref=\"(el) => cell.isSelected && (currentCellRef = el as HTMLElement)\"\n          :class=\"getCellStyle(cell)\"\n          :aria-selected=\"!!cell.isSelected\"\n          :aria-label=\"t(`el.datepicker.month${+cell.text + 1}`)\"\n          :tabindex=\"cell.isSelected ? 0 : -1\"\n          @keydown.space.prevent.stop=\"handleMonthTableClick\"\n          @keydown.enter.prevent.stop=\"handleMonthTableClick\"\n        >\n          <el-date-picker-cell\n            :cell=\"{\n              ...cell,\n              renderText: t('el.datepicker.months.' + months[cell.text]),\n            }\"\n          />\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, nextTick, ref, watch } from 'vue'\nimport dayjs from 'dayjs'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport { castArray, hasClass } from '@element-plus/utils'\nimport { basicMonthTableProps } from '../props/basic-month-table'\nimport { datesInMonth, getValidDateOfMonth } from '../utils'\nimport ElDatePickerCell from './basic-cell-render'\n\nimport type { Dayjs } from 'dayjs'\n\ntype MonthCell = {\n  column: number\n  customClass: string | undefined\n  disabled: boolean\n  end: boolean\n  inRange: boolean\n  row: number\n  selected: Dayjs | undefined\n  isCurrent: boolean | undefined\n  isSelected: boolean\n  start: boolean\n  text: number\n  renderText: string | undefined\n  timestamp: number | undefined\n  date: Date | undefined\n  dayjs: Dayjs | undefined\n  type: 'normal' | 'today'\n}\n\nconst props = defineProps(basicMonthTableProps)\nconst emit = defineEmits(['changerange', 'pick', 'select'])\n\nconst ns = useNamespace('month-table')\n\nconst { t, lang } = useLocale()\nconst tbodyRef = ref<HTMLElement>()\nconst currentCellRef = ref<HTMLElement>()\nconst months = ref(\n  props.date\n    .locale('en')\n    .localeData()\n    .monthsShort()\n    .map((_) => _.toLowerCase())\n)\nconst tableRows = ref<MonthCell[][]>([[], [], []])\nconst lastRow = ref<number>()\nconst lastColumn = ref<number>()\nconst rows = computed<MonthCell[][]>(() => {\n  const rows = tableRows.value\n\n  const now = dayjs().locale(lang.value).startOf('month')\n\n  for (let i = 0; i < 3; i++) {\n    const row = rows[i]\n    for (let j = 0; j < 4; j++) {\n      const cell = (row[j] ||= {\n        row: i,\n        column: j,\n        type: 'normal',\n        inRange: false,\n        start: false,\n        end: false,\n        text: -1,\n        disabled: false,\n        isSelected: false,\n        customClass: undefined,\n        date: undefined,\n        dayjs: undefined,\n        isCurrent: undefined,\n        selected: undefined,\n        renderText: undefined,\n        timestamp: undefined,\n      })\n\n      cell.type = 'normal'\n\n      const index = i * 4 + j\n      const calTime = props.date.startOf('year').month(index)\n\n      const calEndDate =\n        props.rangeState.endDate ||\n        props.maxDate ||\n        (props.rangeState.selecting && props.minDate) ||\n        null\n\n      cell.inRange =\n        !!(\n          props.minDate &&\n          calTime.isSameOrAfter(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrBefore(calEndDate, 'month')\n        ) ||\n        !!(\n          props.minDate &&\n          calTime.isSameOrBefore(props.minDate, 'month') &&\n          calEndDate &&\n          calTime.isSameOrAfter(calEndDate, 'month')\n        )\n\n      if (props.minDate?.isSameOrAfter(calEndDate)) {\n        cell.start = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n        cell.end = props.minDate && calTime.isSame(props.minDate, 'month')\n      } else {\n        cell.start = !!(props.minDate && calTime.isSame(props.minDate, 'month'))\n        cell.end = !!(calEndDate && calTime.isSame(calEndDate, 'month'))\n      }\n\n      const isToday = now.isSame(calTime)\n      if (isToday) {\n        cell.type = 'today'\n      }\n\n      const cellDate = calTime.toDate()\n      cell.text = index\n      cell.disabled = props.disabledDate?.(cellDate) || false\n      cell.date = cellDate\n      cell.customClass = props.cellClassName?.(cellDate)\n      cell.dayjs = calTime\n      cell.timestamp = calTime.valueOf()\n      cell.isSelected = isSelectedCell(cell)\n    }\n  }\n  return rows\n})\n\nconst focus = () => {\n  currentCellRef.value?.focus()\n}\n\nconst getCellStyle = (cell: MonthCell) => {\n  const style = {} as any\n  const year = props.date.year()\n  const today = new Date()\n  const month = cell.text\n\n  style.disabled =\n    props.disabled ||\n    (props.disabledDate\n      ? datesInMonth(props.date, year, month, lang.value).every(\n          props.disabledDate\n        )\n      : false)\n  style.current = castArray(props.parsedValue).some(\n    (date) =>\n      dayjs.isDayjs(date) && date.year() === year && date.month() === month\n  )\n  style.today = today.getFullYear() === year && today.getMonth() === month\n\n  if (cell.customClass) {\n    style[cell.customClass] = true\n  }\n  if (cell.inRange) {\n    style['in-range'] = true\n\n    if (cell.start) {\n      style['start-date'] = true\n    }\n\n    if (cell.end) {\n      style['end-date'] = true\n    }\n  }\n  return style\n}\n\nconst isSelectedCell = (cell: MonthCell) => {\n  const year = props.date.year()\n  const month = cell.text\n  return castArray(props.date).some(\n    (date) => date.year() === year && date.month() === month\n  )\n}\n\nconst handleMouseMove = (event: MouseEvent) => {\n  if (!props.rangeState.selecting) return\n\n  let target = event.target as HTMLElement\n  if (target.tagName === 'SPAN') {\n    target = target.parentNode?.parentNode as HTMLElement\n  }\n  if (target.tagName === 'DIV') {\n    target = target.parentNode as HTMLElement\n  }\n  if (target.tagName !== 'TD') return\n\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const column = (target as HTMLTableCellElement).cellIndex\n  // can not select disabled date\n  if (rows.value[row][column].disabled) return\n\n  // only update rangeState when mouse moves to a new cell\n  // this avoids frequent Date object creation and improves performance\n  if (row !== lastRow.value || column !== lastColumn.value) {\n    lastRow.value = row\n    lastColumn.value = column\n    emit('changerange', {\n      selecting: true,\n      endDate: props.date.startOf('year').month(row * 4 + column),\n    })\n  }\n}\nconst handleMonthTableClick = (event: MouseEvent | KeyboardEvent) => {\n  if (props.disabled) return\n  const target = (event.target as HTMLElement)?.closest(\n    'td'\n  ) as HTMLTableCellElement\n  if (target?.tagName !== 'TD') return\n  if (hasClass(target, 'disabled')) return\n  const column = target.cellIndex\n  const row = (target.parentNode as HTMLTableRowElement).rowIndex\n  const month = row * 4 + column\n  const newDate = props.date.startOf('year').month(month)\n  if (props.selectionMode === 'months') {\n    if (event.type === 'keydown') {\n      emit('pick', castArray(props.parsedValue), false)\n      return\n    }\n    const newMonth = getValidDateOfMonth(\n      props.date,\n      props.date.year(),\n      month,\n      lang.value,\n      props.disabledDate\n    )\n    const newValue = hasClass(target, 'current')\n      ? castArray(props.parsedValue).filter(\n          (d) =>\n            // Filter out the selected month only when both year and month match\n            // This allows remove same months from different years #20019\n            d?.year() !== newMonth.year() || d?.month() !== newMonth.month()\n        )\n      : castArray(props.parsedValue).concat([dayjs(newMonth)])\n    emit('pick', newValue)\n  } else if (props.selectionMode === 'range') {\n    if (!props.rangeState.selecting) {\n      emit('pick', { minDate: newDate, maxDate: null })\n      emit('select', true)\n    } else {\n      if (props.minDate && newDate >= props.minDate) {\n        emit('pick', { minDate: props.minDate, maxDate: newDate })\n      } else {\n        emit('pick', { minDate: newDate, maxDate: props.minDate })\n      }\n      emit('select', false)\n    }\n  } else {\n    emit('pick', month)\n  }\n}\n\nwatch(\n  () => props.date,\n  async () => {\n    if (tbodyRef.value?.contains(document.activeElement)) {\n      await nextTick()\n      currentCellRef.value?.focus()\n    }\n  }\n)\n\ndefineExpose({\n  /**\n   * @description focus current cell\n   */\n  focus,\n})\n</script>\n"],"names":["rows","_createElementBlock","_unref","_normalizeClass","_createElementVNode","_openBlock","_Fragment","_renderList","_createVNode"],"mappings":";;;;;;;;;;;;;;;;;AA+DA,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,IAAA,GAAO,MAAA;AAEb,IAAA,MAAM,EAAA,GAAK,aAAa,aAAa,CAAA;AAErC,IAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAK,GAAI,SAAA,EAAU;AAC9B,IAAA,MAAM,WAAW,GAAA,EAAiB;AAClC,IAAA,MAAM,iBAAiB,GAAA,EAAiB;AACxC,IAAA,MAAM,MAAA,GAAS,GAAA;AAAA,MACb,KAAA,CAAM,IAAA,CACH,MAAA,CAAO,IAAI,EACX,UAAA,EAAW,CACX,WAAA,EAAY,CACZ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,aAAa;AAAA,KAC/B;AACA,IAAA,MAAM,SAAA,GAAY,IAAmB,CAAC,IAAI,EAAC,EAAG,EAAE,CAAC,CAAA;AACjD,IAAA,MAAM,UAAU,GAAA,EAAY;AAC5B,IAAA,MAAM,aAAa,GAAA,EAAY;AAC/B,IAAA,MAAM,IAAA,GAAO,SAAwB,MAAM;;AACzC,MAAA,MAAMA,QAAO,SAAA,CAAU,KAAA;AAEvB,MAAA,MAAM,GAAA,GAAM,OAAM,CAAE,MAAA,CAAO,KAAK,KAAK,CAAA,CAAE,QAAQ,OAAO,CAAA;AAEtD,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,QAAA,MAAM,GAAA,GAAMA,MAAK,CAAC,CAAA;AAClB,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,UAAA,MAAM,OAAQ,GAAA,CAAA,CAAA,CAAA,KAAA,GAAA,CAAA,CAAA,CAAA,GAAW;AAAA,YACvB,GAAA,EAAK,CAAA;AAAA,YACL,MAAA,EAAQ,CAAA;AAAA,YACR,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS,KAAA;AAAA,YACT,KAAA,EAAO,KAAA;AAAA,YACP,GAAA,EAAK,KAAA;AAAA,YACL,IAAA,EAAM,EAAA;AAAA,YACN,QAAA,EAAU,KAAA;AAAA,YACV,UAAA,EAAY,KAAA;AAAA,YACZ,WAAA,EAAa,MAAA;AAAA,YACb,IAAA,EAAM,MAAA;AAAA,YACN,KAAA,EAAO,MAAA;AAAA,YACP,SAAA,EAAW,MAAA;AAAA,YACX,QAAA,EAAU,MAAA;AAAA,YACV,UAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAW;AAAA,WACb,CAAA;AAEA,UAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AAEZ,UAAA,MAAM,KAAA,GAAQ,IAAI,CAAA,GAAI,CAAA;AACtB,UAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,QAAQ,MAAM,CAAA,CAAE,MAAM,KAAK,CAAA;AAEtD,UAAA,MAAM,UAAA,GACJ,KAAA,CAAM,UAAA,CAAW,OAAA,IACjB,KAAA,CAAM,WACL,KAAA,CAAM,UAAA,CAAW,SAAA,IAAa,KAAA,CAAM,OAAA,IACrC,IAAA;AAEF,UAAA,IAAA,CAAK,OAAA,GACH,CAAC,EACC,KAAA,CAAM,OAAA,IACN,OAAA,CAAQ,aAAA,CAAc,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA,IAC5C,UAAA,IACA,QAAQ,cAAA,CAAe,UAAA,EAAY,OAAO,CAAA,CAAA,IAE5C,CAAC,EACC,KAAA,CAAM,OAAA,IACN,QAAQ,cAAA,CAAe,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA,IAC7C,UAAA,IACA,OAAA,CAAQ,aAAA,CAAc,YAAY,OAAO,CAAA,CAAA;AAG7C,UAAA,IAAA,CAAI,EAAA,GAAA,KAAA,CAAM,OAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAe,aAAA,CAAc,UAAA,CAAA,EAAa;AAC5C,YAAA,IAAA,CAAK,QAAQ,CAAC,EAAE,cAAc,OAAA,CAAQ,MAAA,CAAO,YAAY,OAAO,CAAA,CAAA;AAChE,YAAA,IAAA,CAAK,MAAM,KAAA,CAAM,OAAA,IAAW,QAAQ,MAAA,CAAO,KAAA,CAAM,SAAS,OAAO,CAAA;AAAA,UACnE,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,EAAE,KAAA,CAAM,WAAW,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA,CAAA;AACtE,YAAA,IAAA,CAAK,MAAM,CAAC,EAAE,cAAc,OAAA,CAAQ,MAAA,CAAO,YAAY,OAAO,CAAA,CAAA;AAAA,UAChE;AAEA,UAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,CAAO,OAAO,CAAA;AAClC,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,IAAA,CAAK,IAAA,GAAO,OAAA;AAAA,UACd;AAEA,UAAA,MAAM,QAAA,GAAW,QAAQ,MAAA,EAAO;AAChC,UAAA,IAAA,CAAK,IAAA,GAAO,KAAA;AACZ,UAAA,IAAA,CAAK,QAAA,GAAA,CAAA,CAAW,EAAA,GAAA,KAAA,CAAM,YAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAqB,QAAA,CAAA,KAAa,KAAA;AAClD,UAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AACZ,UAAA,IAAA,CAAK,WAAA,GAAA,CAAc,EAAA,GAAA,KAAA,CAAM,aAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAsB,QAAA,CAAA;AACzC,UAAA,IAAA,CAAK,KAAA,GAAQ,OAAA;AACb,UAAA,IAAA,CAAK,SAAA,GAAY,QAAQ,OAAA,EAAQ;AACjC,UAAA,IAAA,CAAK,UAAA,GAAa,eAAe,IAAI,CAAA;AAAA,QACvC;AAAA,MACF;AACA,MAAA,OAAOA,KAAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,QAAQ,MAAM;;AAClB,MAAA,CAAA,EAAA,GAAA,cAAA,CAAe,UAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,KAAA,EAAA;AAAA,IACxB,CAAA;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAoB;AACxC,MAAA,MAAM,QAAQ,EAAC;AACf,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAA,EAAK;AAC7B,MAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,MAAA,MAAM,QAAQ,IAAA,CAAK,IAAA;AAEnB,MAAA,KAAA,CAAM,QAAA,GACJ,KAAA,CAAM,QAAA,KACL,KAAA,CAAM,YAAA,GACH,YAAA,CAAa,KAAA,CAAM,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA,CAAE,KAAA;AAAA,QAChD,KAAA,CAAM;AAAA,OACR,GACA,KAAA,CAAA;AACN,MAAA,KAAA,CAAM,OAAA,GAAU,SAAA,CAAU,KAAA,CAAM,WAAW,CAAA,CAAE,IAAA;AAAA,QAC3C,CAAC,IAAA,KACC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,IAAA,CAAK,IAAA,EAAK,KAAM,IAAA,IAAQ,IAAA,CAAK,KAAA,EAAM,KAAM;AAAA,OACpE;AACA,MAAA,KAAA,CAAM,QAAQ,KAAA,CAAM,WAAA,OAAkB,IAAA,IAAQ,KAAA,CAAM,UAAS,KAAM,KAAA;AAEnE,MAAA,IAAI,KAAK,WAAA,EAAa;AACpB,QAAA,KAAA,CAAM,IAAA,CAAK,WAAW,CAAA,GAAI,IAAA;AAAA,MAC5B;AACA,MAAA,IAAI,KAAK,OAAA,EAAS;AAChB,QAAA,KAAA,CAAM,UAAU,CAAA,GAAI,IAAA;AAEpB,QAAA,IAAI,KAAK,KAAA,EAAO;AACd,UAAA,KAAA,CAAM,YAAY,CAAA,GAAI,IAAA;AAAA,QACxB;AAEA,QAAA,IAAI,KAAK,GAAA,EAAK;AACZ,UAAA,KAAA,CAAM,UAAU,CAAA,GAAI,IAAA;AAAA,QACtB;AAAA,MACF;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,cAAA,GAAiB,CAAC,IAAA,KAAoB;AAC1C,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAA,EAAK;AAC7B,MAAA,MAAM,QAAQ,IAAA,CAAK,IAAA;AACnB,MAAA,OAAO,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA;AAAA,QAC3B,CAAC,SAAS,IAAA,CAAK,IAAA,OAAW,IAAA,IAAQ,IAAA,CAAK,OAAM,KAAM;AAAA,OACrD;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAsB;;AAC7C,MAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,SAAA,EAAW;AAEjC,MAAA,IAAI,SAAS,KAAA,CAAM,MAAA;AACnB,MAAA,IAAI,MAAA,CAAO,YAAY,MAAA,EAAQ;AAC7B,QAAA,MAAA,GAAA,CAAS,EAAA,GAAA,MAAA,CAAO,eAAP,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,UAAA;AAAA,MAC9B;AACA,MAAA,IAAI,MAAA,CAAO,YAAY,KAAA,EAAO;AAC5B,QAAA,MAAA,GAAS,MAAA,CAAO,UAAA;AAAA,MAClB;AACA,MAAA,IAAI,MAAA,CAAO,YAAY,IAAA,EAAM;AAE7B,MAAA,MAAM,GAAA,GAAO,OAAO,UAAA,CAAmC,QAAA;AACvD,MAAA,MAAM,SAAU,MAAA,CAAgC,SAAA;AAEhD,MAAA,IAAI,KAAK,KAAA,CAAM,GAAG,CAAA,CAAE,MAAM,EAAE,QAAA,EAAU;AAItC,MAAA,IAAI,GAAA,KAAQ,OAAA,CAAQ,KAAA,IAAS,MAAA,KAAW,WAAW,KAAA,EAAO;AACxD,QAAA,OAAA,CAAQ,KAAA,GAAQ,GAAA;AAChB,QAAA,UAAA,CAAW,KAAA,GAAQ,MAAA;AACnB,QAAA,IAAA,CAAK,aAAA,EAAe;AAAA,UAClB,SAAA,EAAW,IAAA;AAAA,UACX,OAAA,EAAS,MAAM,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA,CAAE,KAAA,CAAM,GAAA,GAAM,CAAA,GAAI,MAAM;AAAA,SAC3D,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AACA,IAAA,MAAM,qBAAA,GAAwB,CAAC,KAAA,KAAsC;;AACnE,MAAA,IAAI,MAAM,QAAA,EAAU;AACpB,MAAA,MAAM,MAAA,GAAA,CAAU,EAAA,GAAA,KAAA,CAAM,MAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8B,OAAA;AAAA,QAC5C;AAAA,OAAA;AAEF,MAAA,IAAA,CAAI,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAY,IAAA,EAAM;AAC9B,MAAA,IAAI,QAAA,CAAS,MAAA,EAAQ,UAAU,CAAA,EAAG;AAClC,MAAA,MAAM,SAAS,MAAA,CAAO,SAAA;AACtB,MAAA,MAAM,GAAA,GAAO,OAAO,UAAA,CAAmC,QAAA;AACvD,MAAA,MAAM,KAAA,GAAQ,MAAM,CAAA,GAAI,MAAA;AACxB,MAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,QAAQ,MAAM,CAAA,CAAE,MAAM,KAAK,CAAA;AACtD,MAAA,IAAI,KAAA,CAAM,kBAAkB,QAAA,EAAU;AACpC,QAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC5B,UAAA,IAAA,CAAK,MAAA,EAAQ,SAAA,CAAU,KAAA,CAAM,WAAW,GAAG,KAAK,CAAA;AAChD,UAAA;AAAA,QACF;AACA,QAAA,MAAM,QAAA,GAAW,mBAAA;AAAA,UACf,KAAA,CAAM,IAAA;AAAA,UACN,KAAA,CAAM,KAAK,IAAA,EAAK;AAAA,UAChB,KAAA;AAAA,UACA,IAAA,CAAK,KAAA;AAAA,UACL,KAAA,CAAM;AAAA,SACR;AACA,QAAA,MAAM,QAAA,GAAW,SAAS,MAAA,EAAQ,SAAS,IACvC,SAAA,CAAU,KAAA,CAAM,WAAW,CAAA,CAAE,MAAA;AAAA,UAC3B,CAAC,CAAA;AAAA;AAAA;AAAA,YAAA,CAGC,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,YAAW,QAAA,CAAS,IAAA,OAAU,CAAA,IAAA,IAAA,GAAA,MAAA,GAAA,CAAA,CAAG,KAAA,EAAA,MAAY,SAAS,KAAA;AAAM;AAAA,SACnE,GACA,SAAA,CAAU,KAAA,CAAM,WAAW,CAAA,CAAE,OAAO,CAAC,KAAA,CAAM,QAAQ,CAAC,CAAC,CAAA;AACzD,QAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAAA,MACvB,CAAA,MAAA,IAAW,KAAA,CAAM,aAAA,KAAkB,OAAA,EAAS;AAC1C,QAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,SAAA,EAAW;AAC/B,UAAA,IAAA,CAAK,QAAQ,EAAE,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,MAAM,CAAA;AAChD,UAAA,IAAA,CAAK,UAAU,IAAI,CAAA;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,IAAI,KAAA,CAAM,OAAA,IAAW,OAAA,IAAW,KAAA,CAAM,OAAA,EAAS;AAC7C,YAAA,IAAA,CAAK,QAAQ,EAAE,OAAA,EAAS,MAAM,OAAA,EAAS,OAAA,EAAS,SAAS,CAAA;AAAA,UAC3D,CAAA,MAAO;AACL,YAAA,IAAA,CAAK,QAAQ,EAAE,OAAA,EAAS,SAAS,OAAA,EAAS,KAAA,CAAM,SAAS,CAAA;AAAA,UAC3D;AACA,UAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,MACpB;AAAA,IACF,CAAA;AAEA,IAAA,KAAA;AAAA,MACE,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,YAAY;;AACV,QAAA,IAAA,CAAI,EAAA,GAAA,QAAA,CAAS,KAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,QAAA,CAAS,SAAS,aAAA,CAAA,EAAgB;AACpD,UAAA,MAAM,QAAA,EAAS;AACf,UAAA,CAAA,EAAA,GAAA,cAAA,CAAe,UAAf,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,KAAA,EAAA;AAAA,QACxB;AAAA,MACF;AAAA,KACF;AAEA,IAAA,QAAA,CAAa;AAAA;AAAA;AAAA;AAAA,MAIX;AAAA,KACD,CAAA;;0BA1SCC,kBAAA,CA6BQ,OAAA,EAAA;AAAA,QA5BN,IAAA,EAAK,MAAA;AAAA,QACJ,YAAA,EAAYC,KAAA,CAAA,CAAA,CAAA,CAAC,gCAAA,CAAA;AAAA,QACb,OAAKC,cAAA,CAAED,KAAA,CAAA,EAAA,CAAA,CAAG,GAAC,CAAA;AAAA,QACX,OAAA,EAAO,qBAAA;AAAA,QACP,WAAA,EAAW;AAAA;QAEZE,kBAAA;AAAA,UAqBQ,OAAA;AAAA,UAAA;AAAA,qBArBG,UAAA;AAAA,YAAJ,GAAA,EAAI;AAAA;;aACTC,SAAA,CAAA,IAAA,CAAA,EAAAJ,kBAAA;AAAA,cAmBKK,QAAA;AAAA,cAAA,IAAA;AAAA,cAAAC,UAAA,CAnBoB,IAAA,CAAA,KAAA,EAAI,CAAjB,KAAK,GAAA,KAAG;oCAApBN,kBAAA,CAmBK,IAAA,EAAA,EAnB2B,KAAQ,EAAA;AAAA,mBACtCI,SAAA,CAAA,IAAA,CAAA,EAAAJ,kBAAA;AAAA,oBAiBKK,QAAA;AAAA,oBAAA,IAAA;AAAA,oBAAAC,UAAA,CAhBoB,GAAA,EAAG,CAAlB,IAAA,EAAM,IAAA,KAAI;0CADpBN,kBAAA,CAiBK,IAAA,EAAA;AAAA,wBAfF,GAAA,EAAK,IAAA;AAAA;wBACL,KAAG,CAAG,EAAA,KAAO,IAAA,CAAK,UAAA,KAAe,eAAA,KAAA,GAAiB,EAAA,CAAA;AAAA,wBAClD,KAAA,EAAKE,cAAA,CAAE,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,wBACxB,eAAA,EAAa,CAAA,CAAI,IAAA,CAAK,UAAA;AAAA,wBACtB,YAAA,EAAYD,MAAA,CAAA,CAAA,CAAC,sBAAA,CAAwB,IAAA,CAAK,IAAA,GAAI,CAAA,CAAA,CAAA,CAAA;AAAA,wBAC9C,QAAA,EAAU,IAAA,CAAK,UAAA,GAAU,CAAA,GAAA,EAAA;AAAA,wBACzB,SAAA,EAAO;AAAA,iDAAqB,qBAAA,EAAqB,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA;AAAA,iDACrB,qBAAA,EAAqB,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA;AAAA;;wBAElDM,WAAA,CAKEN,KAAA,CAAA,gBAAA,CAAA,EAAA;AAAA,0BAJC,IAAA,EAAI;AAAA,+BAAqB,IAAA;AAAA,4BAAgC,UAAA,EAAAA,MAAA,CAAA,CAAA,CAAC,0BAA2B,MAAA,CAAA,KAAA,CAAO,IAAA,CAAK,IAAI,CAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;"}