@erpsquad/common 1.9.99 → 1.9.100
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.
- package/dist/chunks/{uom-field-wrapper-Ckop1JTE.esm.js → uom-field-wrapper-DT4aQVEz.esm.js} +3 -1
- package/dist/chunks/uom-field-wrapper-DT4aQVEz.esm.js.map +1 -0
- package/dist/chunks/{uom-field-wrapper-l8HA79k1.js → uom-field-wrapper-w7UsTsC3.js} +3 -1
- package/dist/chunks/uom-field-wrapper-w7UsTsC3.js.map +1 -0
- package/dist/components/index.esm.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/uom-field-wrapper-Ckop1JTE.esm.js.map +0 -1
- package/dist/chunks/uom-field-wrapper-l8HA79k1.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uom-field-wrapper-Ckop1JTE.esm.js","sources":["../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../src/components/form-control/form-builder/element-controller.tsx","../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/date-fns/esm/toDate/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/date-fns/esm/getMonth/index.js","../../node_modules/date-fns/esm/getYear/index.js","../../src/components/date-range-picker/date-range-picker.tsx","../../src/components/form-control/form-builder/form-builder-element/date-range-picker.tsx","../../src/components/form-control/form-builder/form-builder-element/date-time.tsx","../../src/components/form-control/form-builder/form-builder-element/dynamic-text-editor.tsx","../../src/components/form-control/form-builder/form-builder-element/custom-date-picker.tsx","../../src/components/form-control/form-parser/data.ts","../../node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../../node_modules/@mui/lab/Timeline/TimelineContext.js","../../node_modules/@mui/lab/Timeline/timelineClasses.js","../../node_modules/@mui/lab/internal/convertTimelinePositionToClass.js","../../node_modules/@mui/lab/Timeline/Timeline.js","../../node_modules/@mui/lab/TimelineContent/timelineContentClasses.js","../../node_modules/@mui/lab/TimelineContent/TimelineContent.js","../../node_modules/@mui/lab/TimelineOppositeContent/timelineOppositeContentClasses.js","../../node_modules/@mui/lab/TimelineItem/timelineItemClasses.js","../../node_modules/@mui/lab/TimelineItem/TimelineItem.js","../../node_modules/@mui/lab/TimelineSeparator/timelineSeparatorClasses.js","../../node_modules/@mui/lab/TimelineSeparator/TimelineSeparator.js","../../node_modules/@mui/lab/TimelineConnector/timelineConnectorClasses.js","../../node_modules/@mui/lab/TimelineConnector/TimelineConnector.js","../../node_modules/@mui/lab/TimelineDot/timelineDotClasses.js","../../node_modules/@mui/lab/TimelineDot/TimelineDot.js","../../src/components/activity-tag/activity-tag.tsx","../../src/components/activityLog/activity-log.tsx","../../src/components/ai-summary/chart/horizontal-bar-chart.tsx","../../src/components/ai-summary/chart/simple-bar-chart.tsx","../../src/components/ai-summary/chart/donut-chart.tsx","../../src/components/ai-summary/chart/grouped-bar-chart.tsx","../../src/components/ai-summary/ai-summary.tsx","../../src/components/quick-approval-modal/quick-approval-modal.tsx","../../src/components/approval-wrapper/approval-wrapper.tsx","../../src/components/board/columnHeader.tsx","../../src/components/board/board.tsx","../../src/components/calculation-summary/components/items-summary.tsx","../../src/components/calculation-summary/components/discount-summary.tsx","../../src/components/calculation-summary/components/subtotal-summary.tsx","../../src/components/calculation-summary/components/taxes-and-charges-summary.tsx","../../src/components/calculation-summary/components/total-summary.tsx","../../src/components/calculation-summary/calculation-summary.tsx","../../src/components/calendar/calendar.tsx","../../src/components/card-wrapper/card-wrapper.tsx","../../src/components/change-user-password-modal/change-user-password-modal.tsx","../../src/components/country-select/country-select.tsx","../../src/components/custom-toggle-switch/custom-toggle-switch.tsx","../../src/components/Dashboard/dashboard-card.tsx","../../src/components/Dashboard/dashboard-header.tsx","../../src/components/expandable-summary-wrapper/expandable-summary-wrapper.tsx","../../src/components/dynamic-layout-wrapper/dynamic-layout-wrapper.tsx","../../src/components/dynamic-modal.tsx","../../src/components/entity-view-wrapper/entity-view-wrapper.tsx","../../src/components/gantt/gantt.tsx","../../src/components/grid-fallback/grid-fallback.tsx","../../src/components/hr-line/hr-line.tsx","../../src/components/inventory-reports-title-bar/report-buttons/report-buttons.tsx","../../src/components/inventory-reports-title-bar/inventory-reports-title-bar.tsx","../../node_modules/@mui/material/Accordion/AccordionContext.js","../../node_modules/@mui/material/utils/useSlot.js","../../node_modules/@mui/material/Accordion/accordionClasses.js","../../node_modules/@mui/material/Accordion/Accordion.js","../../node_modules/@mui/material/AccordionSummary/accordionSummaryClasses.js","../../node_modules/@mui/material/AccordionSummary/AccordionSummary.js","../../node_modules/@mui/material/AccordionDetails/accordionDetailsClasses.js","../../node_modules/@mui/material/AccordionDetails/AccordionDetails.js","../../node_modules/@mui/icons-material/RadioButtonChecked.js","../../node_modules/tiny-warning/dist/tiny-warning.esm.js","../../node_modules/react-laag/dist/react-laag.esm.js","../../src/components/list/list.tsx","../../src/components/material-editable-table/components/inline-edit-fields.tsx","../../src/components/material-editable-table/material-editable-table.tsx","../../src/components/mulitline/multiline.tsx","../../src/components/multi-select/multi-select.tsx","../../src/components/protected-route.tsx","../../src/components/reports-title-bar/report-buttons/report-buttons.tsx","../../src/components/reports-title-bar/reports-title-bar.tsx","../../src/components/rfq-response/item-response-details.tsx","../../src/components/schedule-report/utils/constant.ts","../../src/components/schedule-report/validator.ts","../../src/components/schedule-report/utils/common.ts","../../src/components/schedule-report/schedule-report-modal.tsx","../../src/components/schedule-report/schedule-report.tsx","../../src/components/snackbar/snackbar.tsx","../../src/components/sub-header-doc/sub-header-doc.tsx","../../src/components/tab-bar-ui/tab-bar-ui.tsx","../../src/components/text-area/text-area.tsx","../../src/components/time-range-picker/time-range-picker.tsx","../../node_modules/@mui/material/LinearProgress/linearProgressClasses.js","../../node_modules/@mui/material/LinearProgress/LinearProgress.js","../../src/components/upload/file-confirmation.tsx","../../src/components/upload/upload.tsx","../../src/components/user-dropdown/user-dropdown.tsx","../../src/components/select/controller/chip-or-placeholder.tsx","../../src/components/select/controller/controller-select.tsx","../../src/components/label-value/label-value.tsx","../../src/components/listing/listing.tsx","../../src/components/filter/fields.ts","../../src/components/loaders/form-loader.tsx","../../src/components/loaders/page-loader.tsx","../../src/components/charts/areaLinerChart.tsx","../../src/components/charts/ChartLegends.tsx","../../src/components/charts/bar-chart/bar-chart.tsx","../../src/components/charts/barChart/barChart.tsx","../../src/components/charts/barLineChart/barLinechart.tsx","../../src/components/charts/donut-chart/donut-chart.tsx","../../src/components/charts/donutChart/DonutChart.tsx","../../src/components/charts/groupBarChart/GroupBarChart.tsx","../../src/components/charts/line-chart/line-chart.tsx","../../src/components/charts/line-chart/area-lineChart.tsx","../../src/components/charts/multiLineChart/multi-line-chart.tsx","../../src/components/grid/custom-grid-card/custom-grid-card.tsx","../../node_modules/@mui/material/Card/cardClasses.js","../../node_modules/@mui/material/Card/Card.js","../../node_modules/@mui/material/CardContent/cardContentClasses.js","../../node_modules/@mui/material/CardContent/CardContent.js","../../src/components/grid/grid-card/grid-card.tsx","../../src/components/grid/grid-wrapper/grid-wrapper.tsx","../../node_modules/@mui/icons-material/ArrowDropUp.js","../../node_modules/@mui/icons-material/ArrowDropDown.js","../../src/components/custom-forms/grid-view/grid-view.tsx","../../src/components/custom-forms/FORMS.tsx","../../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../../node_modules/@mui/material/Checkbox/checkboxClasses.js","../../node_modules/@mui/material/Checkbox/Checkbox.js","../../src/components/reports/dynamic-report/dynamic-rows.tsx","../../src/utils/text-measurement.ts","../../src/components/reports/dynamic-report/dynamic-report.tsx","../../src/hooks/useUomFieldUpdater.tsx","../../src/components/uom-field-wrapper/uom-field-wrapper.tsx"],"sourcesContent":["function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import { Controller, useFieldArray } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport AddIcon from \"@mui/icons-material/Add\";\n\nimport DynamicSelect from \"./form-builder-element/select\";\nimport DynamicInput from \"./form-builder-element/text\";\n\nexport const ElementController = (props: any) => {\n const { fields: abjMember, append } = useFieldArray({\n control: props.control,\n name: \"abjMember\",\n });\n\n const addAdjMember = (type: string, elementName: string) => {\n switch (type) {\n case \"input\":\n append({ type: \"input\", appendAfter: elementName });\n break;\n case \"select\":\n append({ type: \"select\", appendAfter: elementName });\n break;\n\n default:\n break;\n }\n };\n\n return (\n <>\n <Controller\n control={props.control}\n name={props.name}\n defaultValue={props.defaultValue || \"\"}\n render={({ field }) => {\n if (\n Object.keys(props.field1).length &&\n Object.keys(props.field1) !== Object.keys(field)\n ) {\n props.updateField({ ...field });\n }\n return props.children;\n }}\n />\n <CloseIcon\n style={{ fontSize: \"15px\", cursor: \"pointer\" }}\n onClick={() => addAdjMember(\"input\", props.name)}\n />\n <AddIcon\n style={{ fontSize: \"15px\", cursor: \"pointer\" }}\n onClick={() => addAdjMember(\"select\", props.name)}\n />\n {abjMember.map((field: any) => {\n if (field.appendAfter === props.name) {\n return (\n <>\n {field.type === \"input\" && (\n <DynamicInput\n placeholder=\"Enter value\"\n label=\"Message\"\n formControl={props.control}\n name=\"message\"\n fieldArrayName=\"abjMember\"\n />\n )}\n {field.type === \"select\" && (\n <DynamicSelect\n placeholder=\"Select value\"\n label=\"Is True\"\n options={[\n { value: \"option1\", label: \"Option 1\" },\n { value: \"option2\", label: \"Option 2\" },\n ]}\n formControl={props.control}\n name=\"is_true\"\n fieldArrayName=\"abjMember\"\n />\n )}\n </>\n );\n }\n })}\n </>\n );\n};\n\nElementController.propTypes = {\n name: PropTypes.string.isRequired,\n defaultValue: PropTypes.string,\n field1: PropTypes.object,\n children: PropTypes.node.isRequired,\n updateField: PropTypes.func.isRequired,\n control: PropTypes.object.isRequired,\n};\n\nexport default ElementController;\n","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import React, { useState } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport \"./date-range-picker.scss\";\n\nimport { getMonth, getYear } from \"date-fns\";\nimport CalenderIcon from \"../../assets/view-modal/calendar-icon\";\nimport { KeyboardArrowLeft, KeyboardArrowRight } from \"@mui/icons-material\";\nimport { Box } from \"@mui/material\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\ninterface CustomDatePickerInputProps {\n value: string;\n onClick: () => void;\n placeholderText: string; // Define placeholderText prop\n width?: number; // Make width prop optional\n}\n\nconst months: string[] = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nconst CustomDatePickerInput: React.FC<CustomDatePickerInputProps> = ({\n value,\n onClick,\n placeholderText,\n isRtl\n}) => (\n \n <div className=\"calender-container\">\n <input\n type=\"text\"\n value={value}\n onClick={onClick}\n placeholder={placeholderText}\n className=\"open-selected-calender\"\n />\n <div className={isRtl?\"icon-box_rtl\":\"icon-box\"}>\n <CalenderIcon />\n </div>\n </div>\n);\n\ninterface CustomHeaderProps {\n date: Date;\n decreaseMonth: () => void;\n increaseMonth: () => void;\n decreaseYear: () => void;\n increaseYear: () => void;\n prevMonthButtonDisabled: boolean;\n nextMonthButtonDisabled: boolean;\n prevYearButtonDisabled: boolean;\n nextYearButtonDisabled: boolean;\n}\n\nfunction DateRangePicker(props: any) {\n const {\n start = null,\n end = null,\n startYear = 1980,\n onDateRangeChange,\n ...rest\n } = props;\n const [startDate, setStartDate] = useState(start);\n const [endDate, setEndDate] = useState(end);\n const {isRtl}=useLanguage()\n const onChange = (dates: any) => {\n const [start, end] = dates;\n setStartDate(start);\n setEndDate(end);\n onDateRangeChange(dates);\n };\n\n const years: any = [];\n const currentYear = getYear(new Date());\n for (let i = startYear; i <= currentYear + 10; i++) {\n years.push(i);\n }\n\n return (\n <Box className=\"DateRangePicker\">\n <DatePicker\n dateFormat=\"dd-MM-yyyy\"\n {...rest}\n customInput={\n <CustomDatePickerInput\n placeholderText=\"DD-MM-YYYY\"\n value=\"\"\n isRtl={isRtl}\n onClick={() => { }}\n />\n }\n startDate={startDate}\n endDate={endDate}\n onChange={onChange}\n selectsRange={true}\n isClearable={true}\n renderCustomHeader={({\n date,\n decreaseMonth,\n increaseMonth,\n decreaseYear,\n increaseYear,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n prevYearButtonDisabled,\n nextYearButtonDisabled,\n }: CustomHeaderProps) => (\n <div className=\"date-picker-container\">\n <div className=\"d-flex\">\n <button\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n className=\"btn-transparent\"\n type=\"button\"\n >\n <KeyboardArrowLeft />\n </button>\n <div className=\"month-view\">{months[getMonth(date)]}</div>\n <button\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n className=\"btn-transparent\"\n type=\"button\"\n >\n <KeyboardArrowRight />\n </button>\n </div>\n <div className=\"d-flex\">\n <button\n onClick={decreaseYear}\n disabled={prevYearButtonDisabled}\n className=\"btn-transparent\"\n type=\"button\"\n >\n <KeyboardArrowLeft />\n </button>\n <select\n className=\"select-year\"\n value={getYear(date)}\n onChange={(e) => {\n decreaseYear();\n setStartDate(new Date(+e.target.value, getMonth(date)));\n }}\n >\n {years.map((year: any) => (\n <option key={year} value={year}>\n {year}\n </option>\n ))}\n </select>\n <button\n onClick={increaseYear}\n disabled={nextYearButtonDisabled}\n className=\"btn-transparent\"\n type=\"button\"\n >\n <KeyboardArrowRight />\n </button>\n </div>\n </div>\n )}\n />\n </Box>\n );\n}\n\nexport { DateRangePicker };\nexport default DateRangePicker;\n","import React from 'react';\nimport { Controller } from 'react-hook-form';\nimport PropTypes from 'prop-types';\nimport DateRangePicker from '../../../date-range-picker/date-range-picker';\nimport dayjs from 'dayjs';\nimport Typography from '../../../typography/typography';\n\nconst DynamicDateRange = (props: any) => {\n const minDate = dayjs(props.min_date || null).isValid()\n ? dayjs(props.min_date).toDate()\n : null;\n\n const maxDate = dayjs(props.max_date || null).isValid()\n ? dayjs(props.max_date).toDate()\n : null;\n\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <>\n {props?.label &&\n <Typography\n type='s5'\n weight='medium'\n mb={0.5}\n color={props.error ? 'theme.error.600' : 'theme.secondary.800'}\n\n >\n {props.label}\n {props.required && <span className='requiredStar'>*</span>}\n </Typography>}\n\n <DateRangePicker\n start={field.value?.[0]}\n end={field.value?.[1]}\n startYear={props.startYear || 1980}\n onDateRangeChange={(dates: [Date | null, Date | null]) => {\n field.onChange(dates);\n if (props.onChange) {\n props.onChange(dates);\n }\n }}\n placeholderText={props.placeholder || \"MM-DD-YYYY - MM-DD-YYYY\"}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n required={props.formType === 'builder' ? false : props.required}\n minDate={minDate}\n maxDate={maxDate}\n disabled={props.disabled}\n error={Boolean(fieldState.error)}\n helperText={fieldState.error?.message}\n />\n </>\n )}\n />\n );\n};\n\nDynamicDateRange.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n startYear: PropTypes.number,\n disabled: PropTypes.bool,\n min_date: PropTypes.any,\n max_date: PropTypes.any,\n onChange: PropTypes.func\n};\n\nexport { DynamicDateRange };\nexport default DynamicDateRange;","import { Controller } from \"react-hook-form\";\nimport PropTypes from \"prop-types\";\n\nimport \"./element.scss\";\nimport DateTimePicker from \"../../../date-time-picker/date-time-picker\";\nimport dayjs from \"dayjs\";\n\nconst DynamicDateTime = (props: any) => {\n const {readOnly=false} = props\n return (\n <Controller\n control={props.formControl}\n name={`${props.fieldArrayName}.${props.name}`}\n render={({ field, fieldState }) => (\n <DateTimePicker\n {...field}\n dataPosition={props.position}\n dataName={`${props.fieldArrayName}.${props.name}`}\n label={props.label}\n placeholder={props.placeholder}\n required={props.formType === \"builder\" ? false : props.required}\n defaultValue={props.defaultValue}\n disableFutureDates={props.is_future_dates_allowed}\n disablePastDates={props.is_past_dates_allowed}\n helperText={fieldState.error?.message}\n error={Boolean(fieldState.error)}\n disabled={props.disabled}\n minDate={props.min_date}\n maxDate={props.max_date}\n minDateTime={props.min_date_time}\n maxDateTime={props.max_date_time}\n textFieldProps={readOnly? {readOnly: true} : {readOnly: false}}\n onChange={(newValue) => {\n if (props.min_date_time && newValue && dayjs(newValue).isSame(props.min_date_time, 'day')) {\n const selected = dayjs(newValue);\n // if time is earlier than min allowed time on same day, adjust it\n if (selected.isBefore(props.min_date_time)) {\n const adjusted = selected.hour(props.min_date_time.hour()).minute(props.min_date_time.minute());\n field.onChange(adjusted);\n return;\n }\n }\n \n field.onChange(newValue);\n }}\n />\n )}\n />\n );\n};\n\nDynamicDateTime.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func,\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n defaultValue: PropTypes.any,\n is_future_dates_allowed: PropTypes.bool,\n is_past_dates_allowed: PropTypes.bool,\n typeOfField: PropTypes.string,\n disable: PropTypes.bool,\n min_date: PropTypes.any,\n max_date: PropTypes.any,\n};\n\nexport { DynamicDateTime };\nexport default DynamicDateTime;\n","import React, { lazy } from 'react';\n\nimport { Control, Controller, FieldValues } from 'react-hook-form';\nimport Typography from '../../../typography/typography';\nconst CustomEditor = lazy(() => import('../../../editor/custom-editor'));\n\nimport \"./element.scss\";\n\nexport interface DynamicTextEditorProps {\n\tformControl: Control<FieldValues, any>;\n\tname: string;\n\tplaceholder: string;\n\tfieldArrayName: string;\n}\n\nconst DyanmicTextEditor: React.FC<DynamicTextEditorProps> = ({\n\tformControl,\n\tname,\n\tfieldArrayName,\n\tplaceholder\n}) => {\n\treturn (\n\t\t<>\n\t\t\t<Controller\n\t\t\t\tname={`${fieldArrayName}.${name}`}\n\t\t\t\tcontrol={formControl}\n\t\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div className='editor-container'>\n\t\t\t\t\t\t\t<CustomEditor\n\t\t\t\t\t\t\t\thandleEditorReady={() => {\n\t\t\t\t\t\t\t\t\tif (field.value) field.onChange(field.value);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tdata={field.value}\n\t\t\t\t\t\t\t\tonEditorChange={(content: string) => {\n\t\t\t\t\t\t\t\t\tfield.onChange(content);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tconfig={{\n\t\t\t\t\t\t\t\t\tplaceholder: placeholder\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{fieldState.error?.message && (\n\t\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t\t{fieldState.error?.message}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t/>\n\t\t</>\n\t);\n};\n\nexport default DyanmicTextEditor;\n","/* eslint-disable no-mixed-spaces-and-tabs */\nimport { Controller/* , useFormContext */ } from 'react-hook-form';\nimport PropTypes from 'prop-types';\nimport React, { useMemo } from 'react';\nimport dayjs from 'dayjs';\n\nimport './element.scss';\nimport DatePicker from '../../../date-picker/date-picker';\n\ninterface CustomDatePickerProps {\n formControl: any;\n name: string;\n label: string;\n fieldArrayName?: string;\n required?: boolean;\n position?: number;\n formType?: string;\n placeholder?: string;\n defaultValue?: any;\n is_future_dates_allowed?: boolean;\n is_past_dates_allowed?: boolean;\n typeOfField?: string;\n disabled?: boolean;\n min_date?: any;\n max_date?: any;\n views?: any;\n}\n\nconst CustomDatePicker = React.memo<CustomDatePickerProps>((props) => {\n // const formContext = useFormContext();\n\n // Memoize field name to prevent unnecessary recalculations\n const fieldName = useMemo(() =>\n `${props.fieldArrayName}.${props.name}`,\n [props.fieldArrayName, props.name]\n );\n\n // Memoize date calculations to prevent recalculation on every render\n const { minDate, maxDate } = useMemo(() => {\n const min = dayjs(props.min_date || null).isValid()\n ? dayjs(props.min_date)\n : null;\n\n const max = dayjs(props.max_date || null).isValid()\n ? dayjs(props.max_date)\n : null;\n\n return { minDate: min, maxDate: max };\n }, [props.min_date, props.max_date]);\n\n // Memoize required prop calculation\n const isRequired = useMemo(() =>\n props.formType === 'builder' ? false : props.required,\n [props.formType, props.required]\n );\n\n return (\n <Controller\n control={props.formControl}\n name={fieldName}\n render={({ field, fieldState }) => (\n <DatePicker\n {...field}\n {...props}\n dataPosition={props.position}\n dataName={fieldName}\n label={props.label}\n placeholder={props.placeholder}\n required={isRequired}\n defaultValue={props.defaultValue}\n disableFutureDates={props.is_future_dates_allowed}\n disablePastDates={props.is_past_dates_allowed}\n helperText={fieldState.error?.message}\n error={Boolean(fieldState.error)}\n disabled={props.disabled}\n minDate={minDate}\n maxDate={maxDate}\n />\n )}\n />\n );\n});\n\nCustomDatePicker.displayName = 'CustomDatePicker';\n\nCustomDatePicker.propTypes = {\n formControl: PropTypes.shape({\n register: PropTypes.func.isRequired,\n setValue: PropTypes.func\n }).isRequired,\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n fieldArrayName: PropTypes.string,\n required: PropTypes.bool,\n position: PropTypes.number,\n formType: PropTypes.string,\n placeholder: PropTypes.string,\n defaultValue: PropTypes.any,\n is_future_dates_allowed: PropTypes.bool,\n is_past_dates_allowed: PropTypes.bool,\n typeOfField: PropTypes.string,\n disabled: PropTypes.bool,\n min_date: PropTypes.any,\n max_date: PropTypes.any\n};\n\nexport { CustomDatePicker };\nexport default CustomDatePicker;\n","// const FormData = [\n// {\n// \"field_type\": \"text\",\n// \"label\": \"Name\",\n// \"placeholder\": \"Enter name\",\n// \"default_value\": \"\",\n// \"min_length\": 2,\n// \"max_length\": 30,\n// \"is_multiline\": false,\n// \"is_required\": true,\n// \"is_unique\": false,\n// \"id\": \"a796bc38-9f6d-418b-a48d-a562e64ed990\"\n// },\n// {\n// \"field_type\": \"email\",\n// \"label\": \"Email\",\n// \"placeholder\": \"Enter email address\",\n// \"default_value\": \"\",\n// \"is_required\": false,\n// \"is_unique\": false,\n// \"id\": \"a8e34772-beb0-443c-86f4-cd0f79e4e546\"\n// },\n// {\n// \"field_type\": \"select\",\n// \"label\": \"Gender\",\n// \"placeholder\": \"Choose Gender\",\n// \"default_value\": \"option1\",\n// \"options\": [\n// {\n// \"text\": \"Male\",\n// \"value\": \"1\"\n// },\n// {\n// \"text\": \"Female\",\n// \"value\": \"2\"\n// },\n// {\n// \"text\": \"No\",\n// \"value\": \"3\"\n// },\n// {\n// \"text\": \"Yes\",\n// \"value\": \"4\"\n// }\n// ],\n// \"is_multiselect\": true,\n// \"is_required\": true,\n// \"is_unique\": false,\n// \"id\": \"cb4b4423-c072-4e02-a22a-86fb1e0dba3e\"\n// },\n// ]\n\nconst FormData = [\n {\n field_type: \"text\",\n label: \"Name\",\n placeholder: \"Enter name\",\n default_value: \"\",\n min_length: 2,\n max_length: 30,\n is_multiline: false,\n is_required: true,\n is_unique: false,\n id: \"35356fb9-9007-495a-ba9e-925449cb3eb2\",\n },\n {\n field_type: \"email\",\n label: \"Email\",\n placeholder: \"Enter email address\",\n default_value: \"\",\n is_required: false,\n is_unique: false,\n id: \"4f4ac646-bf48-4ed3-ae5b-910071e19b59\",\n },\n {\n field_type: \"phone\",\n label: \"Phone\",\n placeholder: \"Enter phone number\",\n default_value: \"\",\n is_required: false,\n is_unique: false,\n id: \"500d8a78-e389-474d-831b-43190da011a6\",\n },\n {\n field_type: \"select\",\n label: \"Status\",\n placeholder: \"Choose option\",\n default_value: \"option1\",\n options: [\n {\n text: \"Active\",\n value: \"1\",\n },\n {\n text: \"Inactive\",\n value: \"0\",\n },\n ],\n is_multiselect: false,\n is_required: true,\n is_unique: false,\n id: \"fa44f220-0d82-4569-a28c-997de8e66d5a\",\n },\n {\n field_type: \"text\",\n label: \"Address\",\n placeholder: \"Enter address\",\n default_value: \"\",\n min_length: 2,\n max_length: 30,\n is_multiline: false,\n is_required: true,\n is_unique: false,\n id: \"d25f2f1b-811f-4c3d-a53b-5162f766ad47\",\n },\n {\n field_type: \"text\",\n label: \"Message\",\n placeholder: \"Enter message\",\n default_value: \"\",\n min_length: 2,\n max_length: 30,\n is_multiline: false,\n is_required: true,\n is_unique: false,\n id: \"22de0b1b-080a-4a0b-9d5f-e6f4916d8b07\",\n },\n];\n\nexport { FormData };\nexport default FormData;\n","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n return parseInt(value, 10) || 0;\n}\nconst styles = {\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflowing;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/base-ui/react-textarea-autosize/)\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/base-ui/react-textarea-autosize/components-api/#textarea-autosize)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n const {\n onChange,\n maxRows,\n minRows = 1,\n style,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(forwardedRef, inputRef);\n const heightRef = React.useRef(null);\n const shadowRef = React.useRef(null);\n const calculateTextareaStyles = React.useCallback(() => {\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n const computedStyle = containerWindow.getComputedStyle(input);\n\n // If input's width is shrunk and it's not visible, don't sync height.\n if (computedStyle.width === '0px') {\n return {\n outerHeightStyle: 0,\n overflowing: false\n };\n }\n const inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n const boxSizing = computedStyle.boxSizing;\n const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n // The height of the inner content\n const innerHeight = inputShallow.scrollHeight;\n\n // Measure height of a textarea with a single row\n inputShallow.value = 'x';\n const singleRowHeight = inputShallow.scrollHeight;\n\n // The height of the outer content\n let outerHeight = innerHeight;\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight);\n\n // Take the box sizing into account for applying this value as a style.\n const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n const overflowing = Math.abs(outerHeight - innerHeight) <= 1;\n return {\n outerHeightStyle,\n overflowing\n };\n }, [maxRows, minRows, props.placeholder]);\n const syncHeight = React.useCallback(() => {\n const textareaStyles = calculateTextareaStyles();\n if (isEmpty(textareaStyles)) {\n return;\n }\n const outerHeightStyle = textareaStyles.outerHeightStyle;\n const input = inputRef.current;\n if (heightRef.current !== outerHeightStyle) {\n heightRef.current = outerHeightStyle;\n input.style.height = `${outerHeightStyle}px`;\n }\n input.style.overflow = textareaStyles.overflowing ? 'hidden' : '';\n }, [calculateTextareaStyles]);\n useEnhancedEffect(() => {\n const handleResize = () => {\n syncHeight();\n };\n // Workaround a \"ResizeObserver loop completed with undelivered notifications\" error\n // in test.\n // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38\n // Also see https://github.com/mui/mui-x/issues/8733\n let rAF;\n const rAFHandleResize = () => {\n cancelAnimationFrame(rAF);\n rAF = requestAnimationFrame(() => {\n handleResize();\n });\n };\n const debounceHandleResize = debounce(handleResize);\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n containerWindow.addEventListener('resize', debounceHandleResize);\n let resizeObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(process.env.NODE_ENV === 'test' ? rAFHandleResize : handleResize);\n resizeObserver.observe(input);\n }\n return () => {\n debounceHandleResize.clear();\n cancelAnimationFrame(rAF);\n containerWindow.removeEventListener('resize', debounceHandleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [calculateTextareaStyles, syncHeight]);\n useEnhancedEffect(() => {\n syncHeight();\n });\n const handleChange = event => {\n if (!isControlled) {\n syncHeight();\n }\n if (onChange) {\n onChange(event);\n }\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef\n // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: minRows,\n style: style\n }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style, {\n paddingTop: 0,\n paddingBottom: 0\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Maximum number of rows to display.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport { TextareaAutosize };","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst TimelineContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n TimelineContext.displayName = 'TimelineContext';\n}\nexport default TimelineContext;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineUtilityClass(slot) {\n return generateUtilityClass('MuiTimeline', slot);\n}\nconst timelineClasses = generateUtilityClasses('MuiTimeline', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);\nexport default timelineClasses;","import { capitalize } from '@mui/material/utils';\nexport default function convertTimelinePositionToClass(position) {\n return position === 'alternate-reverse' ? 'positionAlternateReverse' : `position${capitalize(position)}`;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"position\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport TimelineContext from './TimelineContext';\nimport { getTimelineUtilityClass } from './timelineClasses';\nimport convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n position,\n classes\n } = ownerState;\n const slots = {\n root: ['root', position && convertTimelinePositionToClass(position)]\n };\n return composeClasses(slots, getTimelineUtilityClass, classes);\n};\nconst TimelineRoot = styled('ul', {\n name: 'MuiTimeline',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.position && styles[convertTimelinePositionToClass(ownerState.position)]];\n }\n})({\n display: 'flex',\n flexDirection: 'column',\n padding: '6px 16px',\n flexGrow: 1\n});\n\n/**\n *\n * Demos:\n *\n * - [Timeline](https://mui.com/material-ui/react-timeline/)\n *\n * API:\n *\n * - [Timeline API](https://mui.com/material-ui/api/timeline/)\n */\nconst Timeline = /*#__PURE__*/React.forwardRef(function Timeline(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimeline'\n });\n const {\n position = 'right',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n position\n });\n const classes = useUtilityClasses(ownerState);\n const contextValue = React.useMemo(() => ({\n position\n }), [position]);\n return /*#__PURE__*/_jsx(TimelineContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(TimelineRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Timeline.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * className applied to the root element.\n */\n className: PropTypes.string,\n /**\n * The position where the TimelineContent should appear relative to the time axis.\n * @default 'right'\n */\n position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\n\n/**\n *\n * Demos:\n *\n * - [Timeline](https://mui.com/components/timeline/)\n *\n * API:\n *\n * - [Timeline API](https://mui.com/api/timeline/)\n */\nexport default Timeline;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineContentUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineContent', slot);\n}\nconst timelineContentClasses = generateUtilityClasses('MuiTimelineContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);\nexport default timelineContentClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Typography from '@mui/material/Typography';\nimport TimelineContext from '../Timeline/TimelineContext';\nimport { getTimelineContentUtilityClass } from './timelineContentClasses';\nimport convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n position,\n classes\n } = ownerState;\n const slots = {\n root: ['root', convertTimelinePositionToClass(position)]\n };\n return composeClasses(slots, getTimelineContentUtilityClass, classes);\n};\nconst TimelineContentRoot = styled(Typography, {\n name: 'MuiTimelineContent',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];\n }\n})(({\n ownerState\n}) => _extends({\n flex: 1,\n padding: '6px 16px',\n textAlign: 'left'\n}, ownerState.position === 'left' && {\n textAlign: 'right'\n}));\nconst TimelineContent = /*#__PURE__*/React.forwardRef(function TimelineContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimelineContent'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n position: positionContext\n } = React.useContext(TimelineContext);\n const ownerState = _extends({}, props, {\n position: positionContext || 'right'\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TimelineContentRoot, _extends({\n component: \"div\",\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TimelineContent.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TimelineContent;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineOppositeContentUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineOppositeContent', slot);\n}\nconst timelineOppositeContentClasses = generateUtilityClasses('MuiTimelineOppositeContent', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse']);\nexport default timelineOppositeContentClasses;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineItemUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineItem', slot);\n}\nconst timelineItemClasses = generateUtilityClasses('MuiTimelineItem', ['root', 'positionLeft', 'positionRight', 'positionAlternate', 'positionAlternateReverse', 'missingOppositeContent']);\nexport default timelineItemClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"position\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { isMuiElement } from '@mui/material/utils';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { timelineContentClasses } from '../TimelineContent';\nimport { timelineOppositeContentClasses } from '../TimelineOppositeContent';\nimport TimelineContext from '../Timeline/TimelineContext';\nimport { getTimelineItemUtilityClass } from './timelineItemClasses';\nimport convertTimelinePositionToClass from '../internal/convertTimelinePositionToClass';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n position,\n classes,\n hasOppositeContent\n } = ownerState;\n const slots = {\n root: ['root', convertTimelinePositionToClass(position), !hasOppositeContent && 'missingOppositeContent']\n };\n return composeClasses(slots, getTimelineItemUtilityClass, classes);\n};\nconst TimelineItemRoot = styled('li', {\n name: 'MuiTimelineItem',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[convertTimelinePositionToClass(ownerState.position)]];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n display: 'flex',\n position: 'relative',\n minHeight: 70\n}, ownerState.position === 'left' && {\n flexDirection: 'row-reverse'\n}, (ownerState.position === 'alternate' || ownerState.position === 'alternate-reverse') && {\n [`&:nth-of-type(${ownerState.position === 'alternate' ? 'even' : 'odd'})`]: {\n flexDirection: 'row-reverse',\n [`& .${timelineContentClasses.root}`]: {\n textAlign: 'right'\n },\n [`& .${timelineOppositeContentClasses.root}`]: {\n textAlign: 'left'\n }\n }\n}, !ownerState.hasOppositeContent && {\n '&::before': {\n content: '\"\"',\n flex: 1,\n padding: '6px 16px'\n }\n}));\nconst TimelineItem = /*#__PURE__*/React.forwardRef(function TimelineItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimelineItem'\n });\n const {\n position: positionProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n position: positionContext\n } = React.useContext(TimelineContext);\n let hasOppositeContent = false;\n React.Children.forEach(props.children, child => {\n if (isMuiElement(child, ['TimelineOppositeContent'])) {\n hasOppositeContent = true;\n }\n });\n const ownerState = _extends({}, props, {\n position: positionProp || positionContext || 'right',\n hasOppositeContent\n });\n const classes = useUtilityClasses(ownerState);\n const contextValue = React.useMemo(() => ({\n position: ownerState.position\n }), [ownerState.position]);\n return /*#__PURE__*/_jsx(TimelineContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(TimelineItemRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TimelineItem.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The position where the timeline's item should appear.\n */\n position: PropTypes.oneOf(['alternate-reverse', 'alternate', 'left', 'right']),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TimelineItem;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineSeparatorUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineSeparator', slot);\n}\nconst timelineSeparatorClasses = generateUtilityClasses('MuiTimelineSeparator', ['root']);\nexport default timelineSeparatorClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { getTimelineSeparatorUtilityClass } from './timelineSeparatorClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTimelineSeparatorUtilityClass, classes);\n};\nconst TimelineSeparatorRoot = styled('div', {\n name: 'MuiTimelineSeparator',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'flex',\n flexDirection: 'column',\n flex: 0,\n alignItems: 'center'\n});\nconst TimelineSeparator = /*#__PURE__*/React.forwardRef(function TimelineSeparator(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimelineSeparator'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TimelineSeparatorRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TimelineSeparator.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TimelineSeparator;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineConnectorUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineConnector', slot);\n}\nconst timelineConnectorClasses = generateUtilityClasses('MuiTimelineConnector', ['root']);\nexport default timelineConnectorClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { getTimelineConnectorUtilityClass } from './timelineConnectorClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTimelineConnectorUtilityClass, classes);\n};\nconst TimelineConnectorRoot = styled('span', {\n name: 'MuiTimelineConnector',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => {\n return {\n width: 2,\n backgroundColor: (theme.vars || theme).palette.grey[400],\n flexGrow: 1\n };\n});\nconst TimelineConnector = /*#__PURE__*/React.forwardRef(function TimelineConnector(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimelineConnector'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TimelineConnectorRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TimelineConnector.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default TimelineConnector;","import generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nexport function getTimelineDotUtilityClass(slot) {\n return generateUtilityClass('MuiTimelineDot', slot);\n}\nconst timelineDotClasses = generateUtilityClasses('MuiTimelineDot', ['root', 'filled', 'outlined', 'filledGrey', 'outlinedGrey', 'filledPrimary', 'outlinedPrimary', 'filledSecondary', 'outlinedSecondary']);\nexport default timelineDotClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport { capitalize } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { getTimelineDotUtilityClass } from './timelineDotClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, color !== 'inherit' && `${variant}${capitalize(color)}`]\n };\n return composeClasses(slots, getTimelineDotUtilityClass, classes);\n};\nconst TimelineDotRoot = styled('span', {\n name: 'MuiTimelineDot',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.color !== 'inherit' && `${ownerState.variant}${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n display: 'flex',\n alignSelf: 'baseline',\n borderStyle: 'solid',\n borderWidth: 2,\n padding: 4,\n borderRadius: '50%',\n boxShadow: (theme.vars || theme).shadows[1],\n margin: '11.5px 0'\n}, ownerState.variant === 'filled' && _extends({\n borderColor: 'transparent'\n}, ownerState.color !== 'inherit' && _extends({}, ownerState.color === 'grey' ? {\n color: (theme.vars || theme).palette.grey[50],\n backgroundColor: (theme.vars || theme).palette.grey[400]\n} : {\n color: (theme.vars || theme).palette[ownerState.color].contrastText,\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n})), ownerState.variant === 'outlined' && _extends({\n boxShadow: 'none',\n backgroundColor: 'transparent'\n}, ownerState.color !== 'inherit' && _extends({}, ownerState.color === 'grey' ? {\n borderColor: (theme.vars || theme).palette.grey[400]\n} : {\n borderColor: (theme.vars || theme).palette[ownerState.color].main\n}))));\nconst TimelineDot = /*#__PURE__*/React.forwardRef(function TimelineDot(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTimelineDot'\n });\n const {\n className,\n color = 'grey',\n variant = 'filled'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TimelineDotRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? TimelineDot.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The dot can have a different colors.\n * @default 'grey'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'grey', 'info', 'inherit', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The dot can appear filled or outlined.\n * @default 'filled'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default TimelineDot;","import { useRef, useEffect } from \"react\";\nimport { TextField as MUITextField, styled } from \"@mui/material\";\nimport Timeline from \"@mui/lab/Timeline\";\nimport TimelineItem from \"@mui/lab/TimelineItem\";\nimport TimelineSeparator from \"@mui/lab/TimelineSeparator\";\nimport TimelineConnector from \"@mui/lab/TimelineConnector\";\nimport TimelineContent from \"@mui/lab/TimelineContent\";\nimport TimelineDot from \"@mui/lab/TimelineDot\";\nimport \"./activity-tag.scss\";\nimport images from \"../../assets/images\";\nimport Avatar from \"../avatar/avatar\";\nimport Accordion from \"../accordion/accordion\";\nimport { useAuth } from \"../../hooks/useAuth\";\nimport formatText from \"../../utils/format-text\";\nimport Typography from \"../typography/typography\";\n\nconst StyledTextField = styled(MUITextField)(({ theme: { palette } }) => ({\n width: \"100%\",\n \"& .MuiOutlinedInput-root\": {\n height: '2rem',\n \"& fieldset\": {\n borderColor: palette.theme?.secondary[300],\n borderWidth: 2\n },\n \"&:hover fieldset\": {\n borderColor: palette.theme?.secondary[300],\n },\n \"&.Mui-focused fieldset\": {\n // borderWidth: \"0.0625rem\",\n // borderStyle: \"solid\",\n borderColor: palette.theme?.primary[700],\n },\n \"&.Mui-error fieldset\": {\n borderColor: palette.theme?.error[600],\n },\n },\n}));\n\nexport const ActivityTag = (props: any) => {\n const {\n type,\n data,\n placeholder,\n error = false,\n textfield,\n textfieldTitle,\n onCommentSubmit,\n onChange,\n containerProps,\n accordion = true,\n ...rest\n } = props;\n const { user } = useAuth()\n\n const chatRef = useRef<HTMLDivElement>(null);\n\n const scrollToBottom = () => {\n if (chatRef.current) {\n chatRef.current.scrollTop = chatRef.current.scrollHeight;\n }\n };\n\n useEffect(() => {\n scrollToBottom();\n }, [data]);\n\n const formatDateTime = (dateTime: string) => {\n const currentDate = new Date();\n const commentDate = new Date(dateTime);\n const timeDifference = currentDate.getTime() - commentDate.getTime();\n const secondsDifference = Math.floor(timeDifference / 1000);\n const minutesDifference = Math.floor(secondsDifference / 60);\n const hoursDifference = Math.floor(minutesDifference / 60);\n\n if (secondsDifference < 60) {\n return `${secondsDifference} second${secondsDifference !== 1 ? 's' : ''\n } ago`;\n } else if (minutesDifference < 60) {\n return `${minutesDifference} minute${minutesDifference !== 1 ? 's' : ''\n } ago`;\n } else if (hoursDifference < 24) {\n return `${hoursDifference} hour${hoursDifference !== 1 ? 's' : ''} ago`;\n } else {\n // Format the date in the desired format\n const optionsDate: Intl.DateTimeFormatOptions = {\n day: 'numeric',\n month: 'short',\n year: 'numeric'\n };\n\n const optionsTime: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: 'numeric',\n hour12: false\n };\n\n const formattedDate = commentDate.toLocaleString('en-US', optionsDate);\n const formattedTime = commentDate.toLocaleString('en-US', optionsTime);\n\n return `${formattedDate} • ${formattedTime}`;\n }\n };\n\n const handleKeyPress = (event: any) => {\n if (event.key === 'Enter') {\n const commentValue = (event.target as HTMLInputElement).value;\n if (commentValue.trim() !== '') {\n onCommentSubmit(commentValue);\n scrollToBottom();\n }\n }\n };\n\n const timelineItems =\n type === \"activity\" ? (\n data?.map((item: any, index: number) => (\n <div className=\"Timeline--Activity\">\n <TimelineItem key={index}>\n <TimelineSeparator>\n <TimelineDot />\n {data.length - 1 !== index && <TimelineConnector />}\n </TimelineSeparator>\n <TimelineContent className=\"Timeline--Content\">\n <Typography type=\"s4\" color=\"theme.secondary.800\" className=\"Timeline--ActivityLogItem\">\n {item.message} · {formatDateTime(item.created_at)}\n </Typography>\n </TimelineContent>\n </TimelineItem>\n </div>\n ))\n ) : (\n <>\n <div className=\"Timeline--Chat\" ref={chatRef}>\n {data.map((item: any, index: number) => (\n <TimelineItem key={index}>\n <TimelineSeparator>\n <Avatar src={images.chat} size={17} />\n <TimelineConnector />\n </TimelineSeparator>\n <TimelineContent>\n {item.name} commented this · {formatDateTime(item.created_at)}\n <div className=\"Timeline--CommentWrap\">\n <p className=\"Timeline--Comment\">{item.message}</p>\n </div>\n </TimelineContent>\n </TimelineItem>\n ))}\n </div>\n </>\n );\n\n // const avatarStyle = {\n // borderRadius: '0.5rem',\n // padding: '0.875rem 1.28125rem',\n // textAlign: 'center',\n // backgroundColor: `${randomColor}.200`,\n // color: `${randomColor}.1000`\n // };\n\n return (\n // <Box position='relative'>\n <div className=\"ActivityContainer\" {...containerProps}>\n <Timeline className=\"Timeline\">\n {accordion ? \n <Accordion title='Activities' accordionProps={{ defaultExpanded: true }}>\n {timelineItems}\n </Accordion> : \n <div className=\"Timeline--ActivityBox\">\n {timelineItems}\n </div>\n }\n {textfield && (\n <div className=\"Timeline--CommentBox\">\n {textfieldTitle}\n <div className=\"Timeline--CommentText\">\n <Avatar size={32} alt={formatText(user?.full_name)} className=\"avatar-class\" />\n <StyledTextField\n error={error}\n placeholder={placeholder}\n className=\"textfield\"\n onKeyDown={handleKeyPress}\n onChange={onChange}\n {...rest}\n />\n </div>\n </div>\n )}\n </Timeline>\n </div>\n // </Box>\n );\n};\n\nexport default ActivityTag;\n","import React from 'react';\n\nimport { Box } from '@mui/material';\nimport Timeline from '@mui/lab/Timeline';\nimport TimelineItem from '@mui/lab/TimelineItem';\nimport TimelineSeparator from '@mui/lab/TimelineSeparator';\nimport TimelineConnector from '@mui/lab/TimelineConnector';\nimport TimelineContent from '@mui/lab/TimelineContent';\nimport TimelineDot from '@mui/lab/TimelineDot';\nimport './activity-log.scss';\nimport Typography from '../typography/typography';\nimport dayjs from 'dayjs';\nimport formatText from '../../utils/format-text';\nimport { useTranslation } from 'react-i18next';\n\nexport const ActivityTag = (props: any) => {\n\tconst { t } = useTranslation();\n\tconst { data } = props;\n\n\tconst formatDateTime = (date: Date): string => {\n\t\tconst formattedDate = dayjs(date).format('DD MMM, YYYY');\n\t\tconst formattedTime = dayjs(date).format('HH:mm');\n\t\treturn `${formattedDate} • ${formattedTime}`;\n\t};\n\n\tconst actions = {\n\t\tview: t('common.viewed_text'),\n\t\tdelete: t('common.deleted_text'),\n\t\tcreate: t('common.created_text'),\n\t\tupdate: t('common.updated_text')\n\t};\n\treturn (\n\t\t// <Box position='relative'>\n\t\t<Box>\n\t\t\t<Timeline className='Timeline'>\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\tgap: 2,\n\t\t\t\t\t\tpadding: '16px'\n\t\t\t\t\t}}\n\t\t\t\t\tclassName='box-class'>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t{t('common.activities_label')}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\theight: 400,\n\t\t\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t\t\t\tgap: 1.5,\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tflexDirection: 'column'\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t{data?.map((item: any, index: number) => (\n\t\t\t\t\t\t\t<div className='Timeline--Activity'>\n\t\t\t\t\t\t\t\t<TimelineItem key={index}>\n\t\t\t\t\t\t\t\t\t<TimelineSeparator>\n\t\t\t\t\t\t\t\t\t\t<TimelineDot\n\t\t\t\t\t\t\t\t\t\t\tcolor='primary'\n\t\t\t\t\t\t\t\t\t\t\tsx={{ backgroundColor: '#D3D3D4' }}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t{data.length - 1 !== index && <TimelineConnector />}\n\t\t\t\t\t\t\t\t\t</TimelineSeparator>\n\t\t\t\t\t\t\t\t\t<TimelineContent className='Timeline--Content'>\n\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\t\t\t\t\t\tclassName='Timeline--ActivityLogItem'>\n\t\t\t\t\t\t\t\t\t\t\t<b>{formatText(item.username)}</b> {actions[item.action]}{' '}\n\t\t\t\t\t\t\t\t\t\t\t<b>{formatText(item.resource?.replace('_', ' '))}</b>\n\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\ttype='s5'\n\t\t\t\t\t\t\t\t\t\t\tcolor='theme.secondary.800'\n\t\t\t\t\t\t\t\t\t\t\tclassName='Timeline--ActivityLogItem'>\n\t\t\t\t\t\t\t\t\t\t\t{formatDateTime(item?.created_at)}\n\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t</TimelineContent>\n\t\t\t\t\t\t\t\t</TimelineItem>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t</Timeline>\n\t\t</Box>\n\t\t// </Box>\n\t);\n};\n\nexport default ActivityTag;\n","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface ChartData {\n title?: string;\n labels?: string[];\n datasets?: Array<{ values?: number[] }>;\n currency?: string;\n chart_type?: string;\n}\n\ninterface HorizontalBarChartProps {\n chart: ChartData;\n currency?: string;\n}\n\nconst formatAxisValue = (num: number, currency?: string) => {\n if (!currency) return String(Math.abs(num));\n const absNum = Math.abs(num);\n if (absNum >= 1_000_000) return `${(absNum / 1_000_000).toFixed(1)}M`;\n if (absNum >= 1_000) return `${(absNum / 1_000).toFixed(1)}K`;\n return String(absNum);\n};\n\nconst formatBarLabel = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n return num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n};\n\nconst formatHover = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n const numStr = num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n return `${numStr} ${currency}`;\n};\n\nconst truncateLabel = (str: string, maxLen: number) => {\n if (str.length <= maxLen) return str;\n return str.slice(0, maxLen - 2) + \"…\";\n};\n\nexport function HorizontalBarChart({ chart, currency }: HorizontalBarChartProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const data = useMemo(() => {\n if (!chart?.labels) return [];\n return chart.labels.map((label: string, i: number) => ({\n name: label,\n value: chart.datasets?.[0]?.values?.[i] || 0,\n }));\n }, [chart]);\n\n const chartCurrency = currency || chart?.currency || \"AED\";\n const maxAbsValue = useMemo(() => Math.max(...data.map(d => Math.abs(d.value))), [data]);\n const hasNegative = useMemo(() => data.some(d => d.value < 0), [data]);\n \n const yAxisWidth = hasNegative ? 100 : 90;\n const rightPadding = 90;\n const chartHeight = Math.max(data.length * 42 + 70, 230);\n const margin = { top: 15, right: rightPadding, bottom: 20, left: yAxisWidth };\n\n useEffect(() => {\n if (!svgRef.current || !data.length) return;\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove();\n\n const containerWidth = svgRef.current.parentElement?.clientWidth || 300;\n const width = Math.max(containerWidth - 20, 200);\n const height = chartHeight;\n const barWidth = width - margin.left - margin.right;\n const barHeight = height - margin.top - margin.bottom;\n\n const xMax = maxAbsValue * 1.15;\n const x = d3.scaleLinear().domain([hasNegative ? -xMax : 0, xMax]).range([0, barWidth]);\n\n const y = d3.scaleBand()\n .domain(data.map((d) => d.name))\n .range([0, barHeight])\n .padding(0.35);\n\n const chartGroup = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n if (hasNegative) {\n chartGroup\n .append(\"line\")\n .attr(\"x1\", x(0))\n .attr(\"x2\", x(0))\n .attr(\"y1\", 0)\n .attr(\"y2\", barHeight)\n .attr(\"stroke\", \"#9CA3AF\")\n .attr(\"stroke-width\", 1);\n }\n\n const xTicks = x.ticks(5).filter(t => t !== 0);\n chartGroup\n .selectAll(\".grid-line\")\n .data(xTicks)\n .enter()\n .append(\"line\")\n .attr(\"x1\", d => x(d))\n .attr(\"x2\", d => x(d))\n .attr(\"y1\", 0)\n .attr(\"y2\", barHeight)\n .attr(\"stroke\", \"#E5E7EB\")\n .attr(\"stroke-dasharray\", \"3,3\");\n\n chartGroup\n .selectAll(\".x-tick\")\n .data(xTicks)\n .enter()\n .append(\"text\")\n .attr(\"x\", d => x(d))\n .attr(\"y\", barHeight + 16)\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"10px\")\n .attr(\"fill\", \"#6B7280\")\n .text(d => formatAxisValue(d, chartCurrency));\n\n chartGroup\n .selectAll(\".bar\")\n .data(data)\n .enter()\n .append(\"rect\")\n .attr(\"x\", d => d.value >= 0 ? x(0) : x(d.value))\n .attr(\"y\", d => y(d.name) || 0)\n .attr(\"width\", d => Math.abs(x(d.value) - x(0)))\n .attr(\"height\", y.bandwidth())\n .attr(\"fill\", d => d.value >= 0 ? \"#4AC08C\" : \"#E85D3A\")\n .attr(\"rx\", 3)\n .style(\"cursor\", \"pointer\")\n .on(\"mouseenter\", function (event, d) {\n d3.select(this).attr(\"fill\", d => d.value >= 0 ? \"#3AA87A\" : \"#D14529\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"1\";\n tooltipRef.current.innerHTML = `<strong>${d.name}</strong><br/>${formatHover(d.value, chartCurrency)}`;\n tooltipRef.current.style.left = `${event.offsetX + 15}px`;\n tooltipRef.current.style.top = `${event.offsetY - 10}px`;\n }\n })\n .on(\"mouseleave\", function (event, d) {\n d3.select(this).attr(\"fill\", d => d.value >= 0 ? \"#4AC08C\" : \"#E85D3A\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"0\";\n }\n });\n\n chartGroup\n .selectAll(\".value-label\")\n .data(data)\n .enter()\n .append(\"text\")\n .attr(\"x\", d => {\n if (d.value >= 0) {\n return x(d.value) + 6;\n } else {\n return x(0) + 6;\n }\n })\n .attr(\"y\", d => (y(d.name) || 0) + y.bandwidth() / 2)\n .attr(\"dy\", \"0.35em\")\n .attr(\"text-anchor\", \"start\")\n .attr(\"font-size\", \"9px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"fill\", \"#374151\")\n .text(d => formatBarLabel(d.value, chartCurrency));\n\n const yAxis = chartGroup\n .append(\"g\")\n .attr(\"transform\", `translate(0,0)`)\n .call(d3.axisLeft(y).tickSize(0).tickFormat(d => truncateLabel(String(d), 15)));\n\n yAxis.selectAll(\"text\").attr(\"font-size\", \"10px\").attr(\"fill\", \"#6B7280\");\n yAxis.selectAll(\".domain\").remove();\n }, [data, chartCurrency, maxAbsValue, hasNegative, rightPadding, yAxisWidth, chartHeight, margin]);\n\n return (\n <div className=\"ai-summary-panel__card\" ref={containerRef}>\n <p className=\"ai-summary-panel__card-title\">{chart?.title || \"\"}</p>\n <div style={{ position: \"relative\", overflow: \"visible\", height: chartHeight, width: \"100%\" }}>\n <svg ref={svgRef} width=\"100%\" height={chartHeight} style={{ display: \"block\" }}></svg>\n <div\n ref={tooltipRef}\n style={{\n position: \"absolute\",\n backgroundColor: \"white\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.12)\",\n fontSize: \"11px\",\n color: \"#374151\",\n opacity: 0,\n transition: \"opacity 0.15s\",\n pointerEvents: \"none\",\n zIndex: 10,\n border: \"1px solid #E5E7EB\",\n lineHeight: 1.4,\n }}\n />\n </div>\n </div>\n );\n}\n\nexport default HorizontalBarChart;","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface ChartData {\n title?: string;\n labels?: string[];\n datasets?: Array<{ values?: number[] }>;\n currency?: string;\n chart_type?: string;\n}\n\ninterface SimpleBarChartProps {\n chart: ChartData;\n currency?: string;\n}\n\nconst formatAxisValue = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const absNum = Math.abs(num);\n if (absNum >= 1_000_000) return `${(absNum / 1_000_000).toFixed(1)}M`;\n if (absNum >= 1_000) return `${(absNum / 1_000).toFixed(1)}K`;\n return String(absNum);\n};\n\nconst formatBarLabel = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n return num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n};\n\nconst formatHover = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n const numStr = num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n return `${numStr} ${currency}`;\n};\n\nconst truncateLabel = (str: string, maxLen: number) => {\n if (str.length <= maxLen) return str;\n return str.slice(0, maxLen - 2) + \"…\";\n};\n\nexport function SimpleBarChart({ chart, currency }: SimpleBarChartProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const data = useMemo(() => {\n if (!chart?.labels) return [];\n return chart.labels.map((label: string, i: number) => ({\n name: label,\n value: chart.datasets?.[0]?.values?.[i] || 0,\n }));\n }, [chart]);\n\n const chartCurrency = currency || chart?.currency || \"AED\";\n const showValueLabels = useMemo(() => data.length <= 6, [data]);\n const chartHeight = Math.max(data.length * 40 + 120, 220);\n const maxValue = useMemo(() => Math.max(...data.map((d) => Math.abs(d.value))), [data]);\n\n useEffect(() => {\n if (!svgRef.current || !data.length) return;\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove();\n\n const containerWidth = svgRef.current.parentElement?.clientWidth || 300;\n const width = Math.max(containerWidth - 20, 200);\n const height = chartHeight;\n const margin = { top: 25, right: 12, bottom: 45, left: 50 };\n const barWidth = width - margin.left - margin.right;\n const barHeight = height - margin.top - margin.bottom;\n\n const hasNegative = data.some(d => d.value < 0);\n \n const padding = data.length > 5 ? 0.15 : 0.25;\n const x = d3\n .scaleBand()\n .domain(data.map((d) => d.name))\n .range([0, barWidth])\n .padding(padding);\n\n const yMin = hasNegative ? Math.min(0, d3.min(data, d => d.value) || 0) : 0;\n const yMax = Math.max(0, d3.max(data, d => d.value) || 0);\n const y = d3.scaleLinear()\n .domain([yMin * 1.15, yMax * 1.15])\n .range([barHeight, 0]);\n\n const chartGroup = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const yTicks = y.ticks(4).filter(t => t !== 0);\n chartGroup\n .selectAll(\".grid-line\")\n .data(yTicks)\n .enter()\n .append(\"line\")\n .attr(\"x1\", 0)\n .attr(\"x2\", barWidth)\n .attr(\"y1\", d => y(d))\n .attr(\"y2\", d => y(d))\n .attr(\"stroke\", \"#E5E7EB\")\n .attr(\"stroke-dasharray\", \"3,3\");\n\n chartGroup\n .selectAll(\".y-tick\")\n .data(yTicks)\n .enter()\n .append(\"text\")\n .attr(\"x\", -6)\n .attr(\"y\", d => y(d))\n .attr(\"dy\", \"0.35em\")\n .attr(\"text-anchor\", \"end\")\n .attr(\"font-size\", \"9px\")\n .attr(\"fill\", \"#6B7280\")\n .text(d => formatAxisValue(d, chartCurrency));\n\n if (hasNegative) {\n chartGroup\n .append(\"line\")\n .attr(\"x1\", 0)\n .attr(\"x2\", barWidth)\n .attr(\"y1\", y(0))\n .attr(\"y2\", y(0))\n .attr(\"stroke\", \"#9CA3AF\")\n .attr(\"stroke-width\", 1);\n }\n\n chartGroup\n .selectAll(\".bar\")\n .data(data)\n .enter()\n .append(\"rect\")\n .attr(\"x\", d => x(d.name) || 0)\n .attr(\"y\", d => d.value >= 0 ? y(d.value) : y(0))\n .attr(\"width\", x.bandwidth())\n .attr(\"height\", d => Math.abs(y(d.value) - y(0)))\n .attr(\"fill\", d => d.value >= 0 ? \"#4AC08C\" : \"#E85D3A\")\n .attr(\"rx\", 3)\n .style(\"cursor\", \"pointer\")\n .on(\"mouseenter\", function (event, d) {\n d3.select(this).attr(\"opacity\", \"0.85\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"1\";\n tooltipRef.current.innerHTML = `<strong>${d.name}</strong><br/>${formatHover(d.value, chartCurrency)}`;\n tooltipRef.current.style.left = `${event.offsetX + 15}px`;\n tooltipRef.current.style.top = `${event.offsetY - 10}px`;\n }\n })\n .on(\"mouseleave\", function () {\n d3.select(this).attr(\"opacity\", \"1\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"0\";\n }\n });\n\n if (showValueLabels) {\n chartGroup\n .selectAll(\".value-label\")\n .data(data)\n .enter()\n .append(\"text\")\n .attr(\"x\", d => (x(d.name) || 0) + x.bandwidth() / 2)\n .attr(\"y\", d => d.value >= 0 ? y(d.value) - 5 : y(d.value) + 12)\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"8px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"fill\", \"#374151\")\n .text(d => formatBarLabel(d.value, chartCurrency));\n }\n\n const xAxis = chartGroup\n .append(\"g\")\n .attr(\"transform\", `translate(0,${barHeight})`)\n .call(d3.axisBottom(x).tickSize(0));\n\n xAxis.selectAll(\"text\").attr(\"font-size\", \"9px\").attr(\"fill\", \"#6B7280\");\n xAxis.selectAll(\".domain\").remove();\n\n if (data.length > 5) {\n xAxis.selectAll(\"text\").each(function () {\n const text = d3.select(this);\n text.text(truncateLabel(text.text(), 8));\n });\n }\n }, [data, chartCurrency, showValueLabels, chartHeight, maxValue]);\n\n return (\n <div className=\"ai-summary-panel__card\" ref={containerRef}>\n <p className=\"ai-summary-panel__card-title\">{chart?.title || \"\"}</p>\n <div style={{ position: \"relative\", overflow: \"visible\", height: chartHeight, width: \"100%\" }}>\n <svg ref={svgRef} width=\"100%\" height={chartHeight} style={{ display: \"block\" }}></svg>\n <div\n ref={tooltipRef}\n style={{\n position: \"absolute\",\n backgroundColor: \"white\",\n padding: \"8px 12px\",\n borderRadius: \"6px\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.12)\",\n fontSize: \"11px\",\n color: \"#374151\",\n opacity: 0,\n transition: \"opacity 0.15s\",\n pointerEvents: \"none\",\n zIndex: 10,\n border: \"1px solid #E5E7EB\",\n lineHeight: 1.4,\n }}\n />\n </div>\n </div>\n );\n}\n\nexport default SimpleBarChart;","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface ChartData {\n title?: string;\n labels?: string[];\n datasets?: Array<{ values?: number[] }>;\n currency?: string;\n unit?: string;\n center_text?: string;\n chart_type?: string;\n}\n\ninterface DonutChartProps {\n chart: ChartData;\n}\n\nconst PIE_COLORS = [\"#4AC08C\", \"#3AA87A\", \"#2E8E68\", \"#247457\", \"#7FD3AE\", \"#C9EFE0\", \"#6BBF8A\", \"#5AAF7C\"];\n\nconst formatValue = (num: number, currency?: string, unit?: string) => {\n if (unit) return `${num} ${unit}`;\n if (currency) {\n const absNum = Math.abs(num);\n if (absNum >= 1_000_000) return `${currency} ${(absNum / 1_000_000).toFixed(2)}M`;\n if (absNum >= 1_000) return `${currency} ${(absNum / 1_000).toFixed(1)}K`;\n return `${currency} ${num}`;\n }\n return num.toString();\n};\n\nconst formatHoverValue = (num: number, currency?: string, unit?: string) => {\n if (unit) return `${num} ${unit}`;\n if (currency) {\n const absNum = Math.abs(num);\n if (absNum >= 1_000_000) return `${currency} ${(absNum / 1_000_000).toFixed(2)}M`;\n if (absNum >= 1_000) return `${currency} ${(absNum / 1_000).toFixed(1)}K`;\n return `${currency} ${num}`;\n }\n return num.toString();\n};\n\nconst formatCenterNumber = (num: number) => {\n if (num >= 1_000_000) return (num / 1_000_000).toFixed(1) + \"M\";\n if (num >= 1_000) return (num / 1_000).toFixed(1) + \"K\";\n return String(num);\n};\n\nexport function DonutChart({ chart }: DonutChartProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const labels = chart?.labels || [];\n const dataset = chart?.datasets?.[0] || {};\n const values = dataset?.values || [];\n const chartCurrency = chart?.currency || \"\";\n const unit = chart?.unit || \"\";\n\n const total = useMemo(() => values.reduce((sum, v) => sum + (v || 0), 0), [values]);\n\n const data = useMemo(() => labels.map((label: string, i: number) => ({\n name: label,\n value: values[i] || 0,\n pct: total > 0 ? (values[i] || 0) / total * 100 : 0,\n })), [labels, values, total]);\n\n const sortedData = useMemo(() => [...data].sort((a, b) => b.value - a.value), [data]);\n\n const chartHeight = 200;\n\n useEffect(() => {\n if (!svgRef.current || !data.length) return;\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove();\n\n const parentWidth = containerRef.current?.clientWidth || 300;\n const chartSize = Math.min(parentWidth * 0.6, 170);\n const margin = 4;\n const outerRadius = chartSize / 2 - margin;\n const innerRadius = outerRadius - 16;\n\n const g = svg.append(\"g\").attr(\"transform\", `translate(${chartSize / 2},${chartSize / 2})`);\n\n const pie = d3.pie<{ name: string; value: number; pct: number }>().value((d) => d.value).sort(null).padAngle(0.02);\n const arc = d3.arc<d3.PieArcDatum<{ name: string; value: number; pct: number }>>()\n .innerRadius(innerRadius).outerRadius(outerRadius).cornerRadius(3);\n\n g.selectAll(\"path\").data(pie(data)).enter().append(\"path\")\n .attr(\"d\", arc).attr(\"fill\", (_, i) => PIE_COLORS[i % PIE_COLORS.length]).style(\"cursor\", \"pointer\")\n .on(\"mouseenter\", function (event, d) {\n d3.select(this).attr(\"opacity\", \"0.85\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"1\";\n const hoverValue = formatHoverValue(d.data.value, chartCurrency, unit);\n const formatForHover = (num: number, curr?: string) => {\n if (!curr) return String(num);\n if (Math.abs(num) >= 1_000_000) return `${(Math.abs(num) / 1_000_000).toFixed(2)}M ${curr}`;\n if (Math.abs(num) >= 1_000) return `${(Math.abs(num) / 1_000).toFixed(1)}K ${curr}`;\n return `${num} ${curr}`;\n };\n tooltipRef.current.innerHTML = `<strong>${d.data.name}</strong><br/>${formatForHover(d.data.value, chartCurrency)}<br/>(${d.data.pct.toFixed(1)}%)`;\n tooltipRef.current.style.left = `${event.offsetX + 15}px`;\n tooltipRef.current.style.top = `${event.offsetY - 10}px`;\n }\n })\n .on(\"mouseleave\", function () {\n d3.select(this).attr(\"opacity\", \"1\");\n if (tooltipRef.current) tooltipRef.current.style.opacity = \"0\";\n });\n\n const formattedCenter = formatCenterNumber(total);\n\n g.append(\"text\").attr(\"text-anchor\", \"middle\").attr(\"dominant-baseline\", \"middle\")\n .attr(\"font-size\", formattedCenter.length > 8 ? \"10px\" : \"12px\").attr(\"font-weight\", \"600\").attr(\"fill\", \"#1F2125\")\n .text(formattedCenter);\n }, [data, chartCurrency, unit, chart, total]);\n\n return (\n <div className=\"ai-summary-panel__card\" ref={containerRef}>\n <p className=\"ai-summary-panel__card-title\" >{chart?.title || \"\"}</p>\n <div style={{ display: \"flex\", flexDirection: \"column\", alignItems: \"center\", gap: \"50px\", width: \"100%\" }}>\n <div style={{ position: \"relative\", display: \"flex\", justifyContent: \"center\", width: \"100%\" }}>\n <svg ref={svgRef} width=\"100%\" height={180} style={{ maxWidth: \"180px\" }}></svg>\n <div ref={tooltipRef} style={{\n position: \"absolute\", backgroundColor: \"white\", padding: \"8px 12px\", borderRadius: \"6px\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.12)\", fontSize: \"11px\", color: \"#374151\", opacity: 0,\n transition: \"opacity 0.15s\", pointerEvents: \"none\", zIndex: 10, border: \"1px solid #E5E7EB\", lineHeight: 1.4,\n }} />\n </div>\n <div style={{ display: \"flex\", flexWrap: \"wrap\", justifyContent: \"center\", gap: \"6px 12px\", maxWidth: \"100%\" }}>\n {sortedData.map((item, i) => (\n <div key={item.name} style={{ display: \"flex\", alignItems: \"center\", gap: \"5px\", padding: \"4px 8px\", borderRadius: \"4px\", cursor: \"pointer\" }}>\n <div style={{ width: \"9px\", height: \"9px\", borderRadius: \"2px\", backgroundColor: PIE_COLORS[i % PIE_COLORS.length], flexShrink: 0 }} />\n <span style={{ fontSize: \"10px\", color: \"#374151\", maxWidth: \"85px\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }} title={item.name}>{item.name}</span>\n <span style={{ fontSize: \"10px\", color: \"#6B7280\", fontWeight: \"500\", flexShrink: 0 }}>{item.pct.toFixed(0)}%</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\nexport default DonutChart;","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface ChartData {\n title?: string;\n labels?: string[];\n datasets?: Array<{ label?: string; values?: number[] }>;\n currency?: string;\n chart_type?: string;\n}\n\ninterface GroupedBarChartProps {\n chart: ChartData;\n currency?: string;\n}\n\nconst PIE_COLORS = [\"#4AC08C\", \"#3AA87A\", \"#2E8E68\", \"#247457\", \"#7FD3AE\", \"#C9EFE0\", \"#6BBF8A\", \"#5AAF7C\"];\n\nconst formatAxisValue = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const absNum = Math.abs(num);\n if (absNum >= 1_000_000) return `${(absNum / 1_000_000).toFixed(1)}M`;\n if (absNum >= 1_000) return `${(absNum / 1_000).toFixed(1)}K`;\n return String(absNum);\n};\n\nconst formatBarLabel = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n return num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n};\n\nconst formatHover = (num: number, currency?: string) => {\n if (!currency) return String(num);\n const suffix = Math.abs(num) >= 1_000_000 ? \"M\" : Math.abs(num) >= 1_000 ? \"K\" : \"\";\n const absNum = Math.abs(num);\n const shortNum = absNum >= 1_000_000 ? (absNum / 1_000_000).toFixed(1) : absNum >= 1_000 ? (absNum / 1_000).toFixed(1) : String(absNum);\n const numStr = num < 0 ? `-${shortNum}${suffix}` : `${shortNum}${suffix}`;\n return `${numStr} ${currency}`;\n};\n\nconst truncateLabel = (str: string, maxLen: number) => {\n if (str.length <= maxLen) return str;\n return str.slice(0, maxLen - 2) + \"…\";\n};\n\nexport function GroupedBarChart({ chart, currency }: GroupedBarChartProps) {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n\n const labels = chart?.labels || [];\n const datasets = chart?.datasets || [];\n const chartCurrency = currency || chart?.currency || \"AED\";\n\n const data = useMemo(() => {\n return labels.map((label: string, i: number) => {\n const obj: Record<string, number | string> = { name: label };\n datasets.forEach((ds, idx) => { obj[ds.label || `dataset_${idx}`] = ds.values?.[i] ?? 0; });\n return obj;\n });\n }, [labels, datasets]);\n\n const dataKeys = useMemo(() => datasets.map((ds) => ds.label || `dataset_${datasets.indexOf(ds)}`), [datasets]);\n const showValueLabels = useMemo(() => data.length * datasets.length <= 12, [data, datasets]);\n const needRotate = useMemo(() => labels.some((l) => l.length > 6), [labels]);\n \n const chartHeight = Math.max(data.length * 48 + datasets.length * 35 + 150, 300);\n const margin = { top: 25, right: 15, bottom: needRotate ? 100 : 80, left: 60 };\n\n useEffect(() => {\n if (!svgRef.current || !data.length) return;\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove();\n\n const containerWidth = svgRef.current.parentElement?.clientWidth || 300;\n const width = Math.max(containerWidth - 20, 200);\n const height = chartHeight;\n const barWidth = width - margin.left - margin.right;\n const barHeight = height - margin.top - margin.bottom;\n\n const x0 = d3.scaleBand().domain(data.map((d) => d.name as string)).range([0, barWidth]).padding(0.2);\n const x1 = d3.scaleBand().domain(dataKeys).range([0, x0.bandwidth()]).padding(0.1);\n\n const maxValue = d3.max(data, (d) => Math.max(...dataKeys.map((key) => Math.abs(Number(d[key])) || 0)) || 0);\n const y = d3.scaleLinear().domain([0, maxValue * 1.25]).range([barHeight, 0]);\n\n const chartGroup = svg.append(\"g\").attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const yTicks = y.ticks(4).filter(t => t > 0);\n chartGroup.selectAll(\".grid-line\").data(yTicks).enter()\n .append(\"line\").attr(\"x1\", 0).attr(\"x2\", barWidth).attr(\"y1\", d => y(d)).attr(\"y2\", d => y(d))\n .attr(\"stroke\", \"#E5E7EB\").attr(\"stroke-dasharray\", \"3,3\");\n\n chartGroup.selectAll(\".y-tick\").data(yTicks).enter()\n .append(\"text\").attr(\"x\", -6).attr(\"y\", d => y(d)).attr(\"dy\", \"0.35em\").attr(\"text-anchor\", \"end\")\n .attr(\"font-size\", \"10px\").attr(\"fill\", \"#6B7280\").text(d => formatAxisValue(d, chartCurrency));\n\n data.forEach((d) => {\n const g = chartGroup.append(\"g\").attr(\"transform\", `translate(${x0(d.name as string)},0)`);\n dataKeys.forEach((key, i) => {\n const value = Number(d[key]) || 0;\n const absValue = Math.abs(value);\n const barY = y(absValue);\n g.append(\"rect\").attr(\"x\", x1(key) || 0).attr(\"y\", barY).attr(\"width\", x1.bandwidth())\n .attr(\"height\", barHeight - barY).attr(\"fill\", PIE_COLORS[i % PIE_COLORS.length]).attr(\"rx\", 3).style(\"cursor\", \"pointer\")\n .on(\"mouseenter\", function (event) {\n d3.select(this).attr(\"opacity\", \"0.85\");\n if (tooltipRef.current) {\n tooltipRef.current.style.opacity = \"1\";\n tooltipRef.current.innerHTML = `<strong>${key}</strong> - ${d.name}<br/>${formatHover(value, chartCurrency)}`;\n tooltipRef.current.style.left = `${event.offsetX + 15}px`;\n tooltipRef.current.style.top = `${event.offsetY - 10}px`;\n }\n })\n .on(\"mouseleave\", function () {\n d3.select(this).attr(\"opacity\", \"1\");\n if (tooltipRef.current) tooltipRef.current.style.opacity = \"0\";\n });\n\n if (showValueLabels && x1.bandwidth() > 28 && absValue > 0) {\n g.append(\"text\").attr(\"x\", (x1(key) || 0) + x1.bandwidth() / 2).attr(\"y\", barY - 5)\n .attr(\"text-anchor\", \"middle\").attr(\"font-size\", \"8px\").attr(\"font-weight\", \"600\").attr(\"fill\", \"#374151\")\n .text(formatBarLabel(value, chartCurrency));\n }\n });\n });\n\n const xAxis = chartGroup.append(\"g\").attr(\"transform\", `translate(0,${barHeight})`)\n .call(d3.axisBottom(x0).tickSize(0).tickFormat((d) => needRotate ? truncateLabel(String(d), 12) : truncateLabel(String(d), 14)));\n xAxis.selectAll(\"text\").attr(\"font-size\", \"10px\").attr(\"fill\", \"#6B7280\");\n if (needRotate) xAxis.selectAll(\"text\").attr(\"transform\", \"rotate(-30)\").attr(\"text-anchor\", \"end\");\n xAxis.selectAll(\".domain\").remove();\n }, [data, dataKeys, chartCurrency, showValueLabels, needRotate, chartHeight, margin]);\n\n return (\n <div className=\"ai-summary-panel__card\" ref={containerRef}>\n <p className=\"ai-summary-panel__card-title\">{chart?.title || \"\"}</p>\n <div style={{ display: \"flex\", gap: \"12px\", flexWrap: \"wrap\", marginBottom: \"10px\" }}>\n {dataKeys.map((key, i) => (\n <div key={key} style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <div style={{ width: \"10px\", height: \"10px\", borderRadius: \"2px\", backgroundColor: PIE_COLORS[i % PIE_COLORS.length] }} />\n <span style={{ fontSize: \"10px\", color: \"#6B7280\" }}>{key}</span>\n </div>\n ))}\n </div>\n <div style={{ position: \"relative\", overflow: \"visible\", height: chartHeight, width: \"100%\" }}>\n <svg ref={svgRef} width=\"100%\" height={chartHeight} style={{ display: \"block\" }}></svg>\n <div ref={tooltipRef} style={{\n position: \"absolute\", backgroundColor: \"white\", padding: \"8px 12px\", borderRadius: \"6px\",\n boxShadow: \"0 4px 12px rgba(0,0,0,0.12)\", fontSize: \"11px\", color: \"#374151\", opacity: 0,\n transition: \"opacity 0.15s\", pointerEvents: \"none\", zIndex: 10, border: \"1px solid #E5E7EB\", lineHeight: 1.4,\n }} />\n </div>\n </div>\n );\n}\n\nexport default GroupedBarChart;","import { useState, useEffect, useMemo } from \"react\";\nimport {\n Sparkles,\n ChevronDown,\n ChevronUp,\n Copy,\n Check,\n AlertTriangle,\n TrendingUp,\n Clock,\n} from \"lucide-react\";\n\nimport { HorizontalBarChart } from \"./chart/horizontal-bar-chart\";\nimport { SimpleBarChart } from \"./chart/simple-bar-chart\";\nimport { DonutChart } from \"./chart/donut-chart\";\nimport { GroupedBarChart } from \"./chart/grouped-bar-chart\";\n\nimport \"./ai-summary.scss\";\n\nexport interface AISummaryPanelProps {\n aiSummaryData?: any;\n isLoading?: boolean;\n onExpand?: () => void;\n}\n\nfunction ApiChartsRenderer({ charts, currency = \"AED\" }: { charts: any[]; currency?: string }) {\n const chartMap: Record<string, any> = {\n bar: SimpleBarChart,\n horizontal_bar: HorizontalBarChart,\n donut: DonutChart,\n grouped_bar: GroupedBarChart,\n };\n\n return (\n <div className=\"ai-summary-panel__visuals\">\n {charts.map((chart: any, i: number) => {\n const Component = chartMap[chart.chart_type];\n return Component ? (\n <Component key={i} chart={chart} currency={currency} />\n ) : null;\n })}\n </div>\n );\n}\n\nfunction useTypingEffect(text: string, speed = 18) {\n const [displayed, setDisplayed] = useState(\"\");\n const [done, setDone] = useState(false);\n\n useEffect(() => {\n let i = 0;\n const interval = setInterval(() => {\n i++;\n setDisplayed(text.slice(0, i));\n\n if (i >= text.length) {\n clearInterval(interval);\n setDone(true);\n }\n }, speed);\n\n return () => clearInterval(interval);\n }, [text, speed]);\n\n return { displayed, done };\n}\n\nexport function AISummaryPanel(props: AISummaryPanelProps = {}) {\n const { aiSummaryData, isLoading, onExpand } = props;\n\n const dynamicData = useMemo(() => {\n if (!aiSummaryData) return { summaryText: \"\", insights: [], charts: [] };\n\n const insights = (aiSummaryData.flags || []).map((flag: any) => ({\n icon:\n flag.severity === \"critical\"\n ? AlertTriangle\n : flag.severity === \"warning\"\n ? Clock\n : TrendingUp,\n text: flag.message,\n title:\n flag.severity === \"critical\"\n ? \"Critical\"\n : flag.severity === \"warning\"\n ? \"Warning\"\n : \"Info\",\n color:\n flag.severity === \"critical\"\n ? \"#E85D3A\"\n : flag.severity === \"warning\"\n ? \"#D97706\"\n : \"#059669\",\n }));\n\n return {\n summaryText: aiSummaryData.summary || \"\",\n insights,\n charts: aiSummaryData.charts || [],\n currency: aiSummaryData?.charts?.[0]?.currency || \"AED\",\n };\n }, [aiSummaryData]);\n\n const [expanded, setExpanded] = useState(false);\n const [copied, setCopied] = useState(false);\n const [insightsVisible, setInsightsVisible] = useState(false);\n\n const { displayed, done } = useTypingEffect(dynamicData.summaryText, 12);\n\n useEffect(() => {\n if (done) {\n setTimeout(() => setInsightsVisible(true), 200);\n }\n }, [done]);\n\n function handleCopy() {\n navigator.clipboard.writeText(dynamicData.summaryText);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }\n\n return (\n <div className=\"ai-summary-panel\">\n {!expanded && (\n <button\n onClick={() => {\n setExpanded(true);\n onExpand?.();\n }}\n className=\"ai-summary-panel__collapsed-toggle\"\n disabled={isLoading}\n >\n <div className=\"ai-summary-panel__collapsed-toggle-icon\">\n {isLoading ? (\n <div className=\"ai-summary-panel__loading-spinner\" />\n ) : (\n <Sparkles />\n )}\n </div>\n\n <span className=\"ai-summary-panel__collapsed-toggle-title\">\n AI Summary\n </span>\n\n <span className=\"ai-summary-panel__collapsed-toggle-subtitle\">\n {isLoading ? \"Generating insights...\" : \"Click to expand insights\"}\n </span>\n\n {!isLoading && (\n <ChevronDown className=\"ai-summary-panel__collapsed-toggle-chevron\" />\n )}\n </button>\n )}\n\n {expanded && (\n <div className=\"ai-summary-panel__expanded\">\n <div className=\"ai-summary-panel__header\">\n <div className=\"ai-summary-panel__header-left\">\n <div className=\"ai-summary-panel__header-icon\">\n <Sparkles />\n </div>\n <span className=\"ai-summary-panel__header-title\">\n AI Summary\n </span>\n <span className=\"ai-summary-panel__header-badge\">Beta</span>\n </div>\n\n <div className=\"ai-summary-panel__header-actions\">\n <button\n onClick={handleCopy}\n className={`ai-summary-panel__header-btn ${\n copied ? \"copied\" : \"\"\n }`}\n >\n {copied ? <Check /> : <Copy />}\n </button>\n\n <button\n onClick={() => setExpanded(false)}\n className=\"ai-summary-panel__header-btn\"\n >\n <ChevronUp />\n </button>\n </div>\n </div>\n\n <div className=\"ai-summary-panel__body\">\n {isLoading && (\n <div className=\"ai-summary-panel__loading\">\n <div className=\"ai-summary-panel__loading-spinner-large\" />\n <span className=\"ai-summary-panel__loading-text\">\n Generating AI insights...\n </span>\n </div>\n )}\n\n {!isLoading && (\n <p className=\"ai-summary-panel__summary\">\n {displayed}\n {!done && (\n <span className=\"ai-summary-panel__summary-cursor\" />\n )}\n </p>\n )}\n\n {dynamicData.charts.length > 0 && insightsVisible && (\n <ApiChartsRenderer\n charts={dynamicData.charts}\n currency={dynamicData.currency}\n />\n )}\n\n {insightsVisible && (\n <div className=\"ai-summary-panel__insights\">\n {dynamicData.insights.map((insight: any, i: number) => (\n <div\n key={i}\n className={`ai-summary-panel__insight-chip ai-summary-panel__insight-chip--${insight.title?.toLowerCase() || 'info'}`}\n >\n <insight.icon style={{ color: insight.color }} />\n <span className=\"ai-summary-panel__insight-chip-title\">\n {insight.title}\n </span>\n <span className=\"ai-summary-panel__insight-chip-text\">\n — {insight.text}\n </span>\n <svg className=\"ai-summary-panel__insight-chip-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n}","import { Close } from '@mui/icons-material';\nimport {\n\tBox,\n\tCircularProgress,\n\tDialogActions,\n\tDialogContent,\n\tDialogProps,\n\tDialogTitle,\n\tIconButton,\n\tMenuItem\n} from '@mui/material';\nimport Modal from '../modal/modal';\nimport Typography from '../typography/typography';\n\nimport * as Yup from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport Select from '../select/select';\nimport { Controller, useForm } from 'react-hook-form';\n\nimport './quick-approval-modal.scss';\nimport { useEffect, useState } from 'react';\nimport Avatar from '../avatar/avatar';\nimport { formatLabel } from '../../utils/format-text';\nimport Checkbox from '../checkbox/checkbox';\nimport Button from '../button/button';\nimport ChipOrPlaceholder from '../form-control/form-builder/form-builder-element/chip-or-placeholder';\nimport Chip from '../chip/chip';\nimport { MoreIcon } from '../icons';\nimport { getV1User } from '../../api-client/api.rbac/api';\nimport { enqueueSnackbar } from 'notistack';\n\nimport React from 'react';\nimport { getToken } from '../../utils/common';\n\ninterface QuickApprovalModalProps {\n\tisOpen: boolean;\n\tsetIsOpen: () => void;\n\tmodalProps?: DialogProps;\n\ttitle?: string;\n\tonConfirm: (approverIds: number[]) => void;\n isProcessing?: boolean\n}\n\ninterface IFormInput {\n\tapprover_id: number[];\n}\ninterface IUsersData {\n\tisLoading: boolean\n\tisError: boolean\n error: string | null\n data: Array<Record<string, any>>\n}\n\nconst validationSchema = Yup.object().shape({\n\tapprover_id: Yup.array()\n\t\t.required('Please select the approvers')\n\t\t.min(1, 'Please select the approvers')\n});\n\nconst QuickApprovalModal: React.FC<QuickApprovalModalProps> = ({\n\tisOpen,\n\tsetIsOpen,\n\tmodalProps,\n\ttitle,\n\tonConfirm,\n isProcessing\n}) => {\n\tconst [users, setUsers] = useState<IUsersData>({\n\t\tisLoading: true,\n\t\tisError: false,\n\t\terror: 'null',\n\t\tdata: []\n\t});\n\tconst { isLoading, isError, error, data } = users;\n\n\tconst { control, handleSubmit, reset, setValue, getValues, watch, trigger } =\n\t\tuseForm<IFormInput>({\n\t\t\tresolver: yupResolver(validationSchema),\n\t\t\tmode: 'all'\n\t\t});\n\n\twatch('approver_id');\n\tconst formValues = getValues('approver_id');\n\n\tconst onSubmit = async (values: IFormInput) => {\n\t\tconst isValid = await trigger();\n\t\tif (!isValid) return;\n\t\tonConfirm(values.approver_id);\n\t\thandleModalClose();\n\t};\n\n\tconst handleModalClose = () => {\n\t\treset({approver_id: []});\n\t\tsetIsOpen();\n\t};\n\n\tconst SelectedItems = ({\n\t\tdata,\n\t\toptions\n\t}: {\n\t\tdata: number[];\n\t\toptions: any[];\n\t}) => {\n\t\tconst displayTitle = data.map((selectedItem) => {\n\t\t\tconst user = options.find((option: any) => option.id === selectedItem);\n\t\t\tif (user) {\n\t\t\t\treturn getLabel(user);\n\t\t\t}\n\t\t\treturn selectedItem;\n\t\t});\n\n\t\treturn (\n\t\t\t<Box display='flex' justifyContent='space-between' alignItems='center'>\n\t\t\t\t<Typography\n\t\t\t\t\ttype='s5'\n\t\t\t\t\tcolor='inherit'\n\t\t\t\t\tsx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}>\n\t\t\t\t\t{displayTitle.slice(0, 3).join(', ')}\n\t\t\t\t\t{data.length > 4 && (\n\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\tvariant='outlined'\n\t\t\t\t\t\t\ttype='normal'\n\t\t\t\t\t\t\tclassName='quickApprovalModal--DisplayNameChip'\n\t\t\t\t\t\t\tlabel={<MoreIcon fontSize='small' />}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</Typography>\n\t\t\t\t<Button variant='text' onClick={() => setValue('approver_id', [])}>\n\t\t\t\t\t<Typography type='s5' color='inherit'>\n\t\t\t\t\t\tRemove\n\t\t\t\t\t</Typography>\n\t\t\t\t</Button>\n\t\t\t</Box>\n\t\t);\n\t};\n\n\tconst getAndSetFetchUsers = async () => {\n\t\ttry {\n\t\t\tconst filters = { skip: 0, limit: 99, filters: `(is_active.eq=true)` };\n\t\t\tconst response = await getV1User({ ...filters, ...getToken() });\n\t\n\t\t\tconst users: any[] = response?.data?.users || [];\n\t\t\tsetUsers({\n\t\t\t\tisLoading: false,\n\t\t\t\tisError: false,\n\t\t\t\terror: null,\n\t\t\t\tdata: users\n\t\t\t});\t\n\t\t} catch (error) {\n\t\t\tsetUsers({\n\t\t\t\tisLoading: false,\n\t\t\t\tisError: true,\n\t\t\t\terror: 'Failed to fetch Approvers',\n\t\t\t\tdata: []\n\t\t\t});\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (isOpen) {\n\t\t\tgetAndSetFetchUsers()\n\t\t}\n\t}, [isOpen]);\n\tuseEffect(() => {\n\t\tif (isError) {\n\t\t\tenqueueSnackbar(error ?? 'Something went wrong', { variant: 'error'});\n\t\t}\n\t}, [error, isError]);\n\n\tconst getLabel = (obj: Record<any, any>) => {\n\t\tconst {first_name = '', last_name=''} = obj || {}\n\n\t\treturn formatLabel(`${first_name} ${last_name}`)\n\t}\n\n useEffect(() => {\n return () => {\n handleModalClose()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n },[])\n\n\treturn (\n\t\t<Modal\n\t\t\topen={isOpen}\n\t\t\tonClose={handleModalClose}\n\t\t\tmaxWidth='sm'\n\t\t\tfullWidth\n\t\t\tdisableEscapeKeyDown\n\t\t\t{...modalProps}>\n\t\t\t<form onSubmit={handleSubmit(onSubmit)}>\n\t\t\t\t<DialogTitle className='quickApprovalModal--Title'>\n\t\t\t\t\t<Typography type='s3' color='inherit' weight='medium'>\n\t\t\t\t\t\t{title || 'Quick Approval'}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<IconButton onClick={handleModalClose}>\n\t\t\t\t\t\t<Close fontSize='small' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</DialogTitle>\n\t\t\t\t<DialogContent className='quickApprovalModal--ModalContentContainer'>\n\t\t\t\t\t<Controller\n\t\t\t\t\t\tname='approver_id'\n\t\t\t\t\t\tcontrol={control}\n\t\t\t\t\t\trender={({ field, fieldState }) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\t\tname='approver_id'\n\t\t\t\t\t\t\t\t\tvalue={field.value || []}\n\t\t\t\t\t\t\t\t\tonChange={field.onChange}\n\t\t\t\t\t\t\t\t\terror={Boolean(fieldState.error?.message)}\n\t\t\t\t\t\t\t\t\thelperText={fieldState.error?.message || ''}\n\t\t\t\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\t\t\t\trenderValue={(selected: string[]) => (\n\t\t\t\t\t\t\t\t\t\t<ChipOrPlaceholder\n\t\t\t\t\t\t\t\t\t\t\tdata={selected}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder='Select'\n\t\t\t\t\t\t\t\t\t\t\tonDelete={() => setValue('approver_id', [])}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\t\tfullWidth>\n\t\t\t\t\t\t\t\t\t{data.map((user) => {\n\t\t\t\t\t\t\t\t\t\tconst colors = [\n\t\t\t\t\t\t\t\t\t\t\t'theme.tertiary1',\n\t\t\t\t\t\t\t\t\t\t\t'theme.tertiary2',\n\t\t\t\t\t\t\t\t\t\t\t'theme.tertiary3'\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tconst randomIndex = Math.floor(\n\t\t\t\t\t\t\t\t\t\t\tMath.random() * colors.length\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\tconst randomColor = colors[randomIndex];\n\t\t\t\t\t\t\t\t\t\tconst avatarStyle = {\n\t\t\t\t\t\t\t\t\t\t\tborderRadius: '0.25rem !important',\n\t\t\t\t\t\t\t\t\t\t\ttextAlign: 'center',\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: `${randomColor}.200`,\n\t\t\t\t\t\t\t\t\t\t\tcolor: `${randomColor}.1000`\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\tkey={user.id}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue={user.id}\n\t\t\t\t\t\t\t\t\t\t\t\tselected={Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\tfield.value && field.value.includes(user.id)\n\t\t\t\t\t\t\t\t\t\t\t\t)}>\n\t\t\t\t\t\t\t\t\t\t\t\t<Box className='quickApprovalModal--UserListingContainer'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box className='quickApprovalModal--UserContent'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Avatar\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={user.profile_image}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt={getLabel(user)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={avatarStyle}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize={24}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getLabel(user)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked={Boolean(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfield.value && field.value.includes(user.id)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t\t\t{Array.isArray(field?.value) && field?.value?.length > 0 && (\n\t\t\t\t\t\t\t\t\t<SelectedItems data={field.value} options={data} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</DialogContent>\n\t\t\t\t<DialogActions className='quickApprovalModal--DialogActions'>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tclassName='quickApprovalModal--DialogActions--Cancel'\n\t\t\t\t\t\tonClick={handleModalClose}\n\t\t\t\t\t\tdisabled={isLoading || isProcessing}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype='button'\n\t\t\t\t\t\tonClick={handleSubmit(onSubmit)}\n\t\t\t\t\t\tendIcon={\n\t\t\t\t\t\t\tisProcessing ? (\n\t\t\t\t\t\t\t\t<CircularProgress size={15} color='inherit' />\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdisabled={isProcessing || isLoading || Boolean(!formValues?.length)}>\n\t\t\t\t\t\tSend Request\n\t\t\t\t\t</Button>\n\t\t\t\t</DialogActions>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n};\n\nexport default QuickApprovalModal;","import { useTranslation } from 'react-i18next';\nimport DropdownButton from '../dropdown-button/dropdown-button';\nimport QuickApprovalModal from '../quick-approval-modal/quick-approval-modal';\nimport { useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { enqueueSnackbar } from 'notistack';\nimport {apiHelper} from '../../hooks/apiHelper';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nexport const ApprovalWrapper = ({\n\tdata,\n\taddApprover,\n\tfetchApi,\n\tshowAcceptOrReject,\n\tmoduleIdKey,\n\tmoduleId,\n\tsuccessMessage,\n\tshowSubmitBtn,\n\tupdateApi,\n\tapprovalDetails,\n\ttitle\n}: any) => {\n\t//Translations\n\tconst { t } = useTranslation();\n\n\t//Redux\n\tconst dispatch = useDispatch();\n\n\t//Local State\n\tconst [isUpdatingApproval, setIsUpdatingApproval] = useState(false);\n\tconst [openQuickApprovalModal, setOpenQuickApprovalModal] = useState(false);\n\tconst [approvalToAcceptOrReject, setApprovalToAcceptOrReject] =\n\t\tuseState<string>('');\n\n\t//Handlers\n\n\tconst FetchApprovalDetails = () => {\n\t\tenqueueSnackbar(t(successMessage));\n\t\tfetchApi();\n\t};\n\tconst handleSubmitForApproval = async (\n\t\ttype: 'submit_for_approval' | 'quick_approval',\n\t\tapprovers?: number[]\n\t) => {\n\t\tif (data) {\n\t\t\tsetIsUpdatingApproval(true);\n\t\t\tconst payload = {\n\t\t\t\t[moduleIdKey]: moduleId,\n\t\t\t\ttype,\n\t\t\t\t...(approvers && approvers?.length && { approver_id: approvers })\n\t\t\t};\n\n\t\t\tconst response = await dispatch(addApprover(payload));\n\n\t\t\tsetIsUpdatingApproval(false);\n\t\t\tapiHelper(response, () => FetchApprovalDetails());\n\t\t}\n\t};\n\tconst handleApprovalAcceptOrReject = async () => {\n\t\tif (approvalDetails?.id && approvalToAcceptOrReject) {\n\t\t\tconst payload = {\n\t\t\t\tid: approvalDetails?.id,\n\t\t\t\t[moduleIdKey]: moduleId,\n\t\t\t\tstatus: approvalToAcceptOrReject\n\t\t\t};\n\t\t\tsetIsUpdatingApproval(true);\n\t\t\tconst response = await dispatch(updateApi(payload));\n\t\t\tsetIsUpdatingApproval(false);\n\t\t\tconst rStatus = approvalToAcceptOrReject;\n\t\t\tsetApprovalToAcceptOrReject('');\n\t\t\tapiHelper(response, () => fetchApi());\n\t\t\tif (response.meta.requestStatus === 'fulfilled') {\n\t\t\t\tconst msg = `${title} ${rStatus === 'Approved' ? t('common.accepted') : t('common.rejected')}`;\n\t\t\t\tenqueueSnackbar(msg);\n\t\t\t}\n\t\t}\n\t};\n\treturn (\n\t\t<>\n\t\t\t{(showSubmitBtn || data?.status === 'Rejected') && (\n\t\t\t\t<DropdownButton\n\t\t\t\t\tisMenuThirdItemDisabled={true}\n\t\t\t\t\tonClick={() => handleSubmitForApproval('submit_for_approval')}\n\t\t\t\t\toptions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('common.submitForApproval'),\n\t\t\t\t\t\t\tcallback: () => handleSubmitForApproval('submit_for_approval')\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('common.quickApproval'),\n\t\t\t\t\t\t\tcallback: () => setOpenQuickApprovalModal(true)\n\t\t\t\t\t\t}\n\t\t\t\t\t]}\n\t\t\t\t\tloading={isUpdatingApproval}>\n\t\t\t\t\t{data?.status === 'Rejected'\n\t\t\t\t\t\t? t('common.reSubmit')\n\t\t\t\t\t\t: t('common.submit')}\n\t\t\t\t</DropdownButton>\n\t\t\t)}\n\t\t\t<QuickApprovalModal\n\t\t\t\tisOpen={openQuickApprovalModal}\n\t\t\t\tsetIsOpen={() => setOpenQuickApprovalModal(false)}\n\t\t\t\tonConfirm={(approverIds) =>\n\t\t\t\t\thandleSubmitForApproval('quick_approval', approverIds)\n\t\t\t\t}\n\t\t\t\tisProcessing={isUpdatingApproval}\n\t\t\t/>\n\t\t\t<ConfirmPopUp\n\t\t\t\topen={Boolean(approvalToAcceptOrReject)}\n\t\t\t\tonClose={() => setApprovalToAcceptOrReject('')}\n\t\t\t\tonConfirm={handleApprovalAcceptOrReject}\n\t\t\t\ttitle={`${approvalToAcceptOrReject} request`}\n\t\t\t\tdescription={`Are you sure you want to ${approvalToAcceptOrReject} ${title} : ${data?.id} ?`}\n\t\t\t\tbuttonTexts={{\n\t\t\t\t\tconfirm: t('common.submit'),\n\t\t\t\t\tcancel: t('common.cancel')\n\t\t\t\t}}\n\t\t\t\tbuttonColors={{\n\t\t\t\t\tconfirm: approvalToAcceptOrReject === 'Rejected' ? 'error' : 'info'\n\t\t\t\t}}\n\t\t\t\tmodalType='info'\n\t\t\t\tloading={isUpdatingApproval}\n\t\t\t/>\n\t\t\t{showAcceptOrReject && (\n\t\t\t\t<DropdownButton\n\t\t\t\t\tisMenuThirdItemDisabled={true}\n\t\t\t\t\tonClick={() => setApprovalToAcceptOrReject('Approved')}\n\t\t\t\t\toptions={[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('common.accept'),\n\t\t\t\t\t\t\tcallback: () => setApprovalToAcceptOrReject('Approved')\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('common.reject'),\n\t\t\t\t\t\t\tcallback: () => setApprovalToAcceptOrReject('Rejected'),\n\t\t\t\t\t\t\tcolor: 'theme.error.500'\n\t\t\t\t\t\t}\n\t\t\t\t\t]}\n\t\t\t\t\tloading={isUpdatingApproval}>\n\t\t\t\t\t{t('common.accept')}\n\t\t\t\t</DropdownButton>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default ApprovalWrapper;\n","import { useState } from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport images from \"../../assets/images\";\n\nconst ColumnHeader = ({ column }: any) => {\n const [isRenameColumn, setIsRenameColumn] = useState(false);\n const [newColumnTitle, setNewColumnTitle] = useState(column.title);\n\n const handleRenameColumn = () => {\n column.title = newColumnTitle;\n setIsRenameColumn(false);\n };\n\n return (\n <div className=\"kanban-column lead-card\">\n {isRenameColumn ? (\n <div className=\"create-status-box\">\n <input\n type=\"text\"\n placeholder=\"Enter new status title\"\n value={newColumnTitle}\n onChange={(e) => setNewColumnTitle(e.target.value)}\n />\n <div className=\"add-btns\">\n <button onClick={() => handleRenameColumn()}>Rename</button>\n <button onClick={() => setIsRenameColumn(false)}>Cancel</button>\n </div>\n </div>\n ) : (\n <h2\n className=\"kanban-column-title\"\n onDoubleClick={() => setIsRenameColumn(true)}\n >\n {column.title}\n </h2>\n )}\n\n <span className=\"count-length-text\">{column.cards.length}</span>\n\n <IconButton color=\"inherit\" size=\"small\" className=\"more-menu-btn\">\n <img src={images.more} alt=\"more icon\" />\n </IconButton>\n </div>\n );\n};\n\nexport { ColumnHeader };\nexport default ColumnHeader;\n","import { useState } from \"react\";\nimport Board from \"@asseinfo/react-kanban\";\nimport ColumnHeader from \"./columnHeader\";\nimport images from \"../../assets/images\";\nimport \"@asseinfo/react-kanban/dist/styles.css\";\nimport \"./board.scss\";\n\ninterface Card {\n id: number;\n title: string;\n description: string;\n}\n\ninterface Column {\n id: number;\n title: string;\n cards: Card[];\n}\n\ninterface BoardData {\n columns: Column[];\n}\n\ninterface DraftCard {\n title: string;\n description: string;\n}\n\ninterface BoardWrapperProps {\n data: BoardData;\n}\n\nexport const BoardWrapper = (props: BoardWrapperProps) => {\n const [board, setBoard] = useState(props.data);\n const [isAddingColumn, setIsAddingColumn] = useState(false);\n const [newColumnTitle, setNewColumnTitle] = useState(\"\");\n\n const handleAddColumn = (title: string) => {\n const newColumnAdded = { ...board };\n newColumnAdded.columns.push({\n id: Date.now(),\n title: title,\n cards: [],\n });\n setBoard(newColumnAdded);\n setIsAddingColumn(false);\n setNewColumnTitle(\"\");\n };\n\n return (\n <div className=\"card-board-wrap\">\n <Board\n initialBoard={board}\n allowAddCard\n allowAddColumn\n renderColumnHeader={(column: Column) => (\n <div className=\"column-header\">\n <ColumnHeader key={column.id} column={column} />\n </div>\n )}\n renderColumnAdder={() =>\n isAddingColumn ? (\n <div className=\"create-status-box\">\n <input\n type=\"text\"\n placeholder=\"Enter new status title\"\n value={newColumnTitle}\n onChange={(e) => setNewColumnTitle(e.target.value)}\n />\n <div className=\"add-btns\">\n <button onClick={() => handleAddColumn(newColumnTitle)}>\n Add\n </button>\n <button onClick={() => setIsAddingColumn(false)}>Cancel</button>\n </div>\n </div>\n ) : (\n <div\n className=\"create-status-box\"\n onClick={() => setIsAddingColumn(true)}\n role=\"button\"\n >\n Create new status\n <img src={images.common.addIcon} alt=\"add icon\" />\n </div>\n )\n }\n allowRemoveCard\n allowRenameColumn\n onCardNew={console.log}\n onCardRemove={console.log}\n onColumnRemove={console.log}\n onColumnRename={console.log}\n onNewCardConfirm={(draftCard: DraftCard) => ({\n id: new Date().getTime(),\n ...draftCard,\n })}\n />\n </div>\n );\n};\n\nexport default BoardWrapper;\n","import { Box } from '@mui/material';\n\nimport Accordion from '../../accordion/accordion';\nimport Typography from '../../typography/typography';\n\nexport interface IItemsSummary {\n\ttotalQuantity: number | string;\n\ttotal: number | string;\n\tcurrencySymbol: string;\n}\ninterface IItemsSummaryProps {\n\tdata: IItemsSummary;\n}\n\nconst ItemsSummary: React.FC<IItemsSummaryProps> = ({ data }) => {\n\treturn (\n\t\t<Accordion\n\t\t\ttitle={\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\tItems\n\t\t\t\t</Typography>\n\t\t\t}\n\t\t\taccordionProps={{\n\t\t\t\tdefaultExpanded: true,\n\t\t\t\tsx: {\n\t\t\t\t\tborderBottomWidth: 1,\n\t\t\t\t\t'& .MuiAccordionSummary-root': { borderBottomWidth: 1 }\n\t\t\t\t}\n\t\t\t}}>\n\t\t\t<Box className='calculationSummary--SummaryContainer'>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTotal Quantity\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.totalQuantity}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTotal\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.total}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t</Accordion>\n\t);\n};\n\nexport default ItemsSummary;\n","import { Box } from '@mui/material';\n\nimport Accordion from '../../accordion/accordion';\nimport Typography from '../../typography/typography';\n\nexport interface IDiscountSummary {\n\titemDiscount: number | string;\n\tadditionalDiscount?: number | string;\n\ttotalDiscount?: number | string;\n\tpromotionAmount?: number | string;\n\tcurrencySymbol: string;\n}\ninterface IDiscountSummaryProps {\n\tdata: IDiscountSummary;\n\tenalblePromotions?: boolean;\n}\n\nconst DiscountSummary: React.FC<IDiscountSummaryProps> = ({\n\tdata,\n\tenalblePromotions\n}) => {\n\treturn (\n\t\t<Accordion\n\t\t\ttitle={\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\tDiscounts\n\t\t\t\t</Typography>\n\t\t\t}\n\t\t\taccordionProps={{\n\t\t\t\tdefaultExpanded: true,\n\t\t\t\tsx: {\n\t\t\t\t\tborderBottomWidth: 1,\n\t\t\t\t\t'& .MuiAccordionSummary-root': { borderBottomWidth: 1 }\n\t\t\t\t}\n\t\t\t}}>\n\t\t\t<Box className='calculationSummary--SummaryContainer'>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tItem Discount\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.itemDiscount}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t{Number(data.additionalDiscount) > 0 &&\n\t\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\tAdditional Discount\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{data.currencySymbol} {data.additionalDiscount}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t}\n\t\t\t\t{Boolean(enalblePromotions) && (\n\t\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\tPromotion Amount\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{data.currencySymbol} {data.promotionAmount}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTotal Discount\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.totalDiscount}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t</Accordion>\n\t);\n};\n\nexport default DiscountSummary;\n","import { Box } from '@mui/material';\n\nimport Accordion from '../../accordion/accordion';\nimport Typography from '../../typography/typography';\n\nexport interface ISubtotalSummary {\n\tsubtotalExTax: number | string;\n\tsubtotalExDiscount: number | string;\n\tcurrencySymbol: string;\n}\ninterface ISubtotalSummaryProps {\n\tdata: ISubtotalSummary;\n}\n\nconst SubtotalSummary: React.FC<ISubtotalSummaryProps> = ({ data }) => {\n\treturn (\n\t\t<Accordion\n\t\t\ttitle={\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\tSubtotal\n\t\t\t\t</Typography>\n\t\t\t}\n\t\t\taccordionProps={{\n\t\t\t\tdefaultExpanded: true,\n\t\t\t\tsx: {\n\t\t\t\t\tborderBottomWidth: 1,\n\t\t\t\t\t'& .MuiAccordionSummary-root': { borderBottomWidth: 1 }\n\t\t\t\t}\n\t\t\t}}>\n\t\t\t<Box className='calculationSummary--SummaryContainer'>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tSubtotal Excluding Taxes\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.subtotalExTax}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tSubtotal Excluding discount\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.subtotalExDiscount}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</Box>\n\t\t</Accordion>\n\t);\n};\n\nexport default SubtotalSummary;\n","import { Box } from '@mui/material';\n\nimport Accordion from '../../accordion/accordion';\nimport Typography from '../../typography/typography';\n\nexport interface ITaxesAndChargesSummary {\n\ttaxes: number | string;\n\tdeductedTax: number | string;\n\ttotal: number | string;\n\tshippingAmount: number | string;\n\thandlingAmount: number | string;\n\tcurrencySymbol: string;\n}\ninterface ITaxesAndChargesSummaryProps {\n\tdata: ITaxesAndChargesSummary;\n\tenableShippings?: boolean;\n}\n\nconst TaxesAndChargesSummary: React.FC<ITaxesAndChargesSummaryProps> = ({\n\tdata,\n\tenableShippings\n}) => {\n\treturn (\n\t\t<Accordion\n\t\t\ttitle={\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\tTaxes and Charges\n\t\t\t\t</Typography>\n\t\t\t}\n\t\t\taccordionProps={{\n\t\t\t\tdefaultExpanded: true,\n\t\t\t\tsx: {\n\t\t\t\t\tborderBottomWidth: 1,\n\t\t\t\t\t'& .MuiAccordionSummary-root': { borderBottomWidth: 1 }\n\t\t\t\t}\n\t\t\t}}>\n\t\t\t<Box className='calculationSummary--SummaryContainer'>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTaxes and Charges Added\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.taxes}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTaxes and Charges deducted\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.deductedTax}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tTotal Taxes and Charges Added\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.total}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t{Boolean(enableShippings) && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\t\tShipping Amount\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s3'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{data.currencySymbol} {data.shippingAmount}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\t\tHandling Amount\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\ttype='s3'\n\t\t\t\t\t\t\t\tweight='medium'\n\t\t\t\t\t\t\t\tcolor='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{data.currencySymbol} {data.handlingAmount}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Box>\n\t\t</Accordion>\n\t);\n};\n\nexport default TaxesAndChargesSummary;\n","import { Box } from '@mui/material';\n\nimport Accordion from '../../accordion/accordion';\nimport Typography from '../../typography/typography';\n\nexport interface ITotalSummary {\n\ttotal: string | number;\n\troundOffDifferenceAmount: number | string;\n\tcurrencySymbol: string;\n}\ninterface ITotalSummaryProps {\n\tdata: ITotalSummary;\n}\n\nconst TotalSummary: React.FC<ITotalSummaryProps> = ({ data }) => {\n\treturn (\n\t\t<Accordion\n\t\t\ttitle={\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\tTotal\n\t\t\t\t</Typography>\n\t\t\t}\n\t\t\taccordionProps={{\n\t\t\t\tdefaultExpanded: true,\n\t\t\t\tsx: {\n\t\t\t\t\tborderBottomWidth: 1,\n\t\t\t\t\t'& .MuiAccordionSummary-root': { borderBottomWidth: 1 }\n\t\t\t\t}\n\t\t\t}}>\n\t\t\t<Box className='calculationSummary--SummaryContainer'>\n\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\tGrand Total\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{data.currencySymbol} {data.total}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t{Number(data.roundOffDifferenceAmount) > 0 && \n\t\t\t\t\t<Box className='calculationSummary--SummaryItem'>\n\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\tRound Off Difference\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{data.currencySymbol} {data.roundOffDifferenceAmount}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t}\n\t\t\t</Box>\n\t\t</Accordion>\n\t);\n};\n\nexport default TotalSummary;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Box } from '@mui/material';\n\nimport ItemsSummary, { IItemsSummary } from './components/items-summary';\nimport DiscountSummary, {\n\tIDiscountSummary\n} from './components/discount-summary';\nimport SubtotalSummary, {\n\tISubtotalSummary\n} from './components/subtotal-summary';\nimport TaxesAndChargesSummary, {\n\tITaxesAndChargesSummary\n} from './components/taxes-and-charges-summary';\n\nimport { useEffect, useState } from 'react';\nimport { useAuth } from '../../hooks/useAuth';\nimport TotalSummary, { ITotalSummary } from './components/total-summary';\nimport { calculateEntries } from '../../utils/calculation';\n\nimport './calculation-summary.scss';\n\ninterface ICalculationSummary {\n\titems: any;\n\texpenses?: any;\n\tformValues: any;\n\tenableShippings?: boolean;\n\tenalblePromotions?: boolean;\n\tcurrencySymbol: string;\n\t// calculationFunc: any\n}\n\nconst CalculationSummary: React.FC<ICalculationSummary> = ({\n\titems,\n\texpenses,\n\tformValues,\n\tenalblePromotions,\n\tenableShippings,\n\tcurrencySymbol\n}) => {\n\tconst { user } = useAuth();\n\tconst defaultCurrencySymbol =\n\t\tcurrencySymbol || user?.currency_data?.symbol || '';\n\n\tconst [itemsData, setItemsData] = useState<IItemsSummary>({\n\t\ttotalQuantity: 0,\n\t\ttotal: 0,\n\t\tcurrencySymbol: defaultCurrencySymbol\n\t});\n\tconst [discountData, setDiscountData] = useState<IDiscountSummary>({\n\t\titemDiscount: 0,\n\t\tadditionalDiscount: 0,\n\t\ttotalDiscount: 0,\n\t\tcurrencySymbol: defaultCurrencySymbol\n\t});\n\tconst [subtotalData, setSubtotalData] = useState<ISubtotalSummary>({\n\t\tsubtotalExTax: 0,\n\t\tsubtotalExDiscount: 0,\n\t\tcurrencySymbol: defaultCurrencySymbol\n\t});\n\tconst [taxesData, setTaxesData] = useState<ITaxesAndChargesSummary>({\n\t\ttaxes: 0,\n\t\tdeductedTax: 0.0,\n\t\ttotal: 0,\n\t\tshippingAmount: 0,\n\t\thandlingAmount: 0,\n\t\tcurrencySymbol: defaultCurrencySymbol\n\t});\n\tconst [totalData, setTotalData] = useState<ITotalSummary>({\n\t\ttotal: 0,\n\t\troundOffDifferenceAmount: 0,\n\t\tcurrencySymbol: defaultCurrencySymbol\n\t});\n\n\tuseEffect(() => {\n\t\t// debugger;\n\t\tconst eRate = Number(formValues?.exchange_rate) || 1;\n\n\t\tlet {\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\ttotalQuantity,\n\t\t\ttotalDiscount,\n\t\t\ttotalItemsExpenseDiscount,\n\t\t\ttotalTaxAmount,\n\t\t\tadditinoalDiscountAmount,\n\t\t\tfinalAmount,\n\t\t\troundOffDifference,\n\t\t\t\n\t\t} = calculateEntries(\n\t\t\titems,\n\t\t\texpenses,\n\t\t\tformValues?.additional_discount_on,\n\t\t\tformValues?.additional_discount_percentage,\n\t\t\tformValues?.additional_discount_amount,\n\t\t\tformValues?.round_off,\n\t\t\tformValues?.round_off_option\n\t\t);\n\n\t\ttotalDiscount /= eRate;\n\t\tadditinoalDiscountAmount /= eRate;\n\t\ttotalItemsExpenseDiscount /= eRate;\n\t\ttotalTaxAmount /= eRate;\n\t\tfinalAmount /= eRate;\n\t\troundOffDifference /= eRate;\n\t\t\n\t\tconst shippingAmount =\n\t\t\t(Number(formValues?.shipping_cost) || 0) +\n\t\t\t(Number(formValues?.shipping_tax_amount) || 0);\n\t\tconst handlingAmount =\n\t\t\t(Number(formValues?.handling_cost) || 0) +\n\t\t\t(Number(formValues?.handling_tax_amount) || 0);\n\n\t\tconst shippingAmountWithERate = shippingAmount / eRate;\n\t\tconst handlingAmountWithERate = handlingAmount / eRate;\n\t\tconst promotionAmountWithERate = Number(formValues?.promotion_amount || 0) / eRate;\n\t\tfinalAmount = (finalAmount) - promotionAmountWithERate\n const grandTotal = (finalAmount + shippingAmountWithERate + handlingAmountWithERate) - promotionAmountWithERate\n\t\tsetItemsData({\n\t\t\t...itemsData,\n\t\t\ttotalQuantity,\n\t\t\ttotal: finalAmount.toFixed(2),\n\t\t\tcurrencySymbol\n\t\t});\n\t\tsetDiscountData({\n\t\t\t...discountData,\n\t\t\titemDiscount: totalItemsExpenseDiscount.toFixed(2),\n\t\t\tadditionalDiscount: Number(additinoalDiscountAmount).toFixed(2),\n\t\t\ttotalDiscount: (totalDiscount + promotionAmountWithERate).toFixed(2),\n\t\t\tpromotionAmount: promotionAmountWithERate.toFixed(2),\n\t\t\tcurrencySymbol\n\t\t});\n\t\tsetSubtotalData({\n\t\t\t...subtotalData,\n\t\t\tsubtotalExTax: (finalAmount - totalTaxAmount).toFixed(2),\n\t\t\tsubtotalExDiscount: Number(finalAmount + Number(totalDiscount)).toFixed(\n\t\t\t\t2\n\t\t\t),\n\t\t\tcurrencySymbol\n\t\t});\n\n\t\tsetTaxesData({\n\t\t\t...taxesData,\n\t\t\ttaxes: totalTaxAmount.toFixed(2),\n\t\t\ttotal: totalTaxAmount.toFixed(2),\n\t\t\tshippingAmount: shippingAmountWithERate.toFixed(2),\n\t\t\thandlingAmount: handlingAmountWithERate.toFixed(2),\n\t\t\tcurrencySymbol\n\t\t});\n\t\tsetTotalData({\n\t\t\t...totalData,\n\t\t\ttotal: grandTotal.toFixed(2),\n\t\t\troundOffDifferenceAmount: roundOffDifference.toFixed(2),\n\t\t\tcurrencySymbol,\n\t\t});\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [\n\t\titems,\n\t\tformValues?.additional_discount_amount,\n\t\tformValues?.additional_discount_on,\n\t\tformValues?.additional_discount_percentage,\n\t\tformValues?.currency_id,\n\t\tformValues?.round_off,\n\t\tformValues?.round_off_option,\n\t\tformValues?.shipping_cost,\n\t\tformValues?.shipping_tax_amount,\n\t\tformValues?.handling_cost,\n\t\tformValues?.handling_tax_amount,\n\t\tformValues?.promotion_amount,\n\t\tformValues?.exchange_rate,\n\t\tformValues?.currency_data,\n\t\tdefaultCurrencySymbol\n\t]);\n\n\treturn (\n\t\t<Box className='addPurchaseInvoice--RightContainer'>\n\t\t\t<ItemsSummary data={itemsData} />\n\t\t\t<DiscountSummary\n\t\t\t\tdata={discountData}\n\t\t\t\tenalblePromotions={enalblePromotions}\n\t\t\t/>\n\t\t\t<SubtotalSummary data={subtotalData} />\n\t\t\t<TaxesAndChargesSummary\n\t\t\t\tdata={taxesData}\n\t\t\t\tenableShippings={enableShippings}\n\t\t\t/>\n\t\t\t<TotalSummary data={totalData} />\n\t\t</Box>\n\t);\n};\n\nexport default CalculationSummary;\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport { useState } from \"react\";\n\nimport FullCalendar from \"@fullcalendar/react\";\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport listPlugin from \"@fullcalendar/list\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport resourceTimeGridPlugin from \"@fullcalendar/resource-timegrid\";\nimport timelinePlugin from \"@fullcalendar/timeline\";\nimport resourceTimelinePlugin from \"@fullcalendar/resource-timeline\";\n\nimport \"./calendar.scss\";\n\n// import \"@fullcalendar/core/main.css\";\n// import \"@fullcalendar/daygrid/main.css\";\n\nexport const CalendarWrapper = (props: any) => {\n // const calendarComponentRef = React.createRef();\n\n const [data, setData] = useState(props.data);\n const handleDateClick = (arg: any) => {\n alert(arg.dateStr);\n };\n\n\n const handleSelectedDates = (info: any) => {\n alert(\"selected \" + info.startStr + \" to \" + info.endStr);\n const title = prompt(\"What's the name of the title\");\n if (title != null) {\n const newEvent = {\n title,\n start: info.startStr,\n end: info.endStr,\n };\n const events = [...data.events, newEvent];\n setData({ events: events });\n }\n };\n\n return (\n <div className=\"calendar-wrapper\">\n <FullCalendar\n eventContent={props?.renderEventContent}\n schedulerLicenseKey=\"GPL-My-Project-Is-Open-Source\"\n // ref={calendarComponentRef}\n initialView=\"dayGridMonth\" // timeGridWeek, listWeek, dayGridWeek, dayGridMonth, resourceTimeline, resourceTimeGridDay, timelineWeek\n // dateClick={handleDateClick}\n droppable={true}\n displayEventTime={true}\n headerToolbar={{\n left: \"title\",\n right: \"prev,next,today\",\n // center: \"dayGridMonth,timeGridWeek,timeGridDay,listWeek\",\n }}\n buttonText={{\n today: 'Today' // Custom label with \"T\" capitalized\n }}\n selectable={true}\n plugins={[\n dayGridPlugin,\n interactionPlugin,\n timeGridPlugin,\n resourceTimeGridPlugin,\n timelinePlugin,\n listPlugin,\n resourceTimelinePlugin,\n ]}\n eventClick={(event) => {\n }}\n events={data.events}\n select={props?.handleSelectedDates}\n // eventLimit={2}\n dayMaxEvents={2}\n showNonCurrentDates={false}\n height=\"75vh\"\n eventColor={\"#\" + Math.floor(Math.random() * 16777215).toString(16)}\n />\n </div>\n );\n};\n\nexport default CalendarWrapper;\n","import { Box } from \"@mui/material\";\nimport \"./card-wrapper.scss\";\nimport React from \"react\";\n\ninterface CardWrapperPropsType {\n children: React.ReactNode;\n}\n\nconst CardWrapper = ({ children, ...rest }: CardWrapperPropsType) => {\n return (\n <Box className=\"card-wrapper\" {...rest}>\n {children}\n </Box>\n );\n};\n\nexport { CardWrapper };\nexport default CardWrapper;\n","import { useState } from \"react\";\nimport Modal from \"../modal/modal\";\nimport { useForm } from \"react-hook-form\";\nimport { LoginFormValues } from \"../../contexts/AuthContext\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport * as Yup from \"yup\";\nimport { useAuth } from \"../../hooks/useAuth\";\nimport { styled } from '@mui/material/styles';\nimport Box from \"@mui/material/Box\";\nimport Typography from \"../typography/typography\";\nimport DynamicInput from \"../form-control/form-builder/form-builder-element/text\";\nimport { Eye, EyeOff } from \"../icons\";\nimport Button from \"../button/button\";\nimport Toast from \"../toast/toast\";\nimport { Checkbox, FormControlLabel } from \"@mui/material\";\n\n\nconst validationSchema = Yup.object({\n login: Yup.object({\n password: Yup.string()\n .required(\"Please enter password\")\n .min(8, \"Password must be at least 8 characters\")\n .matches(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .matches(/[!@#$%^&*(),.?\":{}|<>]/, \"Password must contain at least one special character\"),\n }),\n});\n\n\n\nconst ChangeUserPasswordModal = ({showModal, setShowModal, userId}) => {\n const { changeUserPasswordByAdmin } = useAuth();\n const [isNotify, setIsNotify] = useState(false);\n const [toast, setToast] = useState<IToast | null>(null);\n\n interface FormValeus {\n login: LoginFormValues;\n }\n\n const { control, handleSubmit, reset, trigger } = useForm<FormValeus>({\n resolver: yupResolver(validationSchema),\n mode: \"all\",\n });\n\n const onSubmit = async (values: FormValeus) => {\n const isValid = await trigger();\n if (!isValid) return;\n values.login.id = userId;\n values.login.isNotify = isNotify;\n await changeUserPasswordByAdmin(values.login, (message, type) => {\n if (type) {\n setToast({ message: message, type: \"normal\" });\n setShowModal(false);\n reset({\n login: {\n password: \"\",\n id: \"\",\n isNotify: false\n },\n });\n } else {\n setToast({ message: message, type: \"alert\" });\n }\n });\n return values; \n };\n\n const [showPassword, setShowPassword] = useState<boolean>(false);\n const handleShowPassword = () => setShowPassword(!showPassword);\n\n const FlexBox = styled(Box)(() => ({\n display: \"flex\",\n flexDirection: \"column\",\n }));\n\n return (\n <>\n <Modal \n open={showModal}\n onClose={() => setShowModal(false)} \n children={\n <>\n <form onSubmit={handleSubmit(onSubmit)}>\n <FlexBox gap={4} className=\"popup-change-pass\">\n <FlexBox gap={2}>\n <Box>\n <Typography\n align=\"center\"\n type=\"h1\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n Change Password\n </Typography>\n </Box>\n <FlexBox gap={2}>\n <Box>\n <DynamicInput\n formControl={control}\n label=\"Enter New Password\"\n name=\"password\"\n type={showPassword ? \"text\" : \"password\"}\n placeholder=\"Enter New Password\"\n fieldArrayName=\"login\"\n endIcon={\n <>\n {showPassword ? (\n <Eye fontSize=\"small\" htmlColor=\"#292D32\" />\n ) : (\n <EyeOff fontSize=\"small\" htmlColor=\"#292D32\" />\n )}\n </>\n }\n onIconClick={handleShowPassword}\n />\n </Box>\n <Box>\n <FormControlLabel control={<Checkbox size=\"small\" onChange={(e) => setIsNotify(e.target.checked)} sx={{\n '&.Mui-checked': {\n color: '#2EB273',\n },\n }} />} label=\"Notify User of Password Change\" sx={{ \n '& .MuiFormControlLabel-label': {\n fontSize: '14px',\n },\n }}/>\n </Box>\n </FlexBox>\n </FlexBox>\n <FlexBox gap={2}>\n <Button type=\"button\" onClick={handleSubmit(onSubmit)} size=\"large\" variant=\"contained\">\n Change Password\n </Button>\n </FlexBox>\n </FlexBox>\n </form> \n </>\n }\n />\n <Toast\n open={Boolean(toast)}\n message={toast?.message}\n type={toast?.type}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\n autoHideDuration={3000}\n />\n </>\n );\n}\n\nexport { ChangeUserPasswordModal };\nexport default ChangeUserPasswordModal;","import { styled } from '@mui/material/styles';\nimport ReactFlagsSelect from \"react-flags-select\";\nimport Typography from \"../typography/typography\";\nimport images from \"../../assets/images\";\n\ninterface ICountrySelect {\n country: string;\n handleCountry: (country: string) => void;\n}\n\nconst StyledFlagsSelect = styled(ReactFlagsSelect)(\n ({ theme: { palette } }) => ({\n \".country-button\": {\n span: {\n fontSize: \"0.875rem\",\n },\n svg: {\n fontSize: \"1.25rem\",\n },\n padding: \"0.2rem 0.5rem 0.2rem 0rem\",\n borderRadius: \".25rem\",\n border: \"1px solid #D3D3D4\",\n },\n\n ul: {\n input: {\n padding: \"0.5rem\",\n borderRadius: \"0.5rem\",\n fontSize: \"0.8125rem\",\n margin: \"0px 0.75rem\",\n border: `1px solid ${palette.theme?.secondary[200]}`,\n background: `url(${images.search}) no-repeat scroll 0.5rem 0.5rem`,\n paddingLeft: \"2rem\",\n backgroundRepeat: \"no-repeat\",\n backgroundColor: `${palette.theme?.secondary[100]}`,\n },\n li: {\n fontSize: \"0.8125rem\",\n padding: \"0.5rem 1rem\",\n },\n boxShadow:\n \"0px 0px 2px 0px #E0E0E0, 0px 1px 4px -2px rgba(24, 39, 75, 0.02), 0px 4px 4px -2px rgba(24, 39, 75, 0.06)\",\n borderRadius: \"0.5rem\",\n marginTop: \"0.25rem\",\n border: \"none\",\n\n div: {\n borderBottom: `1px solid ${palette.theme?.secondary[200]}`,\n paddingBottom: \"0.5rem\",\n },\n },\n }),\n);\n\nconst CountrySelect = ({ country, handleCountry }: ICountrySelect) => {\n return (\n <>\n <Typography type=\"s4\" fontWeight={\"medium\"} mb={0.5}>\n Country\n </Typography>\n <StyledFlagsSelect\n fullWidth\n searchable={true}\n searchPlaceholder=\"Search Country\"\n selected={country || \"IN\"}\n selectButtonClassName=\"country-button\"\n onSelect={handleCountry}\n showSelectedLabel={true}\n />\n </>\n );\n};\n\nexport { CountrySelect };\nexport default CountrySelect;\n","import React, { useState } from 'react';\nimport {\n Box,\n styled,\n ButtonBase,\n} from '@mui/material';\n\n// Styled container for the toggle switch\nconst ToggleContainer = styled(Box)(({ theme }) => ({\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n // backgroundColor: theme.palette.grey[300],\n borderRadius: theme.spacing(3),\n padding: theme.spacing(0.5),\n cursor: 'pointer',\n transition: 'all 0.3s ease-in-out',\n minWidth: 'max-content',\n backgroundColor: theme.palette.common.white,\n border: '1px solid',\n borderColor: theme.palette.grey[200],\n '&.disabled': {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n}));\n\n// Styled sliding background\nconst SlidingBackground = styled(Box)(({ theme }) => ({\n position: 'absolute',\n // top: theme.spacing(0.5),\n // bottom: theme.spacing(0.5),\n backgroundColor: theme.palette.theme.primary[100],\n borderRadius: theme.spacing(2.5),\n transition: 'all 0.3s ease-in-out',\n top:0,\n bottom: 0,\n zIndex: 1,\n}));\n\n// Styled text label\nconst ToggleLabel = styled(ButtonBase)(({ theme, active }) => ({\n position: 'relative',\n zIndex: 2,\n padding: theme.spacing(1, 1.5),\n borderRadius: theme.spacing(2.5),\n fontSize: '0.75rem',\n fontWeight: 500,\n whiteSpace: 'nowrap',\n userSelect: 'none',\n transition: 'color 0.3s ease-in-out',\n color: active ? theme.palette.primary.main : theme.palette.grey[600],\n '&:hover:not(.disabled)': {\n color: active ? theme.palette.primary.main : theme.palette.grey[800],\n },\n '&.disabled': {\n cursor: 'not-allowed',\n },\n}));\n\n// Main dynamic toggle switch component\nconst CustomToggleSwitch = ({\n leftLabel = \"Collapse All\",\n rightLabel = \"Expand All\",\n defaultChecked = false,\n onChange,\n disabled = false,\n sx = {},\n ...props\n}) => {\n const [checked, setChecked] = useState(defaultChecked);\n\n const handleChange = (newValue) => {\n if (disabled) return;\n setChecked(newValue);\n if (onChange) {\n onChange(newValue, newValue ? rightLabel : leftLabel);\n }\n };\n\n const handleTextClick = (isRightLabel) => {\n if (disabled) return;\n const newValue = isRightLabel;\n handleChange(newValue);\n };\n\n return (\n <ToggleContainer\n className={disabled ? 'disabled' : ''}\n sx={sx}\n {...props}\n >\n {/* Sliding background */}\n <SlidingBackground\n sx={{\n left: checked ? '50%' : 0,\n right: checked ? 0 : '50%',\n }}\n />\n \n {/* Left label */}\n <ToggleLabel\n active={!checked}\n className={disabled ? 'disabled' : ''}\n onClick={() => handleTextClick(false)}\n disableRipple={true}\n disabled={disabled}\n >\n {leftLabel}\n </ToggleLabel>\n \n {/* Right label */}\n <ToggleLabel\n active={checked}\n className={disabled ? 'disabled' : ''}\n onClick={() => handleTextClick(true)}\n disableRipple={true}\n disabled={disabled}\n >\n {rightLabel}\n </ToggleLabel>\n </ToggleContainer>\n );\n};\n\nexport { CustomToggleSwitch };\nexport default CustomToggleSwitch","import { Box } from \"@mui/material\"\nimport './dashboard.scss'\nimport Typography from \"../typography/typography\"\nimport logo from '../../assets/images'\ninterface Iprops {\n title?: string,\n value?: string | number\n}\nfunction DashBoardCard(props: Iprops) {\n const { title, value } = props\n return (\n <>\n <Box className='card-class'>\n <Box p={2} sx={{ display: 'flex', flexDirection: 'column', border: '1px solid', borderRadius: '8px', gap: 1, borderColor: '#EEEFF1' }}>\n <Box className='dashboard-card-icon'>\n <img src={logo.ArrowCircleUpIcon} />\n\n </Box>\n <Typography type=\"s5\" weight=\"normal\" color=\"theme.neutral.800\">{title}</Typography>\n <Typography type=\"h2\" weight=\"bold\" color=\"theme.neutral.1000\">{value}</Typography>\n </Box>\n </Box>\n </>\n )\n}\n\n\nexport { DashBoardCard };\nexport default DashBoardCard","\nimport Typography from \"../typography/typography\";\nimport Chip from \"../chip/chip\";\nimport images from '../../assets/images';\nimport { useState } from \"react\";\nimport { IconButton, MenuItem } from '@mui/material';\nimport Menu from '../menu/menu';\nimport { useTranslation } from 'react-i18next';\nconst DashBoardHeader = ({ title, customElement, showEdit = true, showDropDowan = true }) => {\n const { t } = useTranslation();\n //Local State\n const [isEditingMode, setIsEditingMode] = useState<boolean>(false);\n const [anchorMoreEl, setAnchorMoreEl] = useState<\n null | (EventTarget & HTMLButtonElement)\n >(null);\n\n\n\n\n const handleMoreIconClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorMoreEl(event.currentTarget);\n };\n\n const handleMoreIconClose = () => {\n setAnchorMoreEl(null);\n };\n\n // const handleConfirm = () => {\n // setIsDiscardModalOpen(false);\n // setIsEditingMode(false);\n // };\n\n // const handleSaveChange = (event: SelectChangeEvent<unknown>) => {\n // setIsEditingMode(false);\n // };\n return (\n <div>\n <div className='header-title'>\n <Typography type='h3' weight={'medium'} color={'theme.secondary.1000'}>\n {title}\n </Typography>\n <div className='header-right-wrap'>\n\n {customElement}\n {showEdit && <Chip\n type='normal'\n label={isEditingMode ? t('manufacturing.dashboard.editing_dashboard_mode_label') : t('manufacturing.dashboard.edit_layout_mode_label')}\n className={`${isEditingMode ? 'edit-box' : 'edit-box edit-box--InActive'\n }`}\n icon={\n <img\n src={isEditingMode ? images.common.editIcon : images.edit}\n alt={t('common.edit')}\n />\n }\n onClick={() => setIsEditingMode(true)}\n active={isEditingMode}\n />\n }\n {\n showDropDowan && <div>\n <IconButton\n color='inherit'\n size='small'\n onClick={handleMoreIconClick}>\n <img src={images.more} alt={t('manufacturing.dashboard.more_icon_label')} />\n </IconButton>\n <Menu\n anchorEl={anchorMoreEl}\n open={Boolean(anchorMoreEl)}\n onClose={handleMoreIconClose}\n className='dropdown-inner calender-drp'>\n <MenuItem onClick={handleMoreIconClose}>{t('common.export')}</MenuItem>\n </Menu>\n </div>\n }\n </div>\n </div>\n </div>\n );\n};\n\nexport { DashBoardHeader };\nexport default DashBoardHeader;\n","import React, { useState, ReactNode, useEffect, useMemo } from 'react';\nimport { \n Grid, \n IconButton, \n Collapse, \n useTheme, \n useMediaQuery,\n Tooltip,\n Box,\n Drawer\n} from '@mui/material';\nimport { \n ChevronLeft, \n ChevronRight,\n Close,\n // Close\n} from '@mui/icons-material';\nimport { useLanguage } from '../../hooks/useLangauge';\n\nexport interface ExpandableSummaryWrapperProps {\n children: ReactNode;\n defaultExpanded?: boolean;\n expandedGridSize?: number; // Grid size when expanded (1-12)\n collapsedGridSize?: number; // Grid size when collapsed (0-2)\n className?: string;\n ariaLabel?: string;\n onToggle?: (isExpanded: boolean, newGridSize: number) => void;\n persistState?: boolean;\n storageKey?: string;\n showToggleButton?: boolean;\n mobileDrawer?: boolean; // Use drawer on mobile instead of grid\n showCollapseIcon?: boolean; // Show collapse icon at top of summary\n}\n\nconst ExpandableSummaryWrapper: React.FC<ExpandableSummaryWrapperProps> = ({\n children,\n defaultExpanded = true,\n expandedGridSize = 3,\n collapsedGridSize = 0,\n className = '',\n ariaLabel = 'Toggle summary panel',\n onToggle,\n persistState = false,\n storageKey = 'grid-summary-panel-state',\n showToggleButton = true,\n mobileDrawer = true,\n showCollapseIcon = true\n}) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\nconst {currentLanguage}=useLanguage();\n const isRtl=useMemo(()=>currentLanguage?.direction===\"rtl\",[currentLanguage])\n // Initialize state with localStorage if persistState is enabled\n const getInitialState = () => {\n if (persistState && typeof window !== 'undefined') {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : defaultExpanded;\n }\n return defaultExpanded;\n };\n\n const [isExpanded, setIsExpanded] = useState<boolean>(getInitialState);\n // Add this state to your component\n const [showAfterDelay, setShowAfterDelay] = useState(false);\n\n // Add this useEffect\n useEffect(() => {\n if(!isExpanded) {\n setShowAfterDelay(false)\n return\n }\n const timer = setTimeout(() => {\n setShowAfterDelay(true);\n }, 250);\n\n return () => clearTimeout(timer);\n }, [isExpanded]);\n\n const handleToggle = () => {\n const newState = !isExpanded;\n const newGridSize = newState ? expandedGridSize : collapsedGridSize;\n setIsExpanded(newState);\n \n // Persist state if enabled\n if (persistState && typeof window !== 'undefined') {\n localStorage.setItem(storageKey, JSON.stringify(newState));\n }\n \n // Call external toggle handler with new grid size\n onToggle?.(newState, newGridSize);\n };\n\n const currentGridSize = isExpanded ? expandedGridSize : collapsedGridSize;\n\n // Mobile drawer implementation\n if (isMobile && mobileDrawer) {\n return (\n <>\n {/* Mobile Toggle Button */}\n {showToggleButton && (\n <IconButton\n onClick={handleToggle}\n sx={{\n position: 'fixed',\n top: '50%',\n [isRtl ? 'left' : 'right']: 0,\n zIndex: theme.zIndex.fab,\n bgcolor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: '8px 0 0 8px',\n '&:hover': {\n bgcolor: theme.palette.action.hover,\n },\n }}\n aria-label={ariaLabel}\n >\n <ChevronLeft />\n </IconButton>\n )}\n\n {/* Mobile Drawer */}\n <Drawer\n anchor=\"right\"\n open={isExpanded}\n onClose={handleToggle}\n sx={(theme) => ({\n '& .MuiDrawer-paper': {\n width: '90vw',\n [theme.breakpoints.up('md')]: {\n maxWidth: '400px',\n marginTop: '65px',\n },\n [theme.breakpoints.up('sm')]: {\n maxWidth: '300px',\n marginTop: '65px',\n },\n [theme.breakpoints.up('xs')]: {\n maxWidth: '200px',\n marginTop: '56px',\n }\n },\n })}\n >\n {children}\n </Drawer>\n </>\n );\n }\n\n // Desktop/Tablet Grid implementation\n return (\n <Grid \n item \n xs={currentGridSize} \n sx={{\n position: 'relative',\n transition: theme.transitions.create(['flex-basis', 'max-width'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n overflow: 'visible', // Changed from 'hidden' to allow button outside\n minHeight: '100%',\n // Ensure grid item is visible even when size is 0\n display: currentGridSize === 0 ? 'block' : 'block',\n minWidth: currentGridSize === 0 ? 0 : 'auto',\n }}\n className={className}\n >\n {/* Alternative toggle button for completely collapsed state */}\n {(showToggleButton && !isExpanded) && (\n <Tooltip title=\"Expand summary\" placement=\"left\">\n <IconButton\n onClick={handleToggle}\n sx={{\n position: 'fixed',\n top: '20%',\n [isRtl ? 'left' : 'right']: 0,\n width:'30px',\n zIndex: theme.zIndex.fab,\n bgcolor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: '8px 0 0 8px',\n '&:hover': {\n bgcolor: theme.palette.action.hover,\n },\n }}\n aria-label=\"Expand summary panel\"\n >\n {!isExpanded ? <ChevronLeft /> : <ChevronRight />}\n </IconButton>\n </Tooltip>\n )}\n\n {/* Content Container */}\n {(currentGridSize > 0 && showAfterDelay) && (\n <Box\n sx={{\n height: '100%',\n width: '100%',\n overflow: 'visible',\n display: 'flex',\n flexDirection: 'column',\n bgcolor: theme.palette.background.paper,\n borderLeft: `1px solid ${theme.palette.divider}`,\n borderRadius: '8px 0 0 8px',\n position: 'relative',\n }}\n >\n {/* Fixed Collapse Icon at Top of Summary */}\n {showCollapseIcon && isExpanded && (\n <Tooltip title=\"Close summary\" placement=\"left\">\n <IconButton\n onClick={handleToggle}\n size='small'\n sx={{\n position: 'absolute',\n top: '-15px',\n [isRtl ? 'right' : 'left']: '-15px',\n zIndex: 1200,\n bgcolor: theme.palette.background.paper,\n border: `1px solid ${theme.palette.divider}`,\n borderRadius: '50%',\n '&:hover': {\n bgcolor: '#fff',\n },\n boxShadow: 'none',\n }}\n >\n <Close sx={{ fontSize: 14 }} />\n </IconButton>\n </Tooltip>\n )}\n\n <Collapse \n in={isExpanded} \n orientation=\"horizontal\" \n sx={{ \n height: '100%',\n '& .MuiCollapse-wrapperInner': {\n height: '100%',\n width: '100%',\n },\n width: '100%',\n }}\n >\n <Box sx={{ \n width: '100%', \n height: '100%', \n overflow: 'auto',\n minWidth: 0,\n // pt: showCollapseIcon ? 6 : 0, // Add padding top when collapse icon is shown\n }}>\n {children}\n </Box>\n </Collapse>\n\n {/* Collapsed State Indicator for partial collapse */}\n {!isExpanded && (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n width: '100%',\n color: theme.palette.text.secondary,\n cursor: 'pointer',\n }}\n onClick={handleToggle}\n >\n <Box\n sx={{\n writingMode: 'vertical-lr',\n textOrientation: 'mixed',\n fontSize: '0.875rem',\n fontWeight: 500,\n letterSpacing: '0.1em',\n }}\n >\n SUMMARY\n </Box>\n </Box>\n )}\n </Box>\n )}\n </Grid>\n );\n};\n\nexport default ExpandableSummaryWrapper;\n","/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { useState, useCallback, useMemo } from 'react';\nimport { Grid, GridProps, useMediaQuery, useTheme } from '@mui/material';\nimport ExpandableSummaryWrapper, { ExpandableSummaryWrapperProps } from '../expandable-summary-wrapper/expandable-summary-wrapper';\n// import { ExpandableSummaryWrapper, ExpandableSummaryWrapperProps } from './ExpandableSummaryWrapper';\n\ninterface DynamicLayoutWrapperProps {\n // Main content props\n children: React.ReactNode;\n mainContentProps?: Omit<GridProps, 'item' | 'xs'>;\n \n // Summary wrapper props\n summaryContent: React.ReactNode;\n summaryProps?: Omit<ExpandableSummaryWrapperProps, 'children' | 'onToggle'>;\n \n // Layout configuration\n maxGridSize?: number;\n defaultSummaryExpanded?: boolean;\n expandedSummarySize?: number;\n collapsedSummarySize?: number;\n \n // Container props\n containerProps?: Omit<GridProps, 'container'>;\n \n // Callbacks\n onLayoutChange?: (mainSize: number, summarySize: number, isExpanded: boolean) => void;\n \n // Animation configuration\n enableTransitions?: boolean;\n transitionDuration?: number | string;\n transitionEasing?: string;\n\n storageKey?: string\n}\n\nexport const DynamicLayoutWrapper: React.FC<DynamicLayoutWrapperProps> = ({\n children,\n mainContentProps = {},\n summaryContent,\n summaryProps = {},\n maxGridSize = 12,\n defaultSummaryExpanded = true,\n expandedSummarySize = 3,\n collapsedSummarySize = 0,\n containerProps = {},\n onLayoutChange,\n enableTransitions = true,\n transitionDuration,\n transitionEasing,\n storageKey = 'grid-summary-panel-state',\n}) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n const getInitialState = useCallback(() => {\n if (typeof window !== 'undefined') {\n const stored = localStorage.getItem(storageKey);\n return stored ? JSON.parse(stored) : defaultSummaryExpanded;\n }\n return defaultSummaryExpanded;\n }, [defaultSummaryExpanded, storageKey]);\n \n // Calculate initial main content size\n const initialMainSize = useMemo(() => {\n return (isMobile || !getInitialState()) ? maxGridSize :(defaultSummaryExpanded \n ? maxGridSize - expandedSummarySize \n : maxGridSize - collapsedSummarySize);\n }, [isMobile, getInitialState, maxGridSize, defaultSummaryExpanded, expandedSummarySize, collapsedSummarySize]);\n \n const [mainContentSize, setMainContentSize] = useState<number>(initialMainSize);\n \n // Handle summary toggle with enhanced logic\n const handleSummaryToggle = useCallback((isExpanded: boolean, summaryGridSize: number) => {\n if(isMobile) {\n setMainContentSize(maxGridSize);\n return \n }\n const newMainContentSize = Math.max(1, Math.min(maxGridSize - summaryGridSize, maxGridSize));\n \n setMainContentSize(newMainContentSize);\n \n // Notify parent component of layout changes\n onLayoutChange?.(newMainContentSize, summaryGridSize, isExpanded);\n }, [isMobile, maxGridSize, onLayoutChange]);\n \n // Create transition styles\n const transitionStyles = useMemo(() => {\n if (!enableTransitions) return {};\n \n const duration = transitionDuration || theme.transitions.duration.enteringScreen;\n const easing = transitionEasing || theme.transitions.easing.sharp;\n \n return {\n transition: theme.transitions.create(['flex-basis', 'max-width'], {\n easing,\n duration,\n }),\n };\n }, [enableTransitions, theme, transitionDuration, transitionEasing]);\n \n // Merge summary props with defaults\n const mergedSummaryProps: ExpandableSummaryWrapperProps = {\n defaultExpanded: defaultSummaryExpanded,\n expandedGridSize: expandedSummarySize,\n collapsedGridSize: collapsedSummarySize,\n persistState: true,\n ariaLabel: 'Toggle summary panel',\n ...summaryProps,\n onToggle: handleSummaryToggle,\n children: summaryContent,\n storageKey: storageKey\n };\n \n return (\n <Grid container {...containerProps}>\n <Grid\n item\n xs={mainContentSize}\n sx={{\n ...transitionStyles,\n ...mainContentProps.sx,\n }}\n {...mainContentProps}\n >\n {children}\n </Grid>\n \n <ExpandableSummaryWrapper {...mergedSummaryProps} />\n </Grid>\n );\n};\n\n// Enhanced version with additional features\ninterface AdvancedDynamicLayoutWrapperProps extends DynamicLayoutWrapperProps {\n // Responsive breakpoints\n responsiveConfig?: {\n xs?: { expandedSize: number; collapsedSize: number };\n sm?: { expandedSize: number; collapsedSize: number };\n md?: { expandedSize: number; collapsedSize: number };\n lg?: { expandedSize: number; collapsedSize: number };\n xl?: { expandedSize: number; collapsedSize: number };\n };\n \n // Multiple summary panels support\n multipleSummaries?: Array<{\n content: React.ReactNode;\n props?: Omit<ExpandableSummaryWrapperProps, 'children' | 'onToggle'>;\n id: string;\n }>;\n \n // Layout modes\n layoutMode?: 'horizontal' | 'vertical' | 'adaptive';\n \n // Minimum sizes\n minMainContentSize?: number;\n minSummarySize?: number;\n}\n\nexport const AdvancedDynamicLayoutWrapper: React.FC<AdvancedDynamicLayoutWrapperProps> = ({\n multipleSummaries = [],\n layoutMode = 'horizontal',\n minMainContentSize = 4,\n minSummarySize = 2,\n responsiveConfig,\n ...baseProps\n}) => {\n const [summaryStates, setSummaryStates] = useState<Record<string, { size: number; expanded: boolean }>>({});\n \n // Calculate total summary size\n const totalSummarySize = useMemo(() => {\n return Object.values(summaryStates).reduce((total, state) => total + state.size, 0);\n }, [summaryStates]);\n \n // Enhanced toggle handler for multiple summaries\n const handleMultipleSummaryToggle = useCallback((\n summaryId: string,\n isExpanded: boolean,\n summaryGridSize: number\n ) => {\n setSummaryStates(prev => {\n const newStates = {\n ...prev,\n [summaryId]: { size: summaryGridSize, expanded: isExpanded }\n };\n \n const newTotalSize = Object.values(newStates).reduce((total, state) => total + state.size, 0);\n const newMainSize = Math.max(\n minMainContentSize,\n Math.min(baseProps.maxGridSize! - newTotalSize, baseProps.maxGridSize!)\n );\n \n baseProps.onLayoutChange?.(newMainSize, newTotalSize, isExpanded);\n \n return newStates;\n });\n }, [baseProps, minMainContentSize]);\n \n // If multiple summaries are provided, render advanced layout\n if (multipleSummaries.length > 0) {\n const mainSize = Math.max(\n minMainContentSize,\n (baseProps.maxGridSize || 12) - totalSummarySize\n );\n \n return (\n <Grid container {...baseProps.containerProps}>\n <Grid\n item\n xs={mainSize}\n sx={{\n transition: baseProps.enableTransitions ? \n `all ${baseProps.transitionDuration || 300}ms ${baseProps.transitionEasing || 'ease-in-out'}` : \n undefined,\n ...baseProps.mainContentProps?.sx,\n }}\n {...baseProps.mainContentProps}\n >\n {baseProps.children}\n </Grid>\n \n {multipleSummaries.map((summary) => (\n <ExpandableSummaryWrapper\n key={summary.id}\n {...summary.props}\n onToggle={(isExpanded, size) => \n handleMultipleSummaryToggle(summary.id, isExpanded, size)\n }\n >\n {summary.content}\n </ExpandableSummaryWrapper>\n ))}\n </Grid>\n );\n }\n \n // Fallback to basic layout\n return <DynamicLayoutWrapper {...baseProps} />;\n};\n\n// Hook for managing layout state externally\nexport const useDynamicLayout = (\n maxGridSize: number = 12,\n defaultSummaryExpanded: boolean = true,\n expandedSize: number = 3,\n collapsedSize: number = 0\n) => {\n const [isExpanded, setIsExpanded] = useState(defaultSummaryExpanded);\n const [summarySize, setSummarySize] = useState(\n defaultSummaryExpanded ? expandedSize : collapsedSize\n );\n const [mainSize, setMainSize] = useState(\n maxGridSize - (defaultSummaryExpanded ? expandedSize : collapsedSize)\n );\n \n const toggleSummary = useCallback(() => {\n const newExpanded = !isExpanded;\n const newSummarySize = newExpanded ? expandedSize : collapsedSize;\n const newMainSize = maxGridSize - newSummarySize;\n \n setIsExpanded(newExpanded);\n setSummarySize(newSummarySize);\n setMainSize(newMainSize);\n }, [isExpanded, expandedSize, collapsedSize, maxGridSize]);\n \n const setSummaryState = useCallback((expanded: boolean) => {\n const newSummarySize = expanded ? expandedSize : collapsedSize;\n const newMainSize = maxGridSize - newSummarySize;\n \n setIsExpanded(expanded);\n setSummarySize(newSummarySize);\n setMainSize(newMainSize);\n }, [expandedSize, collapsedSize, maxGridSize]);\n \n return {\n isExpanded,\n summarySize,\n mainSize,\n toggleSummary,\n setSummaryState,\n };\n};\n\n// Utility function for calculating optimal sizes\nexport const calculateOptimalSizes = (\n totalSize: number,\n contentRatio: number = 0.75,\n minContentSize: number = 4,\n minSummarySize: number = 2\n) => {\n const idealContentSize = Math.floor(totalSize * contentRatio);\n const idealSummarySize = totalSize - idealContentSize;\n \n const contentSize = Math.max(minContentSize, idealContentSize);\n const summarySize = Math.max(minSummarySize, Math.min(idealSummarySize, totalSize - contentSize));\n \n return {\n contentSize: Math.min(contentSize, totalSize - summarySize),\n summarySize,\n totalUsed: contentSize + summarySize,\n };\n};\n\nexport default DynamicLayoutWrapper;","import {\n\tDialogActions,\n\tDialogContent,\n\tDialogTitle,\n\tIconButton\n} from '@mui/material';\nimport Modal from './modal/modal';\nimport Button from './button/button';\nimport Close from '@mui/icons-material/Close';\nimport Typography from './typography/typography';\nimport { useTranslation } from 'react-i18next';\n\nexport const DynamicModal = ({\n\topen,\n\tonClose,\n\ttitle,\n\tchildren,\n\thandleSaveAction,\n\tbuttons = [],\n\t...rest\n}: {\n\topen: boolean;\n\tonClose: () => void;\n\ttitle: string;\n\tchildren?: React.ReactNode;\n\tbuttons?: any[];\n\thandleSaveAction?: () => void;\n}) => {\n\tconst { t } = useTranslation();\n\tconst actionButtons = buttons.length\n\t\t? [...buttons]\n\t\t: [\n\t\t\t\t{\n\t\t\t\t\tlabel: t('common.cancel'),\n\t\t\t\t\tonClick: onClose,\n\t\t\t\t\tvariant: 'outlined',\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tcolor: 'black !important'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t...(handleSaveAction\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: t('common.save'),\n\t\t\t\t\t\t\t\tonClick: handleSaveAction,\n\t\t\t\t\t\t\t\tvariant: 'contained',\n\t\t\t\t\t\t\t\tcolor: 'primary'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t: [])\n\t\t\t];\n\treturn (\n\t\t<Modal\n\t\t\topen={open}\n\t\t\tonClose={onClose}\n\t\t\taria-labelledby='alert-dialog-title'\n\t\t\taria-describedby='alert-dialog-description'\n\t\t\tfullWidth\n\t\t\t{...rest}>\n\t\t\t<DialogTitle\n\t\t\t\tid='alert-dialog-title'\n\t\t\t\tclassName='itemEntryModal--DialogTitle'>\n\t\t\t\t<Typography type='s3' color='inherit' weight='medium'>\n\t\t\t\t\t{t(title)}\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton onClick={onClose}>\n\t\t\t\t\t<Close fontSize='small' />\n\t\t\t\t</IconButton>\n\t\t\t</DialogTitle>\n\t\t\t<DialogContent>{children}</DialogContent>\n\t\t\t<DialogActions>\n\t\t\t\t{actionButtons.map((button, index) => (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t...button.sx\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tonClick={button.onClick}\n\t\t\t\t\t\tvariant={button.variant}\n\t\t\t\t\t\tcolor={button.color}>\n\t\t\t\t\t\t{button.label}\n\t\t\t\t\t</Button>\n\t\t\t\t))}\n\t\t\t</DialogActions>\n\t\t</Modal>\n\t);\n};\n\nexport default DynamicModal\n","import React, { useEffect, useState } from 'react';\nimport { useParams, useLocation, useNavigate } from 'react-router-dom';\nimport { getEntityId } from '../../utils/navigation-utils';\nimport ErpLoader from '../loaders/erp-loader';\n\ninterface EntityViewWrapperProps<T> {\n /**\n * Function to fetch entity data by ID\n */\n fetchEntity: (id: string) => Promise<T>;\n \n /**\n * Route to navigate to if entity is not found\n */\n fallbackRoute: string;\n \n /**\n * Component to render with entity data\n */\n children: (entity: T) => React.ReactNode;\n \n /**\n * Optional ID field name in location.state (default: 'id')\n */\n idField?: string;\n}\n\n/**\n * A wrapper component that handles fetching entity data using either URL parameters or location state\n * This provides backward compatibility during migration from state-based to URL parameter-based routing\n */\nfunction EntityViewWrapper<T>({\n fetchEntity,\n fallbackRoute,\n children,\n idField = 'id'\n}: EntityViewWrapperProps<T>) {\n const params = useParams();\n const location = useLocation();\n const navigate = useNavigate();\n \n const [entity, setEntity] = useState<T | null>(null);\n const [loading, setLoading] = useState(true);\n \n useEffect(() => {\n const loadEntity = async () => {\n setLoading(true);\n \n // Get entity ID from URL params or location state\n const entityId = getEntityId(params, location, idField);\n \n if (!entityId) {\n // If no ID is found, navigate to fallback route\n navigate(fallbackRoute);\n return;\n }\n \n try {\n // Fetch entity data\n const data = await fetchEntity(entityId);\n setEntity(data);\n } catch (error) {\n console.error('Error fetching entity:', error);\n // If entity is not found, navigate to fallback route\n navigate(fallbackRoute);\n } finally {\n setLoading(false);\n }\n };\n \n loadEntity();\n }, [fetchEntity, params, location, navigate, fallbackRoute, idField]);\n \n if (loading) {\n return <ErpLoader />;\n }\n \n if (!entity) {\n return null;\n }\n \n return <>{children(entity)}</>;\n}\n\nexport default EntityViewWrapper; ","import { Gantt, Task, ViewMode } from \"gantt-task-react\";\nimport \"gantt-task-react/dist/index.css\";\nimport \"./gantt.scss\";\nimport { useState } from \"react\";\nimport useTheme from \"@mui/material/styles/useTheme\";\n\ninterface GanttDataProps {\n data: Task[];\n showList?: boolean;\n progressChange?: boolean;\n dateChange?: boolean;\n}\n\nconst GanttChart = (props: GanttDataProps) => {\n const { data, showList, progressChange, dateChange } = props;\n const theme = useTheme();\n const tasks: Task[] = data;\n const [task, setTask] = useState<Task[]>(tasks);\n\n const taskProgressColor = theme?.palette?.theme?.tertiary6[300];\n const taskBackgroundColor = theme?.palette?.theme?.tertiary6[200];\n const milestoneColor = theme?.palette?.theme?.tertiary4[700];\n const projectProgressColor = theme?.palette?.theme?.tertiary3[400];\n const projectBackgroundColor = theme?.palette?.theme?.tertiary3[300];\n const todayColor = theme?.palette?.theme?.tertiary5[400];\n\n const handleProgressChange = (updatedTask: Task) => {\n if (progressChange) {\n const taskIndex = tasks.findIndex((task) => task.id === updatedTask.id);\n\n const updatedTasks = [...tasks];\n updatedTasks[taskIndex] = updatedTask;\n\n setTask(updatedTasks);\n }\n };\n\n const handleDateChange = (updatedTask: Task) => {\n if (dateChange) {\n const taskIndex = tasks.findIndex((task) => task.id === updatedTask.id);\n\n const updatedTasks = [...tasks];\n updatedTasks[taskIndex] = updatedTask;\n\n setTask(updatedTasks);\n }\n };\n\n const handleExpanderClick = (clickedTask: Task) => {\n setTask((prevTasks: Task[]) =>\n prevTasks.map((task) =>\n task.id === clickedTask.id ? clickedTask : task,\n ),\n );\n };\n\n return (\n <Gantt\n tasks={task}\n viewMode={ViewMode.Day}\n listCellWidth={showList ? \"190px\" : \"\"}\n columnWidth={80}\n barCornerRadius={8}\n fontSize=\"12\"\n fontFamily=\"Inter\"\n onProgressChange={progressChange ? handleProgressChange : undefined}\n onDateChange={dateChange ? handleDateChange : undefined}\n barProgressColor={taskProgressColor}\n barProgressSelectedColor={taskProgressColor}\n barBackgroundColor={taskBackgroundColor}\n barBackgroundSelectedColor={taskBackgroundColor}\n milestoneBackgroundColor={milestoneColor}\n milestoneBackgroundSelectedColor={milestoneColor}\n projectBackgroundColor={projectBackgroundColor}\n projectBackgroundSelectedColor={projectBackgroundColor}\n projectProgressColor={projectProgressColor}\n projectProgressSelectedColor={projectProgressColor}\n todayColor={todayColor}\n onExpanderClick={handleExpanderClick}\n />\n );\n};\n\nexport { GanttChart };\nexport default GanttChart;\n","import Typography from \"../typography/typography\";\nimport { Box } from \"@mui/material\";\nimport \"./grid-fallback.scss\";\nimport logo from '../../assets/images';\n\ninterface GridFallbackProps {\n heading?: string;\n subHeading?: string;\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}\n\nconst GridFallback = (props: GridFallbackProps) => {\n const { heading = '', subHeading = 'No data available', icon = <img src={logo.invoiceFallback} />, children, ...rest } = props;\n return (\n <Box className=\"fallback\" {...rest}>\n {icon}\n <Typography\n type=\"h5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n className=\"fallback--Text\"\n >\n {heading}\n </Typography>\n <Typography\n type=\"s3\"\n weight=\"medium\"\n color=\"theme.secondary.800\"\n className=\"fallback--Text\"\n >\n {subHeading}\n </Typography>\n <div>{children}</div>\n </Box>\n );\n};\n\nexport { GridFallback };\nexport default GridFallback;\n","import \"./hr-line.scss\";\n\nconst HrLine = (props: any) => {\n const { title } = props;\n\n return (\n <div className=\"HrLine\">\n <hr className=\"HrLine--Length\" />\n {title}\n <hr className=\"HrLine--Length\" />\n </div>\n );\n};\n\nexport { HrLine };\nexport default HrLine;\n","import React from \"react\";\nimport Button from \"../../button/button\";\nimport DropdownButton, {\n IDropdownMenuOption,\n} from \"../../dropdown-button/dropdown-button\";\n\nimport './report-buttons.scss'\nimport { ButtonProps, SxProps } from \"@mui/material\";\n\nexport interface IActionButtons {\n title?: string;\n icon?: React.ReactNode;\n btnStyle?: \"WhiteBtn\";\n variant?: \"text\" | \"outlined\" | \"contained\";\n action?: () => void;\n class?: string;\n}\n\nexport interface IReportButtons extends ButtonProps { \n className?: string;\n buttons?: IActionButtons[];\n dropdownMenuButtonData?: {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n options: IDropdownMenuOption[];\n sx?: SxProps;\n } | null;\n toggleCallback?: (e?: boolean) => void;\n zIndex?: number;\n iconPosition: 'start' | 'end';\n}\n\nconst ReportButtons = ({ buttons, dropdownMenuButtonData = null, toggleCallback, className, zIndex = 999, iconPosition = 'start', ...rest }: IReportButtons) => {\n return (\n <div className={className}>\n {buttons?.map((ele) => (\n <Button\n className={\n ele.class\n ? ele.class\n : `wrapper--${ele?.btnStyle}`\n }\n key={ele.title}\n variant={ele.variant ? ele.variant : \"contained\"}\n startIcon={ele.icon ? ele.icon : \"\"}\n onClick={ele.action}\n >\n {ele.title ?? \"\"}\n </Button>\n ))}\n {dropdownMenuButtonData && (\n <div style={{ zIndex }}>\n <DropdownButton\n options={dropdownMenuButtonData.options || []}\n {...(iconPosition === 'start' ? { startIcon: dropdownMenuButtonData.icon } : { endIcon: dropdownMenuButtonData.icon })}\n isMenuThirdItemDisabled={true}\n isOnlyDropDownButton={true}\n variant={\"text\"}\n buttonGroupProps={{\n variant: \"text\",\n }}\n onlyDropDownButtonProps={{\n style: {\n backgroundColor: \"white !important\",\n color: \"black !important\",\n ...dropdownMenuButtonData.sx\n },\n }}\n toggleCallback={toggleCallback}\n {...rest}\n >\n {dropdownMenuButtonData.children}\n </DropdownButton>\n </div>\n )}\n </div>\n );\n};\nexport { ReportButtons };\nexport default ReportButtons;\n","import Button from \"../button/button\";\nimport Typography from \"../typography/typography\";\nimport \"./inventory-reports-title-bar.scss\";\n\nimport TitleDropdownButton from \"../title-dropdown-button/title-dropdown-button\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { generateFields } from \"../../utils/common\";\nimport ReportButtons, { IReportButtons } from \"./report-buttons/report-buttons\";\nimport TabBar, { TabProps } from \"../tabs/tabs\";\nimport { Box, ButtonGroup, ClickAwayListener, Divider, Grow, Menu, MenuItem, Paper, Popper, Button as MuiButton } from \"@mui/material\";\nimport images from \"../../assets/images\";\nimport { enUS } from 'date-fns/locale'; // Import the desired locale\n// import ReportFilter from './component/reportFilter'\nimport {\n handleCompareDateRangeSync as handleCompareDateRange,\n RANGE,\n} from \"../../utils/date-range\";\nimport { DateRange, Calendar } from \"react-date-range\";\nimport \"react-date-range/dist/styles.css\"; // main css file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\nimport dayjs from \"dayjs\";\n// import { fetchOptions } from \"./redux/actionCreator\";\nimport React from \"react\";\nimport HeaderCard from \"../header-card/header-card\";\nimport viewTypes from \"../../constants/action-bar\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport SearchableSelect from \"../searchable-select\";\nimport { Filter as FilterIcon } from \"../icons\";\n\ninterface IReportFilters {\n company: number;\n start_date: string;\n end_date: string;\n as_of_date: string;\n item_id: string | number;\n warehouse_id: string | number;\n assembly_item_id: number | string;\n bom_id: number | string\n}\n\n/** Descriptor for a custom component injected into the filter row. */\ninterface ICustomFilterComponent {\n /** Unique key used for React reconciliation. */\n key: string;\n /** The ReactNode to render inside the filter bar. */\n component: React.ReactNode;\n}\n\ninterface ActionBarPropsType extends Partial<TabProps>, IReportButtons {\n title: string;\n handleAddButton?: (e?: any) => void;\n isTitleMenu?: boolean;\n titleMenus?: any;\n reportFilterFields?: any[];\n isDateFilterEnabled?: boolean;\n onDateFilterChange?: (data: Partial<IReportFilters>) => void;\n filters?: Partial<IReportFilters>;\n isDateRange?: boolean;\n activeView?: string;\n setActiveView?: (string: string) => void;\n handleSearch?: (string: string) => void;\n showLevelBtn?: boolean;\n handleRowsExpand: () => void;\n handleRowsCollapse: () => void;\n customElement?: React.ReactNode;\n showLeftContent: boolean;\n showAssembluItemsFilter?: boolean;\n showBomFilter: boolean;\n isViewButton?: boolean;\n handleRedirect?: () => void;\n buttonText?: string;\n dataLength: number,\n filterDropDown: any[],\n filterKeys?: any,\n customSelectedFilter?: any[],\n customFilterConfig?: any[],\n /**\n * When `false` the Date chip and the date-range dropdown button are hidden\n * and date-related keys (`start_date`, `end_date`, `as_of_date`) are stripped\n * from every filter payload so they cannot reach the API.\n * Defaults to `true` (backward-compatible).\n */\n showDateFilter?: boolean;\n /**\n * Optional list of custom components to render inside the filter row.\n * Each entry must have a unique `key` and a `component` (ReactNode).\n * They are appended after the standard SearchableSelect filters.\n */\n customFilterComponents?: ICustomFilterComponent[];\n}\n\ntype TDatePickerVal = {\n startDate?: Date;\n endDate?: Date;\n key?: string;\n};\n\nconst customStyle =\n{\n\n '& .MuiOutlinedInput-root': {\n '& fieldset': {\n border: 'none',\n },\n '&:hover fieldset': {\n border: 'none',\n },\n\n '&.Mui-focused fieldset': {\n border: 'none',\n },\n\n },\n}\nconst InventoryReportsTitleBar = (props: ActionBarPropsType) => {\n const {\n title,\n handleAddButton,\n buttons = [],\n dropdownMenuButtonData,\n isTitleMenu = false,\n titleMenus = [],\n reportFilterFields = [],\n toggleCallback,\n tabs,\n activeValue,\n setActiveValue,\n isDateFilterEnabled,\n onDateFilterChange,\n filters = {},\n isDateRange = true,\n activeView = \"\",\n setActiveView,\n handleSearch,\n showLevelBtn = false,\n handleRowsExpand,\n handleRowsCollapse,\n customElement,\n showLeftContent = true,\n // showAssembluItemsFilter = false,\n // showBomFilter = false,\n isViewButton = false,\n handleRedirect,\n buttonText = '',\n dataLength,\n filterDropDown = [],\n filterKeys,\n customFilterConfig = [],\n customSelectedFilter = [],\n /** Hide the date chip and date-range dropdown when false. Defaults to true. */\n showDateFilter = true,\n /** Custom ReactNode components rendered after the standard filters. */\n customFilterComponents = [],\n } = props;\n\n // When `showDateFilter` is false, exclude the 'date' entry from the\n // default selection so the date chip is never active.\n const defaultSelectedFilter = [\n // Only include 'date' when the date field is enabled.\n ...(showDateFilter ? [{ value: 'date' }] : []),\n {\n value: 'location',\n },\n {\n value: 'company',\n },\n ]\n\n const defaultConfig = [\n {\n key: 'company',\n label: 'Search Company',\n placeholder: 'Company',\n apiType: 'company',\n valueKey: filterKeys?.['company'] ? filterKeys['company'] : 'company',\n customFilter: null,\n },\n {\n key: 'assembly_item',\n label: 'Search Assembaly Items',\n placeholder: 'Assembaly Items',\n apiType: 'assemblyItems',\n valueKey: filterKeys?.['assembly_item'] ? filterKeys['assembly_item'] : 'assembly_item_id',\n },\n {\n key: 'item',\n label: 'Search Items',\n placeholder: 'Items',\n apiType: 'reportItems',\n valueKey: filterKeys?.['item'] ? filterKeys['item'] : 'item_id',\n multiple: true\n },\n {\n key: 'location',\n label: 'Search Warehouse Location',\n placeholder: 'Warehouse Location',\n apiType: 'location',\n valueKey: filterKeys?.['location'] ? filterKeys['location'] : 'warehouse_id',\n customFilter: null,\n multiple: true\n\n },\n {\n key: 'bom',\n label: 'Search Bill of Materials',\n placeholder: 'Filter Bill of Materials',\n apiType: 'bom',\n valueKey: filterKeys?.['bom'] ? filterKeys['bom'] : 'bom_id',\n customFilter: null,\n multiple: true\n },\n {\n key: 'work_order',\n label: 'Search Work Order',\n placeholder: ' Work Order',\n apiType: 'workOrder',\n valueKey: filterKeys?.['work_order'] ? filterKeys['work_order'] : 'work_order_id',\n customFilter: null,\n multiple: true\n },\n {\n key: 'routing',\n label: 'Search Routing',\n placeholder: ' Routing',\n apiType: 'routing',\n valueKey: filterKeys?.['routing'] ? filterKeys['routing'] : 'routing_id',\n customFilter: null,\n multiple: true\n },\n {\n key: 'operation',\n label: 'Search Operation',\n placeholder: ' Operation',\n apiType: 'operations',\n valueKey: filterKeys?.['operation'] ? filterKeys['operation'] : 'operation_id',\n customFilter: null,\n multiple: true\n },\n {\n key: 'equipment',\n label: 'Search Equipment',\n placeholder: ' Equipment',\n apiType: 'equipment',\n valueKey: filterKeys?.['equipment'] ? filterKeys['equipment'] : 'equipment_id',\n customFilter: null,\n multiple: true\n },\n {\n key: 'work_center',\n label: 'Search Work Center',\n placeholder: ' Work Center',\n apiType: 'workCenter',\n valueKey: filterKeys?.['work_center'] ? filterKeys['work_center'] : 'work_center_id',\n customFilter: null,\n multiple: true\n },\n\n ]\n const filtersConfig = useMemo(() => {\n return [...defaultConfig, ...customFilterConfig]\n }, []);\n const inputStyle =\n {\n border: \"none\",\n \"&.Mui-focused\": {\n borderColor: \"transparent\",\n },\n \"& .MuiOutlinedInput-input\": {\n padding: \"0px\",\n fontSize: \"14px\",\n color: '#289b64'\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n border: \"none\",\n },\n '& .MuiSelect-icon': {\n color: 'green',\n },\n }\n\n\n /**\n * Wraps `onDateFilterChange` to strip date-related keys when\n * `showDateFilter` is false, guaranteeing they never reach the API.\n * Defined before `renderFilter` to avoid temporal dead zone errors.\n */\n const safeOnDateFilterChange = (data: Partial<IReportFilters>) => {\n if (!onDateFilterChange) return;\n if (showDateFilter) {\n onDateFilterChange(data);\n } else {\n // Strip all date fields so they cannot pollute the request payload.\n const { start_date, end_date, as_of_date, ...rest } = data;\n onDateFilterChange(rest as Partial<IReportFilters>);\n }\n };\n\n const renderFilter = ({\n key,\n label,\n placeholder,\n apiType,\n valueKey,\n customFilter,\n multiple = false\n }: any) => {\n if (!showFilter(key)) return null;\n\n return (\n <div className=\"search-filter\" key={key}>\n <SearchableSelect\n labelId={`${key}-label`}\n searchPlaceholder={label}\n value={filters?.[valueKey]}\n onChange={(e) => safeOnDateFilterChange({ [valueKey]: e.target.value } as Partial<IReportFilters>)}\n apiType={apiType}\n multiple={multiple}\n placeholder={placeholder}\n customeFilter={customFilter}\n // CustomDropDownIcon={FilterAltIcon}\n customStyle={customStyle}\n inputStyle={inputStyle}\n />\n </div>\n );\n };\n // const dispatch = useAppDispatch();\n\n const FilterContainer = () => (\n <>\n {filtersConfig.map(renderFilter)}\n {/* Render any custom components injected by the consumer */}\n {customFilterComponents.map(({ key, component }) => (\n <React.Fragment key={key}>{component}</React.Fragment>\n ))}\n </>\n );\n\n\n\n\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const [allFields, setAllFields] = useState<any[]>([]);\n const [dateRange, setDateRange] = useState<keyof typeof RANGE>(\"TODAY\");\n const [open, setOpen] = useState<boolean>(false);\n const [customDate, setCustomDate] = useState<Date>(\n new Date(dayjs(filters?.as_of_date || \"\").format(\"YYYY-MM-DD\"))\n );\n\n const defaultSelected = useMemo(() => {\n return [...defaultSelectedFilter, ...customSelectedFilter]\n }, [])\n const [selectedItems, setSelectedItems] = useState<string[]>(defaultSelected);\n\n const [level, setLevel] = useState<number>(1)\n const [customDateRange, setCustomDateRange] = useState<TDatePickerVal>({\n startDate: new Date(dayjs(filters?.start_date || \"\").format(\"YYYY-MM-DD\")),\n endDate: new Date(dayjs(filters?.end_date || \"\").format(\"YYYY-MM-DD\")),\n key: \"selection\",\n });\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const [actionAnchorEl, setActionAnchorEl] = useState<null | HTMLElement>(\n null\n );\n\n const dateSelectRef = useRef<HTMLDivElement>(null);\n const chipDateSelectRef = useRef<HTMLDivElement>(null);\n\n const handleCloseDatePopper = () => {\n anchorRef.current = null;\n setOpen(false);\n };\n\n const handleDateChange = (range: keyof typeof RANGE) => {\n // Do nothing if the date filter is hidden — guard against programmatic calls.\n if (!showDateFilter) return;\n setDateRange(range);\n if (range === \"CUSTOM\") {\n anchorRef.current = dateSelectRef.current;\n setOpen(true);\n } else {\n const data = handleCompareDateRange({\n range: RANGE[range],\n from: \"\",\n to: \"\",\n });\n safeOnDateFilterChange({\n start_date: data?.from ? data?.from : \"\",\n end_date: data?.to ? data?.to : \"\",\n });\n handleCloseDatePopper();\n }\n };\n\n\n const handleClose = (event: Event) => {\n if (\n anchorRef.current &&\n anchorRef.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n\n handleCloseDatePopper();\n };\n\n const options = [\n {\n label: RANGE.TODAY,\n callback: () => {\n handleDateChange(\"TODAY\");\n },\n },\n {\n label: RANGE.THIS_WEEK,\n callback: () => {\n handleDateChange(\"THIS_WEEK\");\n },\n },\n {\n label: RANGE.THIS_MONTH,\n callback: () => {\n handleDateChange(\"THIS_MONTH\");\n },\n },\n {\n label: RANGE.THIS_QUARTER,\n callback: () => {\n handleDateChange(\"THIS_QUARTER\");\n },\n },\n {\n label: RANGE.THIS_YEAR,\n callback: () => {\n handleDateChange(\"THIS_YEAR\");\n },\n },\n {\n label: RANGE.YESTERDAY,\n callback: () => {\n handleDateChange(\"YESTERDAY\");\n },\n },\n {\n label: RANGE.PREVIOUS_WEEK,\n callback: () => {\n handleDateChange(\"PREVIOUS_WEEK\");\n },\n },\n {\n label: RANGE.PREVIOUS_MONTH,\n callback: () => {\n handleDateChange(\"PREVIOUS_MONTH\");\n },\n },\n {\n label: RANGE.PREVIOUS_QUARTER,\n callback: () => {\n handleDateChange(\"PREVIOUS_QUARTER\");\n },\n },\n {\n label: RANGE.PREVIOUS_YEAR,\n callback: () => {\n handleDateChange(\"PREVIOUS_YEAR\");\n },\n },\n {\n label: RANGE.CUSTOM,\n callback: () => {\n handleDateChange(\"CUSTOM\");\n },\n },\n ];\n\n const isChecked = (value: any) => {\n return selectedItems.some(item => item?.value == value?.value)\n }\n\n const handleFilterPopperSubmit = () => {\n const dateRangeFilter = {\n start_date: dayjs(customDateRange.startDate).format(\"YYYY-MM-DD\"),\n end_date: dayjs(customDateRange.endDate).format(\"YYYY-MM-DD\"),\n };\n const dateFilter = {\n as_of_date: dayjs(customDate).format(\"YYYY-MM-DD\"),\n };\n\n // Use safeOnDateFilterChange so date keys are stripped when showDateFilter is false.\n safeOnDateFilterChange({\n ...(isDateRange ? dateRangeFilter : dateFilter),\n });\n handleCloseDatePopper();\n };\n const handleFilterClose = () => {\n setActionAnchorEl(null);\n };\n const handleSelectChange = (value: any) => {\n if (selectedItems.some((item) => item.value == value.value)) {\n setSelectedItems(selectedItems.filter((item) => item?.value != value.value));\n return;\n }\n setSelectedItems([...selectedItems, value]);\n };\n function showFilter(val) {\n return selectedItems.some(item => item?.value == val)\n }\n const filterDropDownFunc = () => {\n return (\n <Menu\n anchorEl={actionAnchorEl}\n open={Boolean(actionAnchorEl)}\n onClose={handleFilterClose}\n >\n {/* <MenuItem className=\"inventoryReportsTitleBar--report-filter\"> */}\n {/* Add your options here */}\n {filterDropDown?.map((item) => (\n <MenuItem onClick={() => handleSelectChange(item)} key={item} value={item?.value}>\n <Checkbox checked={isChecked(item)} />\n <Typography sx={{ marginLeft: '10px' }} color='theme.neutral.800' type='s3'>{item?.name}</Typography>\n </MenuItem>\n ))}\n {/* </MenuItem> */}\n </Menu>\n );\n };\n useEffect(() => {\n setCustomDate(\n new Date(dayjs(filters?.as_of_date || \"\").format(\"YYYY-MM-DD\"))\n );\n }, [filters?.as_of_date]);\n\n useEffect(() => {\n setCustomDateRange({\n ...customDateRange,\n startDate: new Date(\n dayjs(filters?.start_date || \"\").format(\"YYYY-MM-DD\")\n ),\n endDate: new Date(dayjs(filters?.end_date || \"\").format(\"YYYY-MM-DD\")),\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters?.end_date, filters?.start_date]);\n\n useEffect(() => {\n if (open) {\n if (isDateRange) {\n setCustomDateRange({\n ...customDateRange,\n startDate: new Date(\n dayjs(filters?.start_date || \"\").format(\"YYYY-MM-DD\")\n ),\n endDate: new Date(\n dayjs(filters?.end_date || \"\").format(\"YYYY-MM-DD\")\n ),\n });\n } else {\n setCustomDate(\n new Date(dayjs(filters?.as_of_date || \"\").format(\"YYYY-MM-DD\"))\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, isDateRange]);\n\n // useEffect(() => {\n // // dispatch(fetchOptions());\n // if (showBomFilter) {\n // dispatch(fetchBom())\n // }\n // // eslint-disable-next-line react-hooks/exhaustive-deps\n // }, []);\n\n useEffect(() => {\n setAllFields(generateFields(reportFilterFields));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [reportFilterFields]);\n\n return (\n <div>\n <div className=\"inventoryReportsTitleBar\">\n {showLeftContent && <div className=\"inventoryReportsTitleBar--LeftContent\">\n {isTitleMenu ? (\n <div style={{ zIndex: 999 }}>\n <TitleDropdownButton\n onClick={handleAddButton}\n options={titleMenus}\n isMenuThirdItemDisabled={true}\n >\n {title}\n </TitleDropdownButton>\n </div>\n ) : (\n <Typography type=\"h3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {title}\n </Typography>\n )}\n {[\n { label: viewTypes.TABLE, position: 1 },\n { label: viewTypes.CHART, position: 2 },\n ]\n .map((ele) => ele)\n .sort((a, b) => a.position - b.position)\n .map((item) => (\n <HeaderCard\n key={item?.position}\n title={item?.label}\n active={activeView}\n onClick={() => setActiveView?.(item.label)}\n />\n ))}\n\n </div>}\n {isViewButton &&\n <div className=\"inventoryReportsTitleBar--ExtraButtonUi\">\n <Button onClick={handleRedirect} >{buttonText}</Button>\n </div>\n }\n <ReportButtons\n zIndex={999}\n className=\"inventoryReportsTitleBar--RightContent\"\n buttons={buttons}\n dropdownMenuButtonData={dropdownMenuButtonData}\n toggleCallback={toggleCallback}\n variant={\"contained\"}\n iconPosition=\"end\"\n />\n {customElement && <Box >\n {customElement}\n </Box>}\n\n </div>\n <Divider sx={{ mb: 2, mx: 1, borderColor: 'grey.200' }} />\n\n {tabs?.length ? (\n <div>\n <TabBar\n tabs={tabs || []}\n activeValue={activeValue}\n setActiveValue={setActiveValue}\n />\n </div>\n ) : null}\n <Box\n sx={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: 1,\n flexWrap: 'wrap',\n mx: 1\n }}\n >\n <div className=\"inventoryReportsTitleBar--FilterWrapper\">\n\n {/* Date range chip — hidden when showDateFilter is false */}\n {showDateFilter && showFilter('date') && isDateRange && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip\"\n ref={chipDateSelectRef}\n onClick={() => {\n if (!open) {\n anchorRef.current = chipDateSelectRef.current;\n setOpen(true);\n } else {\n handleCloseDatePopper();\n }\n }}\n >\n <div\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(filters?.start_date).format(\"DD/MM/YYYY\")} - ${dayjs(filters?.end_date).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n Date Range:\n </Typography>\n <Typography\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(filters?.start_date).format(\"DD/MM/YYYY\")} -{\" \"}\n {dayjs(filters?.end_date).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n <KeyboardArrowDownIcon />\n </div>\n </div>\n )}\n {/* As-of-date chip — hidden when showDateFilter is false */}\n {showDateFilter && showFilter('date') && filters?.as_of_date && !isDateRange && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip\"\n ref={chipDateSelectRef}\n onClick={() => {\n if (!open) {\n anchorRef.current = chipDateSelectRef.current;\n setOpen(true);\n } else {\n handleCloseDatePopper();\n }\n }}\n >\n <div\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(filters?.as_of_date).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n Date:\n </Typography>\n <Typography\n className=\"inventoryReportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(filters?.as_of_date).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n <KeyboardArrowDownIcon />\n </div>\n </div>\n )}\n {FilterContainer()}\n </div>\n\n\n {/* Date-range dropdown button — only shown when both isDateFilterEnabled AND showDateFilter are true */}\n {isDateFilterEnabled && showDateFilter && <div className=\"inventoryReportsTitleBar--FilterAction\">\n (\n <>\n <ReportButtons\n zIndex={997}\n className=\"inventoryReportsTitleBar--RightContent\"\n dropdownMenuButtonData={{\n icon: <img src={images.sidebar.calendar2} />,\n children: (\n <>\n {RANGE[dateRange]}\n <KeyboardArrowDownIcon />\n </>\n ),\n options: options,\n }}\n toggleCallback={toggleCallback}\n />\n <div ref={dateSelectRef}></div>\n </>\n )\n </div>\n }\n <div className=\"inventoryReportsTitleBar--FilterAction\">\n <Button\n sx={({ palette }) => ({\n border: \"1px solid\",\n borderColor: 'grey.200',\n borderRadius: \"50px\",\n color: `${palette.grey[800]} !important`,\n '&:hover': {\n bgcolor: `${palette.grey[200]} !important`,\n }\n })}\n variant=\"text\"\n startIcon={<FilterIcon fontSize=\"small\" />}\n onClick={(event) => setActionAnchorEl(event.currentTarget)}\n >\n Filter\n </Button>\n {showLevelBtn && <Divider flexItem orientation=\"vertical\" sx={{ alignSelf: 'auto' }} />}\n {filterDropDownFunc()}\n {showLevelBtn && (\n <>\n <Box className=\"inventoryReportsTitleBar--FilterAction--lvWrapper\">\n <Typography type=\"s3\" weight=\"medium\" color='grey.800'> Level {level} of {dataLength}</Typography>\n <ButtonGroup variant=\"outlined\" disableElevation sx={({ palette }) => ({\n '& .MuiButton-root': {\n borderColor: `${palette.grey[200]} !important`,\n '&:hover': {\n bgcolor: `${palette.grey[200]} !important`,\n }\n },\n '& .MuiButtonGroup-firstButton': {\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20\n },\n '& .MuiButtonGroup-lastButton': {\n borderTopRightRadius: 20,\n borderBottomRightRadius: 20\n }\n })}>\n <MuiButton onClick={() => {\n setLevel(level == dataLength ? level : level + 1)\n handleRowsCollapse?.(level)\n }}>\n <img src={images.common.expand} />\n </MuiButton>\n <MuiButton onClick={() => {\n setLevel(level != 1 ? level - 1 : 1)\n handleRowsExpand?.(level)\n }}>\n <img src={images.common.collapse} />\n </MuiButton>\n </ButtonGroup>\n </Box>\n </>\n )}\n <SearchBar\n placeholder=\"Search\"\n handleSearch={(val) => handleSearch?.(val)}\n sx={{\n width: \"250px\",\n background: \"#fff !important\",\n border: \"1px solid #F3F2F2 !important\",\n }}\n />\n </div>\n </Box>\n\n <Divider sx={{ my: 2, mx: 1, borderColor: 'grey.200' }} />\n\n <Popper\n sx={{\n zIndex: 9999,\n }}\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n margin: \"0 20px 0 20px\",\n transformOrigin:\n placement === \"bottom\" ? \"center top\" : \"center bottom\",\n }}\n >\n <Paper>\n <ClickAwayListener onClickAway={handleClose}>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n }}\n >\n <div>\n {isDateRange ? (\n <DateRange\n editableDateInputs={true}\n onChange={(item) => setCustomDateRange(item.selection)}\n moveRangeOnFirstSelection={false}\n ranges={[customDateRange]}\n locale={enUS}\n />\n ) : (\n <Calendar\n onChange={(item) => setCustomDate(item)}\n date={customDate}\n locale={enUS}\n />\n )}\n </div>\n <Box sx={{ padding: \"0 12px 12px 0\" }}>\n <Button\n variant=\"contained\"\n sx={{ width: \"fit-content\" }}\n onClick={handleFilterPopperSubmit}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n\n </div>\n );\n};\n\nexport { InventoryReportsTitleBar };\nexport default InventoryReportsTitleBar;\n","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n * @type {React.Context<{} | {expanded: boolean, disabled: boolean, toggle: () => void}>}\n */\nconst AccordionContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n AccordionContext.displayName = 'AccordionContext';\n}\nexport default AccordionContext;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"elementType\", \"ownerState\", \"externalForwardedProps\", \"getSlotOwnerState\", \"internalForwardedProps\"],\n _excluded2 = [\"component\", \"slots\", \"slotProps\"],\n _excluded3 = [\"component\"];\nimport useForkRef from '@mui/utils/useForkRef';\nimport appendOwnerState from '@mui/utils/appendOwnerState';\nimport resolveComponentProps from '@mui/utils/resolveComponentProps';\nimport mergeSlotProps from '@mui/utils/mergeSlotProps';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n const {\n className,\n elementType: initialElementType,\n ownerState,\n externalForwardedProps,\n getSlotOwnerState,\n internalForwardedProps\n } = parameters,\n useSlotPropsParams = _objectWithoutPropertiesLoose(parameters, _excluded);\n const {\n component: rootComponent,\n slots = {\n [name]: undefined\n },\n slotProps = {\n [name]: undefined\n }\n } = externalForwardedProps,\n other = _objectWithoutPropertiesLoose(externalForwardedProps, _excluded2);\n const elementType = slots[name] || initialElementType;\n\n // `slotProps[name]` can be a callback that receives the component's ownerState.\n // `resolvedComponentsProps` is always a plain object.\n const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n const _mergeSlotProps = mergeSlotProps(_extends({\n className\n }, useSlotPropsParams, {\n externalForwardedProps: name === 'root' ? other : undefined,\n externalSlotProps: resolvedComponentsProps\n })),\n {\n props: {\n component: slotComponent\n },\n internalRef\n } = _mergeSlotProps,\n mergedProps = _objectWithoutPropertiesLoose(_mergeSlotProps.props, _excluded3);\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, parameters.ref);\n const slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps) : {};\n const finalOwnerState = _extends({}, ownerState, slotOwnerState);\n const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n const props = appendOwnerState(elementType, _extends({}, name === 'root' && !rootComponent && !slots[name] && internalForwardedProps, name !== 'root' && !slots[name] && internalForwardedProps, mergedProps, LeafComponent && {\n as: LeafComponent\n }, {\n ref\n }), finalOwnerState);\n Object.keys(slotOwnerState).forEach(propName => {\n delete props[propName];\n });\n return [elementType, props];\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionUtilityClass(slot) {\n return generateUtilityClass('MuiAccordion', slot);\n}\nconst accordionClasses = generateUtilityClasses('MuiAccordion', ['root', 'rounded', 'expanded', 'disabled', 'gutters', 'region']);\nexport default accordionClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"defaultExpanded\", \"disabled\", \"disableGutters\", \"expanded\", \"onChange\", \"square\", \"slots\", \"slotProps\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Collapse from '../Collapse';\nimport Paper from '../Paper';\nimport AccordionContext from './AccordionContext';\nimport useControlled from '../utils/useControlled';\nimport useSlot from '../utils/useSlot';\nimport accordionClasses, { getAccordionUtilityClass } from './accordionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n square,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', !square && 'rounded', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n region: ['region']\n };\n return composeClasses(slots, getAccordionUtilityClass, classes);\n};\nconst AccordionRoot = styled(Paper, {\n name: 'MuiAccordion',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${accordionClasses.region}`]: styles.region\n }, styles.root, !ownerState.square && styles.rounded, !ownerState.disableGutters && styles.gutters];\n }\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n position: 'relative',\n transition: theme.transitions.create(['margin'], transition),\n overflowAnchor: 'none',\n // Keep the same scrolling position\n '&::before': {\n position: 'absolute',\n left: 0,\n top: -1,\n right: 0,\n height: 1,\n content: '\"\"',\n opacity: 1,\n backgroundColor: (theme.vars || theme).palette.divider,\n transition: theme.transitions.create(['opacity', 'background-color'], transition)\n },\n '&:first-of-type': {\n '&::before': {\n display: 'none'\n }\n },\n [`&.${accordionClasses.expanded}`]: {\n '&::before': {\n opacity: 0\n },\n '&:first-of-type': {\n marginTop: 0\n },\n '&:last-of-type': {\n marginBottom: 0\n },\n '& + &': {\n '&::before': {\n display: 'none'\n }\n }\n },\n [`&.${accordionClasses.disabled}`]: {\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n }\n };\n}, ({\n theme\n}) => ({\n variants: [{\n props: props => !props.square,\n style: {\n borderRadius: 0,\n '&:first-of-type': {\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius\n },\n '&:last-of-type': {\n borderBottomLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderBottomRightRadius: (theme.vars || theme).shape.borderRadius,\n // Fix a rendering issue on Edge\n '@supports (-ms-ime-align: auto)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n }\n }\n }\n }, {\n props: props => !props.disableGutters,\n style: {\n [`&.${accordionClasses.expanded}`]: {\n margin: '16px 0'\n }\n }\n }]\n}));\nconst Accordion = /*#__PURE__*/React.forwardRef(function Accordion(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAccordion'\n });\n const {\n children: childrenProp,\n className,\n defaultExpanded = false,\n disabled = false,\n disableGutters = false,\n expanded: expandedProp,\n onChange,\n square = false,\n slots = {},\n slotProps = {},\n TransitionComponent: TransitionComponentProp,\n TransitionProps: TransitionPropsProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [expanded, setExpandedState] = useControlled({\n controlled: expandedProp,\n default: defaultExpanded,\n name: 'Accordion',\n state: 'expanded'\n });\n const handleChange = React.useCallback(event => {\n setExpandedState(!expanded);\n if (onChange) {\n onChange(event, !expanded);\n }\n }, [expanded, onChange, setExpandedState]);\n const [summary, ...children] = React.Children.toArray(childrenProp);\n const contextValue = React.useMemo(() => ({\n expanded,\n disabled,\n disableGutters,\n toggle: handleChange\n }), [expanded, disabled, disableGutters, handleChange]);\n const ownerState = _extends({}, props, {\n square,\n disabled,\n disableGutters,\n expanded\n });\n const classes = useUtilityClasses(ownerState);\n const backwardCompatibleSlots = _extends({\n transition: TransitionComponentProp\n }, slots);\n const backwardCompatibleSlotProps = _extends({\n transition: TransitionPropsProp\n }, slotProps);\n const [TransitionSlot, transitionProps] = useSlot('transition', {\n elementType: Collapse,\n externalForwardedProps: {\n slots: backwardCompatibleSlots,\n slotProps: backwardCompatibleSlotProps\n },\n ownerState\n });\n return /*#__PURE__*/_jsxs(AccordionRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState,\n square: square\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionContext.Provider, {\n value: contextValue,\n children: summary\n }), /*#__PURE__*/_jsx(TransitionSlot, _extends({\n in: expanded,\n timeout: \"auto\"\n }, transitionProps, {\n children: /*#__PURE__*/_jsx(\"div\", {\n \"aria-labelledby\": summary.props.id,\n id: summary.props['aria-controls'],\n role: \"region\",\n className: classes.region,\n children: children\n })\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Accordion.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: chainPropTypes(PropTypes.node.isRequired, props => {\n const summary = React.Children.toArray(props.children)[0];\n if (isFragment(summary)) {\n return new Error(\"MUI: The Accordion doesn't accept a Fragment as a child. \" + 'Consider providing an array instead.');\n }\n if (! /*#__PURE__*/React.isValidElement(summary)) {\n return new Error('MUI: Expected the first child of Accordion to be a valid element.');\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, expands the accordion by default.\n * @default false\n */\n defaultExpanded: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, it removes the margin between two expanded accordion items and the increase of height.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, expands the accordion, otherwise collapse it.\n * Setting this prop enables control over the accordion.\n */\n expanded: PropTypes.bool,\n /**\n * Callback fired when the expand/collapse state is changed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {boolean} expanded The `expanded` state of the accordion.\n */\n onChange: PropTypes.func,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n transition: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n transition: PropTypes.elementType\n }),\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @deprecated Use `slots.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n * @deprecated Use `slotProps.transition` instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Accordion;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionSummaryUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionSummary', slot);\n}\nconst accordionSummaryClasses = generateUtilityClasses('MuiAccordionSummary', ['root', 'expanded', 'focusVisible', 'disabled', 'gutters', 'contentGutters', 'content', 'expandIconWrapper']);\nexport default accordionSummaryClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"expandIcon\", \"focusVisibleClassName\", \"onClick\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport ButtonBase from '../ButtonBase';\nimport AccordionContext from '../Accordion/AccordionContext';\nimport accordionSummaryClasses, { getAccordionSummaryUtilityClass } from './accordionSummaryClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n expanded,\n disabled,\n disableGutters\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', disabled && 'disabled', !disableGutters && 'gutters'],\n focusVisible: ['focusVisible'],\n content: ['content', expanded && 'expanded', !disableGutters && 'contentGutters'],\n expandIconWrapper: ['expandIconWrapper', expanded && 'expanded']\n };\n return composeClasses(slots, getAccordionSummaryUtilityClass, classes);\n};\nconst AccordionSummaryRoot = styled(ButtonBase, {\n name: 'MuiAccordionSummary',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => {\n const transition = {\n duration: theme.transitions.duration.shortest\n };\n return {\n display: 'flex',\n minHeight: 48,\n padding: theme.spacing(0, 2),\n transition: theme.transitions.create(['min-height', 'background-color'], transition),\n [`&.${accordionSummaryClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${accordionSummaryClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`&:hover:not(.${accordionSummaryClasses.disabled})`]: {\n cursor: 'pointer'\n },\n variants: [{\n props: props => !props.disableGutters,\n style: {\n [`&.${accordionSummaryClasses.expanded}`]: {\n minHeight: 64\n }\n }\n }]\n };\n});\nconst AccordionSummaryContent = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})(({\n theme\n}) => ({\n display: 'flex',\n flexGrow: 1,\n margin: '12px 0',\n variants: [{\n props: props => !props.disableGutters,\n style: {\n transition: theme.transitions.create(['margin'], {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n margin: '20px 0'\n }\n }\n }]\n}));\nconst AccordionSummaryExpandIconWrapper = styled('div', {\n name: 'MuiAccordionSummary',\n slot: 'ExpandIconWrapper',\n overridesResolver: (props, styles) => styles.expandIconWrapper\n})(({\n theme\n}) => ({\n display: 'flex',\n color: (theme.vars || theme).palette.action.active,\n transform: 'rotate(0deg)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shortest\n }),\n [`&.${accordionSummaryClasses.expanded}`]: {\n transform: 'rotate(180deg)'\n }\n}));\nconst AccordionSummary = /*#__PURE__*/React.forwardRef(function AccordionSummary(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAccordionSummary'\n });\n const {\n children,\n className,\n expandIcon,\n focusVisibleClassName,\n onClick\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n disabled = false,\n disableGutters,\n expanded,\n toggle\n } = React.useContext(AccordionContext);\n const handleChange = event => {\n if (toggle) {\n toggle(event);\n }\n if (onClick) {\n onClick(event);\n }\n };\n const ownerState = _extends({}, props, {\n expanded,\n disabled,\n disableGutters\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(AccordionSummaryRoot, _extends({\n focusRipple: false,\n disableRipple: true,\n disabled: disabled,\n component: \"div\",\n \"aria-expanded\": expanded,\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n onClick: handleChange,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [/*#__PURE__*/_jsx(AccordionSummaryContent, {\n className: classes.content,\n ownerState: ownerState,\n children: children\n }), expandIcon && /*#__PURE__*/_jsx(AccordionSummaryExpandIconWrapper, {\n className: classes.expandIconWrapper,\n ownerState: ownerState,\n children: expandIcon\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionSummary.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display as the expand indicator.\n */\n expandIcon: PropTypes.node,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionSummary;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAccordionDetailsUtilityClass(slot) {\n return generateUtilityClass('MuiAccordionDetails', slot);\n}\nconst accordionDetailsClasses = generateUtilityClasses('MuiAccordionDetails', ['root']);\nexport default accordionDetailsClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled } from '../zero-styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getAccordionDetailsUtilityClass } from './accordionDetailsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getAccordionDetailsUtilityClass, classes);\n};\nconst AccordionDetailsRoot = styled('div', {\n name: 'MuiAccordionDetails',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n padding: theme.spacing(1, 2, 2)\n}));\nconst AccordionDetails = /*#__PURE__*/React.forwardRef(function AccordionDetails(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiAccordionDetails'\n });\n const {\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AccordionDetailsRoot, _extends({\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AccordionDetails.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AccordionDetails;","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5m0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8\"\n}), 'RadioButtonChecked');","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","import { useRef, useState, useMemo, useLayoutEffect, useEffect, useCallback, createElement, useContext, createContext, forwardRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport warning from 'tiny-warning';\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n/**\r\n * Utility hook to track the reference of a html-element.\r\n * It notifies the listener when a change occured, so it can act\r\n * on the change\r\n */\n\nfunction useTrackRef(onRefChange) {\n var storedReference = useRef(null); // this is de function that actually gets passed to the `ref` prop\n // on the html element. I.e.:\n // <div ref={setter} />\n\n function setter(element) {\n if (!element || element === storedReference.current) {\n return;\n }\n\n storedReference.current = element;\n onRefChange(element);\n }\n\n return setter;\n}\n/**\r\n * Utility hook that stores mutable state.\r\n * Since a getter function is used, it will always return the most\r\n * up-to-date state. This is useful when you want to get certain state within\r\n * an effect, without triggering the same effect when the same state changes.\r\n * Note: may be seen as an anti-pattern.\r\n */\n\nfunction useMutableStore(initialState) {\n var state = useRef(initialState);\n return useMemo(function () {\n function set(setter) {\n if (typeof setter === \"function\") {\n state.current = setter(state.current);\n } else {\n state.current = setter;\n }\n }\n\n function get() {\n return state.current;\n }\n\n return [get, set];\n }, []);\n}\n/**\r\n * Utility hook that keeps track of active event listeners and how\r\n * to remove these listeners\r\n */\n\nfunction useEventSubscriptions() {\n var subscriptions = useRef([]);\n return useMemo(function () {\n function hasEventSubscriptions() {\n return subscriptions.current.length > 0;\n }\n\n function removeAllEventSubscriptions() {\n for (var _iterator = _createForOfIteratorHelperLoose(subscriptions.current), _step; !(_step = _iterator()).done;) {\n var unsubscribe = _step.value;\n unsubscribe();\n }\n\n subscriptions.current = [];\n }\n\n function addEventSubscription(unsubscriber) {\n subscriptions.current.push(unsubscriber);\n }\n\n return {\n hasEventSubscriptions: hasEventSubscriptions,\n removeAllEventSubscriptions: removeAllEventSubscriptions,\n addEventSubscription: addEventSubscription\n };\n }, []);\n}\n/**\r\n * SSR-safe effect hook\r\n */\n\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n/**\r\n * Utility hook that tracks an state object.\r\n * If `enabled=false` it will discard changes and reset the lastState to `null`\r\n */\n\nfunction useLastState(currentState, enabled) {\n var lastState = useRef(currentState);\n\n if (!enabled) {\n lastState.current = null;\n return lastState;\n }\n\n lastState.current = currentState;\n return lastState;\n}\nvar EMPTY_BOUNDS = {\n top: 0,\n left: 0,\n right: 1,\n bottom: 1,\n width: 1,\n height: 1\n};\n/**\r\n * @description Utility hook that lets you use the mouse-position as source of the trigger.\r\n * This is useful in scenario's like context-menu's.\r\n *\r\n * @example\r\n * ```tsx\r\n * const {\r\n * hasMousePosition,\r\n * resetMousePosition,\r\n * handleMouseEvent,\r\n * trigger\r\n * } = useMousePositionAsTrigger();\r\n *\r\n * const { renderLayer, layerProps } = useLayer({\r\n * isOpen: hasMousePosition,\r\n * trigger,\r\n * onOutsideClick: resetMousePosition\r\n * });\r\n *\r\n * return (\r\n * <>\r\n * {isOpen && renderLayer(<div {...layerProps} />)}\r\n * <div onContextMenu={handleMouseEvent} />\r\n * </>\r\n * );\r\n * ```\r\n */\n\nfunction useMousePositionAsTrigger(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$enabled = _ref.enabled,\n enabled = _ref$enabled === void 0 ? true : _ref$enabled,\n _ref$preventDefault = _ref.preventDefault,\n preventDefault = _ref$preventDefault === void 0 ? true : _ref$preventDefault;\n\n var parentRef = useRef(null);\n\n var _useState = useState(EMPTY_BOUNDS),\n mouseBounds = _useState[0],\n setMouseBounds = _useState[1];\n\n function resetMousePosition() {\n setMouseBounds(EMPTY_BOUNDS);\n }\n\n var hasMousePosition = mouseBounds !== EMPTY_BOUNDS;\n\n function handleMouseEvent(evt) {\n if (!enabled) {\n return;\n }\n\n if (preventDefault) {\n evt.preventDefault();\n }\n\n var left = evt.clientX,\n top = evt.clientY;\n setMouseBounds({\n top: top,\n left: left,\n width: 1,\n height: 1,\n right: left + 1,\n bottom: top + 1\n });\n }\n\n return {\n hasMousePosition: hasMousePosition,\n resetMousePosition: resetMousePosition,\n handleMouseEvent: handleMouseEvent,\n trigger: {\n getBounds: function getBounds() {\n return mouseBounds;\n },\n getParent: parentRef.current ? function () {\n return parentRef.current;\n } : undefined\n },\n parentRef: parentRef\n };\n}\n\n/**\r\n * Convert a pixel value into a numeric value\r\n * @param value string value (ie. '12px')\r\n */\nfunction getPixelValue(value) {\n return parseFloat(value.replace(\"px\", \"\"));\n}\n/**\r\n * Returns a numeric value that doesn't exceed min or max\r\n */\n\nfunction limit(value, min, max) {\n return value < min ? min : value > max ? max : value;\n}\n/**\r\n * Utility function which ensures whether a value is truthy\r\n */\n\nfunction isSet(value) {\n return value === null || value === undefined ? false : true;\n}\n/**\r\n * Utility function that let's you assign multiple references to a 'ref' prop\r\n * @param refs list of MutableRefObject's and / or callbacks\r\n */\n\nfunction mergeRefs() {\n for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {\n refs[_key] = arguments[_key];\n }\n\n return function (element) {\n for (var _iterator = _createForOfIteratorHelperLoose(refs), _step; !(_step = _iterator()).done;) {\n var ref = _step.value;\n\n if (!ref) {\n continue;\n }\n\n if (typeof ref === \"function\") {\n ref(element);\n } else {\n ref.current = element;\n }\n }\n };\n}\n\n/**\r\n * Utility to get the correct ResizeObserver class\r\n */\n\nfunction getResizeObserver(environment, polyfill) {\n if (typeof environment === \"undefined\") {\n return undefined;\n }\n\n return polyfill || environment.ResizeObserver;\n}\n/**\r\n * Utility function that given a element traverses up in the html-hierarchy\r\n * to find and return all ancestors that have scroll behavior\r\n */\n\nfunction findScrollContainers(element, environment) {\n var result = [];\n\n if (!element || !environment || element === document.body) {\n return result;\n }\n\n var _environment$getCompu = environment.getComputedStyle(element),\n overflow = _environment$getCompu.overflow,\n overflowX = _environment$getCompu.overflowX,\n overflowY = _environment$getCompu.overflowY;\n\n if ([overflow, overflowX, overflowY].some(function (prop) {\n return [\"auto\", \"scroll\"].includes(prop);\n })) {\n result.push(element);\n }\n\n return [].concat(result, findScrollContainers(element.parentElement, environment));\n}\n\nfunction createReferenceError(subject) {\n return \"react-laag: Could not find a valid reference for the \" + subject + \" element. There might be 2 causes:\\n - Make sure that the 'ref' is set correctly on the \" + subject + \" element when isOpen: true. Also make sure your component forwards the ref with \\\"forwardRef()\\\".\\n - Make sure that you are actually rendering the \" + subject + \" when the isOpen prop is set to true\";\n}\n/**\r\n * This hook has the responsibility to track the bounds of:\r\n * - the trigger element\r\n * - the layer element\r\n * - the arrow element\r\n * - the scroll-containers of which the trigger element is a descendant of\r\n *\r\n * It will call the `onChange` callback with a collection of these elements when any\r\n * of the tracked elements bounds have changed\r\n *\r\n * It will detect these changes by listening:\r\n * - when the reference of the trigger element changes\r\n * - when the reference of the layer element changes\r\n * - when the trigger, layer or document body changes in size\r\n * - when the user scrolls the page, or any of the scroll containers\r\n */\n\n\nfunction useTrackElements(_ref) {\n var enabled = _ref.enabled,\n onChange = _ref.onChange,\n environment = _ref.environment,\n ResizeObserverPolyfill = _ref.ResizeObserverPolyfill,\n overflowContainer = _ref.overflowContainer,\n triggerOption = _ref.triggerOption;\n // get the correct reference to the ResizeObserver class\n var ResizeObserver = getResizeObserver(environment, ResizeObserverPolyfill); // warn the user when no valid ResizeObserver class could be found\n\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(ResizeObserver, \"This browser does not support ResizeObserver out of the box. We recommend to add a polyfill in order to utilize the full capabilities of react-laag. See: https://github.com/everweij/react-laag#resize-observer\") : void 0;\n }, [ResizeObserver]); // keep reference of the optional arrow-component\n\n var arrowRef = useRef(null); // if user has provided the trigger-option we should ingore certain things elsewhere\n\n var hasTriggerOption = Boolean(triggerOption); // Keep track of mutable element related state\n // It is generally better to use React.useState, but unfortunately that causes to many re-renders\n\n var _useMutableStore = useMutableStore({\n scrollContainers: [],\n trigger: null,\n layer: null\n }),\n get = _useMutableStore[0],\n set = _useMutableStore[1]; // utility to keep track of the scroll and resize listeners and how to unsubscribe them\n\n\n var _useEventSubscription = useEventSubscriptions(),\n hasEventSubscriptions = _useEventSubscription.hasEventSubscriptions,\n addEventSubscription = _useEventSubscription.addEventSubscription,\n removeAllEventSubscriptions = _useEventSubscription.removeAllEventSubscriptions; // All scroll and resize changes eventually end up here, where the collection of bounds (subjectsBounds) is\n // constructed in order to notifiy the `onBoundsChange` callback\n\n\n var handleChange = useCallback(function handleChange() {\n var _get = get(),\n layer = _get.layer,\n trigger = _get.trigger,\n scrollContainers = _get.scrollContainers;\n\n var closestScrollContainer = scrollContainers[0];\n\n if (!layer) {\n throw new Error(createReferenceError(\"layer\"));\n } // ignore when user has provided the trigger-option\n\n\n if (!trigger && !hasTriggerOption) {\n throw new Error(createReferenceError(\"trigger\"));\n }\n\n var scrollOffsets = {\n top: 0,\n left: 0\n };\n\n if (closestScrollContainer) {\n var scrollLeft = closestScrollContainer.scrollLeft,\n scrollTop = closestScrollContainer.scrollTop;\n scrollOffsets = {\n top: scrollTop,\n left: scrollLeft\n };\n } else {\n var scrollX = environment.scrollX,\n scrollY = environment.scrollY;\n scrollOffsets = {\n top: scrollY,\n left: scrollX\n };\n }\n\n var borderOffsets = {\n left: 0,\n top: 0\n };\n\n if (closestScrollContainer) {\n var _environment$getCompu2 = environment.getComputedStyle(closestScrollContainer),\n borderLeftWidth = _environment$getCompu2.borderLeftWidth,\n borderTopWidth = _environment$getCompu2.borderTopWidth;\n\n borderOffsets = {\n left: getPixelValue(borderLeftWidth) || 0,\n top: getPixelValue(borderTopWidth) || 0\n };\n }\n\n onChange({\n layer: layer,\n trigger: trigger,\n scrollContainers: scrollContainers,\n arrow: arrowRef.current\n }, scrollOffsets, borderOffsets);\n }, [get, onChange, environment, arrowRef, hasTriggerOption]); // responsible for adding the scroll and resize listeners to the correct\n // html elements\n\n var addEventListeners = useCallback(function addEventListeners() {\n var _get2 = get(),\n trigger = _get2.trigger,\n layer = _get2.layer,\n scrollContainers = _get2.scrollContainers;\n\n if (!layer) {\n throw new Error(createReferenceError(\"layer\"));\n }\n\n if (!trigger && !hasTriggerOption) {\n // ignore when user has provided the trigger-option\n throw new Error(createReferenceError(\"trigger\"));\n }\n\n if (ResizeObserver) {\n var ignoredInitialCall = false;\n\n var observerCallback = function observerCallback() {\n if (!ignoredInitialCall) {\n ignoredInitialCall = true;\n return;\n }\n\n handleChange();\n };\n\n var observer = new ResizeObserver(observerCallback);\n\n for (var _i = 0, _arr = [trigger, layer, document.body]; _i < _arr.length; _i++) {\n var element = _arr[_i];\n if (element) observer.observe(element);\n }\n\n addEventSubscription(function () {\n for (var _i2 = 0, _arr2 = [trigger, layer, document.body]; _i2 < _arr2.length; _i2++) {\n var _element = _arr2[_i2];\n if (_element) observer.unobserve(_element);\n }\n\n observer.disconnect();\n });\n }\n\n var listenForScrollElements = [environment].concat(scrollContainers);\n\n var _loop = function _loop() {\n var element = _step.value;\n element.addEventListener(\"scroll\", handleChange);\n addEventSubscription(function () {\n return element.removeEventListener(\"scroll\", handleChange);\n });\n };\n\n for (var _iterator = _createForOfIteratorHelperLoose(listenForScrollElements), _step; !(_step = _iterator()).done;) {\n _loop();\n }\n }, [get, addEventSubscription, handleChange, environment, ResizeObserver, hasTriggerOption]); // when either the reference to the trigger or layer element changes\n // we should reset the event listeners and trigger a `onChange`\n\n var resetWhenReferenceChangedWhileTracking = useCallback(function (previous, next) {\n if (enabled && previous && previous !== next) {\n removeAllEventSubscriptions();\n addEventListeners();\n handleChange();\n }\n }, [removeAllEventSubscriptions, addEventListeners, handleChange, enabled]); // Logic when reference to layer changes\n\n var layerRef = useTrackRef(useCallback(function (layer) {\n var _get3 = get(),\n previousLayer = _get3.layer; // store new reference\n\n\n set(function (state) {\n return _extends({}, state, {\n layer: layer\n });\n }); // check if we should reset the event listeners\n\n resetWhenReferenceChangedWhileTracking(previousLayer, layer);\n }, [get, set, resetWhenReferenceChangedWhileTracking]));\n var getScrollContainers = useCallback(function handleScrollContainers(element) {\n var scrollContainers = findScrollContainers(element, environment);\n var closestScrollContainer = scrollContainers[0];\n\n if (closestScrollContainer) {\n // Check if we should warn the user about 'position: relative; stuff...'\n var position = environment.getComputedStyle(closestScrollContainer).position;\n var closestScrollContainerHasCorrectStyling = [\"relative\", \"absolute\", \"fixed\"].includes(position) || overflowContainer;\n\n if (!closestScrollContainerHasCorrectStyling) {\n closestScrollContainer.style.position = \"relative\";\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(closestScrollContainerHasCorrectStyling, \"react-laag: Set the 'position' style of the nearest scroll-container to 'relative', 'absolute' or 'fixed', or set the 'overflowContainer' prop to true. This is needed in order to position the layer properly. Currently the scroll-container is positioned: \\\"\" + position + \"\\\". For now, \\\"position: relative;\\\" is added for you, but this behavior might be removed in the future. Visit https://react-laag.com/docs/#position-relative for more info.\") : void 0;\n }\n\n return scrollContainers;\n }, [environment, overflowContainer]); // Logic when reference to trigger changes\n // Note: this will have no effect when user provided the trigger-option\n\n var triggerRef = useTrackRef(useCallback(function (trigger) {\n // collect list of scroll containers\n var scrollContainers = getScrollContainers(trigger);\n\n var _get4 = get(),\n previousTrigger = _get4.trigger; // store new references\n\n\n set(function (state) {\n return _extends({}, state, {\n trigger: trigger,\n scrollContainers: scrollContainers\n });\n }); // check if we should reset the event listeners\n\n resetWhenReferenceChangedWhileTracking(previousTrigger, trigger);\n }, [get, set, resetWhenReferenceChangedWhileTracking, getScrollContainers])); // when user has provided the trigger-option, it monitors the optional parent-element\n // in order to determine the scroll-containers\n\n var triggerOptionParent = triggerOption == null ? void 0 : triggerOption.getParent == null ? void 0 : triggerOption.getParent();\n useIsomorphicLayoutEffect(function () {\n if (!triggerOptionParent) {\n return;\n }\n\n set(function (state) {\n return _extends({}, state, {\n scrollContainers: getScrollContainers(triggerOptionParent)\n });\n });\n }, [triggerOptionParent, set, getScrollContainers]);\n useIsomorphicLayoutEffect(function () {\n if (enabled) {\n // add event listeners if necessary\n if (!hasEventSubscriptions()) {\n addEventListeners();\n }\n }\n\n return function () {\n if (hasEventSubscriptions()) {\n removeAllEventSubscriptions();\n }\n };\n }, [enabled, hasEventSubscriptions, addEventListeners, removeAllEventSubscriptions]); // run this effect after every render\n\n useIsomorphicLayoutEffect(function () {\n if (enabled) {\n // eventually call `handleChange` with latest elements-refs\n handleChange();\n }\n });\n return {\n triggerRef: triggerRef,\n layerRef: layerRef,\n arrowRef: arrowRef,\n closestScrollContainer: get().scrollContainers[0] || null\n };\n}\n\nvar GroupContext = /*#__PURE__*/createContext({}); // Provider that wraps arround the layer in order to provide other useLayers\n// down in the hiearchy (child layers) with means to communicate with the parent.\n// This provider receives a `registrations` Set which can be used to add and\n// delete registrations.\n\nfunction GroupProvider(_ref) {\n var children = _ref.children,\n registrations = _ref.registrations;\n // registration function that is used as 'context payload' for child layers\n // to call. It returns a function to unregister.\n var handleRegister = useCallback(function register(registration) {\n registrations.current.add(registration);\n return function () {\n return registrations.current.delete(registration);\n };\n }, [registrations]);\n return createElement(GroupContext.Provider, {\n value: handleRegister\n }, children);\n} // asks child layers if they would close given the documents click event\n// if there's one that signals not to close, return early (false)\n\nfunction getShouldCloseAccordingToChildren(registrations, event) {\n for (var _iterator = _createForOfIteratorHelperLoose(registrations), _step; !(_step = _iterator()).done;) {\n var shouldCloseWhenClickedOutside = _step.value.shouldCloseWhenClickedOutside;\n\n if (!shouldCloseWhenClickedOutside(event)) {\n return false;\n }\n }\n\n return true;\n}\n/**\r\n * Responsible for close behavior\r\n * When the `onOutsideClick` callback is provided by the user, it will listen for clicks\r\n * in the document, and tell whether the user clicked outside -> not on layer / trigger.\r\n * It keeps track of nested useLayers a.k.a child layers (`registrations` Set), through which\r\n * we can ask whether they `shouldCloseWhenClickedOutside`, or tell them to close.\r\n *\r\n * Behavior:\r\n * - `onOutsideClick` only works on the most outer parent, and not on children. The parent will ask\r\n * the child layers whether they would close, and will handle accordingly. The parent may\r\n * command the children to close indirectly with the help of `onParentClose`\r\n * - When the parent just was closed, it will make sure that any children will also close\r\n * with the help of `onParentClose`\r\n */\n\n\nfunction useGroup(_ref2) {\n var isOpen = _ref2.isOpen,\n onOutsideClick = _ref2.onOutsideClick,\n onParentClose = _ref2.onParentClose;\n // store references to the dom-elements\n // we need these to later determine wether the clicked outside or not\n var trigger = useRef(null);\n var layer = useRef(null); // a Set which keeps track of callbacks given by the child layers through context\n\n var registrations = useRef(new Set()); // if this instance is a child itself, we should use this function to register\n // some callbacks to the parent\n\n var possibleRegisterFn = useContext(GroupContext); // recursively checks whether to close or not. This mechanism has some similarities\n // with event bubbling.\n\n var shouldCloseWhenClickedOutside = useCallback(function shouldCloseWhenClickedOutside(event) {\n var target = event.target;\n var clickedOnTrigger = trigger.current && trigger.current.contains(target);\n var clickedOnLayer = layer.current && layer.current.contains(target);\n var shouldCloseAccordingToChildren = getShouldCloseAccordingToChildren(registrations.current, event); // when clicked on own layer, but the child would have closed ->\n // let child close\n\n if (clickedOnLayer && shouldCloseAccordingToChildren) {\n registrations.current.forEach(function (_ref3) {\n var closeChild = _ref3.closeChild;\n return closeChild();\n });\n }\n\n return !clickedOnTrigger && !clickedOnLayer && shouldCloseAccordingToChildren;\n }, [trigger, layer, registrations]); // registration stuff\n\n useEffect(function () {\n if (typeof possibleRegisterFn !== \"function\") {\n return;\n } // 'possibleRegisterFn' will return a function that will unregister\n // on cleanup\n\n\n return possibleRegisterFn({\n shouldCloseWhenClickedOutside: shouldCloseWhenClickedOutside,\n closeChild: function closeChild() {\n process.env.NODE_ENV !== \"production\" ? warning(onParentClose, \"react-laag: You are using useLayer() in a nested setting but forgot to set the 'onParentClose()' callback in the options. This could lead to unexpected behavior.\") : void 0;\n\n if (onParentClose) {\n onParentClose();\n }\n }\n });\n }, [possibleRegisterFn, shouldCloseWhenClickedOutside, onParentClose, registrations]); // document click handling\n\n useEffect(function () {\n var isChild = typeof possibleRegisterFn === \"function\";\n var shouldNotListen = !isOpen || !onOutsideClick || isChild;\n\n if (shouldNotListen) {\n return;\n }\n\n function handleClick(event) {\n if (shouldCloseWhenClickedOutside(event)) {\n onOutsideClick();\n }\n }\n\n document.addEventListener(\"click\", handleClick, true);\n return function () {\n return document.removeEventListener(\"click\", handleClick, true);\n };\n }, [isOpen, onOutsideClick, shouldCloseWhenClickedOutside, possibleRegisterFn]); // When this 'useLayer' gets closed -> tell child layers to close as well\n\n useEffect(function () {\n if (!isOpen) {\n registrations.current.forEach(function (_ref4) {\n var closeChild = _ref4.closeChild;\n return closeChild();\n });\n }\n }, [isOpen]);\n return {\n closeOnOutsideClickRefs: {\n trigger: trigger,\n layer: layer\n },\n registrations: registrations\n };\n}\n\nvar PLACEMENT_TYPES = [\"bottom-start\", \"bottom-end\", \"bottom-center\", \"top-start\", \"top-center\", \"top-end\", \"left-end\", \"left-center\", \"left-start\", \"right-end\", \"right-center\", \"right-start\", \"center\"];\n\nvar OPPOSITES = {\n top: \"bottom\",\n left: \"right\",\n bottom: \"top\",\n right: \"left\",\n center: \"center\"\n};\n\nvar SideBase = /*#__PURE__*/function () {\n function SideBase(prop, opposite, isHorizontal, sizeProp, oppositeSizeProp, cssProp, oppositeCssProp, isCenter, isPush // left | top\n ) {\n this.prop = void 0;\n this.opposite = void 0;\n this.isHorizontal = void 0;\n this.sizeProp = void 0;\n this.oppositeSizeProp = void 0;\n this.cssProp = void 0;\n this.oppositeCssProp = void 0;\n this.isCenter = void 0;\n this.isPush = void 0;\n this.prop = prop;\n this.opposite = opposite;\n this.isHorizontal = isHorizontal;\n this.sizeProp = sizeProp;\n this.oppositeSizeProp = oppositeSizeProp;\n this.cssProp = cssProp;\n this.oppositeCssProp = oppositeCssProp;\n this.isCenter = isCenter;\n this.isPush = isPush;\n }\n\n var _proto = SideBase.prototype;\n\n _proto.factor = function factor(value) {\n return value * (this.isPush ? 1 : -1);\n };\n\n _proto.isOppositeDirection = function isOppositeDirection(side) {\n return this.isHorizontal !== side.isHorizontal;\n };\n\n return SideBase;\n}();\n\nfunction createSide(prop, recursive) {\n if (recursive === void 0) {\n recursive = true;\n }\n\n var isHorizontal = [\"left\", \"right\"].includes(prop);\n return new SideBase(prop, recursive ? createSide(OPPOSITES[prop], false) : null, isHorizontal, isHorizontal ? \"width\" : \"height\", isHorizontal ? \"height\" : \"width\", isHorizontal ? \"left\" : \"top\", isHorizontal ? \"top\" : \"left\", prop === \"center\", ![\"right\", \"bottom\"].includes(prop));\n}\n\nvar BoundSide = {\n top: /*#__PURE__*/createSide(\"top\"),\n bottom: /*#__PURE__*/createSide(\"bottom\"),\n left: /*#__PURE__*/createSide(\"left\"),\n right: /*#__PURE__*/createSide(\"right\")\n};\nvar Side = /*#__PURE__*/_extends({}, BoundSide, {\n center: /*#__PURE__*/createSide(\"center\")\n});\n\nvar SIDES = [\"top\", \"left\", \"bottom\", \"right\"];\n/**\r\n * A class containing the positional properties which represent the distance\r\n * between two Bounds instances for each side\r\n */\n\nvar BoundsOffsets = /*#__PURE__*/function () {\n function BoundsOffsets(offsets) {\n this.top = void 0;\n this.left = void 0;\n this.right = void 0;\n this.bottom = void 0;\n return Object.assign(this, offsets);\n }\n /**\r\n * Takes multiple BoundsOffets instances and creates a new BoundsOffsets instance\r\n * by taking the smallest value for each side\r\n * @param boundsOffsets list of BoundsOffsets instances\r\n */\n\n\n BoundsOffsets.mergeSmallestSides = function mergeSmallestSides(boundsOffsets) {\n var first = boundsOffsets[0],\n rest = boundsOffsets.slice(1);\n\n if (!first) {\n throw new Error(\"Please provide at least 1 bounds objects in order to merge\");\n }\n\n var result = Object.fromEntries(SIDES.map(function (side) {\n return [side, first[side]];\n }));\n\n for (var _iterator = _createForOfIteratorHelperLoose(rest), _step; !(_step = _iterator()).done;) {\n var boundsOffset = _step.value;\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(SIDES), _step2; !(_step2 = _iterator2()).done;) {\n var side = _step2.value;\n result[side] = Math.min(result[side], boundsOffset[side]);\n }\n }\n\n return new BoundsOffsets(result);\n }\n /**\r\n * Checks whether all sides sides are positive, meaning the corresponding Bounds instance\r\n * fits perfectly within a parent Bounds instance\r\n */\n ;\n\n _createClass(BoundsOffsets, [{\n key: \"allSidesArePositive\",\n get: function get() {\n var _this = this;\n\n return SIDES.every(function (side) {\n return _this[side] >= 0;\n });\n }\n /**\r\n * Returns a partial IBoundsOffsets with sides that are negative, meaning sides aren't entirely\r\n * visible in respect to a parent Bounds instance\r\n */\n\n }, {\n key: \"negativeSides\",\n get: function get() {\n var _this2 = this;\n\n return Object.fromEntries(SIDES.filter(function (side) {\n return _this2[side] < 0;\n }).map(function (side) {\n return [side, _this2[side]];\n }));\n }\n }]);\n\n return BoundsOffsets;\n}();\n\n/**\r\n * Utility function that returns sum of various computed styles\r\n * @param propertyValues list of computed styles (ie. '12px')\r\n */\n\nfunction sumOfPropertyValues() {\n for (var _len = arguments.length, propertyValues = new Array(_len), _key = 0; _key < _len; _key++) {\n propertyValues[_key] = arguments[_key];\n }\n\n return propertyValues.reduce(function (sum, propertyValue) {\n return sum + (propertyValue ? getPixelValue(propertyValue) : 0);\n }, 0);\n}\n\nfunction boundsToObject(_ref) {\n var top = _ref.top,\n left = _ref.left,\n right = _ref.right,\n bottom = _ref.bottom,\n width = _ref.width,\n height = _ref.height;\n return {\n top: top,\n left: left,\n right: right,\n bottom: bottom,\n width: width,\n height: height\n };\n}\nvar EMPTY = {\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: 0,\n height: 0\n};\n/**\r\n * A class containing the positional properties of the native DOM's ClientRect\r\n * (`element.getBoundingClientRect()`), together with some utility methods\r\n */\n\nvar Bounds = /*#__PURE__*/function () {\n /**\r\n * Creates a new Bounds class\r\n * @param bounds An object that adheres to the `IBounds` interface\r\n */\n Bounds.create = function create(bounds) {\n return new Bounds(bounds);\n }\n /**\r\n * Creates a new Bounds class from a DOM-element\r\n * @param element reference to the DOM-element\r\n * @param options optional options object\r\n */\n ;\n\n Bounds.fromElement = function fromElement(element, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$withTransfor = _options.withTransform,\n withTransform = _options$withTransfor === void 0 ? true : _options$withTransfor,\n _options$environment = _options.environment,\n environment = _options$environment === void 0 ? window : _options$environment,\n _options$withScrollba = _options.withScrollbars,\n withScrollbars = _options$withScrollba === void 0 ? true : _options$withScrollba;\n var plain = boundsToObject(element.getBoundingClientRect());\n var bounds = new Bounds(plain);\n\n if (!withTransform) {\n var _environment$getCompu = environment.getComputedStyle(element),\n width = _environment$getCompu.width,\n height = _environment$getCompu.height,\n boxSizing = _environment$getCompu.boxSizing,\n borderLeft = _environment$getCompu.borderLeft,\n borderRight = _environment$getCompu.borderRight,\n borderTop = _environment$getCompu.borderTop,\n borderBottom = _environment$getCompu.borderBottom,\n paddingLeft = _environment$getCompu.paddingLeft,\n paddingRight = _environment$getCompu.paddingRight,\n paddingTop = _environment$getCompu.paddingTop,\n paddingBottom = _environment$getCompu.paddingBottom;\n\n var boxWidth = boxSizing === \"border-box\" ? getPixelValue(width) : sumOfPropertyValues(width, borderLeft, borderRight, paddingLeft, paddingRight);\n var boxHeight = boxSizing === \"border-box\" ? getPixelValue(height) : sumOfPropertyValues(height, borderTop, borderBottom, paddingTop, paddingBottom);\n bounds = new Bounds(_extends({}, bounds, {\n width: boxWidth,\n height: boxHeight\n }));\n }\n\n if (!withScrollbars) {\n var scrollbarWidth = bounds.width - element.clientWidth;\n var scrollbarHeight = bounds.height - element.clientHeight;\n return bounds.substract({\n right: scrollbarWidth,\n bottom: scrollbarHeight\n });\n }\n\n return bounds;\n }\n /**\r\n * Creates an empty Bounds class\r\n */\n ;\n\n Bounds.empty = function empty() {\n return new Bounds();\n }\n /**\r\n * Creates a Bounds class from the window's dimensions\r\n * @param environment reference to the window-object (needed when working with iframes for instance). Defaults to `window`\r\n */\n ;\n\n Bounds.fromWindow = function fromWindow(environment) {\n var _environment$document;\n\n var scrollingElement = (_environment$document = environment == null ? void 0 : environment.document.scrollingElement) != null ? _environment$document : environment == null ? void 0 : environment.document.documentElement;\n\n var _ref2 = scrollingElement != null ? scrollingElement : {},\n _ref2$clientWidth = _ref2.clientWidth,\n width = _ref2$clientWidth === void 0 ? 0 : _ref2$clientWidth,\n _ref2$clientHeight = _ref2.clientHeight,\n height = _ref2$clientHeight === void 0 ? 0 : _ref2$clientHeight;\n\n return new Bounds({\n width: width,\n height: height,\n right: width,\n bottom: height\n });\n };\n\n function Bounds(bounds) {\n if (bounds === void 0) {\n bounds = {};\n }\n\n this.top = void 0;\n this.left = void 0;\n this.right = void 0;\n this.bottom = void 0;\n this.width = void 0;\n this.height = void 0;\n return Object.assign(this, EMPTY, bounds);\n }\n /**\r\n * Returns the square surface of the bounds in pixels\r\n */\n\n\n var _proto = Bounds.prototype;\n\n /**\r\n * Returns a plain object containing only positional properties\r\n */\n _proto.toObject = function toObject() {\n return boundsToObject(this);\n };\n\n _proto.merge = function merge(partialBoundsOrMergeFn) {\n var current = this.toObject();\n return new Bounds(_extends({}, current, typeof partialBoundsOrMergeFn === \"function\" ? partialBoundsOrMergeFn(current) : partialBoundsOrMergeFn));\n }\n /**\r\n * Return a new Bounds instance by subtracting each property of the provided IBounds object\r\n * @param bounds partial IBounds object to substract with\r\n */\n ;\n\n _proto.substract = function substract(bounds) {\n var result = this.toObject();\n var entries = Object.entries(bounds);\n\n for (var _i = 0, _entries = entries; _i < _entries.length; _i++) {\n var _entries$_i = _entries[_i],\n prop = _entries$_i[0],\n value = _entries$_i[1];\n\n if (prop in BoundSide) {\n // if `prop` is one of 'top', 'left', 'bottom' or 'right'...\n var boundSide = BoundSide[prop]; // decide if we should add or substract\n\n result[prop] += boundSide.factor(value); // make sure that the size-properties are also updated\n\n result[boundSide.isHorizontal ? \"width\" : \"height\"] -= value;\n } else {\n // prop is 'width' or 'height'\n result[prop] -= value || 0;\n }\n }\n\n return new Bounds(result);\n }\n /**\r\n * Returns a new BoundsOffsets instance by determining the distance for each bound-side:\r\n * (child -> parent)\r\n * @param child child bounds instance\r\n */\n ;\n\n _proto.offsetsTo = function offsetsTo(child) {\n return new BoundsOffsets({\n top: child.top - this.top,\n bottom: this.bottom - child.bottom,\n left: child.left - this.left,\n right: this.right - child.right\n });\n }\n /**\r\n * Return a new Bounds instance by mapping over each bound-side\r\n * @param mapper callback that takes a boundSide + value in pixels, returning a new value for that side\r\n */\n ;\n\n _proto.mapSides = function mapSides(mapper) {\n var result = this.toObject();\n var boundSides = Object.values(BoundSide);\n\n for (var _i2 = 0, _boundSides = boundSides; _i2 < _boundSides.length; _i2++) {\n var boundSide = _boundSides[_i2];\n result[boundSide.prop] = mapper(boundSide, result[boundSide.prop]);\n }\n\n return new Bounds(result);\n };\n\n _createClass(Bounds, [{\n key: \"surface\",\n get: function get() {\n return this.width * this.height;\n }\n }]);\n\n return Bounds;\n}();\n\n/**\r\n * Class for various calculations based on a placement-type. I.e 'top-left';\r\n */\n\nvar Placement = /*#__PURE__*/function () {\n function Placement(primary, secondary, subjectBounds, layerDimensions, offsets) {\n this.primary = void 0;\n this.secondary = void 0;\n this.offsets = void 0;\n this.subjectsBounds = void 0;\n this._cachedLayerBounds = null;\n this._cachedContainerOffsets = null;\n this.primary = primary;\n this.secondary = secondary;\n this.offsets = offsets;\n this.setSubjectsBounds(subjectBounds, layerDimensions);\n }\n /**\r\n * Set subjectsBounds that are specific for this placement\r\n * @param subjectBounds original SubjectBounds instance\r\n * @param layerDimensions possible config prodvided by the user\r\n */\n\n\n var _proto = Placement.prototype;\n\n _proto.setSubjectsBounds = function setSubjectsBounds(subjectBounds, layerDimensions) {\n // if user did not provide any layerDimensions config...\n if (!layerDimensions) {\n this.subjectsBounds = subjectBounds;\n return;\n } // get anticipated layer-dimensions provided by the user\n\n\n var dimensions = // if the user passed a callback, call it with the layerSide corresponding to\n // the placement\n typeof layerDimensions === \"function\" ? layerDimensions(this.primary.prop) : layerDimensions; // create new SubjectsBounds instance by merging our newly create layer-bounds\n\n this.subjectsBounds = subjectBounds.merge({\n layer: _extends({}, subjectBounds.layer, dimensions)\n });\n }\n /**\r\n * Returns the string respresentation of this placement (ie. 'top-start')\r\n */\n ;\n\n /**\r\n * Calculates the actual boundaries based on the placement\r\n * @param secondaryOffset optional offset on the secondary-side\r\n */\n _proto.getLayerBounds = function getLayerBounds(secondaryOffset) {\n if (secondaryOffset === void 0) {\n secondaryOffset = 0;\n }\n\n // return cached version if possible\n if (this._cachedLayerBounds && secondaryOffset === 0) {\n return this._cachedLayerBounds;\n }\n\n var primary = this.primary,\n secondary = this.secondary,\n subjectsBounds = this.subjectsBounds;\n var trigger = subjectsBounds.trigger,\n layer = subjectsBounds.layer,\n arrow = subjectsBounds.arrow;\n var isHorizontal = primary.isHorizontal,\n oppositeCssProp = primary.oppositeCssProp,\n oppositeSizeProp = primary.oppositeSizeProp,\n prop = primary.prop,\n opposite = primary.opposite;\n var result = Bounds.empty(); // let's take the placement 'top-start' as an example...\n // the offsets are the following:\n // trigger -> 8px\n // container -> 10px;\n // arrow -> 2px;\n // PRIMARY STUFF\n // bottom = trigger.top + 8;\n\n result[opposite.prop] = trigger[prop] - primary.factor(this.offsets.trigger); // top = bottom - layer.height\n\n result[prop] = result[opposite.prop] - primary.factor(layer[primary.sizeProp]); // SECONDARY STUFF\n // arrowOffsetBase = 4\n\n var arrowOffsetBase = this.offsets.arrow * 2; // limitMin = trigger.left - (layer.width - arrow.width) + 4\n\n var limitMin = trigger[oppositeCssProp] - (layer[oppositeSizeProp] - arrow[oppositeSizeProp]) + arrowOffsetBase; // limitMax = trigger.left + (trigger.width - arrow.width) - 4\n\n var limitMax = trigger[oppositeCssProp] + (trigger[oppositeSizeProp] - arrow[oppositeSizeProp]) - arrowOffsetBase;\n\n if (!secondary.isPush) {\n // if secondary is bottom or right -> add the width or height of the layer\n limitMin += layer[oppositeSizeProp];\n limitMax += layer[oppositeSizeProp];\n }\n\n if (secondary.isCenter) {\n var propertyA = (isHorizontal ? BoundSide.top : BoundSide.left).prop;\n var propertyB = (isHorizontal ? BoundSide.bottom : BoundSide.right).prop; // left = limit(\n // trigger.left + trigger.width / 2 - layer.width / 2 + secondaryOffset,\n // limitMin,\n // limitMax\n // )\n\n result[propertyA] = limit(trigger[propertyA] + trigger[oppositeSizeProp] / 2 - layer[oppositeSizeProp] / 2 + secondaryOffset, limitMin, limitMax); // right = left + layer.width\n\n result[propertyB] = result[propertyA] + layer[oppositeSizeProp];\n } else {\n var sec = secondary;\n var triggerValue = trigger[sec.prop]; // Under some conditions, when the layer is not able to align with the trigger\n // due to arrow-size and arrow-offsets, we need to compensate.\n // Otherwise, the secondary-offset will have no impact\n\n var arrowCompensation = triggerValue < limitMin ? limitMin - triggerValue : triggerValue > limitMax ? limitMax - triggerValue : 0; // left = limit(\n // trigger.left + secondaryOffset + arrowCompensation,\n // limitMin,\n // limitMax\n // )\n\n result[sec.prop] = limit(triggerValue + secondaryOffset + arrowCompensation, limitMin, limitMax); // right = left + layer.width\n\n result[sec.opposite.prop] = result[sec.prop] + secondary.factor(layer[oppositeSizeProp]);\n } // set the correct dimensions\n\n\n result.width = result.right - result.left;\n result.height = result.bottom - result.top; // create new bounds object\n\n var layerBounds = Bounds.create(result);\n\n if (secondaryOffset === 0) {\n this._cachedLayerBounds = layerBounds;\n }\n\n return layerBounds;\n }\n /**\r\n * Checks whether the trigger is bigger on the opposite side\r\n * ie. placement \"top-start\" -> has trigger a bigger width?\r\n */\n ;\n\n /**\r\n * returns getLayerBounds(), including container-offsets\r\n */\n _proto.getLayerCollisionBounds = function getLayerCollisionBounds() {\n var container = this.offsets.container;\n return this.getLayerBounds().mapSides(function (side, value) {\n return value -= side.factor(container);\n }).merge(function (_ref) {\n var width = _ref.width,\n height = _ref.height;\n return {\n width: width + container * 2,\n height: height + container * 2\n };\n });\n }\n /**\r\n * Returns a BoundsOffsets instance containing merged offsets to containers with the most\r\n * negative scenario\r\n */\n ;\n\n _proto.getContainerOffsets = function getContainerOffsets(layerBounds) {\n if (this._cachedContainerOffsets && !layerBounds) {\n return this._cachedContainerOffsets;\n }\n\n var subjectBounds = this.subjectsBounds.merge({\n layer: layerBounds || this.getLayerCollisionBounds()\n });\n var offsets = BoundsOffsets.mergeSmallestSides(subjectBounds.layerOffsetsToScrollContainers);\n\n if (!layerBounds) {\n this._cachedContainerOffsets = offsets;\n }\n\n return offsets;\n };\n\n _createClass(Placement, [{\n key: \"type\",\n get: function get() {\n return this.primary.prop + \"-\" + (this.secondary.prop === \"center\" ? \"center\" : [\"bottom\", \"right\"].includes(this.secondary.prop) ? \"end\" : \"start\");\n }\n }, {\n key: \"triggerIsBigger\",\n get: function get() {\n var isHorizontal = this.secondary.isHorizontal;\n var _this$subjectsBounds = this.subjectsBounds,\n triggerHasBiggerWidth = _this$subjectsBounds.triggerHasBiggerWidth,\n triggerHasBiggerHeight = _this$subjectsBounds.triggerHasBiggerHeight;\n return isHorizontal && triggerHasBiggerWidth || !isHorizontal && triggerHasBiggerHeight;\n }\n /**\r\n * Checks whether the placement fits within all it's container (including container-offset)\r\n */\n\n }, {\n key: \"fitsContainer\",\n get: function get() {\n return this.getContainerOffsets().allSidesArePositive;\n }\n /**\r\n * Returns the surface in square pixels of the visible part of the layer\r\n */\n\n }, {\n key: \"visibleSurface\",\n get: function get() {\n var layerBounds = this.getLayerBounds();\n var containerOffsets = this.getContainerOffsets(layerBounds);\n var substract = containerOffsets.negativeSides;\n\n for (var side in substract) {\n // @ts-ignore\n substract[side] = -substract[side]; // make positive for substraction;\n }\n\n return layerBounds.substract(substract).surface;\n }\n /**\r\n * Returns a BoundSide by looking at the most negative offset that is the opposite direction\r\n */\n\n }, {\n key: \"secondaryOffsetSide\",\n get: function get() {\n var _Object$entries$map$f,\n _Object$entries$map$f2,\n _this = this;\n\n // Given placement 'top-start' and containerOffsets { left: -20, top: -10, right: -10, bottom: 200 }...\n // the only negative offsets on the opposite side are { left: -20, right: -10 }\n // since we have to return only 1 side, we pick the most negative, which is 'left'\n var containerOffsets = this.getContainerOffsets();\n\n var _ref2 = (_Object$entries$map$f = (_Object$entries$map$f2 = Object.entries(containerOffsets.negativeSides).map(function (_ref3) {\n var side = _ref3[0],\n value = _ref3[1];\n return [BoundSide[side], value];\n }).filter(function (_ref4) {\n var side = _ref4[0];\n return _this.primary.isOppositeDirection(side);\n }).sort(function (_ref5, _ref6) {\n var a = _ref5[1];\n var b = _ref6[1];\n return b - a;\n })) == null ? void 0 : _Object$entries$map$f2[0]) != null ? _Object$entries$map$f : [],\n mostNegativeSide = _ref2[0];\n\n return mostNegativeSide || null;\n }\n }]);\n\n return Placement;\n}();\nvar PlacementCenter = /*#__PURE__*/function (_Placement) {\n _inheritsLoose(PlacementCenter, _Placement);\n\n function PlacementCenter() {\n return _Placement.apply(this, arguments) || this;\n }\n\n var _proto2 = PlacementCenter.prototype;\n\n _proto2.getLayerBounds = function getLayerBounds() {\n var _this$subjectsBounds2 = this.subjectsBounds,\n trigger = _this$subjectsBounds2.trigger,\n layer = _this$subjectsBounds2.layer;\n var result = Bounds.empty();\n result.top = trigger.top + trigger.height / 2 - layer.height / 2;\n result.bottom = result.top + layer.height;\n result.left = trigger.left + trigger.width / 2 - layer.width / 2;\n result.right = result.left + layer.width;\n result.width = result.right - result.left;\n result.height = result.bottom - result.top;\n return result;\n };\n\n return PlacementCenter;\n}(Placement);\n\nfunction getNegativeOffsetBetweenLayerCenterAndTrigger(subjectsBounds, placement, arrowOffset) {\n var layer = subjectsBounds.layer,\n trigger = subjectsBounds.trigger,\n arrow = subjectsBounds.arrow;\n var sizeProperty = placement.primary.oppositeSizeProp;\n\n var _ref = !placement.primary.isHorizontal ? [\"left\", \"right\"] : [\"top\", \"bottom\"],\n sideA = _ref[0],\n sideB = _ref[1];\n\n var offsetA = layer[sideA] + layer[sizeProperty] / 2 - trigger[sideA] - arrow[sizeProperty] / 2 - arrowOffset;\n var offsetB = layer[sideB] - layer[sizeProperty] / 2 - trigger[sideB] + arrow[sizeProperty] / 2 + arrowOffset;\n return (offsetA < 0 ? -offsetA : 0) + (offsetB > 0 ? -offsetB : 0);\n}\n\nvar STYLE_BASE = {\n position: \"absolute\",\n willChange: \"top, left\",\n left: null,\n right: null,\n top: null,\n bottom: null\n};\nfunction getArrowStyle(subjectsBounds, placement, arrowOffset) {\n var _extends2;\n\n if (placement.primary.isCenter) {\n return STYLE_BASE;\n }\n\n var layer = subjectsBounds.layer,\n trigger = subjectsBounds.trigger,\n arrow = subjectsBounds.arrow;\n var sizeProperty = placement.primary.oppositeSizeProp;\n var triggerIsBigger = trigger[sizeProperty] > layer[sizeProperty];\n var min = arrowOffset + arrow[sizeProperty] / 2;\n var max = layer[sizeProperty] - arrow[sizeProperty] / 2 - arrowOffset;\n var negativeOffset = getNegativeOffsetBetweenLayerCenterAndTrigger(subjectsBounds, placement, arrowOffset);\n var primarySide = placement.primary.prop;\n var secondarySide = placement.primary.oppositeCssProp;\n var secondaryValue = triggerIsBigger ? layer[sizeProperty] / 2 + negativeOffset : trigger[secondarySide] + trigger[sizeProperty] / 2 - layer[secondarySide];\n return _extends({}, STYLE_BASE, (_extends2 = {}, _extends2[primarySide] = \"100%\", _extends2[secondarySide] = limit(secondaryValue, min, max), _extends2));\n}\n\n/**\r\n * Class mostly concerned about calculating and finding the right placement\r\n */\n\nvar Placements = /*#__PURE__*/function () {\n function Placements(placements, config, subjectsBounds) {\n this.placements = void 0;\n this.config = void 0;\n this.subjectsBounds = void 0;\n this.placements = placements;\n this.config = config;\n this.subjectsBounds = subjectsBounds;\n }\n /**\r\n * Converts a placement-type into a primary-side and a secondary-side\r\n */\n\n\n Placements.getSidesFromPlacementType = function getSidesFromPlacementType(type) {\n var _type$split = type.split(\"-\"),\n a = _type$split[0],\n b = _type$split[1];\n\n var primary = BoundSide[a];\n var secondary;\n\n if (b === \"center\") {\n secondary = Side.center;\n } else if (primary.isHorizontal) {\n secondary = b === \"start\" ? Side.top : Side.bottom;\n } else {\n secondary = b === \"start\" ? Side.left : Side.right;\n }\n\n return [primary, secondary];\n }\n /**\r\n * Main static method to create a Placements instance\r\n * @param subjectsBounds instance of the SubjectsBounds class\r\n * @param config config provided by the user\r\n */\n ;\n\n Placements.create = function create(subjectsBounds, config) {\n // create offsets-object from user config\n var offsets = {\n arrow: config.arrowOffset,\n container: config.containerOffset,\n trigger: config.triggerOffset\n }; // function which creates a prioritized list of possible placments\n // by looking at user-config\n\n function getListOfPlacements(preferedPlacement) {\n if (preferedPlacement === void 0) {\n preferedPlacement = config.placement;\n }\n\n var _Placements$getSidesF = Placements.getSidesFromPlacementType(preferedPlacement),\n primary = _Placements$getSidesF[0],\n secondary = _Placements$getSidesF[1];\n\n var preferredSide = BoundSide[primary.isHorizontal ? config.preferY : config.preferX]; // some priorities may alter when the trigger is bigger\n\n var triggerIsBigger = !primary.isHorizontal && subjectsBounds.triggerHasBiggerWidth || primary.isHorizontal && subjectsBounds.triggerHasBiggerHeight; // utility function which constructs a placement by primary and secondary sides\n\n function placementFrom(primary, secondary) {\n return new Placement(primary, secondary, subjectsBounds, config.layerDimensions, offsets);\n } // creating the list\n\n\n var list = [];\n list[0] = placementFrom(primary, secondary);\n list[1] = placementFrom(primary, secondary.isCenter ? preferredSide : Side.center);\n list[2] = placementFrom(primary, Side[(secondary.opposite.isCenter ? preferredSide.opposite : secondary.opposite).prop]);\n list[3] = placementFrom(preferredSide, triggerIsBigger ? primary : Side[primary.opposite.prop]);\n list[4] = placementFrom(preferredSide, Side.center);\n list[5] = placementFrom(preferredSide, triggerIsBigger ? Side[primary.opposite.prop] : primary);\n list[6] = placementFrom(BoundSide[preferredSide.opposite.prop], triggerIsBigger ? primary : Side[primary.opposite.prop]);\n list[7] = placementFrom(BoundSide[preferredSide.opposite.prop], Side.center);\n list[8] = placementFrom(BoundSide[preferredSide.opposite.prop], triggerIsBigger ? Side[primary.opposite.prop] : primary);\n list[9] = placementFrom(BoundSide[primary.opposite.prop], secondary);\n list[10] = placementFrom(BoundSide[primary.opposite.prop], secondary.isCenter ? preferredSide : Side.center);\n list[11] = placementFrom(BoundSide[primary.opposite.prop], Side[(secondary.opposite.isCenter ? preferredSide.opposite : secondary.opposite).prop]); // only include placements that are part of 'possible-placements'\n\n list = list.filter(function (placement) {\n return placement.type === config.placement || config.possiblePlacements.includes(placement.type);\n });\n return list;\n } // treat placement 'center' a little bit different\n\n\n if (config.placement === \"center\") {\n return new Placements([new PlacementCenter(Side.center, Side.center, subjectsBounds, config.layerDimensions, offsets)].concat(getListOfPlacements(config.preferY + \"-\" + config.preferX)), config, subjectsBounds);\n }\n\n return new Placements(getListOfPlacements(), config, subjectsBounds);\n };\n\n var _proto = Placements.prototype;\n\n _proto.filterPlacementsBySide = function filterPlacementsBySide(side) {\n return this.placements.filter(function (placement) {\n return placement.primary === side;\n });\n };\n\n _proto.findFirstPlacementThatFits = function findFirstPlacementThatFits() {\n return this.placements.find(function (placement) {\n return placement.fitsContainer;\n });\n };\n\n _proto.placementWithBiggestVisibleSurface = function placementWithBiggestVisibleSurface() {\n var _this$placements$map$ = this.placements.map(function (placement) {\n return {\n placement: placement,\n surface: placement.visibleSurface\n };\n }) // sort -> biggest surface first\n . // sort -> biggest surface first\n sort(function (a, b) {\n return b.surface - a.surface;\n }),\n placementWithBiggestSurface = _this$placements$map$[0].placement;\n\n return placementWithBiggestSurface;\n };\n\n _proto.findSuitablePlacement = function findSuitablePlacement() {\n if (!this.config.auto) {\n return this.placements[0];\n }\n\n return this.findFirstPlacementThatFits() || this.placementWithBiggestVisibleSurface();\n }\n /**\r\n * secondary offset: the number of pixels between the edge of the\r\n * scroll-container and the current placement, on the side of the layer\r\n * that didn't fit.\r\n * Eventually this secondary offset gets added / subtracted from the\r\n * placement that does fit in order to move the layer closer to the\r\n * position of the placement that just would not fit.\r\n * This creates the effect that the layer is moving gradually from one\r\n * placement to the next as the users scrolls the page or scroll-container\r\n */\n ;\n\n _proto.getSecondaryOffset = function getSecondaryOffset(placement) {\n var _this$config = this.config,\n auto = _this$config.auto,\n snap = _this$config.snap; // return early when we're not interested...\n\n if (!auto || snap || placement instanceof PlacementCenter) {\n return 0;\n } // if current placement fits and is prefered placement...\n // return early\n\n\n var placementsOnSameSide = this.filterPlacementsBySide(placement.primary);\n var currentPlacementHasHighestPriority = placementsOnSameSide.indexOf(placement) === 0;\n\n if (currentPlacementHasHighestPriority && placement.fitsContainer) {\n return 0;\n }\n\n var firstPlacementThatDoesNotFit = placementsOnSameSide.find(function (placement) {\n return !placement.fitsContainer;\n });\n\n if (!firstPlacementThatDoesNotFit) {\n return 0;\n }\n\n var secondaryOffsetSide = firstPlacementThatDoesNotFit.secondaryOffsetSide;\n\n if (!secondaryOffsetSide) {\n return 0;\n }\n\n var containerOffsets = placement.getContainerOffsets(); // determine whether we should add or substract the secondary-offset\n\n var secondary = placement.secondary;\n var factor;\n\n if (placement.triggerIsBigger || firstPlacementThatDoesNotFit === placement) {\n factor = secondaryOffsetSide.isPush ? -1 : 1;\n } else {\n factor = secondary === Side.left || [Side.top, Side.center].includes(secondary) && secondaryOffsetSide.isPush ? -1 : 1;\n } // get number of pixels between placement that did not fit and current\n // placement\n\n\n var secondaryOffset = containerOffsets[secondaryOffsetSide.prop];\n return secondaryOffset * factor;\n };\n\n _proto.getStyles = function getStyles(layerBounds, placement, scrollOffsets, borderOffsets) {\n var layerStyleBase = {\n willChange: \"top, left, width, height\"\n };\n var arrow = getArrowStyle(this.subjectsBounds.merge({\n layer: layerBounds\n }), placement, this.config.arrowOffset);\n var layer = this.config.overflowContainer ? _extends({}, layerStyleBase, {\n position: \"fixed\",\n top: layerBounds.top,\n left: layerBounds.left\n }) : _extends({}, layerStyleBase, {\n position: \"absolute\",\n top: layerBounds.top - this.subjectsBounds.parent.top + scrollOffsets.top - borderOffsets.top,\n left: layerBounds.left - this.subjectsBounds.parent.left + scrollOffsets.left - borderOffsets.left\n });\n return {\n arrow: arrow,\n layer: layer\n };\n };\n\n _proto.getHasDisappeared = function getHasDisappeared(layerBounds) {\n var subject = this.config.overflowContainer ? this.subjectsBounds.trigger : layerBounds;\n var containerOffsets = BoundsOffsets.mergeSmallestSides(this.subjectsBounds.offsetsToScrollContainers(subject, true));\n var entries = Object.entries(containerOffsets.negativeSides);\n var hasFullyDisappeared = entries.some(function (_ref) {\n var prop = _ref[0],\n value = _ref[1];\n var side = BoundSide[prop];\n return value <= -subject[side.sizeProp];\n });\n\n if (hasFullyDisappeared) {\n return \"full\";\n }\n\n if (!containerOffsets.allSidesArePositive) {\n return \"partial\";\n }\n\n return null;\n };\n\n _proto.result = function result(scrollOffsets, borderOffsets) {\n var suitablePlacement = this.findSuitablePlacement();\n var secondaryOffset = this.getSecondaryOffset(suitablePlacement);\n var layerBounds = suitablePlacement.getLayerBounds(secondaryOffset);\n var styles = this.getStyles(layerBounds, suitablePlacement, scrollOffsets, borderOffsets);\n var layerSide = suitablePlacement.primary.prop;\n return {\n styles: styles,\n layerSide: layerSide,\n placement: suitablePlacement,\n layerBounds: layerBounds,\n hasDisappeared: this.getHasDisappeared(layerBounds)\n };\n };\n\n return Placements;\n}();\n\nvar SubjectsBounds = /*#__PURE__*/function () {\n function SubjectsBounds(subjectsBounds, overflowContainer) {\n this.overflowContainer = void 0;\n this.trigger = void 0;\n this.layer = void 0;\n this.arrow = void 0;\n this.parent = void 0;\n this.window = void 0;\n this.scrollContainers = void 0;\n this.overflowContainer = overflowContainer;\n Object.assign(this, subjectsBounds);\n }\n\n SubjectsBounds.create = function create(environment, layer, trigger, parent, arrow, scrollContainers, overflowContainer, getTriggerBounds) {\n var window = Bounds.fromWindow(environment);\n return new SubjectsBounds({\n layer: Bounds.fromElement(layer, {\n environment: environment,\n withTransform: false\n }),\n trigger: getTriggerBounds ? Bounds.create(boundsToObject(getTriggerBounds())) : Bounds.fromElement(trigger),\n arrow: arrow ? Bounds.fromElement(arrow) : Bounds.empty(),\n parent: parent ? Bounds.fromElement(parent) : window,\n window: window,\n scrollContainers: [window].concat(scrollContainers.map(function (container) {\n return Bounds.fromElement(container, {\n withScrollbars: false\n });\n }))\n }, overflowContainer);\n };\n\n var _proto = SubjectsBounds.prototype;\n\n _proto.merge = function merge(subjectsBounds) {\n return new SubjectsBounds(_extends({}, this, subjectsBounds), this.overflowContainer);\n };\n\n _proto.offsetsToScrollContainers = function offsetsToScrollContainers(subject, allContainers) {\n if (allContainers === void 0) {\n allContainers = false;\n }\n\n var scrollContainers = this.overflowContainer && !allContainers ? [this.window] : this.scrollContainers;\n return scrollContainers.map(function (scrollContainer) {\n return scrollContainer.offsetsTo(subject);\n });\n };\n\n _createClass(SubjectsBounds, [{\n key: \"layerOffsetsToScrollContainers\",\n get: function get() {\n return this.offsetsToScrollContainers(this.layer);\n }\n }, {\n key: \"triggerHasBiggerWidth\",\n get: function get() {\n return this.trigger.width > this.layer.width;\n }\n }, {\n key: \"triggerHasBiggerHeight\",\n get: function get() {\n return this.trigger.height > this.layer.height;\n }\n }]);\n\n return SubjectsBounds;\n}();\n\nvar GLOBAL_CONTAINER = null;\nfunction setGlobalContainer(container) {\n if (typeof document === \"undefined\") {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(!(GLOBAL_CONTAINER instanceof HTMLElement), \"react-laag: You've called 'setGlobalContainer() previously'. It is recommended to only set the global container once, otherwise this may lead to unexpected behaviour.\") : void 0;\n\n if (typeof container === \"function\") {\n GLOBAL_CONTAINER = container();\n } else if (typeof container === \"string\") {\n GLOBAL_CONTAINER = document.getElementById(container);\n } else {\n GLOBAL_CONTAINER = container;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(GLOBAL_CONTAINER instanceof HTMLElement, \"react-laag: You've called 'setGlobalContainer()', but it didn't result in a valid html-element\") : void 0;\n}\nvar DEFAULT_OPTIONS = {\n auto: false,\n arrowOffset: 0,\n containerOffset: 10,\n triggerOffset: 0,\n overflowContainer: true,\n placement: \"top-center\",\n possiblePlacements: PLACEMENT_TYPES,\n preferX: \"right\",\n preferY: \"bottom\",\n snap: false,\n container: undefined,\n trigger: undefined\n};\nfunction useLayer(_ref) {\n var _triggerBoundsRef$cur;\n\n var _ref$isOpen = _ref.isOpen,\n isOpen = _ref$isOpen === void 0 ? false : _ref$isOpen,\n _ref$overflowContaine = _ref.overflowContainer,\n overflowContainer = _ref$overflowContaine === void 0 ? DEFAULT_OPTIONS.overflowContainer : _ref$overflowContaine,\n _ref$environment = _ref.environment,\n environment = _ref$environment === void 0 ? typeof window !== \"undefined\" ? window : undefined : _ref$environment,\n ResizeObserverPolyfill = _ref.ResizeObserver,\n _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? DEFAULT_OPTIONS.placement : _ref$placement,\n _ref$possiblePlacemen = _ref.possiblePlacements,\n possiblePlacements = _ref$possiblePlacemen === void 0 ? DEFAULT_OPTIONS.possiblePlacements : _ref$possiblePlacemen,\n _ref$preferX = _ref.preferX,\n preferX = _ref$preferX === void 0 ? DEFAULT_OPTIONS.preferX : _ref$preferX,\n _ref$preferY = _ref.preferY,\n preferY = _ref$preferY === void 0 ? DEFAULT_OPTIONS.preferY : _ref$preferY,\n _ref$auto = _ref.auto,\n auto = _ref$auto === void 0 ? DEFAULT_OPTIONS.auto : _ref$auto,\n _ref$snap = _ref.snap,\n snap = _ref$snap === void 0 ? DEFAULT_OPTIONS.snap : _ref$snap,\n _ref$triggerOffset = _ref.triggerOffset,\n triggerOffset = _ref$triggerOffset === void 0 ? DEFAULT_OPTIONS.triggerOffset : _ref$triggerOffset,\n _ref$containerOffset = _ref.containerOffset,\n containerOffset = _ref$containerOffset === void 0 ? DEFAULT_OPTIONS.containerOffset : _ref$containerOffset,\n _ref$arrowOffset = _ref.arrowOffset,\n arrowOffset = _ref$arrowOffset === void 0 ? DEFAULT_OPTIONS.arrowOffset : _ref$arrowOffset,\n _ref$container = _ref.container,\n container = _ref$container === void 0 ? DEFAULT_OPTIONS.container : _ref$container,\n _ref$layerDimensions = _ref.layerDimensions,\n layerDimensions = _ref$layerDimensions === void 0 ? null : _ref$layerDimensions,\n onDisappear = _ref.onDisappear,\n onOutsideClick = _ref.onOutsideClick,\n onParentClose = _ref.onParentClose,\n triggerOption = _ref.trigger;\n\n // initialize styles\n var _useState = useState(function () {\n return {\n layerSide: placement === \"center\" ? \"center\" : Placements.getSidesFromPlacementType(placement)[0].prop,\n styles: {\n layer: {\n position: overflowContainer ? \"fixed\" : \"absolute\",\n top: 0,\n left: 0\n },\n arrow: {\n position: \"absolute\",\n top: 0,\n left: 0\n }\n }\n };\n }),\n state = _useState[0],\n setState = _useState[1];\n\n var triggerBoundsRef = useRef(null); // tracks state in order for us to use read inside functions that require dependencies,\n // like `useCallback`, without triggering an update\n\n var lastState = useLastState(state, isOpen); // track invalidations for scheduled position updates\n\n var repositioningToken = useRef({\n cancelled: false\n });\n useEffect(function () {\n return function () {\n // when this hook unmounts, make sure to cancel any scheduled position updates\n repositioningToken.current.cancelled = true;\n };\n }, []); // Most important function regarding positioning\n // It receives boundaries collected by `useTrackElements`, does some calculations,\n // sets new styles, and handles when a layer has disappeared.\n\n var handlePositioning = useCallback(function handlePositioning(_ref2, scrollOffsets, borderOffsets) {\n var arrow = _ref2.arrow,\n layer = _ref2.layer,\n scrollContainers = _ref2.scrollContainers,\n trigger = _ref2.trigger;\n var parent = scrollContainers[0];\n var subjectsBounds = SubjectsBounds.create(environment, layer, trigger, parent, arrow, scrollContainers, overflowContainer, triggerOption == null ? void 0 : triggerOption.getBounds);\n var config = {\n placement: placement,\n possiblePlacements: possiblePlacements,\n auto: auto,\n layerDimensions: layerDimensions,\n arrowOffset: arrowOffset,\n containerOffset: containerOffset,\n triggerOffset: triggerOffset,\n preferX: preferX,\n preferY: preferY,\n snap: snap,\n overflowContainer: overflowContainer\n };\n\n var _Placements$create$re = Placements.create(subjectsBounds, config).result(scrollOffsets, borderOffsets),\n hasDisappeared = _Placements$create$re.hasDisappeared,\n layerSide = _Placements$create$re.layerSide,\n styles = _Placements$create$re.styles;\n\n var newState = {\n layerSide: layerSide,\n styles: styles\n };\n\n if (!lastState.current || didStateChange(lastState.current, newState)) {\n lastState.current = newState; // optimistically update lastState to prevent infinite loop\n\n /**\r\n * Throttle state updates slightly by delaying them using an immediately\r\n * resolved promise, only applying them if there is no later update.\r\n * This helps for multiple updates that happens synchronously one after another.\r\n */\n\n repositioningToken.current.cancelled = true;\n var token = {\n cancelled: false\n };\n repositioningToken.current = token;\n Promise.resolve().then(function () {\n if (!token.cancelled) {\n setState(newState);\n }\n });\n }\n\n if (isSet(hasDisappeared) && isSet(onDisappear)) {\n onDisappear(hasDisappeared);\n }\n }, [arrowOffset, auto, containerOffset, environment, layerDimensions, onDisappear, overflowContainer, placement, possiblePlacements, preferX, preferY, snap, triggerOffset, lastState, triggerOption]);\n\n var _useTrackElements = useTrackElements({\n ResizeObserverPolyfill: ResizeObserverPolyfill,\n environment: environment,\n enabled: isOpen,\n overflowContainer: overflowContainer,\n onChange: handlePositioning,\n triggerOption: triggerOption\n }),\n triggerRef = _useTrackElements.triggerRef,\n layerRef = _useTrackElements.layerRef,\n arrowRef = _useTrackElements.arrowRef,\n closestScrollContainer = _useTrackElements.closestScrollContainer;\n\n var _useGroup = useGroup({\n isOpen: isOpen,\n onOutsideClick: onOutsideClick,\n onParentClose: onParentClose\n }),\n closeOnOutsideClickRefs = _useGroup.closeOnOutsideClickRefs,\n registrations = _useGroup.registrations;\n\n var props = {\n triggerProps: Boolean(triggerOption) ? {} // when using the `trigger` option, make `triggerProps` useless\n : {\n ref: mergeRefs(triggerRef, closeOnOutsideClickRefs.trigger, triggerBoundsRef)\n },\n layerProps: {\n ref: mergeRefs(layerRef, closeOnOutsideClickRefs.layer),\n style: state.styles.layer\n },\n arrowProps: {\n ref: arrowRef,\n style: state.styles.arrow,\n layerSide: state.layerSide\n },\n layerSide: state.layerSide,\n triggerBounds: isOpen ? triggerOption ? triggerOption.getBounds() : (_triggerBoundsRef$cur = triggerBoundsRef.current) == null ? void 0 : _triggerBoundsRef$cur.getBoundingClientRect() : null,\n renderLayer: function renderLayer(children) {\n return typeof document !== \"undefined\" ? createPortal(createElement(GroupProvider, {\n registrations: registrations,\n children: children\n }), overflowContainer || !closestScrollContainer ? getContainerElement(container) : closestScrollContainer) : null;\n }\n };\n return props;\n}\n\nfunction didStateChange(previous, next) {\n if (previous.layerSide !== next.layerSide) {\n return true;\n }\n\n var styleProps = [\"position\", \"top\", \"left\", \"right\", \"bottom\"];\n\n for (var _i = 0, _styleProps = styleProps; _i < _styleProps.length; _i++) {\n var prop = _styleProps[_i];\n\n if (previous.styles.layer[prop] !== next.styles.layer[prop] || previous.styles.arrow[prop] !== next.styles.arrow[prop]) {\n return true;\n }\n }\n\n return false;\n}\n\nvar DEFAULT_CONTAINER_ID = \"layers\";\n\nfunction getContainerElement(container) {\n var element;\n\n if (typeof container === \"function\") {\n element = container();\n\n if (!element || !(element instanceof HTMLElement)) {\n throw new Error(\"react-laag: You've passed a function to the 'container' prop, but it returned no valid HTMLElement\");\n }\n } else if (container instanceof HTMLElement) {\n element = container;\n } else if (typeof container === \"string\") {\n element = document.getElementById(container);\n\n if (!element) {\n throw new Error(\"react-laag: You've passed element with id '\" + container + \"' to the 'container' prop, but it returned no valid HTMLElement\");\n }\n } else if (GLOBAL_CONTAINER instanceof HTMLElement) {\n return GLOBAL_CONTAINER;\n } else {\n element = document.getElementById(DEFAULT_CONTAINER_ID);\n\n if (!element) {\n element = document.createElement(\"div\");\n element.id = DEFAULT_CONTAINER_ID;\n element.style.cssText = \"\\n position: absolute;\\n top: 0px;\\n left: 0px;\\n right: 0px;\\n \";\n document.body.appendChild(element);\n }\n }\n\n return element;\n}\n\nvar _excluded = [\"size\", \"angle\", \"borderWidth\", \"borderColor\", \"roundness\", \"backgroundColor\", \"layerSide\", \"style\"];\nvar LEFT = \"left\";\nvar TOP = \"top\";\nvar BOTTOM = \"bottom\";\nvar RIGHT = \"right\";\n\nfunction getWidthBasedOnAngle(angle, size) {\n return Math.tan(angle * (Math.PI / 180)) * size;\n}\n\nfunction getViewBox(sizeA, sizeB, side, borderWidth) {\n var _map;\n\n var map = (_map = {}, _map[BOTTOM] = \"0 \" + -borderWidth + \" \" + sizeB + \" \" + sizeA, _map[TOP] = \"0 0 \" + sizeB + \" \" + (sizeA + borderWidth), _map[RIGHT] = -borderWidth + \" 0 \" + sizeA + \" \" + sizeB, _map[LEFT] = \"0 0 \" + (sizeA + borderWidth) + \" \" + sizeB, _map);\n return map[side.prop];\n}\n\nfunction getTrianglePath(sizeA, sizeB, side, roundness, angle) {\n var _BOTTOM$TOP$RIGHT$LEF, _BOTTOM$TOP$RIGHT$LEF2, _BOTTOM$TOP$RIGHT$LEF3;\n\n var relativeRoundness = roundness / 10 * sizeA * 2;\n var A = (_BOTTOM$TOP$RIGHT$LEF = {}, _BOTTOM$TOP$RIGHT$LEF[BOTTOM] = [0, sizeA], _BOTTOM$TOP$RIGHT$LEF[TOP] = [0, 0], _BOTTOM$TOP$RIGHT$LEF[RIGHT] = [sizeA, sizeB], _BOTTOM$TOP$RIGHT$LEF[LEFT] = [0, sizeB], _BOTTOM$TOP$RIGHT$LEF)[side.prop].join(\" \");\n var B = side.isHorizontal ? \"V 0\" : \"H \" + sizeB;\n var cPoint = sizeB / 2;\n var c1A = sizeB / 2 + getWidthBasedOnAngle(angle, sizeA / 8);\n var c1B = sizeA / 8;\n var C = (_BOTTOM$TOP$RIGHT$LEF2 = {}, _BOTTOM$TOP$RIGHT$LEF2[BOTTOM] = [\"C\", c1A, c1B, cPoint + relativeRoundness, 0, cPoint, 0], _BOTTOM$TOP$RIGHT$LEF2[TOP] = [\"C\", c1A, sizeA - c1B, cPoint + relativeRoundness, sizeA, cPoint, sizeA], _BOTTOM$TOP$RIGHT$LEF2[RIGHT] = [\"C\", c1B, sizeB - c1A, 0, cPoint - relativeRoundness, 0, cPoint], _BOTTOM$TOP$RIGHT$LEF2[LEFT] = [\"C\", sizeA - c1B, sizeB - c1A, sizeA, cPoint - relativeRoundness, sizeA, cPoint], _BOTTOM$TOP$RIGHT$LEF2)[side.prop].join(\" \");\n var d1A = sizeB / 2 - getWidthBasedOnAngle(angle, sizeA / 8);\n var d1B = sizeA / 8;\n var D = (_BOTTOM$TOP$RIGHT$LEF3 = {}, _BOTTOM$TOP$RIGHT$LEF3[BOTTOM] = [\"C\", cPoint - relativeRoundness, 0, d1A, d1B, A], _BOTTOM$TOP$RIGHT$LEF3[TOP] = [\"C\", cPoint - relativeRoundness, sizeA, d1A, sizeA - d1B, A], _BOTTOM$TOP$RIGHT$LEF3[RIGHT] = [\"C\", 0, cPoint + relativeRoundness, d1B, sizeB - d1A, A], _BOTTOM$TOP$RIGHT$LEF3[LEFT] = [\"C\", sizeA, cPoint + relativeRoundness, sizeA - d1B, sizeB - d1A, A], _BOTTOM$TOP$RIGHT$LEF3)[side.prop].join(\" \");\n return [\"M\", A, B, C, D].join(\" \");\n}\n\nfunction getBorderMaskPath(sizeA, sizeB, borderWidth, side, angle) {\n var borderOffset = getWidthBasedOnAngle(angle, borderWidth);\n\n var _ref = !side.isPush ? [sizeA, sizeA - borderWidth] : [0, borderWidth],\n A = _ref[0],\n B = _ref[1];\n\n if (side.isHorizontal) {\n return [\"M\", A, borderWidth, \"V\", sizeB - borderWidth, \"L\", B, sizeB - borderWidth - borderOffset, \"V\", borderOffset + borderWidth, \"Z\"].join(\" \");\n }\n\n return [\"M\", borderWidth, A, \"H\", sizeB - borderWidth, \"L\", sizeB - borderWidth - borderOffset, B, \"H\", borderOffset + borderWidth, \"Z\"].join(\" \");\n}\n\nvar Arrow = /*#__PURE__*/forwardRef(function Arrow(_ref2, ref) {\n var _ref2$size = _ref2.size,\n size = _ref2$size === void 0 ? 8 : _ref2$size,\n _ref2$angle = _ref2.angle,\n angle = _ref2$angle === void 0 ? 45 : _ref2$angle,\n _ref2$borderWidth = _ref2.borderWidth,\n borderWidth = _ref2$borderWidth === void 0 ? 0 : _ref2$borderWidth,\n _ref2$borderColor = _ref2.borderColor,\n borderColor = _ref2$borderColor === void 0 ? \"black\" : _ref2$borderColor,\n _ref2$roundness = _ref2.roundness,\n roundness = _ref2$roundness === void 0 ? 0 : _ref2$roundness,\n _ref2$backgroundColor = _ref2.backgroundColor,\n backgroundColor = _ref2$backgroundColor === void 0 ? \"white\" : _ref2$backgroundColor,\n _ref2$layerSide = _ref2.layerSide,\n layerSide = _ref2$layerSide === void 0 ? \"top\" : _ref2$layerSide,\n _ref2$style = _ref2.style,\n style = _ref2$style === void 0 ? {} : _ref2$style,\n rest = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (layerSide === \"center\") {\n return null;\n }\n\n var side = BoundSide[layerSide];\n var sizeA = size;\n var sizeB = getWidthBasedOnAngle(angle, size) * 2;\n var maxSize = Math.max(sizeA, sizeB);\n return createElement(\"svg\", _extends({\n ref: ref\n }, rest, {\n style: _extends({}, style, {\n transform: \"translate\" + (side.isHorizontal ? \"Y\" : \"X\") + \"(-50%)\"\n }),\n width: maxSize,\n height: maxSize,\n preserveAspectRatio: side.isPush ? \"xMinYMin\" : \"xMaxYMax\",\n viewBox: getViewBox(sizeA, sizeB, side, borderWidth)\n }), createElement(\"path\", {\n fill: backgroundColor,\n strokeWidth: borderWidth,\n stroke: borderColor,\n d: getTrianglePath(sizeA, sizeB, side, roundness, angle)\n }), createElement(\"path\", {\n fill: backgroundColor,\n d: getBorderMaskPath(sizeA, sizeB, borderWidth, side, angle)\n }));\n});\n\nvar Status;\n\n(function (Status) {\n Status[Status[\"ENTERING\"] = 0] = \"ENTERING\";\n Status[Status[\"LEAVING\"] = 1] = \"LEAVING\";\n Status[Status[\"IDLE\"] = 2] = \"IDLE\";\n})(Status || (Status = {}));\n\nfunction useHover(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$delayEnter = _ref.delayEnter,\n delayEnter = _ref$delayEnter === void 0 ? 0 : _ref$delayEnter,\n _ref$delayLeave = _ref.delayLeave,\n delayLeave = _ref$delayLeave === void 0 ? 0 : _ref$delayLeave,\n _ref$hideOnScroll = _ref.hideOnScroll,\n hideOnScroll = _ref$hideOnScroll === void 0 ? true : _ref$hideOnScroll;\n\n var _useState = useState(false),\n show = _useState[0],\n setShow = _useState[1];\n\n var timeout = useRef(null);\n var status = useRef(Status.IDLE);\n var hasTouchMoved = useRef(false);\n var removeTimeout = useCallback(function removeTimeout() {\n clearTimeout(timeout.current);\n timeout.current = null;\n status.current = Status.IDLE;\n }, []);\n\n function onMouseEnter() {\n // if was leaving, stop leaving\n if (status.current === Status.LEAVING && timeout.current) {\n removeTimeout();\n }\n\n if (show) {\n return;\n }\n\n status.current = Status.ENTERING;\n timeout.current = window.setTimeout(function () {\n setShow(true);\n timeout.current = null;\n status.current = Status.IDLE;\n }, delayEnter);\n }\n\n function onMouseLeave(_, immediate) {\n // if was waiting for entering,\n // clear timeout\n if (status.current === Status.ENTERING && timeout.current) {\n removeTimeout();\n }\n\n if (!show) {\n return;\n }\n\n if (immediate) {\n setShow(false);\n timeout.current = null;\n status.current = Status.IDLE;\n return;\n }\n\n status.current = Status.LEAVING;\n timeout.current = window.setTimeout(function () {\n setShow(false);\n timeout.current = null;\n status.current = Status.IDLE;\n }, delayLeave);\n } // make sure to clear timeout on unmount\n\n\n useEffect(function () {\n function onScroll() {\n if (show && hideOnScroll) {\n removeTimeout();\n setShow(false);\n }\n }\n\n window.addEventListener(\"scroll\", onScroll, true);\n return function () {\n window.removeEventListener(\"scroll\", onScroll, true);\n\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n };\n }, [show, hideOnScroll, removeTimeout]);\n var hoverProps = {\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onTouchStart: function onTouchStart() {\n hasTouchMoved.current = false;\n },\n onTouchMove: function onTouchMove() {\n hasTouchMoved.current = true;\n },\n onTouchEnd: function onTouchEnd() {\n if (!hasTouchMoved.current && !show) {\n setShow(true);\n }\n\n hasTouchMoved.current = false;\n }\n };\n return [show, hoverProps, function () {\n return onMouseLeave(null, true);\n }];\n}\n\n/**\r\n * @deprecated\r\n * Note: this component is marked as deprecated and will be removed and a possible\r\n * future release\r\n */\n\nfunction Transition(_ref) {\n var isOpenExternal = _ref.isOpen,\n children = _ref.children;\n\n var _useState = useState({\n isOpenInternal: isOpenExternal,\n isLeaving: false\n }),\n state = _useState[0],\n setState = _useState[1];\n\n var didMount = useRef(false);\n useEffect(function () {\n if (isOpenExternal) {\n setState({\n isOpenInternal: true,\n isLeaving: false\n });\n } else if (didMount.current) {\n setState({\n isOpenInternal: false,\n isLeaving: true\n });\n }\n }, [isOpenExternal, setState]);\n useEffect(function () {\n process.env.NODE_ENV !== \"production\" ? warning(children, \"react-laag: You are using 'Transition'. Note that this component is marked as deprecated and will be removed at future releases\") : void 0;\n }, [children]);\n useEffect(function () {\n didMount.current = true;\n }, []);\n\n if (!isOpenExternal && !state.isOpenInternal && !state.isLeaving) {\n return null;\n }\n\n return children(state.isOpenInternal, function () {\n if (!state.isOpenInternal) {\n setState(function (s) {\n return _extends({}, s, {\n isLeaving: false\n });\n });\n }\n }, state.isLeaving);\n}\n\nexport { Arrow, DEFAULT_OPTIONS, PLACEMENT_TYPES, Transition, mergeRefs, setGlobalContainer, useHover, useLayer, useMousePositionAsTrigger };\n//# sourceMappingURL=react-laag.esm.js.map\n","import { useState, useCallback } from \"react\";\n\nimport Accordion from \"@mui/material/Accordion\";\nimport Chip from \"@mui/material/Chip\";\nimport AccordionSummary from \"@mui/material/AccordionSummary\";\nimport AccordionDetails from \"@mui/material/AccordionDetails\";\nimport Typography from \"@mui/material/Typography\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport RadioButtonCheckedIcon from \"@mui/icons-material/RadioButtonChecked\";\n\nimport DataEditor, {\n // DataEditorProps,\n GridCellKind,\n Item,\n GridCell,\n // GridColumn,\n // GridColumnIcon\n} from \"@glideapps/glide-data-grid\";\nimport { useExtraCells } from \"@glideapps/glide-data-grid-cells\";\nimport { useLayer } from \"react-laag\";\n\nimport \"react-responsive-carousel/lib/styles/carousel.min.css\";\nimport \"@glideapps/glide-data-grid/dist/index.css\";\n\nexport const List = (props: any) => {\n const [showSearch, setShowSearch] = useState(false);\n const [columns, setColumns] = useState(props.header);\n const [data, setData] = useState(props.tableData);\n const [showMenu, setShowMenu] = useState<any>();\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(true);\n\n const onSearchClose = useCallback(() => setShowSearch(false), []);\n const cellProps = useExtraCells();\n\n const onColumnResize = useCallback(\n (column: any, newSize: any) => {\n setColumns((prevColsMap: any) => {\n const index = columns.findIndex((ci: any) => ci.title === column.title);\n const newArray = [...prevColsMap];\n newArray.splice(index, 1, {\n ...prevColsMap[index],\n width: newSize,\n });\n return newArray;\n });\n },\n [columns],\n );\n\n const getContent = useCallback(\n ([col, row]: Item): GridCell => {\n // console.log(\"cell\", cell)\n // const [col, row]: Item = cell;\n const dataRow = data[row];\n const d = dataRow[columns[col].id];\n\n const { dataType } = columns[col];\n\n if (dataType === \"Number\") {\n return {\n allowOverlay: true,\n kind: GridCellKind.Number,\n data: d,\n displayData: d.toString(),\n };\n } else if (dataType === \"Image\") {\n return {\n kind: GridCellKind.Image,\n data: [d],\n allowOverlay: true,\n allowAdd: true,\n };\n } else if (dataType === \"Bubble\") {\n return {\n kind: GridCellKind.Bubble,\n data: [\"sss\", \"ss\"],\n allowOverlay: true,\n };\n } else if (dataType === \"SingleDropdown\") {\n return {\n kind: GridCellKind.Custom,\n allowOverlay: true,\n copyData: \"4\",\n data: {\n kind: \"dropdown-cell\",\n allowedValues: [\"Good\", \"Better\", \"Best\"],\n value: \"Good\",\n },\n };\n } else if (dataType === \"DatePicker\") {\n return {\n kind: GridCellKind.Custom,\n allowOverlay: true,\n copyData: \"4\",\n data: {\n kind: \"date-picker-cell\",\n date: new Date(),\n displayDate: new Date().toISOString(),\n format: \"date\",\n },\n };\n } else {\n return {\n kind: GridCellKind.Text,\n allowOverlay: true,\n readonly: false,\n displayData: d,\n data: d,\n };\n }\n },\n [data, columns],\n );\n\n const onCellEdited = useCallback(\n (cell: any, newValue: any) => {\n if (newValue.kind !== GridCellKind.Text) {\n // we only have text cells, might as well just die here.\n return;\n }\n\n const [col, row] = cell;\n const key = columns[col].id;\n data[row][key] = newValue.data;\n\n setData(data);\n },\n [data, columns],\n );\n\n const onDragOverCell = (cell: any) => {\n console.log(cell);\n };\n\n const onRowAppended = useCallback(() => {\n const newRowObj: any = {};\n console.log(Object.entries(data[0]));\n for (const [key] of Object.entries(data[0])) {\n newRowObj[key] = \"\";\n }\n setData([...data, newRowObj]);\n }, [data]);\n\n const onHeaderClicked = useCallback(() => {\n console.log(\"Header clicked\");\n }, []);\n\n const onOutsideClick = () => {\n if (isSubMenuOpen) {\n setShowMenu(undefined);\n setIsSubMenuOpen((cv) => !cv);\n }\n setIsSubMenuOpen((cv) => !cv);\n };\n\n const { renderLayer, layerProps } = useLayer({\n isOpen: showMenu !== undefined,\n triggerOffset: 2,\n onOutsideClick,\n trigger: {\n getBounds: () => ({\n bottom: (showMenu?.bounds.y ?? 0) + (showMenu?.bounds.height ?? 0),\n height: showMenu?.bounds.height ?? 0,\n left: showMenu?.bounds.x ?? 0,\n right: (showMenu?.bounds.x ?? 0) + (showMenu?.bounds.width ?? 0),\n top: showMenu?.bounds.y ?? 0,\n width: showMenu?.bounds.width ?? 0,\n }),\n },\n placement: \"bottom-end\",\n auto: true,\n });\n\n const onHeaderMenuClick = useCallback((col: any, bounds: any) => {\n setIsSubMenuOpen((cv) => !cv);\n setShowMenu({ col, bounds });\n }, []);\n\n const onAddCol = useCallback(() => {\n const newData = data.map((row: any) => {\n return { ...row, new: \"\" };\n });\n setData(newData);\n // setIndexes([...Object.keys(data[0]), \"new\"]);\n setColumns([\n ...columns,\n {\n title: \"New\",\n id: \"new\",\n hasMenu: true,\n },\n ]);\n }, [data, columns]);\n\n const onColMoved = useCallback((startIndex: any, endIndex: any) => {\n setColumns((old: any) => {\n const newCols = [...old];\n const [toMove] = newCols.splice(startIndex, 1);\n newCols.splice(endIndex, 0, toMove);\n return newCols;\n });\n }, []);\n\n return (\n <Accordion>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <Typography>\n <Chip\n size=\"small\"\n color=\"primary\"\n icon={<RadioButtonCheckedIcon />}\n label=\"Accordion 1\"\n />\n </Typography>\n </AccordionSummary>\n <AccordionDetails></AccordionDetails>\n {/* <button onClick={() => setShowSearch(true)}>\n Show Search\n </button> */}\n <DataEditor\n {...cellProps}\n getCellContent={getContent}\n columns={columns}\n onCellEdited={onCellEdited}\n onHeaderMenuClick={onHeaderMenuClick}\n onHeaderClicked={onHeaderClicked}\n onCellContextMenu={(_, e) => e.preventDefault()}\n rows={data.length}\n rowMarkers={\"both\"}\n showSearch={showSearch}\n getCellsForSelection={true}\n onSearchClose={onSearchClose}\n onRowAppended={onRowAppended}\n onDragOverCell={onDragOverCell}\n onRowMoved={(s, e) => window.alert(`Moved row ${s} to ${e}`)}\n // height={\"100px\"}\n onColumnMoved={onColMoved}\n trailingRowOptions={{\n // How to get the trailing row to look right\n sticky: true,\n tint: false,\n hint: \"New row...\",\n // themeOverride: true\n }}\n smoothScrollX={true}\n smoothScrollY={true}\n verticalBorder={(c) => c > 0}\n // freezeColumns={1}\n onDragStart={(e) => {\n e.setData(\"text/plain\", \"Drag data here!\");\n }}\n rightElement={\n <div className=\"addCol\">\n <button onClick={() => onAddCol()}>+</button>\n </div>\n }\n rightElementProps={{\n fill: false,\n sticky: true,\n }}\n onColumnResize={onColumnResize}\n />\n <div id=\"portal\" />\n {showMenu !== undefined &&\n renderLayer(\n <div\n {...layerProps}\n style={{\n ...layerProps.style,\n width: 300,\n padding: 4,\n borderRadius: 8,\n backgroundColor: \"white\",\n border: \"1px solid black\",\n }}\n >\n <ul>\n <li>Action 1</li>\n <li>Action 2</li>\n <li>Action 3</li>\n </ul>\n </div>,\n )}\n </Accordion>\n );\n};\n\nexport default List;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Box } from '@mui/material';\n\nimport Typography from '../../typography/typography';\nimport DatePicker from '../../date-picker/date-picker';\nimport DateTimePicker from '../../date-time-picker/date-time-picker';\nimport TextField from '../../text-field/text-field';\nimport UploadMedia from '../../upload-media/upload-media';\n\nimport * as yup from 'yup';\nimport _ from 'lodash';\nimport dayjs from 'dayjs';\nimport PhoneInput from '../../phone-input/phone-input';\nimport Checkbox from '../../checkbox/checkbox';\nimport SearchableSelect from '../../searchable-select';\nimport TimePicker from '../../time-picker/time-picker';\n\ninterface IInlineEditFields {\n\tcell: any;\n\tcolumn: any;\n\trow: any;\n\ttable: any;\n\tcol: any;\n\tcallback: (value: any, column: any, rowId: any) => any;\n\terrors: any;\n\tvalidationSchema: any;\n\tsetValidationErrors: any;\n\tonChangeRowField?: (e: any, type: string, row: any) => any;\n\tgetSelectedData:any\n}\nconst InlineEditFields: React.FC<IInlineEditFields> = ({\n\t// cell,\n\tcolumn,\n\trow,\n\t// table,\n\tcol,\n\t// callback,\n\terrors,\n\tvalidationSchema,\n\tsetValidationErrors,\n\tonChangeRowField,\n\tgetSelectedData,\n\tsyncFieldValue\n}) => {\n\n\tconst [inputValue, setInputValue] = useState<any>();\n\tconst [isInitialSet, setIsInitialSet] = useState<any>(false);\n const customFilter=useRef(null)\n\t// ** Getting only editing enabled fields.\n\tconst editCols = row\n\t\t.getAllCells()\n\t\t.map((col: any) => col.column.columnDef)\n\t\t.filter(\n\t\t\t(col: any) =>\n\t\t\t\tcol?.enableEditing === undefined || col?.enableEditing === true\n\t\t);\n\n\tconst editVariant = col.editVariant;\n\tconst fieldProperties = column.columnDef?.editProperties || {};\n\n\t// ** Default and Dynamic disbaling a field with row data\n\tlet fieldDisbled = false;\n\tif (fieldProperties?.disable) {\n\t\tif (typeof fieldProperties.disable === 'function') {\n\t\t\tfieldDisbled = Boolean(fieldProperties?.disable(row, row._valuesCache));\n\t\t} else {\n\t\t\tfieldDisbled = Boolean(fieldProperties.disable);\n\t\t}\n\t}\n\n\tconst handleCustomFilter = useCallback(async (row, values) => {\n\t\t\n\t\ttry {\n\t\t\tif (typeof fieldProperties.customeFilter === 'function') {\n\t\t\t\tconst filter = await fieldProperties.customeFilter(row, values);\n\t\t\t\tcustomFilter.current = filter;\n\t\t\t\treturn filter;\n\t\t\t} else {\n\t\t\t\tcustomFilter.current = fieldProperties?.customeFilter;\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn null;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [fieldProperties, row, row._valuesCache]);\n\n\t\n\tuseEffect(()=>{\n\t\thandleCustomFilter(row, row._valuesCache)\n\t},[handleCustomFilter,row,row._valuesCache]);\n\t// ** Setting a default value for edit mode.\n\tconst valueKey = fieldProperties?.valueKey;\n\tlet defaultValue: any = '';\n\n\tif (editVariant === 'select' && fieldProperties?.is_multiple) {\n\t\tdefaultValue = valueKey ? _.get(row.original, valueKey, []) : [];\n\t} else {\n\t\tdefaultValue = valueKey\n\t\t\t? _.get(row.original, valueKey, row.original[column.id])\n\t\t\t: row.original[column.id];\n\t\t\n\t\t// For select fields, if we have a string or numeric value but need an object, try to find the matching option\n\t\tif (editVariant === 'select' && (typeof defaultValue === 'string' || typeof defaultValue === 'number') && col?.editSelectOptions) {\n\t\t\tconst matchingOption = col.editSelectOptions.find((option: any) => \n\t\t\t\toption.value === defaultValue || option.id === defaultValue || option.name === defaultValue || String(option.id) === String(defaultValue)\n\t\t\t);\n\t\t\tif (matchingOption) {\n\t\t\t\tdefaultValue = matchingOption;\n\t\t\t}\n\t\t}\n\t}\n\n\t// ** Validate a field with Material Table Validation Schema.\n\tconst validate = async (value: any) => {\n\t\ttry {\n\t\t\t// const v = await validationSchema.validateAt( // * * This line has commented for rerendering purpose\n\t\t\tawait validationSchema.validateAt(\n\t\t\t\tcolumn.id,\n\t\t\t\t{\n\t\t\t\t\t[column.id]: value\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tabortEarly: false\n\t\t\t\t}\n\t\t\t);\n\t\t\t// if (v) { // * * The if condition has commented for rerendering purpose\n\t\t\t\tconst fe: any = {}; // field error\n\t\t\t\tfor (const e in errors) {\n\t\t\t\t\tif (e != column.id) {\n\t\t\t\t\t\tfe[e] = errors[e];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsetValidationErrors(fe);\n\t\t\t// }\n\t\t} catch (err) {\n\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\tconst e: Record<string, string> = {};\n\t\t\t\terr.inner.forEach((error) => {\n\t\t\t\t\tif (error.path) {\n\t\t\t\t\t\te[error.path] = error.message;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst em = { ...errors, ...e };\n\t\t\t\tsetValidationErrors(em);\n\t\t\t}\n\t\t}\n\t};\n\n\t\n\n\t// ** Detect onChnage to perform the action on an input change.\n\tconst onChange = async (e: any, type: string,selectedData:any) => {\n\t\tconst data = selectedData\n\t\tlet value;\n\t\tswitch (type) {\n\t\t\tcase 'date':\n\t\t\tcase 'file':\n\t\t\tcase 'image':\n\t\t\tcase 'phone':\n\t\t\tcase 'time':\n\t\t\t\tvalue = e;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: e });\n\t\t\t\tbreak;\n\t\t\tcase 'text':\n\t\t\tcase 'number':\n\t\t\t\tvalue = e.target.value;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tcase 'checkbox':\n\t\t\t\tvalue = e.target.checked;\n\t\t\t\t// setInputValue({ ...inputValue, [column.id]: value });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tvalue = e.target.value;\n\t\t\t\tbreak;\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\t\n\t\tif (onChangeRowField) {\n\t\t\tconst v = await onChangeRowField(e, type, row, col, data);\n\t\t\tif (v) {\n\t\t\t\trow._valuesCache = { ...row._valuesCache, ...v };\n\t\t\t\tsetInputValue({ ...inputValue, ...v });\n\t\t\t}\n\t\t}\n\t\tsetInputValue({ ...inputValue, [column.id]: value });\n\t\trow._valuesCache = { ...row._valuesCache, [column.id]: value };\n\t\tsyncFieldValue(row.id, column.id, value);\n\t\t\n\t\tawait validate(value);\n\t};\n\n\tuseEffect(() => {\n\t\tsetInputValue({ ...inputValue, ...row._valuesCache });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [row._valuesCache]);\n\n\tuseEffect(() => {\n\t\tif (!isInitialSet) {\n\t\t\tconst editFields = Object.keys(row._valuesCache || {});\n\t\t\tconst dValues: any = {};\n\n\t\t\trow.getAllCells().forEach((cell) => {\n\t\t\t\tif (\n\t\t\t\t\tcell.column.columnDef?.enableEditing === undefined ||\n\t\t\t\t\tcell.column.columnDef?.enableEditing === true\n\t\t\t\t) {\n\t\t\t\t\tconst { is_multiple, valueKey } =\n\t\t\t\t\t\tcell.column.columnDef?.editProperties || {};\n\t\t\t\t\tif (editFields.includes(cell.column.id)) {\n\t\t\t\t\t\tconst vl = _.get(row.original, valueKey);\n\t\t\t\t\t\tif (editVariant === 'select' && is_multiple) {\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\n\t\t\t\t\t\t\t\t? Array.isArray(vl)\n\t\t\t\t\t\t\t\t\t? vl\n\t\t\t\t\t\t\t\t\t: [vl]\n\t\t\t\t\t\t\t\t: [];\n\t\t\t\t\t\t} else if (editVariant === 'date' || editVariant === 'date_time' || editVariant === 'time') {\n\t\t\t\t\t\t\tdValues[cell.column.id] = vl\n\t\t\t\t\t\t\t\t? dayjs(vl).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(vl)\n\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t: dayjs(row.original[cell.column.id]).isValid()\n\t\t\t\t\t\t\t\t\t? dayjs(row.original[cell.column.id])\n\t\t\t\t\t\t\t\t\t: undefined;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdValues[cell.column.id] = _.get(\n\t\t\t\t\t\t\t\trow.original,\n\t\t\t\t\t\t\t\tvalueKey,\n\t\t\t\t\t\t\t\trow.original[cell.column.id]\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\t// setFieldsValues(dValues);\n\t\t\trow._valuesCache = dValues;\n\t\t\tsetInputValue(dValues);\n\t\t\tsetIsInitialSet(true);\n\t\t}\n\t}, [row, editVariant, isInitialSet]);\n\treturn (\n\t\t<>\n\t\t\t{(!editVariant || editVariant === 'number') && (\n\t\t\t\t<TextField\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t// onBlur={(e) => onBlur(e)}\n\t\t\t\t\t// onKeyDown={onKeyDown}\n\t\t\t\t\tonChange={(e) => onChange(e, editVariant)}\n\t\t\t\t\tvalue={inputValue?.[column.id]}\n\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\ttype={editVariant || 'text'}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'select' && (\n\t\t\t\t<Box display='flex' flexDirection='column' width='100%'>\n\t\t\t\t\t<SearchableSelect\n\t\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\t\tplaceholder={fieldProperties?.placeholder || ''}\n\t\t\t\t\t\tsearchPlaceholder={`Search ${col.header}`}\n\t\t\t\t\t\tonChange={(e, row) => onChange(e, 'select', row)}\n\t\t\t\t\t\tapiType={fieldProperties?.apiType}\n\t\t\t\t\t\tautoFocus={editCols?.[0]?.accessorKey === column.id}\n\t\t\t\t\t\toptions={col?.editSelectOptions}\n\t\t\t\t\t\tcustomeFilter={customFilter.current}\n\t\t\t\t\t\tfilterKey={fieldProperties?.filterKey}\n\t\t\t\t\t\tlabelKey={fieldProperties?.labelKey}\n\t\t\t\t\t\tvalueKey={fieldProperties?.bindingKey}\n\t\t\t\t\t\tattributes={fieldProperties.attributes}\n\t\t\t\t\t\tisInternal={fieldProperties?.isInternal || !fieldProperties?.apiType}\n\t\t\t\t\t\tmultiple={fieldProperties?.is_multiple}\n\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\tfieldProperties?.is_multiple\n\t\t\t\t\t\t\t\t? Array.isArray(inputValue?.[column.id])\n\t\t\t\t\t\t\t\t\t? inputValue?.[column.id]\n\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t: inputValue?.[column.id]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgetSelectedData={(row)=>getSelectedData(fieldProperties?.field_name,row)}\n\t\t\t\t\t/>\n\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'date' && (\n\t\t\t\t<DatePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tminDate={fieldProperties?.min_date}\n\t\t\t\t\tmaxDate={fieldProperties?.max_date}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'date_time' && (\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultValue={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'date')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'time' && (\n\t\t\t\t<TimePicker\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tlabel=''\n\t\t\t\t\tvalue={\n\t\t\t\t\t\tdayjs(row._valuesCache[column.id]).isValid()\n\t\t\t\t\t\t\t? dayjs(row._valuesCache[column.id])\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonChange={(v) => onChange(v, 'time')}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tplaceholder={fieldProperties?.placeholder || 'HH:mm A'}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tis24hrFormat={fieldProperties?.is24hrFormat}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{(editVariant === 'file' || editVariant === 'image') && (\n\t\t\t\t<Box display='flex' flexDirection='column'>\n\t\t\t\t\t<UploadMedia\n\t\t\t\t\t\tname={fieldProperties?.field_name || 'table_file'}\n\t\t\t\t\t\tdataPosition={0}\n\t\t\t\t\t\tdataName='table_file'\n\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\ttype={editVariant}\n\t\t\t\t\t\tmax_size={10}\n\t\t\t\t\t\tonChange={(v) => onChange(v, 'file')}\n\t\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\t\tmultiple={Boolean(column?.is_multiple)}\n\t\t\t\t\t\tvalue={row._valuesCache[column.id]}\n\t\t\t\t\t/>\n\t\t\t\t\t{errors?.[column.id] && (\n\t\t\t\t\t\t<Typography color='theme.error.600' type='s5'>\n\t\t\t\t\t\t\t{errors?.[column.id]}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{editVariant === 'phone' && (\n\t\t\t\t<PhoneInput\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefault_value={defaultValue}\n\t\t\t\t\tonChange={(v) => onChange(v, 'phone')}\n\t\t\t\t\ttextFieldProps={{\n\t\t\t\t\t\tautoFocus: editCols?.[0]?.accessorKey === column.id\n\t\t\t\t\t}}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t\tisInlineEditing={true}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t{editVariant === 'checkbox' && (\n\t\t\t\t<Checkbox\n\t\t\t\t\tname={fieldProperties?.field_name || ''}\n\t\t\t\t\tdefaultChecked={Boolean(defaultValue)}\n\t\t\t\t\t// checked={Boolean(defaultValue)}\n\t\t\t\t\tonChange={(v) => onChange(v, 'checkbox')}\n\t\t\t\t\terror={errors?.[column.id] ? true : false}\n\t\t\t\t\thelperText={errors?.[column.id]}\n\t\t\t\t\tformat={fieldProperties?.dateFormat}\n\t\t\t\t\tplaceholder={\n\t\t\t\t\t\tfieldProperties?.placeholder || fieldProperties?.dateFormat\n\t\t\t\t\t}\n\t\t\t\t\tvalue={row._valuesCache?.[column.id]}\n\t\t\t\t\tdisabled={fieldDisbled}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nexport default InlineEditFields;\n","/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport React, { cloneElement, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n\tMRT_ColumnDef,\n\tMRT_ColumnSizingInfoState,\n\tMRT_ColumnSizingState,\n\tMRT_Header,\n\tMRT_Row,\n\tMRT_RowData,\n\tMRT_RowSelectionState,\n\tMRT_SortingState,\n\tMRT_TableInstance,\n\tMRT_TableState,\n\tMaterialReactTable,\n\tMaterialReactTableProps,\n\tuseMaterialReactTable,\n\t// Cell\n} from 'material-react-table';\nimport { IPaginationModel } from '../../@types/pagination-model';\nimport {\n\tBox,\n\tstyled,\n\tMenuItem,\n\tIconButton,\n\tListItemIcon,\n\tListItemText,\n\tSvgIconProps,\n\tDivider\n} from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport Menu from '../menu/menu';\nimport Typography from '../typography/typography';\nimport SearchBar from '../search-bar/search-bar';\nimport images from '../../assets/images';\n// import DeleteIcon from \"@mui/icons-material/Delete\";\n// import UpdateIcon from \"@mui/icons-material/Update\";\n// import PlayIcon from \"@mui/icons-material/PlayArrow\";\n\nimport './material-editable-table.scss';\nimport {\n\tArrowUpDown,\n\tCheckBoxIcon,\n\tClose,\n\tRecgtangleIcon,\n\tTrash,\n\tSave\n} from '../icons';\n// import {\n// \tArrowDropDown /* , SaveOutlined */,\n// \tArrowDropUp\n// } from '@mui/icons-material';\nimport InlineEditFields from './components/inline-edit-fields';\nimport Tooltip from '../tooltip/Tooltip';\nimport Button from '../button/button';\nimport Add from '@mui/icons-material/Add';\nimport dayjs from 'dayjs';\nimport * as yup from 'yup';\nimport ConfirmPopUp from '../confirm-modal/confirm-modal';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport { usePages } from '../../hooks/use-pages';\nimport { useNavigate } from 'react-router-dom';\n// import { PathnameAccounting } from 'accounting/src/pathname.accounting';\n// import { PathnameInventory } from 'inventory/src/pathname.inventory';\n// import { PathnameManufacturing } from 'manufacturing/src/pathname.manufacturing';\n// import { PathnamePurchase } from 'procurement/src/pathname.procurement';\n// import { PathnameCrm } from 'crm/src/pathname.crm';\n// import { PathnameUsers } from '../../constants/pathnames/pathname.user';\n// import { PathnameRental } from '../../../../rental/src/pathname.rental';\n// import { PathnameDocument } from 'document/src/pathname.document';\nimport { PathnameDocument } from '../../constants/pathnames/pathname.document';\nimport { PathnameAccounting } from '../../constants/pathnames/pathname.accounting';\nimport { PathnameInventory } from '../../constants/pathnames/pathname.inventory';\nimport { PathnameManufacturing } from '../../constants/pathnames/pathname.manufacturing';\nimport { PathnamePurchase } from '../../constants/pathnames/pathname.procurement';\nimport { PathnameCrm } from '../../constants/pathnames/pathname.crm';\nimport { PathnameUsers } from '../../constants/pathnames/pathname.user';\nimport { PathnameRental } from '../../constants/pathnames/pathname.rental';\nimport useDeepMemo from '../../hooks/use-deep-memo';\nimport { PageState } from '../../contexts/page-context';\n\ntype ExtraEditVariants =\n\t| 'file'\n\t| 'image'\n\t| 'date'\n\t| 'number'\n\t| 'time'\n\t| 'date_time'\n\t| 'phone'\n\t| 'checkbox';\n\ntype DisableFunction = (row: any, virtualRow?: any) => boolean;\n\nexport type TypeBooleanLabels = { 1: string; 0: string; true: string; false: string }\n\nexport interface MaterialEditableTableColumnProps\n\textends Omit<MRT_ColumnDef<MRT_RowData>, 'editVariant'> {\n\tvisible?: boolean;\n\ttype?: string;\n\tshowDefaultCurrency?: boolean,\n\tvalueGet?: string;\n\tcustom_class?: string;\n\ttypeArrayAccessorKey?: string; //when type is an array of object\n\ttypeBooleanLabels?: TypeBooleanLabels; //when type is an boolean\n\teditVariant?: MRT_ColumnDef<MRT_RowData>['editVariant'] | ExtraEditVariants;\n\teditProperties?: {\n\t\tfield_name?: string;\n\t\tvalueKey?: string;\n\t\tplaceholder?: string;\n\t\tdateFormat?: string;\n\t\tvalidations?: any[];\n\t\tis_multiple?: boolean;\n\t\tis_multiline?: boolean;\n\t\tdisable?: boolean | DisableFunction;\n\t\tmin_date?: any;\n\t\tmax_date?: any;\n\t};\n\tredirectionPathWithId?: string;\n\tidField?: string;\n\tisOnClickEditable?: boolean; // Controls whether clicking this column triggers row edit mode (default: true)\n}\n\n\n\nexport interface MaterialEditableTableColumnHeaderProps {\n\tcolumn: MRT_ColumnDef<any, any>;\n\theader: MRT_Header<any>;\n\ttable: MRT_TableInstance<any>;\n}\n\ntype rowSelectionCallback = (row: MRT_Row) => boolean\n\ninterface MaterialEditableTablePropsType {\n\tenablePagination?: boolean;\n\trows: any;\n\ttotalPages: number;\n\tcolumns: any;\n\tpaginationModel: IPaginationModel;\n\tcolumnOrder?: string[];\n\tupdateData?: any;\n\thandleColumnOrdering?: (colOrder: any) => void;\n\tenableEditing?: boolean;\n\tenableColumnDragging?: boolean;\n\trowActionMenu?: any;\n\tdestructiveActionMenu?: any;\n\tgetRowId?: any;\n\tstates?: Partial<MRT_TableState<any>>;\n\tonSortingChange?: any;\n\tdisableDefaultActionColumn?: boolean;\n\tenableRowSelection?: boolean | rowSelectionCallback;\n\tdefaultActionColumnItems?: React.ReactElement[];\n\tenableBottomToolbar?: boolean;\n\tSetSelectedRowId?: any;\n\tisResetRow?: boolean;\n\tonCreateRow?: (data: any) => Promise<unknown>;\n\tonEditRow?: (data: any) => Promise<unknown>;\n\tonDeleteRow?: (data: any) => Promise<unknown>;\n\teditDisplayMode?: MaterialReactTableProps<any>['editDisplayMode'];\n\tenableRowCreate?: boolean;\n\tonChangeRowField?: (e: any, type: string, row: any) => void;\n\tonSelectRow?: (rows: any, prevSelected?: any) => any;\n\tenableColumnResizing?: boolean;\n\tselectedRowIds?: any[];\n\tonColumnVisibility?: (columns: MaterialTableColumnProps[]) => void\n\tgetSelectedData: any;\n\tenableAddCustomField?: boolean;\n\tdisabledDefaultActionColumnIcon?: boolean\n\tenableRowDragging?: boolean\n\thandleColumnResizing?: (sizes: MRT_ColumnSizingState) => void,\n\tcolumnSizes?: MRT_ColumnSizingState,\n\thideSaveButton?: boolean;\n\thideDeleteButton?: (row: any) => boolean;\n\tenableFirstRowEdit?: boolean;\n}\n\nconst TableWrapper = styled(Box)(({ theme: { palette } }) => ({\n\t'.MuiTableCell-root': {\n\t\tborder: '1px solid #efefef',\n\t\tborderBottom: 0,\n\t\tborderLeft: 0,\n\t\tpadding: '0 0.5rem',\n\t\tlineHeight: '19px',\n\t\tfontSize: '14px',\n\t\tminHeight: 32,\n\t\t// '&:first-child': {\n\t\t// \tborderLeft: '1px solid #efefef'\n\t\t// },\n\t\t// '&:last-child': {\n\t\t// \tborderBottom: '1px solid #efefef'\n\t\t// }\n\n\t},\n\t'.MuiTableCell-head': {\n\t\tbackgroundColor: palette.theme?.secondary[100]\n\t},\n\t'.MuiTableContainer-root': {\n\t\tmaxHeight: 'clamp(350px, 100vh - 200px, 9999px) !important',\n\t},\n\n\t'.MuiPaper-root': {\n\t\tboxShadow: 'none',\n\n\t},\n\t'.MuiPaginationItem-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: palette?.theme?.primary[700],\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiTableRow-root': {\n\t\t'&.Mui-selected': {\n\t\t\tbackgroundColor: `${palette?.theme?.primary[100]} !important`,\n\t\t\tcolor: 'white'\n\t\t}\n\t},\n\t'.MuiCheckbox-indeterminate': {\n\t\tcolor: `${palette?.theme?.primary[700]} !important`,\n\t\t\"& svg\": {\n\t\t\theight: `20px !important`,\n\t\t\twidth: `20px !important`,\n\t\t}\n\t}\n}));\n\nexport type RowValues = Record<string, unknown>;\n\nconst MaterialEditableTable = React.memo(({\n\tenablePagination = false,\n\trows,\n\tcolumns,\n\ttotalPages,\n\tpaginationModel,\n\tcolumnOrder,\n\tupdateData,\n\thandleColumnOrdering,\n\tenableEditing,\n\tenableColumnDragging,\n\tstates,\n\trowActionMenu,\n\tdestructiveActionMenu,\n\tdisableDefaultActionColumn,\n\tenableRowSelection,\n\tdefaultActionColumnItems = [],\n\tenableBottomToolbar,\n\tSetSelectedRowId,\n\tisResetRow,\n\tonCreateRow,\n\tonEditRow,\n\tonDeleteRow,\n\teditDisplayMode,\n\tenableRowCreate,\n\tonChangeRowField,\n\tonSelectRow,\n\tenableColumnResizing = true,\n\tselectedRowIds = [],\n\tonColumnVisibility,\n\tonSortingChange,\n\tgetSelectedData,\n\tdisabledDefaultActionColumnIcon = false,\n\tenableAddCustomField = true,\n\tenableRowDragging = false,\n\thandleColumnResizing = () => { },\n\tcolumnSizes = {},\n\thideSaveButton = false,\n\thideDeleteButton,\n\tenableFirstRowEdit = false,\n\t// eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n\t// getRowId,\n\t// onDelete,\n\t// onUpdate,\n\t...rest\n}: MaterialTablePropsType) => {\n\tconst { t } = useTranslation();\n\tconst { formData = null, updatePageInfo, activePage: aPage } = usePages()\n\tconst activePage = useDeepMemo<PageState>(aPage);\n\tconst { pageNo } = paginationModel;\n\tconst [row, setRow] = useState({});\n\tconst [tableColumns, setTableColumns] = useState(columns);\n\tconst [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [popUpShow, setPopupShow] = useState<boolean>(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst visibleColumns = tableColumns.filter((column: any) => column.visible);\n\tconst hiddenColumns = tableColumns.filter((column: any) => !column.visible);\n\tconst [filteredOptions, setFilteredOptions] = useState(hiddenColumns);\n\tconst [selectedRow, setSelectedRow] = useState<number | null>(null);\n\tconst [validationErrors, setValidationErrors] = useState<any>({});\n\tconst [validationSchema, setValidationSchema] = useState<any>([]);\n\tconst [isCreatingRow, setIsCreatingRow] = useState<boolean>(false);\n\tconst [isEditingRow, setIsEditingRow] = useState<boolean>(false);\n\tconst [isDeletingRow, setIsDeletingRow] = useState<boolean>(false);\n\tconst [rowToDelete, setRowToDelete] = useState<any>(null);\n\tconst [rowSelection, setRowSelection] = useState<MRT_RowSelectionState>({});\n\tconst [isChecked, setIsChecked] = useState(false)\n\tconst [sorting, setSorting] = useState<MRT_SortingState>([]);\n\tconst [disableNextEdit, setDisableNextEdit] = useState(false);\n\tconst [columnSizing, setColumnSizing] = useState<MRT_ColumnSizingState>(activePage.column_sizes);\n\tconst [columnSizingInfo, setColumnSizingInfo] = useState<MRT_ColumnSizingInfoState>({\n\t\tcolumnSizingStart: [],\n\t\tdeltaOffset: null,\n\t\tdeltaPercentage: null,\n\t\tisResizingColumn: false,\n\t\tstartOffset: null,\n\t\tstartSize: null\n\t});\n\tconst [clickStartTime, setClickStartTime] = useState<number>(0);\n\n\tconst navigate = useNavigate();\n\tconst currentModule = location.pathname.split('/')[2]\n\n\tlet redirectionPath = ''\n\tswitch (currentModule) {\n\t\tcase 'accounting':\n\t\t\tredirectionPath = PathnameAccounting.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'inventory':\n\t\t\tredirectionPath = PathnameInventory.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'manufacturing':\n\n\t\t\tredirectionPath = PathnameManufacturing.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'procurement':\n\t\t\tredirectionPath = PathnamePurchase.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'crm':\n\t\t\tredirectionPath = PathnameCrm.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'user':\n\t\t\tredirectionPath = PathnameUsers.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'rental':\n\t\t\tredirectionPath = PathnameRental.CUSTOM_FORM\n\t\t\tbreak;\n\t\tcase 'drive':\n\t\t\tredirectionPath = PathnameDocument.ADD_CUSTOM_FIELDS\n\t\t\tbreak;\n\t}\n\tconst path = `/dashboard/${currentModule}${redirectionPath}`\n\tconst getValidationType = (column: any) => {\n\t\tswitch (column.editVariant) {\n\t\t\tcase 'select':\n\t\t\t\treturn column?.editProperties?.is_multiple ? yup.array() : yup.string();\n\n\t\t\tcase 'number':\n\t\t\t\treturn yup.number().nullable().transform((value, originalValue) => (originalValue === \"\" ? null : value));\n\n\t\t\tcase 'url':\n\t\t\t\treturn yup\n\t\t\t\t\t.string()\n\t\t\t\t\t.matches(\n\t\t\t\t\t\t/^(https?:\\/\\/)?((([a-zA-Z0-9_-]+\\.)+[a-zA-Z]{2,})|localhost)(:\\d{2,5})?(\\/[a-zA-Z0-9#_-]+\\/?)*(\\?[a-zA-Z0-9&=_-]+)?(#\\S+)?$/,\n\t\t\t\t\t\t{ excludeEmptyString: true, message: 'Please enter valid URL.' }\n\t\t\t\t\t);\n\n\t\t\tdefault:\n\t\t\t\treturn yup.string()\n\t\t}\n\t};\n\n\tconst validationReducer = (\n\t\tschema: any,\n\t\tvalidation: any,\n\t\tcolumn: any\n\t) => {\n\t\tlet vld = schema;\n\n\t\tswitch (validation.type) {\n\t\t\t/* =====================================================\n\t\t\t COMMON (mixed)\n\t\t\t===================================================== */\n\n\t\t\tcase 'required':\n\t\t\t\tif (validation.value) {\n\t\t\t\t\tvld = vld.required(validation.msg_en).typeError(validation.msg_en);\n\n\t\t\t\t\t// Prevent blank-only string\n\t\t\t\t\tif (!column?.editVariant || column?.editVariant === 'text') {\n\t\t\t\t\t\tvld = vld.test(\n\t\t\t\t\t\t\t'no-blank-spaces',\n\t\t\t\t\t\t\t'Blank space is not allowed',\n\t\t\t\t\t\t\t(value: any) =>\n\t\t\t\t\t\t\t\ttypeof value === 'string'\n\t\t\t\t\t\t\t\t\t? value.trim().length > 0\n\t\t\t\t\t\t\t\t\t: true\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (column?.editProperties?.is_multiple) {\n\t\t\t\t\tvld = vld.min(1, validation.msg_en);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'notRequired':\n\t\t\t\tvld = vld.notRequired();\n\t\t\t\tbreak;\n\n\t\t\tcase 'nullable':\n\t\t\t\tvld = vld.nullable(validation.value ?? true);\n\t\t\t\tbreak;\n\n\t\t\tcase 'defined':\n\t\t\t\tvld = vld.defined(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'optional':\n\t\t\t\tvld = vld.optional();\n\t\t\t\tbreak;\n\n\t\t\tcase 'strict':\n\t\t\t\tvld = vld.strict(validation.value ?? true);\n\t\t\t\tbreak;\n\n\t\t\tcase 'typeError':\n\t\t\t\tvld = vld.typeError(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'oneOf':\n\t\t\t\tvld = vld.oneOf(validation.values, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'notOneOf':\n\t\t\t\tvld = vld.notOneOf(validation.values, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'default':\n\t\t\t\tvld = vld.default(validation.value);\n\t\t\t\tbreak;\n\n\t\t\tcase 'transform':\n\t\t\t\tvld = vld.transform(validation.fn);\n\t\t\t\tbreak;\n\n\t\t\tcase 'label':\n\t\t\t\tvld = vld.label(validation.value);\n\t\t\t\tbreak;\n\n\t\t\tcase 'meta':\n\t\t\t\tvld = vld.meta(validation.value);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t STRING\n\t\t\t===================================================== */\n\n\t\t\tcase 'trim':\n\t\t\t\tvld = vld.trim();\n\t\t\t\tbreak;\n\n\t\t\tcase 'lowercase':\n\t\t\t\tvld = vld.lowercase();\n\t\t\t\tbreak;\n\n\t\t\tcase 'uppercase':\n\t\t\t\tvld = vld.uppercase();\n\t\t\t\tbreak;\n\n\t\t\tcase 'email':\n\t\t\t\tvld = vld.email(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'url':\n\t\t\t\tvld = vld.url(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'uuid':\n\t\t\t\tvld = vld.uuid(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'length':\n\t\t\t\tvld = vld.length(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'min':\n\t\t\t\tvld = vld.min(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'max':\n\t\t\t\tvld = vld.max(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'matches':\n\t\t\t\tvld = vld.matches(validation.regex, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'startsWith':\n\t\t\t\tvld = vld.matches(\n\t\t\t\t\tnew RegExp(`^${validation.value}`),\n\t\t\t\t\tvalidation.msg_en\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase 'endsWith':\n\t\t\t\tvld = vld.matches(\n\t\t\t\t\tnew RegExp(`${validation.value}$`),\n\t\t\t\t\tvalidation.msg_en\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t NUMBER\n\t\t\t===================================================== */\n\n\t\t\tcase 'lessThan':\n\t\t\t\tvld = vld.lessThan(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'moreThan':\n\t\t\t\tvld = vld.moreThan(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'positive':\n\t\t\t\tvld = vld.positive(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'negative':\n\t\t\t\tvld = vld.negative(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'integer':\n\t\t\t\tvld = vld.integer(validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'round':\n\t\t\t\tvld = vld.round(validation.method || 'round');\n\t\t\t\tbreak;\n\n\t\t\tcase 'truncate':\n\t\t\t\tvld = vld.truncate();\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t ARRAY\n\t\t\t===================================================== */\n\n\t\t\tcase 'minItems':\n\t\t\t\tvld = vld.min(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'maxItems':\n\t\t\t\tvld = vld.max(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'ensure':\n\t\t\t\tvld = vld.ensure();\n\t\t\t\tbreak;\n\n\t\t\tcase 'compact':\n\t\t\t\tvld = vld.compact(validation.rejector);\n\t\t\t\tbreak;\n\n\t\t\tcase 'of':\n\t\t\t\tvld = vld.of(validation.schema);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t DATE\n\t\t\t===================================================== */\n\n\t\t\tcase 'minDate':\n\t\t\t\tvld = vld.min(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\tcase 'maxDate':\n\t\t\t\tvld = vld.max(validation.value, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t OBJECT\n\t\t\t===================================================== */\n\n\t\t\tcase 'shape':\n\t\t\t\tvld = vld.shape(validation.fields);\n\t\t\t\tbreak;\n\n\t\t\tcase 'noUnknown':\n\t\t\t\tvld = vld.noUnknown(validation.value ?? true, validation.msg_en);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t CUSTOM\n\t\t\t===================================================== */\n\n\t\t\tcase 'test':\n\t\t\t\tvld = vld.test(\n\t\t\t\t\tvalidation.name || 'custom-test',\n\t\t\t\t\tvalidation.msg_en,\n\t\t\t\t\tvalidation.testFn\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\t/* =====================================================\n\t\t\t CONDITIONAL\n\t\t\t===================================================== */\n\n\t\t\tcase 'when':\n\t\t\t\treturn vld.when(validation.relation, {\n\t\t\t\t\tis: (val: any) =>\n\t\t\t\t\t\ttypeof validation.is === 'function'\n\t\t\t\t\t\t\t? validation.is(val)\n\t\t\t\t\t\t\t: Array.isArray(validation.values)\n\t\t\t\t\t\t\t\t? validation.values.includes(val)\n\t\t\t\t\t\t\t\t: val === validation.values,\n\n\t\t\t\t\tthen: (s: any) =>\n\t\t\t\t\t\tvalidation?.thenValidations?.reduce(\n\t\t\t\t\t\t\t(acc: any, v: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(acc, v, column),\n\t\t\t\t\t\t\ts\n\t\t\t\t\t\t) || s,\n\n\t\t\t\t\totherwise: (s: any) =>\n\t\t\t\t\t\tvalidation?.otherWiseValidations?.reduce(\n\t\t\t\t\t\t\t(acc: any, v: any) =>\n\t\t\t\t\t\t\t\tvalidationReducer(acc, v, column),\n\t\t\t\t\t\t\ts\n\t\t\t\t\t\t) || s,\n\t\t\t\t});\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn vld;\n\t};\n\n\n\n\tconst generateValidationSchema = (columns: any[]) => {\n\t\treturn columns.reduce((acc: any, clm: any) => {\n\t\t\tconst validations = clm?.editProperties?.validations;\n\n\t\t\tif (!validations?.length) return acc;\n\n\t\t\tconst baseSchema = getValidationType(clm);\n\n\t\t\tacc[clm.accessorKey] = validations.reduce(\n\t\t\t\t(schema: any, validation: any) =>\n\t\t\t\t\tvalidationReducer(schema, validation, clm),\n\t\t\t\tbaseSchema\n\t\t\t);\n\n\t\t\treturn acc;\n\t\t}, {});\n\t};\n\n\n\tuseEffect(() => {\n\t\tsetTableColumns(columns);\n\n\t\tconst schema: any = generateValidationSchema(columns);\n\t\tsetValidationSchema(yup.object().shape(schema));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columns]);\n\n\tuseEffect(() => {\n\t\tif (!columnSizingInfo?.isResizingColumn) {\n\t\t\tupdatePageInfo({ column_sizes: { ...activePage.column_sizes, ...columnSizing } })\n\t\t\thandleColumnResizing?.(columnSizing)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [columnSizingInfo?.isResizingColumn, columnSizing])\n\n\tconst handleHeaderClick = (event: any) => {\n\t\tsetAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleHeaderClose = () => {\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleVisibleColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? false : col.visible\n\t\t}));\n\t\tsetTableColumns(updatedColumns);\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetFilteredOptions([...filteredOptions, column]);\n\t\tsetAnchorEl(null);\n\t};\n\n\tconst handleAddButtonClick = () => {\n\t\tsetPopupShow(true);\n\t};\n\n\tconst handleBackButtonClick = () => {\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleAddColumn = (column: any) => {\n\t\tconst updatedColumns = tableColumns.map((col: any) => ({\n\t\t\t...col,\n\t\t\tvisible: col.accessorKey === column.accessorKey ? true : col.visible\n\t\t}));\n\t\tonColumnVisibility?.(JSON.parse(JSON.stringify(updatedColumns)))\n\t\tsetTableColumns(updatedColumns);\n\n\t\tconst updatedFilteredOptions = filteredOptions.filter(\n\t\t\t(option: any) => option.accessorKey !== column.accessorKey\n\t\t);\n\t\tsetFilteredOptions(updatedFilteredOptions);\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleSearchEvent = (searchQuery: string) => {\n\t\tconst filteredColumns = hiddenColumns.filter((option: any) =>\n\t\t\toption.header.toLowerCase().includes(searchQuery.toLowerCase())\n\t\t);\n\t\tsetFilteredOptions(filteredColumns);\n\t};\n\n\tconst handleCustomAddColumn = () => {\n\t\tnavigate(path, { state: formData })\n\t\tsetAnchorEl(null);\n\t\tsetPopupShow(false);\n\t};\n\n\tconst handleRowClick = (rowId: number) => {\n\t\tsetSelectedRow(rowId); // Update selected row ID when a row is clicked\n\t};\n\n\t// const handleDeleteClick = (event: any, data: any) => {\n\t// onDelete?.(data.id);\n\t// };\n\t// const handleUpdateClick = (event: any, data: any) => {\n\t// onUpdate?.(data.id);\n\t// };\n\n\tconst handleActionsClick = (event: any, data: any) => {\n\t\tsetRow(data);\n\t\tsetRowAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleActionsClose = () => {\n\t\tsetRowAnchorEl(null);\n\t};\n\n\tconst formtValues = useCallback((values: any, cells: any[]) => {\n\t\tconst v: any = {};\n\t\tif (values?.['mrt-row-actions']) {\n\t\t\tdelete values['mrt-row-actions']\n\t\t}\n\t\tObject.keys(values).forEach((vl) => {\n\t\t\tconst val = values[vl];\n\t\t\tconst cell = cells.find((c) => c.accessorKey == vl);\n\n\t\t\tif (val) {\n\t\t\t\tif (val instanceof File) {\n\t\t\t\t\tv[vl] = val.name;\n\t\t\t\t} else if (cell && cell?.editVariant == 'date') {\n\t\t\t\t\tv[vl] = dayjs(val).format(cell?.dateFormat || 'DD-MM-YYYY');\n\t\t\t\t} else if (cell && cell?.editVariant == 'select' && typeof val === 'object' && val !== null) {\n\t\t\t\t\t// For select fields, extract the display name from the object\n\t\t\t\t\t// Try multiple possible display properties in order of preference\n\t\t\t\t\tv[vl] = val.name || val.label || val.display_name || val.title || val.value || val.id || val;\n\t\t\t\t} else if (cell && cell?.editVariant == 'select' && typeof val === 'string') {\n\t\t\t\t\t// For select fields that are already strings, keep them as is\n\t\t\t\t\tv[vl] = val;\n\t\t\t\t} else {\n\t\t\t\t\tv[vl] = val;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tv[vl] = val;\n\t\t\t}\n\t\t});\n\n\t\treturn v;\n\t}, []); // No dependencies needed as this function doesn't rely on external values\n\n\tconst handleRowDelete = async () => {\n\t\tsetIsDeletingRow(true);\n\t\tif (rowToDelete) {\n\t\t\tawait onDeleteRow?.(rowToDelete);\n\t\t\tsetRowToDelete(null);\n\t\t}\n\t\tsetIsDeletingRow(false);\n\t};\n\n\tconst checkRequired = useCallback((editProperties: any) => {\n\t\treturn editProperties?.validations?.some((validation: any) => validation.type === 'required')\n\t}, [])\n\tuseEffect(() => {\n\t\tconst selectedRows = {};\n\t\t// Build the selectedRows object\n\t\tif (!isChecked && selectedRowIds.length) {\n\t\t\trows.forEach((row) => {\n\t\t\t\tif (selectedRowIds.includes(row.id)) {\n\t\t\t\t\tselectedRows[row.id] = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetRowSelection(selectedRows);\n\t\t\tsetIsChecked(true)\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rows, selectedRowIds]); // Dependency only on rows and selectedRowIds\n\n\tuseEffect(() => {\n\t\tif (onSortingChange instanceof Function) {\n\t\t\tconst sortingArray = Array.isArray(sorting) ? sorting : [];\n\t\t\tonSortingChange(sortingArray[0] || null)\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [sorting])\n\n\n\tconst resetRowSelection = () => {\n\t\tsetRowSelection({});\n\t\tsetDisableNextEdit(false)\n\t}\n\tconst getTextWidth = (text: string) => {\n\t\tconst canvas = document.createElement(\"canvas\");\n\t\tconst ctx = canvas.getContext(\"2d\");\n\t\tif (!ctx) return 50;\n\t\treturn ctx.measureText(text).width + 5; // padding\n\t}\n\n\t// ─── Types ───────────────────────────────────────────────────────────────────\n\n\ttype RowMode = 'edit' | 'create';\n\n\tinterface SaveRowParams {\n\t\trow: MRT_Row<TData>;\n\t\tvalues: Record<string, unknown>;\n\t\ttable: MRT_TableInstance<TData>;\n\t}\n\n\t// ─── Shared validation error extractor ───────────────────────────────────────\n\n\tconst extractValidationErrors = (err: yup.ValidationError): Record<string, string> =>\n\t\terr.inner.reduce<Record<string, string>>((acc, { path, message }) => {\n\t\t\tif (path) acc[path] = message;\n\t\t\treturn acc;\n\t\t}, {});\n\n\t// ─── Unified save handler ─────────────────────────────────────────────────────\n\n\tconst handleSaveRow = useCallback(\n\t\tasync ({ row, values, table }: SaveRowParams, mode: RowMode): Promise<void> => {\n\t\t\tconst isEditMode = mode === 'edit';\n\t\t\tconst setLoadingState = isEditMode ? setIsEditingRow : setIsCreatingRow;\n\n\t\t\ttry {\n\t\t\t\tawait validationSchema.validate(values, { abortEarly: false });\n\n\t\t\t\tsetValidationErrors({});\n\t\t\t\tsetLoadingState(true);\n\t\t\t\tsetDisableNextEdit(false);\n\n\t\t\t\tconst cells = row.getAllCells().map((c) => c.column.columnDef);\n\t\t\t\trow._valuesCache = formtValues(values, cells);\n\n\t\t\t\tconst data = { row, values, table };\n\n\t\t\t\tif (isEditMode) {\n\t\t\t\t\tawait onEditRow?.(data, 'edit');\n\t\t\t\t\ttable.setEditingRow(null);\n\t\t\t\t} else {\n\t\t\t\t\tawait onCreateRow?.(data);\n\t\t\t\t\ttable.setCreatingRow(null);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tif (err instanceof yup.ValidationError) {\n\t\t\t\t\tsetValidationErrors(extractValidationErrors(err));\n\t\t\t\t} else {\n\t\t\t\t\tenqueueSnackbar(\n\t\t\t\t\t\terr instanceof Error ? err.message : 'Something went wrong',\n\t\t\t\t\t\t{ variant: 'error' },\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tsetLoadingState(false);\n\t\t\t}\n\t\t},\n\t\t[validationSchema, onEditRow, onCreateRow, formtValues],\n\t);\n\n\tconst validate = useCallback(async (values: any) => {\n\t\ttry {\n\t\t\tawait validationSchema.validate(values, { abortEarly: false });\n\t\t\tsetValidationErrors({});\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\treturn false\n\t\t}\n\t}, [validationSchema]);\n\n\tconst valuesRef = useRef<Record<string, RowValues>>({});\n\n\t// ─── Public API: sync one field ────────────────────────────────────────────\n\tconst syncFieldValue = useCallback(\n\t\t(rowId: string, columnId: string, value: unknown) => {\n\t\t\tvaluesRef.current[rowId] = {\n\t\t\t\t...(valuesRef.current[rowId] ?? {}),\n\t\t\t\t[columnId]: value,\n\t\t\t};\n\t\t},\n\t\t[],\n\t);\n\n\tconst clearRow = useCallback((rowId: string) => {\n\t\tdelete valuesRef.current[rowId];\n\t}, []);\n\n\t// ─── Merge our cache on top of MRT's cache then the original row ───────────\n\tconst getRowValues = useCallback(\n\t\t(row: MRT_Row<TData>): RowValues => ({\n\t\t\t// 1. original row data — baseline\n\t\t\t...(row.original as RowValues),\n\t\t\t// 2. MRT's internal cache — contains what MRT-controlled fields wrote\n\t\t\t...(row._valuesCache as RowValues | undefined),\n\t\t\t// 3. Our own cache — authoritative for custom fields\n\t\t\t...(valuesRef.current[row.id] ?? {}),\n\t\t}),\n\t\t[],\n\t);\n\n\t// ─── Save helpers (kept stable across renders) ─────────────────────────────\n\tconst saveEditingRow = useCallback(\n\t\tasync (table: MRT_TableInstance<TData>) => {\n\t\t\tconst editingRow = table.getState().editingRow;\n\t\t\tconst creatingRow = table.getState().creatingRow;\n\t\t\tif (!editingRow) return;\n\t\t\tconst values = getRowValues(editingRow);\n\t\t\tconst isValid = await validate(values);\n\t\t\tif (!isValid) {\n\t\t\t\t// Let handleSaveRow set the validation errors for display\n\t\t\t\tawait handleSaveRow({ row: editingRow, values, table }, 'edit');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait handleSaveRow({ row: editingRow, values, table }, 'edit');\n\t\t\tclearRow(editingRow.id);\n\t\t\tif (!creatingRow && enableRowCreate) {\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tsetTimeout(() => table.setCreatingRow(true), 200);\n\t\t\t} else {\n\t\t\t\tsetDisableNextEdit(false);\n\t\t\t}\n\t\t},\n\t\t[getRowValues, handleSaveRow, clearRow, validate, enableRowCreate],\n\t);\n\n\tconst saveCreatingRow = useCallback(\n\t\tasync (table: MRT_TableInstance<TData>) => {\n\t\t\tconst creatingRow = table.getState().creatingRow;\n\t\t\tif (!creatingRow) return;\n\t\t\tconst values = getRowValues(creatingRow);\n\t\t\tif (values?.['mrt-row-actions']) {\n\t\t\t\tdelete values['mrt-row-actions']\n\t\t\t}\n\t\t\tconst isValid = await validate(values);\n\t\t\tawait handleSaveRow({ row: creatingRow, values, table }, 'create');\n\t\t\tif (!isValid) return;\n\t\t\tif (isValid) {\n\t\t\t\tsetDisableNextEdit(false)\n\t\t\t\tclearRow('mrt-row-create');\n\t\t\t\tsetTimeout(() => table.setCreatingRow(true), 200);\n\t\t\t}\n\t\t},\n\t\t[getRowValues, clearRow, validate],\n\t);\n\n\tconst table = useMaterialReactTable({\n\t\t// options:{\n\t\t// \ttableLayout: \"auto\", // 👈 important\n\t\t// \tpadding: \"dense\",\n\t\t// },\n\t\t// columns: visibleColumns,\n\t\tdefaultColumn: {\n\t\t\tminSize: 0, // 👈 remove default min width\n\t\t\tsize: undefined, // 👈 optional, default size\n\t\t},\n\t\tcolumns: [\n\t\t\t...visibleColumns.map((c: any) => {\n\t\t\t\tconst headerWidth = getTextWidth(c.header || '');\n\t\t\t\tconst maxCellWidth = Math.max(\n\t\t\t\t\t...rows.map(row => getTextWidth(String(row[c.accessorKey] ?? '')))\n\t\t\t\t);\n\t\t\t\tconst finalWidth = Math.max(headerWidth, maxCellWidth);\n\t\t\t\treturn {\n\t\t\t\t\t...c,\n\t\t\t\t\t...(editDisplayMode === 'row'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\tEdit: ({ cell, row, table, column }) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<InlineEditFields\n\t\t\t\t\t\t\t\t\t\tcell={cell}\n\t\t\t\t\t\t\t\t\t\tcolumn={column}\n\t\t\t\t\t\t\t\t\t\tcol={c}\n\t\t\t\t\t\t\t\t\t\trow={row}\n\t\t\t\t\t\t\t\t\t\ttable={table}\n\t\t\t\t\t\t\t\t\t\tcallback={(s) => console.log('Save', s)}\n\t\t\t\t\t\t\t\t\t\terrors={validationErrors}\n\t\t\t\t\t\t\t\t\t\tvalidationSchema={validationSchema}\n\t\t\t\t\t\t\t\t\t\tsetValidationErrors={setValidationErrors}\n\t\t\t\t\t\t\t\t\t\tonChangeRowField={onChangeRowField}\n\t\t\t\t\t\t\t\t\t\tgetSelectedData={(name, row) => getSelectedData?.(name, row)}\n\t\t\t\t\t\t\t\t\t\tsyncFieldValue={syncFieldValue}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tHeader: (\n\t\t\t\t\t\t<Box display='flex' alignItems='center'>\n\t\t\t\t\t\t\t{c.header}\n\t\t\t\t\t\t\t{c?.required || checkRequired(c?.editProperties) && (\n\t\t\t\t\t\t\t\t<Typography type='s5' color='theme.error.600'>\n\t\t\t\t\t\t\t\t\t*\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t),\n\t\t\t\t\tenableColumnDragging: c.id !== 'actions',\n\t\t\t\t\t// cellStyle: { ...c.cellStyle, width: finalWidth },\n\t\t\t\t\t// headerStyle: { ...c.headerStyle, width: finalWidth },\n\t\t\t\t\t// size: finalWidth\n\t\t\t\t\tsize: undefined,\n\t\t\t\t\t// minSize: 40,\n\t\t\t\t\tmaxSize: 800,\n\t\t\t\t};\n\t\t\t}),\n\t\t\t...(!disableDefaultActionColumn\n\t\t\t\t? [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'actions',\n\t\t\t\t\t\tenableEditing: false,\n\t\t\t\t\t\tsize: defaultActionColumnItems?.length > 1 ? 80 : 50,\n\t\t\t\t\t\theader: (\n\t\t\t\t\t\t\t<IconButton size=\"small\" sx={{ p: 0.5, '&:hover': { backgroundColor: 'transparent' } }} onClick={handleHeaderClick}>\n\t\t\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t),\n\t\t\t\t\t\tenableColumnDragging: false,\n\t\t\t\t\t\tvisible: true,\n\t\t\t\t\t\tmuiTableHeadCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmuiTableBodyCellProps: {\n\t\t\t\t\t\t\tclassName: 'pinned-column',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\twhiteSpace: 'pre-wrap'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCell: (props) =>\n\t\t\t\t\t\t\tdefaultActionColumnItems?.length ? (\n\t\t\t\t\t\t\t\tdefaultActionColumnItems.map((item) => {\n\t\t\t\t\t\t\t\t\tconst updatedProps = {\n\t\t\t\t\t\t\t\t\t\t...item.props,\n\t\t\t\t\t\t\t\t\t\tonClick: () => item.props.onClick(props)\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\treturn cloneElement(item, updatedProps);\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t) : !disabledDefaultActionColumnIcon && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tonClick={(e) => handleActionsClick(e, props.row.original)} disabled={!rowActionMenu?.length && !destructiveActionMenu?.length}>\n\t\t\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t\t: [])\n\t\t],\n\t\tdata: rows,\n\t\tmuiTablePaperProps: {\n\t\t\tsx: {\n\t\t\t\ttableLayout: 'auto', // lets columns shrink to fit content\n\t\t\t},\n\t\t},\n\t\tcolumnResizeMode: 'onChange',\n\t\tonEditingRowSave: async (data) => {\n\t\t\tawait handleSaveRow(data, 'edit');\n\t\t},\n\t\tonCreatingRowSave: async (data) => {\n\t\t\tawait handleSaveRow(data, 'create');\n\t\t},\n\t\tonCreatingRowCancel: () => resetRowSelection(),\n\t\tonEditingRowCancel: () => {\n\t\t\tsetDisableNextEdit(false);\n\t\t},\n\t\tonSortingChange: states?.sorting ? onSortingChange : setSorting,\n\n\t\tdisplayColumnDefOptions: {\n\t\t\t'mrt-row-actions': {\n\t\t\t\t// size: onDeleteRow ? 80 : 50,\n\n\t\t\t\tHeader: (\n\t\t\t\t\t<IconButton onClick={handleHeaderClick} size='small'>\n\t\t\t\t\t\t<img src={images.common.arrowIcon} alt='Arrow Icon' />\n\t\t\t\t\t</IconButton>\n\t\t\t\t),\n\t\t\t\tmuiTableBodyCellProps: ({ row, table }) => {\n\t\t\t\t\tconst isCreatingRow = table.getState().creatingRow?.id === row.id;\n\t\t\t\t\tconst isEditingRow = table.getState().editingRow?.id === row.id;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\t\t\t\tgap: 0\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbackgroundColor: '#fff',\n\t\t\t\t\t\t\twhiteSpace: 'pre-wrap',\n\t\t\t\t\t\t\t// Hide save button only when editing existing row (not in create mode or non-editable mode)\n\t\t\t\t\t\t\t...((hideSaveButton && (isEditingRow || isCreatingRow))\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t'& .MuiBox-root > .MuiIconButton-root:first-of-type': {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'none !important'\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t// Also hide any save icon buttons by aria-label or title\n\t\t\t\t\t\t\t\t\t'& button[aria-label*=\"Save\"]': {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'none !important'\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'& button[title*=\"Save\"]': {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'none !important'\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t// Hide save icon by class or data attributes\n\t\t\t\t\t\t\t\t\t'& .MuiIconButton-root[class*=\"save\"]': {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'none !important'\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t'& .MuiIconButton-root[data-testid*=\"save\"]': {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'none !important'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: {})\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t},\n\t\t\t'mrt-row-expand': {\n\t\t\t\tsize: 70, // Set the size of the expand-collapse arrow column here\n\t\t\t},\n\t\t\t'mrt-row-select': {\n\t\t\t\tsize: 50, // Set the width of the checkbox column here\n\t\t\t},\n\t\t},\n\t\trenderRowActions: ({ row, table }) => (\n\t\t\t<>\n\t\t\t\t{rest?.enableExpanding ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{row?.parentId && (\n\t\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t\t\t{onDeleteRow && !hideDeleteButton?.(row.original) && (\n\t\t\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} size='small' className='delete-row'>\n\t\t\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<Box sx={{ display: 'flex', gap: 0 }}>\n\t\t\t\t\t\t{onDeleteRow && !hideDeleteButton?.(row.original) && (\n\t\t\t\t\t\t\t<Tooltip title='Delete'>\n\t\t\t\t\t\t\t\t<IconButton disabled={disableNextEdit} onClick={() => setRowToDelete(row)} className='delete-row'>\n\t\t\t\t\t\t\t\t\t<Trash fontSize='small' sx={{ color: 'theme.secondary.1000' }} />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</>\n\t\t),\n\n\t\t...(Boolean(enableRowCreate) && {\n\t\t\trenderBottomToolbarCustomActions: ({ table }) => (\n\t\t\t\t<Button\n\t\t\t\t\tvariant='outlined'\n\t\t\t\t\tstartIcon={<Add />}\n\t\t\t\t\tclassName='add-row-btn'\n\t\t\t\t\tdisabled={disableNextEdit}\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\ttable.setCreatingRow(true); //simplest way to open the create row modal with no default values\n\t\t\t\t\t\tsetDisableNextEdit(true)\n\t\t\t\t\t}}>\n\t\t\t\t\t{t('common.add')}\n\t\t\t\t</Button>\n\t\t\t)\n\t\t}),\n\t\tonRowSelectionChange: setRowSelection,\n\t\tenableColumnOrdering: true,\n\t\tenableRowSelection: enableRowSelection ?? true,\n\t\tenableEditing: (row) => enableEditing instanceof Function ? enableEditing(row) : enableEditing ?? true,\n\t\teditDisplayMode: editDisplayMode ?? 'row',\n\t\tcreateDisplayMode: 'row',\n\t\tpositionCreatingRow: 'bottom',\n\t\tenableColumnResizing: enableColumnResizing,\n\t\tenableRowDragging: enableRowDragging,\n\t\tenableTopToolbar: false,\n\t\tenableColumnActions: false,\n\t\tenableSorting: true,\n\t\tenableGrouping: true,\n\t\tenableBottomToolbar: enableBottomToolbar ?? false,\n\t\tenableColumnDragging: enableColumnDragging ?? true,\n\t\tenableStickyHeader: true,\n\t\tenableSortingRemoval: false,\n\t\t// column ordering\n\t\tstate: {\n\t\t\t// columnOrder: (!columnOrder || columnOrder.length <= 1) \n\t\t\t// ? [...internalColumnOrder] \n\t\t\t// : [...columnOrder],\n\t\t\tcolumnOrder: columnOrder,\n\t\t\tcolumnPinning: { left: ['actions', 'mrt-row-actions'] },\n\t\t\tisSaving: isCreatingRow || isEditingRow,\n\t\t\tshowProgressBars: false,\n\t\t\trowSelection,\n\t\t\t...states,\n\t\t\tsorting: Array.isArray(states?.sorting) ? states?.sorting :\n\t\t\t\tArray.isArray(sorting) ? sorting : [],\n\t\t\tcolumnSizing\n\n\t\t},\n\t\tgetRowId: (row) => row?.id,\n\t\t// table.getState().editingRow\n\t\tmuiTableBodyRowProps: ({ row, table }) => {\n\t\t\tconst editingRowId =\n\t\t\t\ttable.getState()?.editingRow?.id ||\n\t\t\t\ttable.getState()?.creatingRow?.id ||\n\t\t\t\tnull;\n\t\t\tconst creatingRowId = table.getState()?.creatingRow?.id || null;\n\t\t\tconst isErrorRow = Boolean(row?.original?.has_error)\n\t\t\tconst isCurrentlyEditing = editingRowId === row.id;\n\n\t\t\treturn {\n\t\t\t\tonClick: () => {\n\t\t\t\t\tsetSelectedRow(row.id);\n\t\t\t\t\t// Edit triggering is now handled at cell level in muiTableBodyCellProps\n\t\t\t\t\t// to support isOnClickEditable column prop\n\t\t\t\t},\n\t\t\t\tsx: {\n\t\t\t\t\tcursor: 'pointer',\n\t\t\t\t\t// backgroundColor: !editingRowId\n\t\t\t\t\t// \t? (selectedRow === row.id\n\t\t\t\t\t// \t\t? '#e8e8e8'\n\t\t\t\t\t// \t\t: (isErrorRow ? 'theme.error.100' : 'inherit'))\n\t\t\t\t\t// \t: 'inherit',\n\t\t\t\t\tbackgroundColor: !editingRowId\n\t\t\t\t\t\t? (isErrorRow ? 'theme.error.100' : 'inherit')\n\t\t\t\t\t\t: 'inherit',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tbackgroundColor: editingRowId\n\t\t\t\t\t\t\t? (editingRowId === row.id ? 'transparent' : 'inherit')\n\t\t\t\t\t\t\t: (isErrorRow ? 'theme.error.200' : '#e8e8e8')\n\t\t\t\t\t},\n\t\t\t\t\t'&:hover td:after': {\n\t\t\t\t\t\tbackgroundColor: 'transparent' // Removes the grey background applied via :after\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\tonColumnOrderChange: (colOrder: any) => {\n\t\t\tif (handleColumnOrdering) handleColumnOrdering(colOrder);\n\t\t},\n\t\tonColumnSizingChange: setColumnSizing,\n\t\tonColumnSizingInfoChange: setColumnSizingInfo,\n\n\t\trenderEmptyRowsFallback: () => (\n\t\t\t<Box className='no-data'>\n\t\t\t\t<img src={images.common.tableNoData} />\n\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t{/* sx={{ textAlign: 'center', pb: 4.75, pt: 4.75 }}> */}\n\t\t\t\t\t{t('common.noData')}\n\t\t\t\t</Typography>\n\t\t\t</Box>\n\t\t),\n\n\t\t// pagination\n\t\tenablePagination: enablePagination,\n\t\tpaginationDisplayMode: 'pages',\n\t\tmuiPaginationProps: {\n\t\t\tshape: 'rounded',\n\t\t\tpage: pageNo, // current page number\n\t\t\tcount: totalPages, // total pages\n\t\t\tshowRowsPerPage: false, // Hide rows per page options\n\t\t\tboundaryCount: 3\n\t\t},\n\n\t\tmuiEditTextFieldProps: ({ row, column }) => ({\n\t\t\tInputProps: {\n\t\t\t\tdisableUnderline: true\n\t\t\t},\n\t\t\tonBlur: (e) => {\n\t\t\t\tupdateData(e.target.value, column, row.id);\n\t\t\t},\n\t\t\t// onChange: (e) => {\n\t\t\t// \tupdateData(e.target.value, column, row.id);\n\t\t\t// },\n\t\t\tvariant: 'outlined',\n\t\t\tsx: ({ palette }) => ({\n\t\t\t\t'& .MuiOutlinedInput-root': {\n\t\t\t\t\t'& fieldset': {\n\t\t\t\t\t\tborderColor: `${palette.theme?.primary[700]} !important`\n\t\t\t\t\t\t// backgroundColor: palette.theme?.primary[700]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}),\n\n\t\t/* Table loader style */\n\t\tmuiCircularProgressProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: '#289B64'\n\t\t\t}\n\t\t},\n\n\t\t// Table header cell default styles\n\t\tmuiTableHeadCellProps: {\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.28px',\n\t\t\t\tfontWeight: '500',\n\t\t\t\tfontSize: '0.875rem',\n\t\t\t\t'& .Mui-TableHeadCell-Content': {\n\t\t\t\t\theight: '100%'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-Content-Labels': {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\tjustifyContent: 'space-between'\n\t\t\t\t},\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'& .Mui-TableHeadCell-ResizeHandle-Wrapper': {\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\tmargin: 0,\n\t\t\t\t\tright: '-5px',\n\t\t\t\t\topacity: 0\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\n\t\t// Table body cell default styles\n\t\tmuiTableBodyProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 500\n\t\t\t}\n\t\t},\n\t\tmuiTableHeadProps: {\n\t\t\tsx: {\n\t\t\t\tzIndex: 600\n\t\t\t}\n\t\t},\n\t\tmuiTableBodyCellProps: ({ cell, column, table, row }) => ({\n\t\t\tsx: {\n\t\t\t\tlineHeight: '140%',\n\t\t\t\tletterSpacing: '-0.26px',\n\t\t\t\tfontWeight: '400',\n\t\t\t\tfontSize: '0.8125rem',\n\t\t\t\t'&.pinned-column': {\n\t\t\t\t\tbackgroundColor: '#fff'\n\t\t\t\t},\n\t\t\t\t'&:hover': {\n\t\t\t\t\tbackgroundColor: 'transparent' // Removes hover effect globally\n\t\t\t\t},\n\t\t\t\twhiteSpace: 'pre-wrap'\n\t\t\t},\n\t\t\tonClick: (e: React.MouseEvent) => {\n\t\t\t\tconst target = e.target as HTMLElement;\n\n\t\t\t\t// Check if click is inside table\n\t\t\t\t// const isInsideTable = target.closest('.MuiTableContainer-root, .MuiPaper-root, .MRT_Table');\n\t\t\t\tconst tableCell = target.closest('.MuiTableCell-body');\n\n\t\t\t\tconst isInsideTable = tableCell && !tableCell.querySelector('.delete-row');\n\n\t\t\t\tif (!isInsideTable) return; // Ignore clicks outside table or on delete button\n\n\t\t\t\tconst columnDef = column.columnDef as MaterialEditableTableColumnProps;\n\t\t\t\tconst isOnClickEditable = columnDef.isOnClickEditable !== false; // Default to true\n\n\t\t\t\tif (!isOnClickEditable) {\n\t\t\t\t\treturn; // Don't trigger edit mode for this column\n\t\t\t\t}\n\n\t\t\t\tconst editingRowId = table.getState()?.editingRow?.id || table.getState()?.creatingRow?.id || null;\n\t\t\t\tconst isCurrentlyEditing = editingRowId === row.id;\n\n\t\t\t\t// If another row is already in edit/create mode, block editing this row\n\t\t\t\tif (editingRowId && editingRowId !== row.id) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the row as editable when clicked if not already editing and no other row is being edited\n\t\t\t\tif (!disableNextEdit && !isCurrentlyEditing && !editingRowId) {\n\t\t\t\t\ttable.setEditingRow(row);\n\t\t\t\t\tsetDisableNextEdit(true);\n\t\t\t\t}\n\t\t\t},\n\t\t\tonKeyUp: (e: React.KeyboardEvent) => {\n\t\t\t\tconst creatingRowId =\n\t\t\t\t\ttable.getState().creatingRow?.id ?? null;\n\n\t\t\t\t// ── Escape ──────────────────────────────────────────────────────────\n\t\t\t\tif (e.key === 'Escape') {\n\t\t\t\t\tif (creatingRowId === row.id) {\n\t\t\t\t\t\tclearRow('mrt-row-create');\n\t\t\t\t\t\ttable.setCreatingRow(null);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst editingRow = table.getState().editingRow;\n\t\t\t\t\t\tif (editingRow) {\n\t\t\t\t\t\t\thandleSaveRow({ row: editingRow, values: editingRow.original, table }, 'edit');\n\t\t\t\t\t\t\tclearRow(editingRow.id);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsetDisableNextEdit(false);\n\t\t\t\t\tsetValidationErrors({});\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// ── Enter ───────────────────────────────────────────────────────────\n\t\t\t\tif (e.key === 'Enter') {\n\t\t\t\t\t// Minimal timeout: let the last field onChange flush its state.\n\t\t\t\t\t// Our valuesRef is already written, so 0ms is safe.\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tconst currentCreatingRow = table.getState().creatingRow;\n\t\t\t\t\t\tconst currentEditingRow = table.getState().editingRow;\n\n\t\t\t\t\t\tif (currentCreatingRow) {\n\t\t\t\t\t\t\tsaveCreatingRow(table);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (currentEditingRow) {\n\t\t\t\t\t\t\tsaveEditingRow(table);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0); // 0 ms is enough — values are already in valuesRef\n\t\t\t\t}\n\t\t\t},\n\t\t}),\n\n\t\t// Checkbox styling\n\t\tmuiSelectCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.200'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiSelectAllCheckboxProps: {\n\t\t\tsx: {\n\t\t\t\tcolor: 'theme.secondary.300',\n\t\t\t\t'&.Mui-checked': {\n\t\t\t\t\tcolor: 'theme.primary.600',\n\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\tcolor: 'theme.primary.500'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'&.Mui-disabled': {\n\t\t\t\t\tcolor: 'theme.secondary.600'\n\t\t\t\t}\n\t\t\t},\n\t\t\ticon: <RecgtangleIcon sx={{ width: 20, height: 20 }} />,\n\t\t\tcheckedIcon: <CheckBoxIcon sx={{ width: 20, height: 20 }} />\n\t\t},\n\t\tmuiBottomToolbarProps: {\n\t\t\tsx: {\n\t\t\t\tboxShadow: 'none',\n\t\t\t\t'& .MuiBox-root': {\n\t\t\t\t\tpaddingLeft: 0\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tlayoutMode: 'grid',\n\t\ticons: {\n\t\t\tDragHandleIcon: () => <RecgtangleIcon fontSize='medium' />,\n\t\t\tSortIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tArrowDownwardIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tArrowUpwardIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tExpandMoreIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tExpandLessIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tSyncAltIcon: () => <ArrowUpDown fontSize='medium' />,\n\t\t\tCancelIcon: (props: SvgIconProps) => (\n\t\t\t\t<Close fontSize='small' {...props} color='theme.secondary.1000' />\n\t\t\t)\n\t\t},\n\n\t\t...rest\n\t});\n\n\tuseEffect(() => {\n\t\tif (enableRowSelection) {\n\t\t\tif (table?.getSelectedRowModel()?.rows) {\n\t\t\t\tSetSelectedRowId?.(table?.getSelectedRowModel()?.rows);\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [enableRowSelection]);\n\n\tuseEffect(() => {\n\t\tif (onSelectRow) {\n\t\t\tif (rest?.enableExpanding) {\n\t\t\t\tconst selectedRowModels: any[] = [];\n\t\t\t\tconst selection = table.getState().rowSelection; // e.g., { 0.0: true }\n\t\t\t\tconst traverseRows = (rows, parentKey = '') => {\n\t\t\t\t\trows.forEach((row: any, index: number) => {\n\t\t\t\t\t\tconst rowKey = parentKey ? `${parentKey}.${index}` : `${row.id}`;\n\t\t\t\t\t\tif (selection[rowKey]) {\n\t\t\t\t\t\t\tselectedRowModels.push(row);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check for sub-rows and traverse further\n\t\t\t\t\t\tif (row.subRows?.length) {\n\t\t\t\t\t\t\ttraverseRows(row.subRows, rowKey);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\ttraverseRows(table.getRowModel().rows);\n\t\t\t\tonSelectRow(selectedRowModels, rowSelection);\n\t\t\t} else {\n\t\t\t\tonSelectRow(table.getSelectedRowModel().rows, rowSelection);\n\t\t\t}\n\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [rowSelection, table]);\n\n\t// useEffect(() => {\n\t// \tconst relativeContainer = document.getElementsByClassName(\n\t// \t\t'MuiTableContainer-root'\n\t// \t)[0];\n\t// \tconst fixedElement = document.getElementsByClassName('no-data')[0];\n\t// \trelativeContainer.addEventListener('scroll', () => {\n\t// \t\tconst scrollLeft = relativeContainer.scrollLeft;\n\t// \t\tfixedElement.style.left = `${scrollLeft + 100}px`;\n\t// \t});\n\t// }, []);\n\n\tuseEffect(() => {\n\t\tif (isResetRow) {\n\t\t\ttable?.resetRowSelection();\n\t\t}\n\t}, [isResetRow, table]);\n\n\t// Auto-open first row in edit mode when enableFirstRowEdit is true\n\tconst hasAutoEditedFirstRow = useRef(false);\n\tuseEffect(() => {\n\t\tif (\n\t\t\tenableFirstRowEdit &&\n\t\t\t!hasAutoEditedFirstRow.current &&\n\t\t\trows?.length > 0\n\t\t) {\n\t\t\t// Get a fresh row reference from the current table model\n\t\t\tconst tableRows = table.getRowModel().rows;\n\t\t\tconst firstRow = tableRows[0];\n\t\t\tif (firstRow) {\n\t\t\t\thasAutoEditedFirstRow.current = true;\n\t\t\t\t// Pre-initialize _valuesCache from original data so InlineEditFields\n\t\t\t\t// has a populated cache from the start\n\t\t\t\tif (!firstRow._valuesCache || Object.keys(firstRow._valuesCache).length === 0) {\n\t\t\t\t\tfirstRow._valuesCache = { ...firstRow.original };\n\t\t\t\t}\n\t\t\t\ttable.setEditingRow(firstRow);\n\t\t\t\tsetDisableNextEdit(true);\n\t\t\t}\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [enableFirstRowEdit, rows, table]);\n\n\t// Handle clicks outside the table to save and exit edit mode - ADVANCED EVENT DELEGATION\n\tuseEffect(() => {\n\t\tif (!table) return;\n\n\t\tlet dropdownOpenTimer: NodeJS.Timeout;\n\t\tlet saveTimer: NodeJS.Timeout;\n\t\tlet lastDropdownClick = 0;\n\t\tlet isDropdownInteraction = false;\n\n\t\t// Track dropdown interactions with precise timing\n\t\tconst handleMouseDown = (e: MouseEvent) => {\n\t\t\tconst target = e.target as HTMLElement;\n\t\t\tconst isDropdownElement = target.closest(\n\t\t\t\t'.MuiSelect-root, .MuiMenuItem-root, .MuiPopover-root, .MuiList-root, ' +\n\t\t\t\t'.MuiMenu-list, .MuiButtonBase-root, ' +\n\t\t\t\t'.MuiFormControl-root, .MuiInputBase-root, .MuiTextField-root, ' +\n\t\t\t\t'.MuiOutlinedInput-root, .MuiFilledInput-root, .MuiAutocomplete-popper, ' +\n\t\t\t\t'.MuiPickersPopper-root, [role=\"option\"], [role=\"listbox\"], [role=\"combobox\"]'\n\t\t\t);\n\n\t\t\tif (isDropdownElement) {\n\t\t\t\tisDropdownInteraction = true;\n\t\t\t\tlastDropdownClick = Date.now();\n\t\t\t\t// Clear any pending save when dropdown interaction starts\n\t\t\t\tif (saveTimer) {\n\t\t\t\t\tclearTimeout(saveTimer);\n\t\t\t\t}\n\t\t\t\t// Set a timer to reset dropdown interaction flag\n\t\t\t\tif (dropdownOpenTimer) {\n\t\t\t\t\tclearTimeout(dropdownOpenTimer);\n\t\t\t\t}\n\t\t\t\tdropdownOpenTimer = setTimeout(() => {\n\t\t\t\t\tisDropdownInteraction = false;\n\t\t\t\t}, 500);\n\t\t\t}\n\t\t};\n\n\t\t// Handle clicks with sophisticated logic\n\t\tconst handleClick = (e: MouseEvent) => {\n\t\t\tconst editingRow = table.getState()?.editingRow;\n\t\t\tconst creatingRow = table.getState()?.creatingRow;\n\t\t\tif (!editingRow && !creatingRow) return;\n\n\t\t\tconst target = e.target as HTMLElement;\n\t\t\tconst now = Date.now();\n\n\t\t\t// Don't process if we recently had a dropdown interaction\n\t\t\tif (isDropdownInteraction || (now - lastDropdownClick) < 300) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Check if click is inside table\n\t\t\t// const isInsideTable = target.closest('.MuiTableContainer-root, .MuiPaper-root, .MRT_Table');\n\t\t\tconst isInsideTable = target.closest('.MRT-TableWrapper');\n\n\t\t\t// Only save if clicking outside table and no recent dropdown interaction\n\t\t\tif (!isInsideTable) {\n\t\t\t\t// Clear any existing save timer\n\t\t\t\tif (saveTimer) {\n\t\t\t\t\tclearTimeout(saveTimer);\n\t\t\t\t}\n\n\t\t\t\t// Schedule save with additional delay for safety\n\t\t\t\tsaveTimer = setTimeout(async () => {\n\t\t\t\t\tconst currentEditingRow = table.getState()?.editingRow;\n\t\t\t\t\tconst currentCreatingRow = table.getState()?.creatingRow;\n\t\t\t\t\tif (isDropdownInteraction) return;\n\t\t\t\t\tif (currentCreatingRow) {\n\t\t\t\t\t\tconst values = getRowValues(currentCreatingRow);\n\t\t\t\t\t\tawait handleSaveRow({ row: currentCreatingRow, values, table }, 'create');\n\t\t\t\t\t\tclearRow('mrt-row-create');\n\t\t\t\t\t\tsetDisableNextEdit(false);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (currentEditingRow) {\n\t\t\t\t\t\tconst values = getRowValues(currentEditingRow);\n\t\t\t\t\t\tawait handleSaveRow({ row: currentEditingRow, values, table }, 'edit');\n\t\t\t\t\t\tclearRow(currentEditingRow.id);\n\t\t\t\t\t\tsetDisableNextEdit(false);\n\t\t\t\t\t}\n\t\t\t\t}, 200);\n\t\t\t}\n\t\t};\n\n\t\t// Use both mousedown and click for comprehensive tracking\n\t\tdocument.addEventListener('mousedown', handleMouseDown, true);\n\t\tdocument.addEventListener('click', handleClick, true);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('mousedown', handleMouseDown, true);\n\t\t\tdocument.removeEventListener('click', handleClick, true);\n\t\t\tif (dropdownOpenTimer) {\n\t\t\t\tclearTimeout(dropdownOpenTimer);\n\t\t\t}\n\t\t\tif (saveTimer) {\n\t\t\t\tclearTimeout(saveTimer);\n\t\t\t}\n\t\t};\n\t}, [table, handleSaveRow, getRowValues, clearRow]);\n\treturn (\n\t\t<TableWrapper className='MRT-TableWrapper custom-table'>\n\t\t\t<MaterialReactTable table={table} />\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={anchorEl}\n\t\t\t\topen={Boolean(anchorEl)}\n\t\t\t\tonClose={handleHeaderClose}\n\t\t\t\tclassName='add-role-drp'>\n\t\t\t\t{popUpShow ? (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={handleBackButtonClick}\n\t\t\t\t\t\t\tclassName='role-drp-list add-column-title'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<ChevronLeftIcon />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='searchbar-box-list'>\n\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\tplaceholder={'Search User'}\n\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearchEvent(e)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className='all-attribute-title'>\n\t\t\t\t\t\t\t<Typography variant='body2' color='text.secondary'>\n\t\t\t\t\t\t\t\t{t('common.allAttributes_label')}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{filteredOptions.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleAddColumn(column)}>\n\t\t\t\t\t\t\t\t<Typography color='theme.secondary.1000' type='s3'>\n\t\t\t\t\t\t\t\t\t{column.header}\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tenableAddCustomField && <MenuItem onClick={handleCustomAddColumn} className='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t\t{t('common.addCustomField_label')}\n\t\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t}\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{visibleColumns.map((column: any) => (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tkey={column.accessorKey}\n\t\t\t\t\t\t\t\tonClick={() => handleVisibleColumn(column)}\n\t\t\t\t\t\t\t\tclassName='role-drp-list'>\n\t\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.dotsIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t\t<ListItemText className='title'>{column.header}</ListItemText>\n\t\t\t\t\t\t\t\t<ListItemIcon className='eye-icon'>\n\t\t\t\t\t\t\t\t\t<img src={images.common.eyeIcon} alt='Eye Icon' />\n\t\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<MenuItem onClick={handleAddButtonClick} className='role-drp-list'>\n\t\t\t\t\t\t\t<ListItemIcon className='add-icon'>\n\t\t\t\t\t\t\t\t<img src={images.common.addIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t</ListItemIcon>\n\t\t\t\t\t\t\t<ListItemText className='title'>\n\t\t\t\t\t\t\t\t{t('common.addColumn_label')}\n\t\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant='body2'\n\t\t\t\t\t\t\t\tcolor='text.secondary'\n\t\t\t\t\t\t\t\tclassName='eye-icon'>\n\t\t\t\t\t\t\t\t<ChevronRightIcon sx={{ fontSize: '1.25rem !important' }} />\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Menu>\n\n\t\t\t<Menu\n\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t{rowActionMenu?.map((option: any) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t(option.label === 'Move' &&\n\t\t\t\t\t\t\t(row?.is_directory === true || row?.is_directory === 1)) ||\n\t\t\t\t\t\t(option.label === 'Download' &&\n\t\t\t\t\t\t\t(row?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.is_directory === 1 ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === true ||\n\t\t\t\t\t\t\t\trow?.drive?.is_directory === 1))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// return null;\n\t\t\t\t\t}\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={async () => {\n\t\t\t\t\t\t\t\tawait option.handleAction(row);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\t{destructiveActionMenu?.length > 0 &&\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Divider flexItem sx={{ mt: '0.25rem !important', mb: '0.25rem !important' }} />\n\t\t\t\t\t\t<div className='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t\t\t{destructiveActionMenu?.map((option: any) => (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(row);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled(row)\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{typeof option.label === 'function' ? option.label(row) : option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t</Menu>\n\t\t\t<ConfirmPopUp\n\t\t\t\topen={Boolean(rowToDelete)}\n\t\t\t\tonClose={() => setRowToDelete(null)}\n\t\t\t\tonConfirm={() => handleRowDelete()}\n\t\t\t\ttitle='Delete Item'\n\t\t\t\tdescription={`Are you sure you want to delete entry ?`}\n\t\t\t\tloading={isDeletingRow}\n\t\t\t/>\n\t\t</TableWrapper>\n\t);\n});\n\nexport { MaterialEditableTable };\nexport default MaterialEditableTable;","import React, { useState } from \"react\";\nimport { IconButton } from \"@mui/material\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport Menu from \"@mui/material/Menu\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport CardWrapper from \"../../components/card-wrapper/card-wrapper\";\nimport Typography from \"../typography/typography\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport images from \"../../assets/images\";\n\nimport \"./multiline.scss\";\n\ninterface Option {\n id: number;\n name: string;\n role: string;\n}\ninterface MultiProps {\n options: Option[];\n}\n\nexport const MultiLine = (props: MultiProps) => {\n const { options } = props;\n const [filteredOptions, setFilteredOptions] = useState(options);\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\n const open = Boolean(anchorEl);\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleSearchEvent = (searchQuery: string) => {\n const lowerCaseQuery = searchQuery.toLowerCase();\n const filtered = options.filter((option: Option) => {\n return (\n option.name.toLowerCase().includes(lowerCaseQuery) ||\n option.role.toLowerCase().includes(lowerCaseQuery)\n );\n });\n setFilteredOptions(filtered);\n };\n\n const handleCreateClick = () => {\n alert(\"Clicked \");\n };\n\n return (\n <div className=\"main-card-nodal\">\n <CardWrapper>\n <div className=\"payable-header\">\n <Typography className=\"payable-title\">Payable Account</Typography>\n <IconButton color=\"inherit\" size=\"small\" onClick={handleClick}>\n <img src={images.more} alt=\"more icon\" />\n </IconButton>\n <Menu anchorEl={anchorEl} open={open} onClose={handleClose}>\n <MenuItem onClick={handleClose}>View</MenuItem>\n </Menu>\n </div>\n <SearchBar\n placeholder=\"Search Companies\"\n handleSearch={(e) => {\n handleSearchEvent(e);\n }}\n debounceTime={1}\n />\n {filteredOptions.map((option: Option) => (\n <div key={option.id} className=\"list-items\">\n <Typography className=\"title\">{option.name}</Typography>\n <Typography className=\"description\">{option.role}</Typography>\n </div>\n ))}\n\n <div className=\"bottom-footer\" onClick={handleCreateClick}>\n <AddIcon />\n <Typography>Create a Cost Center</Typography>\n </div>\n </CardWrapper>\n </div>\n );\n};\n\nexport default MultiLine;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n\tBox,\n\tDivider,\n\tIconButton,\n\tInputAdornment,\n\tMenuItem,\n\tMenuItemProps,\n OutlinedInput,\n\n \n} from '@mui/material';\nimport PropTypes from 'prop-types';\nimport Select from '../select/select';\nimport Checkbox from '../checkbox/checkbox';\nimport Typography from '../typography/typography';\n// import Chip from '../chip/chip'\nimport ChipOrPlaceholder from '../form-control/form-builder/form-builder-element/chip-or-placeholder';\n\nimport './multi-select.scss';\nimport { Add, Close } from '@mui/icons-material';\n// import { MoreIcon } from '../icons';\nimport _ from 'lodash';\nimport { useTranslation } from \"react-i18next\";\n\ninterface IMenuItems extends MenuItemProps {\n\toptions: any[];\n\tmultiple: boolean;\n\tplaceholder: string;\n\twith_checkboxes: boolean;\n\tvalues: string | string[];\n\tfield: any;\n}\n\nconst generateMenuItems = ({\n\toptions,\n\tmultiple,\n\tplaceholder,\n\twith_checkboxes,\n\tvalues,\n\tfield,\n}: IMenuItems) => {\n\n\tconst items: React.ReactElement[] = [];\n\tif (!multiple) {\n\t\titems.push(\n\t\t\t<MenuItem disabled value=''>\n\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t<em>{placeholder}</em>\n\t\t\t\t</Typography>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\toptions?.forEach((option) => {\n\t\t\n\t\titems.push(\n\t\t\t<MenuItem\n\t\t\t\tvalue={option.value}\n\t\t\t\tkey={option.value}\n\t\t\t\tdisabled={Boolean(option.disabled)}\n\t\t\t\tclassName={option?.isGroup ? 'select--MenuItemHeader' : ''}>\n\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={_.some(values, option.value)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</MenuItem>\n\t\t);\n\t\tif (option?.isGroup && Array.isArray(option?.options)) {\n\t\t\toption.options.forEach((opt) => {\n\t\t\t\titems.push(\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tvalue={opt.value}\n\t\t\t\t\t\tdisabled={Boolean(opt.disabled)}\n\t\t\t\t\t\tsx={{ pl: 5 }}\n\t\t\t\t\t\tkey={`${option.value}-${opt.value}`}>\n\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\tchecked={Boolean(values && values?.indexOf(opt.value) > -1)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Typography type='s3' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t\t{opt.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n\tif (field.enable_footer) {\n\t\titems.push(\n\t\t\t<Box>\n\t\t\t\t<Divider flexItem />\n\t\t\t\t<MenuItem sx={{ gap: 1 }} onClick={field.onFooterClick}>\n\t\t\t\t\t<Add fontSize='small' />\n\t\t\t\t\t<Typography type='s4' color='theme.secondary.1000'>\n\t\t\t\t\t\tCreate New {field.label}\n\t\t\t\t\t</Typography>\n\t\t\t\t</MenuItem>\n\t\t\t</Box>\n\t\t);\n\t}\n\n\treturn items;\n};\n\nconst SelectedItems = ({\n\tdata,\n\toptions\n}: {\n\tdata: string[];\n\toptions: any[];\n}) => {\n\tconst displayTitle = data.map(\n\t\t(selectedItem) =>\n\t\t\toptions?.find((option: any) => (option.value?.id || option.value?.name || option.value) === (selectedItem?.id || selectedItem?.name || selectedItem))?.label ||\n\t\t\tselectedItem\n\t);\n\treturn (\n\t\t<Typography\n\t\t\ttype='s4'\n\t\t\tcolor='inherit'\n\t\t\tsx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5, position:'absolute' }}>\n\t\t\t{displayTitle.slice(0, 4).join(', ')}\n\t\t\t{data.length > 4 && (\n\t\t\t\t// <Chip variant='outlined' type='normal' label={<MoreIcon fontSize='small'/>} />\n\t\t\t\t'...'\n\t\t\t)}\n\t\t</Typography>\n\t);\n};\n\nconst MultiSelect = (props: any) => {\n\tconst [options, setOptions] = useState([]);\n\tconst [selectedValue, setSelectedValue] = useState(props.defaultValue || props.value || (props.is_multiselect ? [] : ''));\n\n\tconst removeUndefine = (selectOptions: any[]) => {\n\t\treturn selectOptions?.filter((option) => option);\n\t};\n\n\tconst handleSetOptions = useCallback(() => {\n\t\tsetOptions(props.options);\n\t}, [props.options]);\n\n\tuseEffect(() => {\n\t\thandleSetOptions();\n\t}, [handleSetOptions]);\n\n\tconst handleChange = (e: any, child) => {\n let value = e?.target?.value\n\t\t\t\tif(props.is_multiselect) {\n\t\t\t\t\tconst sValue = child?.props?.value\n\t\t\t\t\tconst ev = selectedValue.find(v => v?.name == sValue?.name)\n\t\t\t\t\tif(ev){\n\t\t\t\t\t\tvalue = selectedValue.filter(v => v?.name != sValue?.name)\n\t\t\t\t\t}\n\t\t\t\t\tvalue = value?.filter(Boolean)\n\t\t\t\t}\n\t\t\t\tsetSelectedValue(value);\n\t\t\t\tif (props.onChange) {\n\t\t\t\t\tprops.onChange(value);\n\t\t\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tsetSelectedValue(props.defaultValue || props.value || (props.is_multiselect ? [] : ''));\n\t}, [props.defaultValue, props.value, props.is_multiselect]);\n\n\t\tconst { t } = useTranslation();\n\n\treturn (\n\t\t<>\n\t\t\t<Select\n\t\t\t\tfullWidth\n\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\tlabel={props.label}\n\t\t\t\tvalue={selectedValue}\n\t\t\t\tdefaultValue={props.defaultValue || (props.is_multiselect ? [] : '')}\n\t\t\t\trequired={props.required}\n\t\t\t\tsize={props.size || 'small'}\n\t\t\t\tmultiple={Boolean(props?.is_multiselect)}\n\t\t\t\tdisabled={Boolean(props?.disabled)}\n\t\t\t\tvariant='outlined'\n // sx={{minWidth: '165px'}}\n\t\t\t\tsx={(Boolean(props?.is_multiselect) && selectedValue?.length) ? { \"& .MuiSelect-select\": { padding: '5.5px !important', minWidth: '165px' }} : { minWidth: '165px' }}\n\t\t\t\tclassName={\n\t\t\t\t\tprops.is_multiselect && removeUndefine(selectedValue)?.length\n\t\t\t\t\t\t? 'MultiSelect'\n\t\t\t\t\t\t: ''\n\t\t\t\t}\n\t\t\t\tinput={\n\t\t\t\t\t\t!props?.is_multiselect && !props.disabled ? (\n\t\t\t\t\t\t\t\t<OutlinedInput\n\t\t\t\t\t\t\t\t\t\tlabel=''\n\t\t\t\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t\t\t\t\t<InputAdornment position='end'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{props.value && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-label='clear selection'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => props.onChange(null)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tedge='end'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{ mr: 1.5 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize='small'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Close sx={{ fontSize: '1rem' }} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : undefined\n\t\t\t\t}\n\t\t\t\trenderValue={(selected: string | string[]) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{Array.isArray(selected) ? (\n\t\t\t\t\t\t\t<ChipOrPlaceholder\n\t\t\t\t\t\t\t\tselectedLabel={props.selectedLabel}\n\t\t\t\t\t\t\t\tdata={removeUndefine(selected)}\n\t\t\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\t\t\tonDelete={props?.onChipRemove}\n\t\t\t\t\t\t\t\tdisabled={props.disabled}\n\t\t\t\t\t\t\t\tchipProps={{\n\t\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\t\t\tbgcolor: 'theme.primary.100',\n\t\t\t\t\t\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\t\t\t\t\t\t// borderRadius: '15px',\n\t\t\t\t\t\t\t\t\t\t\t'& .MuiTypography-body1': {\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.primary.800',\n\t\t\t\t\t\t\t\t\t\t\t\t\tfontWeight: \"500\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'& .MuiChip-deleteIcon': {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.primary.800',\n\t\t\t\t\t\t\t\t\t\t\t\t'&:hover':{\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.primary.900',\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\toptions?.find(\n\t\t\t\t\t\t\t\t(option: any) =>\n\t\t\t\t\t\t\t\t\t(option.value?.id || option.value?.name || option.value) === (selected?.id || selected?.name || selected)\n\t\t\t\t\t\t\t)?.label ||\n\t\t\t\t\t\t\tselected ||\n\t\t\t\t\t\t\tprops.placeholder\n\t\t\t\t\t\t)}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t\tsearchPlaceholder={`${t('common.search')} ${props.label}`}\n\t\t\t\thandleSearch={props.handleSearch}\n\t\t\t\tsearchValue={props.searchValue || ''}\n\t\t\t\tonChange={handleChange}\n\t\t\t\tloading={props?.is_loading}>\n\t\t\t\t{generateMenuItems({\n\t\t\t\t\toptions,\n\t\t\t\t\tmultiple: Boolean(props.is_multiselect),\n\t\t\t\t\tplaceholder: props.placeholder,\n\t\t\t\t\tvalues: selectedValue,\n\t\t\t\t\twith_checkboxes: true,\n\t\t\t\t\tfield: props\n\t\t\t\t})}\n\t\t\t</Select>\n\t\t\t{props.is_multiselect && Array.isArray(selectedValue) && (\n\t\t\t\t<SelectedItems data={selectedValue} options={options} />\n\t\t\t)}\n\t\t</>\n\t);\n};\n\nMultiSelect.propTypes = {\n\tname: PropTypes.string.isRequired,\n\tplaceholder: PropTypes.string.isRequired,\n\tlabel: PropTypes.string.isRequired,\n\tsize: PropTypes.string,\n\toptions: PropTypes.arrayOf(\n\t\tPropTypes.shape({\n\t\t\tlabel: PropTypes.string,\n\t\t\tvalue: PropTypes.string\n\t\t})\n\t).isRequired,\n\tdefaultValue: PropTypes.string,\n\tfieldArrayName: PropTypes.string,\n\tid: PropTypes.string,\n\trequired: PropTypes.bool,\n\tis_multiselect: PropTypes.bool,\n\tposition: PropTypes.number,\n\tdisabled: PropTypes.bool,\n\tonChipRemove: PropTypes.func,\n\tenable_footer: PropTypes.bool,\n\tfooter_action: PropTypes.string,\n\tonFooterClick: PropTypes.any,\n\tis_loading: PropTypes.bool,\n\tselectedLabel: PropTypes.string,\n\tonChange: PropTypes.func,\n};\n\nexport { MultiSelect };\nexport default MultiSelect;\n","/* eslint-disable react-refresh/only-export-components */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable unused-imports/no-unused-vars */\nimport React, { useMemo } from \"react\";\nimport { Navigate } from \"react-router-dom\";\nimport { usePermissions } from \"../hooks/use-permissions\";\nimport { Box, Divider } from \"@mui/material\";\nimport Typography from \"./typography/typography\";\nimport _ from \"lodash\";\n\ntype PermissionAction = \"canEdit\" | \"canView\" | \"canAdd\" | \"canDelete\";\n\ninterface SingleModulePermission {\n module: string;\n action: PermissionAction;\n}\n\ninterface MultiModulePermission {\n modules: string[];\n action: PermissionAction;\n operator?: \"AND\" | \"OR\"; // Default: \"OR\"\n}\n\ninterface ComplexPermission {\n permissions: Array<{\n module: string;\n action: PermissionAction;\n }>;\n operator?: \"AND\" | \"OR\"; // Default: \"AND\"\n}\n\ninterface ProtectedRouteProps {\n // Single module (backward compatibility)\n module?: string;\n action?: PermissionAction;\n \n // Multiple modules with same action\n multiModule?: MultiModulePermission;\n \n // Complex permissions with different actions\n complexPermissions?: ComplexPermission;\n \n // Custom permission checker function\n customPermissionCheck?: (permissions: any) => boolean;\n \n // Redirect path for unauthorized access\n redirectTo?: string;\n \n // Show custom error component instead of redirect\n showError?: boolean;\n \n children: React.ReactNode;\n}\n\nconst ProtectedRoute: React.FC<ProtectedRouteProps> = ({\n module,\n action,\n multiModule,\n complexPermissions,\n customPermissionCheck,\n redirectTo = \"/403\",\n showError = true,\n children\n}) => {\n const permissions = usePermissions();\n\n // Memoize permission check for performance\n const hasPermission = useMemo(() => {\n if (!permissions) {\n return false;\n }\n\n // Custom permission check takes precedence\n if (customPermissionCheck) {\n return customPermissionCheck(permissions);\n }\n\n // Complex permissions check\n if (complexPermissions) {\n const { permissions: permList, operator = \"AND\" } = complexPermissions;\n \n const results = permList.map(({ module: mod, action: act }) => {\n const modulePerms = _.get(permissions, mod, {});\n return modulePerms[act] ?? false;\n });\n\n return operator === \"AND\" \n ? results.every(Boolean)\n : results.some(Boolean);\n }\n\n // Multi-module with same action check\n if (multiModule) {\n const { modules, action: act, operator = \"OR\" } = multiModule;\n \n const results = modules.map(mod => {\n const modulePerms = _.get(permissions, mod, {});\n return modulePerms[act] ?? false;\n });\n\n return operator === \"AND\" \n ? results.every(Boolean)\n : results.some(Boolean);\n }\n\n // Single module check (backward compatibility)\n if (module && action) {\n const modulePerms = _.get(permissions, module, {});\n return modulePerms[action] ?? false;\n }\n\n // No permission config provided - deny access\n return false;\n }, [permissions, module, action, multiModule, complexPermissions, customPermissionCheck]);\n\n // Enhanced error component\n const ErrorComponent = () => (\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\", // Fixed transform values\n gap: 2,\n textAlign: \"center\",\n p: 3\n }}\n >\n <Typography \n type=\"h1\" \n color=\"theme.secondary.900\" \n weight=\"bold\"\n sx={{ fontSize: { xs: '4rem', sm: '6rem' } }}\n >\n 403\n </Typography>\n <Divider \n flexItem \n // sx={{ \n // borderColor: '#898f9a',\n // width: '100%',\n // maxWidth: '200px'\n // }}\n />\n <Typography \n type=\"s3\" \n color=\"theme.secondary.900\" \n weight=\"medium\"\n >\n Access Denied\n </Typography>\n <Typography \n type=\"body2\" \n color=\"theme.secondary.700\" \n weight=\"regular\"\n sx={{ mt: 1, maxWidth: '300px' }}\n >\n You don't have the required permissions to access this resource.\n </Typography>\n </Box>\n );\n\n // Handle loading state - permissions not yet available or still empty (e.g. right after login)\n if (!permissions || Object.keys(permissions).length === 0) {\n return null; // Wait silently until permissions are loaded\n }\n\n // Render based on permission check\n if (hasPermission) {\n return <>{children}</>;\n }\n\n return showError ? <ErrorComponent /> : <Navigate to={redirectTo} replace />;\n};\n\nexport default ProtectedRoute;\n\n// Helper function to create permission configurations\nexport const createPermissionConfig = {\n // Single module\n single: (module: string, action: PermissionAction) => ({\n module,\n action\n }),\n\n // Multiple modules with same action\n multiModule: (\n modules: string[], \n action: PermissionAction, \n operator: \"AND\" | \"OR\" = \"OR\"\n ) => ({\n multiModule: { modules, action, operator }\n }),\n\n // Complex permissions\n complex: (\n permissions: Array<{ module: string; action: PermissionAction }>,\n operator: \"AND\" | \"OR\" = \"AND\"\n ) => ({\n complexPermissions: { permissions, operator }\n }),\n\n // Custom function\n custom: (checkFn: (permissions: any) => boolean) => ({\n customPermissionCheck: checkFn\n })\n};\n\n// Example usage types for better developer experience\nexport type PermissionConfig = \n | ReturnType<typeof createPermissionConfig.single>\n | ReturnType<typeof createPermissionConfig.multiModule>\n | ReturnType<typeof createPermissionConfig.complex>\n | ReturnType<typeof createPermissionConfig.custom>;","import React from \"react\";\nimport Button from \"../../button/button\";\nimport DropdownButton, {\n IDropdownMenuOption,\n} from \"../../dropdown-button/dropdown-button\";\n\nimport './report-buttons.scss'\nimport { SxProps } from \"@mui/material\";\n\nexport interface IActionButtons {\n title?: string;\n icon?: React.ReactNode;\n btnStyle?: \"WhiteBtn\";\n variant?: \"text\" | \"outlined\" | \"contained\";\n action?: () => void;\n class?: string;\n disabled?: boolean;\n}\n\nexport interface IReportButtons {\n className?: string;\n buttons?: IActionButtons[];\n dropdownMenuButtonData?: {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n options: IDropdownMenuOption[];\n sx?: SxProps;\n } | null;\n toggleCallback?: (e?: boolean) => void;\n zIndex?: number;\n}\n\nconst ReportButtons = ({ buttons, dropdownMenuButtonData = null, toggleCallback, className, zIndex = 999 }: IReportButtons) => {\n return (\n <div className={className}>\n {buttons?.map((ele) => (\n <Button\n className={\n ele.class\n ? ele.class\n : `wrapper--${ele?.btnStyle}`\n }\n key={ele.title}\n variant={ele.variant ? ele.variant : \"contained\"}\n startIcon={ele.icon ? ele.icon : \"\"}\n disabled={Boolean(ele.disabled)}\n onClick={ele.action}\n >\n {ele.title ?? \"\"}\n </Button>\n ))}\n {dropdownMenuButtonData && (\n <div style={{ zIndex }}>\n <DropdownButton\n options={dropdownMenuButtonData.options || []}\n startIcon={dropdownMenuButtonData.icon}\n isMenuThirdItemDisabled={true}\n isOnlyDropDownButton={true}\n variant={\"text\"}\n buttonGroupProps={{\n variant: \"text\",\n sx: ({palette}) => ({\n \"& .MuiButton-root\": {\n border: \"1px solid !important\",\n borderColor: `${palette.grey[200]} !important`,\n borderRadius: \"20px\",\n pt: 0.25,\n pb: 0.25,\n pr: 0.75,\n color: `${palette.grey[800]} !important`,\n ':hover': {\n bgcolor: `${palette.grey[200]} !important`\n }\n },\n }),\n }}\n onlyDropDownButtonProps={{\n style: {\n backgroundColor: \"white !important\",\n color: \"black !important\",\n ...dropdownMenuButtonData.sx\n },\n }}\n toggleCallback={toggleCallback}\n >\n {dropdownMenuButtonData.children}\n </DropdownButton>\n </div>\n )}\n </div>\n );\n};\nexport { ReportButtons };\nexport default ReportButtons;\n","import Button from \"../button/button\";\nimport Typography from \"../typography/typography\";\nimport \"./reports-title-bar.scss\";\n\nimport TitleDropdownButton from \"../title-dropdown-button/title-dropdown-button\";\nimport { useEffect, useRef, useState } from \"react\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { generateFields } from \"../../utils/common\";\nimport ReportButtons, { IReportButtons } from \"./report-buttons/report-buttons\";\nimport TabBar, { TabProps } from \"../tabs/tabs\";\nimport { Box, ButtonGroup, ClickAwayListener, Grow, Menu, MenuItem, Paper, Popper, Button as MuiButton, Divider } from \"@mui/material\";\nimport images from \"../../assets/images\";\nimport {\n handleCompareDateRange,\n RANGE,\n} from \"../../utils/date-range\";\nimport { DateRange, Calendar } from \"react-date-range\";\nimport \"react-date-range/dist/styles.css\"; // main css file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\nimport dayjs from \"dayjs\";\nimport { useAppDispatch } from \"../../redux/hooks\";\nimport { fetchCompanies } from \"./redux/actionCreator\";\nimport SearchableSelect from \"../searchable-select\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport { useTranslation } from \"react-i18next\";\nimport React from \"react\";\nimport { Calendar as CalendarIcon, Export as ExportIcon, Filter as FilterIcon } from \"../icons\";\nimport { enUS } from 'date-fns/locale';\n\ninterface IReportFilters {\n company: number;\n start_date: string;\n end_date: string;\n as_of_date: string;\n}\n\n/** Descriptor for a custom component injected into the filter row. */\ninterface ICustomFilterComponent {\n /** Unique key used for React reconciliation. */\n key: string;\n /** The ReactNode to render inside the filter bar. */\n component: React.ReactNode;\n}\n\ninterface ActionBarPropsType extends Partial<TabProps>, IReportButtons {\n title: string;\n handleAddButton?: (e?: any) => void;\n isTitleMenu?: boolean;\n titleMenus?: any;\n reportFilterFields?: any[];\n isDateFilterEnabled?: boolean;\n onDateFilterChange?: (\n data: Partial<{\n company: string | number;\n start_date: string;\n end_date: string;\n as_of_date: string;\n }>\n ) => void;\n filters?: Partial<IReportFilters>;\n isDateRange?: boolean;\n /**\n * When `false` the Date chip and the date-range dropdown button are hidden\n * and date-related keys (`start_date`, `end_date`, `as_of_date`) are stripped\n * from every filter payload so they cannot reach the API.\n * Defaults to `true` (backward-compatible).\n */\n showDateFilter?: boolean;\n dateFilter?: string;\n showCancelButton?: boolean;\n searchBar?: React.ReactNode;\n /**\n * Optional list of custom components to render inside the filter row.\n * Each entry must have a unique `key` and a `component` (ReactNode).\n * They are appended after the standard SearchableSelect filters.\n */\n customFilterComponents?: ICustomFilterComponent[];\n}\n\ntype TDatePickerVal = {\n startDate?: Date;\n endDate?: Date;\n key?: string;\n};\n\nconst ReportsTitleBar = (props: ActionBarPropsType) => {\n const {\n title,\n handleAddButton,\n buttons = [],\n dropdownMenuButtonData,\n isTitleMenu = false,\n titleMenus = [],\n reportFilterFields = [],\n toggleCallback,\n tabs,\n activeValue,\n setActiveValue,\n isDateFilterEnabled = true,\n onDateFilterChange,\n // showCancelButton,\n filters = {},\n isDateRange = false,\n /** Hide the date chip and date-range dropdown when false. Defaults to true. */\n showDateFilter = true,\n dateFilter = 'TODAY',\n filterDropDown,\n handleRowsCollapse,\n handleRowsExpand,\n showLevelBtn = false,\n dataLength = 0,\n filterKeys = {},\n searchBar,\n /** Custom ReactNode components rendered after the standard filters. */\n customFilterComponents = [],\n } = props;\n\n const startDateKey = filterKeys?.start_date || 'start_date';\n const endDateKey = filterKeys?.end_date || 'end_date';\n const asOfDateKey = filterKeys?.as_of_date || 'as_of_date';\n\n // const { companies } = useAppSelector((store) => store.reportsTitleBar);\n\n const dispatch = useAppDispatch();\n const customStyle =\n {\n\n '&.MuiOutlinedInput-root': {\n '& fieldset': {\n border: 'none',\n borderColor: `#ade7cb`,\n borderRadius: `25px`\n },\n '& .MuiSelect-outlined': {\n padding: `4.5px 14px !important`\n },\n // '&:hover fieldset': {\n // border: 'none',\n // },\n\n // '&.Mui-focused fieldset': {\n // border: 'none',\n // },\n display: `flex`,\n gap: `4px`,\n width: `220px`,\n // height: 30px,\n border: `1px solid #ade7cb`,\n borderRadius: `50px`,\n backgroundColor: `#ebf9f2`,\n color: `#289b64`,\n alignItems: `center`,\n cursor: `pointer`,\n height: `32px`\n\n },\n }\n const inputStyle =\n {\n border: \"none\",\n \"&.Mui-focused\": {\n borderColor: \"transparent\",\n },\n \"& .MuiOutlinedInput-input\": {\n // padding: \"0px\",\n fontSize: \"14px\",\n color: '#289b64'\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n border: \"none\",\n },\n '& .MuiSelect-icon': {\n color: 'green',\n },\n }\n\n // When `showDateFilter` is false, exclude the 'date' entry from the\n // default selection so the date chip is never active.\n const defaultSelected = [\n // Only include 'date' when the date field matches legacy 'date' value if needed, \n // but here we follow inventory-reports-title-bar pattern.\n ...(showDateFilter ? [{ value: 'date' }] : []),\n {\n value: 'company',\n },\n ]\n const [selectedItems, setSelectedItems] = useState<string[]>(defaultSelected);\n const [level, setLevel] = useState<number>(1)\n\n // const selectedCompany = useMemo(\n // () =>\n // companies?.find((company) => filters?.company === company.id)\n // ?.company_name || \"\",\n // [companies, filters?.company]\n // );\n\n\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const [actionAnchorEl, setActionAnchorEl] = useState<null | HTMLElement>(\n null\n );\n // eslint-disable-next-line unused-imports/no-unused-vars, @typescript-eslint/no-unused-vars\n const [allFields, setAllFields] = useState<any[]>([]);\n const [dateRange, setDateRange] = useState<keyof typeof RANGE>();\n const [open, setOpen] = useState<boolean>(false);\n const [exportAnchorEl, setExportAnchorEl] = useState<null | HTMLElement>(null);\n const [customDate, setCustomDate] = useState<Date>(\n dayjs(filters?.[asOfDateKey]).isValid()\n ? dayjs(filters?.[asOfDateKey]).toDate()\n : new Date()\n );\n const { t } = useTranslation();\n const [customDateRange, setCustomDateRange] = useState<TDatePickerVal>({\n startDate: dayjs(filters?.[startDateKey]).isValid()\n ? dayjs(filters?.[startDateKey]).toDate()\n : new Date(),\n endDate: dayjs(filters?.[endDateKey]).isValid()\n ? dayjs(filters?.[endDateKey]).toDate()\n : new Date(),\n key: \"selection\",\n });\n\n const anchorRef = useRef<HTMLDivElement | null>(null);\n const dateSelectRef = useRef<HTMLDivElement>(null);\n const chipDateSelectRef = useRef<HTMLDivElement>(null);\n\n const handleCloseDatePopper = () => {\n anchorRef.current = null;\n setOpen(false);\n };\n\n /**\n * Wraps `onDateFilterChange` to strip date-related keys when\n * `showDateFilter` is false, guaranteeing they never reach the API.\n * Defined before `renderFilter` to avoid temporal dead zone errors.\n */\n const safeOnDateFilterChange = (data: any) => {\n if (!onDateFilterChange) return;\n\n let processedData = { ...data };\n\n // Map internal keys to filterKeys if they exist and are different\n if (data.hasOwnProperty('start_date') && filterKeys?.start_date) {\n processedData[filterKeys.start_date] = data.start_date;\n if (filterKeys.start_date !== 'start_date') delete processedData.start_date;\n }\n if (data.hasOwnProperty('end_date') && filterKeys?.end_date) {\n processedData[filterKeys.end_date] = data.end_date;\n if (filterKeys.end_date !== 'end_date') delete processedData.end_date;\n }\n if (data.hasOwnProperty('as_of_date') && filterKeys?.as_of_date) {\n processedData[filterKeys.as_of_date] = data.as_of_date;\n if (filterKeys.as_of_date !== 'as_of_date') delete processedData.as_of_date;\n }\n\n if (showDateFilter) {\n onDateFilterChange(processedData);\n } else {\n // Strip all date fields (including mapped ones) so they cannot pollute the request payload.\n const keysToStrip = [\n 'start_date', 'end_date', 'as_of_date',\n filterKeys?.start_date, filterKeys?.end_date, filterKeys?.as_of_date\n ].filter(Boolean);\n\n const rest = { ...processedData };\n keysToStrip.forEach(key => delete rest[key]);\n\n onDateFilterChange(rest);\n }\n };\n\n const handleDateChange = async (range: keyof typeof RANGE) => {\n // Do nothing if the date filter is hidden — guard against programmatic calls.\n if (!showDateFilter) return;\n setDateRange(range);\n if (range === \"CUSTOM\") {\n anchorRef.current = dateSelectRef.current;\n setOpen(true);\n } else {\n const data = await handleCompareDateRange({\n range: RANGE[range],\n from: \"\",\n to: \"\",\n });\n safeOnDateFilterChange({\n start_date: data?.from ? data?.from : \"\",\n end_date: data?.to ? data?.to : \"\",\n });\n handleCloseDatePopper();\n }\n };\n\n const handleClose = (event: Event) => {\n if (\n anchorRef.current &&\n anchorRef.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n\n handleCloseDatePopper();\n };\n const handleSelectChange = (value: any) => {\n if (selectedItems.some((item) => item.value == value.value)) {\n setSelectedItems(selectedItems.filter((item) => item?.value != value.value));\n const filterKey = value.value || value.key;\n const valueKey = filterKeys?.[filterKey] || filterKey;\n safeOnDateFilterChange({ [valueKey]: value.multiple ? [] : null })\n return;\n }\n setSelectedItems([...selectedItems, value]);\n };\n // Create filters config from filterDropDown and filterKeys\n // If reportFilters is needed, it should be provided by the consuming application\n const filtersConfig = filterDropDown?.map((filter: any) => ({\n key: filter.value || filter.key,\n label: filter.name || filter.label || `Search ${filter.value || filter.key}`,\n placeholder: filter.placeholder || filter.name || filter.label,\n apiType: filter.options ? undefined : (filter.apiType || filter.value || filter.key),\n valueKey: filterKeys?.[filter.value || filter.key] || filter.value || filter.key,\n customFilter: filter.customFilter || null,\n multiple: filter.multiple || false,\n options: filter.options || undefined,\n })) || []\n\n const options = [\n {\n label: RANGE.TODAY,\n callback: () => {\n handleDateChange(\"TODAY\");\n },\n },\n {\n label: RANGE.THIS_WEEK,\n callback: () => {\n handleDateChange(\"THIS_WEEK\");\n },\n },\n {\n label: RANGE.THIS_MONTH,\n callback: () => {\n handleDateChange(\"THIS_MONTH\");\n },\n },\n {\n label: RANGE.THIS_QUARTER,\n callback: () => {\n handleDateChange(\"THIS_QUARTER\");\n },\n },\n {\n label: RANGE.THIS_YEAR,\n callback: () => {\n handleDateChange(\"THIS_YEAR\");\n },\n },\n {\n label: RANGE.YESTERDAY,\n callback: () => {\n handleDateChange(\"YESTERDAY\");\n },\n },\n {\n label: RANGE.PREVIOUS_WEEK,\n callback: () => {\n handleDateChange(\"PREVIOUS_WEEK\");\n },\n },\n {\n label: RANGE.PREVIOUS_MONTH,\n callback: () => {\n handleDateChange(\"PREVIOUS_MONTH\");\n },\n },\n {\n label: RANGE.PREVIOUS_QUARTER,\n callback: () => {\n handleDateChange(\"PREVIOUS_QUARTER\");\n },\n },\n {\n label: RANGE.PREVIOUS_YEAR,\n callback: () => {\n handleDateChange(\"PREVIOUS_YEAR\");\n },\n },\n {\n label: RANGE.CUSTOM,\n callback: () => {\n handleDateChange(\"CUSTOM\");\n },\n },\n ];\n\n const isChecked = (value: any) => {\n return selectedItems.some(item => item?.value == value?.value)\n }\n\n const handleFilterPopperSubmit = () => {\n const dateRangeFilter = {\n start_date: dayjs(customDateRange.startDate).format(\"YYYY-MM-DD\"),\n end_date: dayjs(customDateRange.endDate).format(\"YYYY-MM-DD\"),\n };\n const dateFilter = {\n as_of_date: dayjs(customDate).format(\"YYYY-MM-DD\"),\n };\n\n // Use safeOnDateFilterChange so date keys are stripped when showDateFilter is false.\n safeOnDateFilterChange({\n ...(isDateRange ? dateRangeFilter : dateFilter),\n });\n handleCloseDatePopper();\n };\n function showFilter(val) {\n return selectedItems.some(item => item?.value == val)\n }\n\n const getStartAndEndDate = (filters: any) => {\n const startDate = dayjs(filters?.[startDateKey]).isValid() ? dayjs(filters[startDateKey]).toDate() : new Date();\n const endDate = dayjs(filters?.[endDateKey]).isValid() ? dayjs(filters[endDateKey]).toDate() : new Date();\n return { startDate, endDate };\n };\n\n useEffect(() => {\n if (filters?.[asOfDateKey]) {\n setCustomDate(\n dayjs(filters?.[asOfDateKey]).isValid()\n ? dayjs(filters?.[asOfDateKey]).toDate()\n : new Date()\n );\n }\n }, [filters?.[asOfDateKey], asOfDateKey]);\n\n useEffect(() => {\n setCustomDateRange({\n ...customDateRange,\n ...getStartAndEndDate(filters)\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters?.[endDateKey], filters?.[startDateKey]]);\n\n useEffect(() => {\n if (open) {\n if (isDateRange) {\n setCustomDateRange({\n ...customDateRange,\n ...getStartAndEndDate(filters)\n });\n } else {\n setCustomDate(\n dayjs(filters?.[asOfDateKey]).isValid()\n ? dayjs(filters?.[asOfDateKey]).toDate()\n : new Date()\n );\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, isDateRange]);\n\n useEffect(() => {\n dispatch(fetchCompanies());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n setAllFields(generateFields(reportFilterFields));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n useEffect(() => {\n handleDateChange(dateFilter)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [dateFilter]);\n\n const filterDropDownFunc = () => {\n return (\n <Menu\n anchorEl={actionAnchorEl}\n open={Boolean(actionAnchorEl)}\n onClose={handleFilterClose}\n >\n {/* <MenuItem className=\"inventoryReportsTitleBar--report-filter\"> */}\n {/* Add your options here */}\n {filterDropDown?.map((item) => (\n <MenuItem onClick={() => handleSelectChange(item)} key={item} value={item?.value}>\n <Checkbox checked={isChecked(item)} />\n <Typography sx={{ marginLeft: '10px' }} color='theme.neutral.800' type='s3'>{t(item?.name)}</Typography>\n </MenuItem>\n ))}\n {/* </MenuItem> */}\n </Menu>\n );\n };\n\n const renderFilter = ({\n key,\n label,\n placeholder,\n apiType,\n valueKey,\n customFilter,\n multiple = false,\n options,\n show = true,\n showCancelButton = true\n }: any) => {\n if (!showFilter(key) || !show) return null;\n\n const companyKey = filterKeys?.company || 'company';\n const companyId = filters?.[companyKey];\n const hasCompany = Array.isArray(companyId) ? companyId.length > 0 : !!companyId;\n\n let finalCustomFilter = customFilter;\n if (['department', 'designation', 'location', 'employees'].includes(apiType) && hasCompany) {\n finalCustomFilter = {\n ...(typeof customFilter === 'object' ? customFilter : {}),\n '&company_id.in': hasCompany ? (Array.isArray(companyId) ? companyId.join(',') : companyId) : null\n };\n }\n\n return (\n // <div className=\"search-filter\" key={key}>\n <SearchableSelect\n labelId={`${key}-label`}\n searchPlaceholder={label}\n value={filters?.[valueKey]}\n onChange={(e) => safeOnDateFilterChange({ [valueKey]: e.target.value })}\n showCancelButton={showCancelButton}\n apiType={apiType}\n isInternal={!apiType && !!options}\n options={options}\n multiple={multiple}\n placeholder={placeholder}\n customeFilter={finalCustomFilter}\n // CustomDropDownIcon={FilterAltIcon}\n customStyle={customStyle}\n inputStyle={inputStyle}\n />\n // </div>\n );\n };\n const FilterContainer = () => (\n <>\n {filtersConfig.map(renderFilter)}\n {customFilterComponents.map(({ key, component }) => (\n <React.Fragment key={key}>{component}</React.Fragment>\n ))}\n </>\n );\n const handleFilterClose = () => {\n setActionAnchorEl(null);\n };\n\n const ExportContainer = React.memo(() => {\n const handleClose = () => setExportAnchorEl(null);\n return (\n <Menu\n open={Boolean(exportAnchorEl)}\n anchorEl={exportAnchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"right\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"right\",\n }}\n >\n {dropdownMenuButtonData?.options?.map((option, index) => (\n <MenuItem\n key={index}\n onClick={() => {\n option.callback();\n setExportAnchorEl(null);\n }}\n >\n <Typography type=\"s4\" weight=\"medium\" color={'inherit'}> {option.label}</Typography>\n </MenuItem>\n ))}\n </Menu>\n )\n })\n\n return (\n <div>\n <div className=\"reportsTitleBar\">\n <div className=\"reportsTitleBar--LeftContent\">\n {isTitleMenu ? (\n <div style={{ zIndex: 999 }}>\n <TitleDropdownButton\n onClick={handleAddButton}\n options={titleMenus}\n isMenuThirdItemDisabled={true}\n >\n {title}\n </TitleDropdownButton>\n </div>\n ) : (\n <Typography type=\"h3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {title}\n </Typography>\n )}\n </div>\n\n {searchBar && (\n <div className=\"reportsTitleBar--SearchBar\">\n {searchBar}\n </div>\n )}\n <ReportButtons\n zIndex={999}\n className=\"reportsTitleBar--RightContent\"\n buttons={buttons}\n />\n </div>\n {tabs?.length ? (\n <div>\n <TabBar\n tabs={tabs || []}\n activeValue={activeValue}\n setActiveValue={setActiveValue}\n isTabViewOnly={true}\n />\n </div>\n ) : null}\n <Box sx={{ display: \"flex\", justifyContent: \"space-between\", my: 2.5, alignItems: \"center\", flexWrap: \"wrap\", gap: 1 }}>\n <div className=\"reportsTitleBar--FilterWrapper\">\n {FilterContainer()}\n {/* Date range chip — hidden when showDateFilter is false */}\n {/* Date range chip — only shown when isDateRange is true */}\n {showDateFilter && isDateRange && (filters?.[endDateKey]) && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip\"\n ref={chipDateSelectRef}\n onClick={() => {\n if (!open) {\n anchorRef.current = chipDateSelectRef.current;\n setOpen(true);\n } else {\n handleCloseDatePopper();\n }\n }}\n >\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(filters?.[startDateKey]).format(\"DD/MM/YYYY\")} - ${dayjs(filters?.[endDateKey]).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n {t(\"common.dateRange\")}:\n </Typography>\n <Typography\n className=\"reportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(filters?.[startDateKey]).format(\"DD/MM/YYYY\")} -{\" \"}\n {dayjs(filters?.[endDateKey]).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n <KeyboardArrowDownIcon />\n </div>\n </div>\n )}\n {/* Individual Start/End chips — Only show if consolidated range chip is NOT showing and they are specifically enabled */}\n {showDateFilter && !isDateRange && isDateFilterEnabled && !['TODAY', 'YESTERDAY'].includes(dateRange) && (\n <>\n {customDateRange?.startDate && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip\"\n style={{ padding: ' 5px 12px' }}\n >\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(customDateRange?.startDate).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n {t(\"common.startDate\")}:\n </Typography>\n <Typography\n className=\"reportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(customDateRange?.startDate).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n </div>\n </div>\n )}\n {customDateRange?.endDate && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip\"\n style={{ padding: ' 5px 12px' }}\n >\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(customDateRange?.endDate).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n {t(\"common.endDate\")}:\n </Typography>\n <Typography\n className=\"reportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(customDateRange?.endDate).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n </div>\n </div>\n )}\n </>\n )}\n {/* As-of-date chip — hidden when showDateFilter is false */}\n {/* As-of-date chip — only shown when isDateRange is false */}\n {showDateFilter && filters?.[asOfDateKey] && !isDateRange && (\n <div style={{ display: \"flex\", gap: \"8px\" }}>\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip\"\n ref={chipDateSelectRef}\n onClick={() => {\n if (!open) {\n anchorRef.current = chipDateSelectRef.current;\n setOpen(true);\n } else {\n handleCloseDatePopper();\n }\n }}\n >\n <div\n className=\"reportsTitleBar--FilterWrapper--Chip--Text\"\n title={`${dayjs(filters?.[asOfDateKey]).format(\"DD/MM/YYYY\")}`}\n >\n <Typography type=\"s4\" weight=\"medium\">\n {t(\"common.date\")}:\n </Typography>\n <Typography\n className=\"reportsTitleBar--FilterWrapper--Chip--Text--Value\"\n type=\"s4\"\n >\n {dayjs(filters?.[asOfDateKey]).format(\"DD/MM/YYYY\")}\n </Typography>\n </div>\n <KeyboardArrowDownIcon />\n </div>\n </div>\n )}\n {/* {((filters?.company && selectedCompany) ||\n (filters?.[startDateKey] && filters?.[endDateKey]) ||\n filters?.[asOfDateKey]) &&\n reportFilterFields?.length\n ? \"|\"\n : \"\"} */}\n </div>\n <div className=\"report-display\">\n {dropdownMenuButtonData?.options?.length > 0 &&\n <Box>\n <Button\n sx={({ palette }) => ({\n border: \"1px solid\",\n borderColor: 'grey.200',\n borderRadius: \"50px\",\n color: `${palette.grey[800]} !important`,\n '&:hover': {\n bgcolor: `${palette.grey[200]} !important`,\n }\n })}\n variant=\"text\"\n startIcon={<ExportIcon fontSize=\"small\" />}\n onClick={(event) => setExportAnchorEl(event.currentTarget)}\n >\n {t(\"common.export\")}\n </Button>\n {exportAnchorEl && (\n <ExportContainer />\n )}\n </Box>\n }\n\n {filterDropDown?.length &&\n <>\n <Box>\n <Button\n sx={({ palette }) => ({\n border: \"1px solid\",\n borderColor: 'grey.200',\n borderRadius: \"50px\",\n color: `${palette.grey[800]} !important`,\n '&:hover': {\n bgcolor: `${palette.grey[200]} !important`,\n }\n })}\n variant=\"text\"\n startIcon={<FilterIcon fontSize=\"small\" />}\n onClick={(event) => setActionAnchorEl(event.currentTarget)}\n >\n {t(\"common.filter\")}\n </Button>\n </Box>\n {showLevelBtn && <Divider flexItem orientation=\"vertical\" sx={{ height: '50%', alignSelf: 'auto' }} />}\n </>\n }\n\n {filterDropDownFunc()}\n {showLevelBtn && (\n <>\n <Box className=\"reportsTitleBar--FilterAction--lvWrapper\" >\n <Typography type=\"s3\" weight=\"medium\" color='grey.800'> Level {level} of {dataLength}</Typography>\n <ButtonGroup variant=\"outlined\" disableElevation sx={({ palette }) => ({\n '& .MuiButton-root': {\n borderColor: `${palette.grey[200]} !important`,\n '&:hover': {\n bgcolor: `${palette.grey[200]} !important`,\n }\n },\n '& .MuiButtonGroup-firstButton': {\n borderTopLeftRadius: 20,\n borderBottomLeftRadius: 20\n },\n '& .MuiButtonGroup-lastButton': {\n borderTopRightRadius: 20,\n borderBottomRightRadius: 20\n }\n })}>\n <MuiButton onClick={() => {\n setLevel(level == dataLength ? level : level + 1)\n handleRowsCollapse?.(level)\n }}>\n <img src={images.common.expand} />\n </MuiButton>\n <MuiButton onClick={() => {\n setLevel(level != 1 ? level - 1 : 1)\n handleRowsExpand?.(level)\n }}>\n <img src={images.common.collapse} />\n </MuiButton>\n </ButtonGroup>\n </Box>\n {isDateFilterEnabled && <Divider flexItem orientation=\"vertical\" sx={{ height: '50%', alignSelf: 'auto' }} />}\n </>\n )}\n {/* Date-range dropdown button — only shown when both isDateFilterEnabled AND showDateFilter are true */}\n {isDateFilterEnabled && showDateFilter && (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>\n <Typography type=\"s3\" weight=\"medium\" color='grey.800'>As of: </Typography>\n <ReportButtons\n zIndex={997}\n className=\"reportsTitleBar--RightContent\"\n dropdownMenuButtonData={{\n icon: <CalendarIcon fontSize=\"small\" />,\n children: (\n <>\n {RANGE[dateRange]}\n <KeyboardArrowDownIcon />\n </>\n ),\n options: options,\n }}\n toggleCallback={toggleCallback}\n />\n <div ref={dateSelectRef}></div>\n </Box>\n )}\n </div>\n </Box>\n {/* <Filter\n open={openFilterPopup}\n onClose={() => setOpenFilterPopup(false)}\n fields={allFields}\n onSelectedFilter={(filterName: string) => console.log(filterName)}\n // getFilterStatesOnApply={() => {}}\n applyFilter={(val: any) => console.log('val', val)}\n /> */}\n <Popper\n sx={{\n zIndex: 9999,\n }}\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n transition\n disablePortal\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n margin: \"0 20px 0 20px\",\n transformOrigin:\n placement === \"bottom\" ? \"center top\" : \"center bottom\",\n }}\n >\n <Paper>\n <ClickAwayListener onClickAway={handleClose}>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n }}\n >\n <div>\n {isDateRange ? (\n <DateRange\n editableDateInputs={true}\n onChange={(item) => setCustomDateRange(item.selection)}\n moveRangeOnFirstSelection={false}\n ranges={[customDateRange]}\n locale={enUS}\n />\n ) : (\n <Calendar\n onChange={(item) => setCustomDate(item)}\n date={customDate}\n locale={enUS}\n />\n )}\n </div>\n <Box sx={{ padding: \"0 12px 12px 0\" }}>\n <Button\n variant=\"contained\"\n sx={{ width: \"fit-content\" }}\n onClick={handleFilterPopperSubmit}\n >\n {t(\"common.apply\")}\n </Button>\n </Box>\n </Box>\n </ClickAwayListener>\n </Paper>\n </Grow>\n )}\n </Popper>\n </div>\n );\n};\n\nexport { ReportsTitleBar };\nexport default ReportsTitleBar;\n","import { Close } from '@mui/icons-material';\nimport { Box, DialogTitle, Grid, IconButton } from '@mui/material';\nimport MaterialTable from '../material-table/material-table';\nimport Modal from '../modal/modal';\nimport Typography from '../typography/typography';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { enqueueSnackbar } from 'notistack';\nimport ModalLoader from '../loaders/modal-loader';\nimport { responseItemDetailsColumns } from '../../utils/constant';\nimport {\n\tfetchRentalResponseItems,\n\tfetchRfqItemsByIdForResponse,\n\tgetErrorMessage\n} from '../../utils/common';\nimport { transformTableColumns } from '../../utils/common-utility';\nexport const ItemResponseDetails = (props: any) => {\n\tconst { isOpen, onClose, data, isRental = false } = props;\n\tconst [responseItems, setResponseItems] = useState<any[]>([]);\n\tconst [isLoading, setIsLoading] = useState<boolean>(false);\n\tconst { t } = useTranslation();\n\n\tconst getResponseItems = useCallback(async () => {\n\t\tif (!isOpen) return;\n\t\ttry {\n\t\t\tsetIsLoading(true);\n\t\t\tconst filters = `(rfq_line_item_id.in=${[data?.id]})`;\n\t\t\tconst rfqResponseItems = isRental\n\t\t\t\t? await fetchRentalResponseItems(filters)\n\t\t\t\t: await fetchRfqItemsByIdForResponse(filters);\n\t\t\tsetResponseItems(rfqResponseItems);\n\t\t} catch (error) {\n\t\t\tconst errorMsg = getErrorMessage(error?.message);\n\t\t\tenqueueSnackbar(errorMsg, { variant: 'error' });\n\t\t} finally {\n\t\t\tsetTimeout(() => setIsLoading(false), 300);\n\t\t}\n\t}, [isOpen, data?.id, isRental]);\n\tuseEffect(() => {\n\t\tgetResponseItems();\n\t}, [getResponseItems]);\n\treturn (\n\t\t<Modal open={isOpen} onClose={onClose} maxWidth='md' fullWidth>\n\t\t\t{isLoading && <ModalLoader />}\n\t\t\t<DialogTitle className='itemEntryModal--DialogTitle'>\n\t\t\t\t<Typography type='s3' color='inherit' weight='medium'>\n\t\t\t\t\tResponse Details\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton onClick={onClose}>\n\t\t\t\t\t<Close fontSize='small' />\n\t\t\t\t</IconButton>\n\t\t\t</DialogTitle>\n\t\t\t<Grid container>\n\t\t\t\t<Grid item xs={4}>\n\t\t\t\t\t<Box sx={{ display: 'flex', padding: 2, flexDirection: 'column' }}>\n\t\t\t\t\t\t<Typography type='s5' weight='medium' color='theme.secondary.800'>\n\t\t\t\t\t\t\tItem\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.neutral.1000'>\n\t\t\t\t\t\t\t{data?.item_data?.name}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\n\t\t\t<Grid container p={2} spacing={3}>\n\t\t\t\t<Grid item xs={12}>\n\t\t\t\t\t<Box sx={{ paddingTop: '1.2rem' }}>\n\t\t\t\t\t\t<MaterialTable\n\t\t\t\t\t\t\trows={responseItems || []}\n\t\t\t\t\t\t\tcolumns={transformTableColumns({\n\t\t\t\t\t\t\t\tcolumns: responseItemDetailsColumns,\n\t\t\t\t\t\t\t\tcurrencySymbol: undefined,\n\t\t\t\t\t\t\t\ttranslationFn: t,\n\t\t\t\t\t\t\t\tcustomizeValue: (row, columnAccessorKey, value) => {\n\t\t\t\t\t\t\t\t\tswitch (columnAccessorKey) {\n\t\t\t\t\t\t\t\t\t\tcase 'item_data.vendor_info.vendor_name':\n\t\t\t\t\t\t\t\t\t\t\treturn value || row?.original?.item_data?.name;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\tpaginationModel={{ pageNo: 1, limit: 10 }}\n\t\t\t\t\t\t\ttotalPages={20}\n\t\t\t\t\t\t\tenableColumnDragging={true}\n\t\t\t\t\t\t\tisResetRow={false}\n\t\t\t\t\t\t\tenableEditing={false}\n\t\t\t\t\t\t\tcolumnOrder={['mrt-row-select']}\n\t\t\t\t\t\t\tenableRowSelection={false}\n\t\t\t\t\t\t\tdisabledDefaultActionColumnIcon\n\t\t\t\t\t\t\tenableBottomToolbar={false}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Modal>\n\t);\n};\n\nexport default ItemResponseDetails;\n","import dayjs from \"dayjs\";\n\nexport const columns = [\n\t{\n\t\theader: 'Report name',\n\t\taccessorKey: 'name',\n\t\tvisible: true,\n\t\ttype: 'string'\n\t},\n\t{\n\t\theader: 'Email ID',\n\t\taccessorKey: 'emails',\n\t\tvisible: true,\n\t\ttype: 'custom'\n\t},\n\t{\n\t\theader: 'Date',\n\t\taccessorKey: 'schedule_date',\n\t\tvisible: true,\n\t\ttype: 'date'\n\t},\n\t{\n\t\theader: 'Time',\n\t\taccessorKey: 'schedule_time',\n\t\tvisible: true,\n\t\ttype: 'time'\n\t},\n\t{\n\t\theader: 'Recurring',\n\t\taccessorKey: 'autopost',\n\t\tvisible: true,\n\t\ttype: 'string'\n\t},\n\t{\n\t\theader: 'Report Page',\n\t\taccessorKey: 'report_data.name',\n\t\tvisible: true,\n\t\ttype: 'string'\n\t},\n\t{\n\t\theader: 'Main Page',\n\t\taccessorKey: 'main_page',\n\t\tvisible: true,\n\t\ttype: 'string'\n\t},\n\t{\n\t\theader: 'Status',\n\t\taccessorKey: 'status',\n\t\tvisible: true,\n\t\ttype: 'status'\n\t},\n];\nexport const formArrayName = 'schedule_report';\n\nexport const defaultValues = {\n\tschedule_report: {\n\t\tschedule_date: dayjs(),\n\t\tschedule_time: dayjs(),\n\t}\n}\n\nexport const apiPayload = {\n\ttype: 'type',\n\tautopost: (val: any) => val?.is_recurring ? val?.autopost : undefined,\n\temails: 'emails',\n\tid: (value: any) => value?.id || undefined,\n\tis_recurring: (val: any) => Boolean(val?.is_recurring),\n\tname: 'name',\n\tnext_schedule_date: 'next_schedule_date',\n\tschedule_date: 'schedule_date',\n\tschedule_time: 'schedule_time',\n\tsubject: 'subject',\n\treport_id: 'report_id',\n\tfilters: (item) => item?.filters || undefined\n}\n","import dayjs from \"dayjs\";\nimport * as Yup from \"yup\";\nimport { yupResolver } from \"@hookform/resolvers/yup\";\nimport { formArrayName } from \"./utils/constant\";\n\nexport const scheduleReportValidationSchema = (report_id?: boolean) => yupResolver(Yup.object().shape({\n [formArrayName]: Yup.object().shape({\n report_id: report_id ? Yup.string().required(\"Report is required\") : Yup.string(),\n name: Yup.string().required(\"Report name is required\"),\n subject: Yup.string(),\n schedule_date: Yup.mixed()\n .required(\"Date is required\")\n .test(\"is-future-date\", \"Date cannot be in the past\", (value) => {\n if (!value) return false;\n const selectedDate = dayjs(value).startOf(\"day\");\n const today = dayjs().startOf(\"day\");\n return selectedDate.isSame(today) || selectedDate.isAfter(today);\n }),\n schedule_time: Yup.mixed()\n .required(\"Time is required\")\n .test(\"is-future-time\", \"Time cannot be in the past\", function (value) {\n const { schedule_date } = this.parent;\n if (!value || !schedule_date) return false;\n\n const selectedDate = dayjs(schedule_date).startOf(\"day\");\n const today = dayjs().startOf(\"day\");\n\n // If the date is in the future, any time is valid\n if (selectedDate.isAfter(today)) {\n return true;\n }\n\n // If the date is today, check if the time is in the future\n const now = dayjs();\n const selectedTime = dayjs(value);\n const selectedDateTime = dayjs(schedule_date)\n .hour(selectedTime.hour())\n .minute(selectedTime.minute())\n .second(0);\n\n return selectedDateTime.isAfter(now);\n }),\n email: Yup.array(),\n emails: Yup.string()\n .test('emails-required', 'Email is required', function(value) {\n const { email } = this.parent;\n if (!email?.length && !value) {\n return false;\n }\n return true;\n }),\n is_recurring: Yup.boolean(),\n autopost: Yup.string().when(\"is_recurring\", {\n is: true,\n then: (schema) => schema.required(\"Auto post is required\"),\n otherwise: (schema) => schema.optional().nullable()\n })\n })\n}));\n\n// export const validationSchema = Yup.object().shape({\n// name: Yup.string().required(\"Report name is required\"),\n// subject: Yup.string(),\n// schedule_date: Yup.string().required(\"Date is required\"),\n// schedule_time: Yup.string().required(\"Time is required\"),\n// email: Yup.array(),\n// emails: Yup.string().when(\"email\", ([email], schema) => {\n// if (!email?.length)\n// return schema.email(\"Invalid email\").required(\"Email are required\");\n// return schema.email(\"Invalid email\").nullable();\n// }),\n// is_recurring: Yup.boolean(),\n// autopost: Yup.string().when(\"is_recurring\", (is_recurring, schema) => {\n// if (is_recurring[0]) return schema.required(\"Auto post is required\");\n// return schema;\n// }),\n// });\n","import { postV1ReportsScheduleReport, getV1ReportsScheduleReport ,putV1ReportsUpdateScheduleReportId,deleteV1ReportsScheduleReportId, getV1ReportsReportList} from \"../../../api-client/api.system-feature/api\";\n\nexport const AUTO_POST_OPTIONS = [\n {\n label: \"Day\",\n value: \"Day\",\n },\n {\n label: \"Week\",\n value: \"Week\",\n },\n {\n label: \"Month\",\n value: \"Month\",\n },\n {\n label: \"3 month\",\n value: \"3 month\",\n },\n {\n label: \"6 month\",\n value: \"6 month\",\n },\n {\n label: \"1 Year\",\n value: \"1 Year\",\n },\n ];\n\n export const updateScheduleReportType = async(payload:any) => putV1ReportsUpdateScheduleReportId(payload)\n\n export const createScheduleReportType = async(payload:any)=> postV1ReportsScheduleReport(payload)\n\n export const getScheduleReportType=async(payload:any)=>{\n try{\n const response=await getV1ReportsScheduleReport(payload)\n return response\n }catch(error){\n console.log(\"error\",error)\n }\n }\n export const getScheduleReportById=async(payload:any)=>{\n try{\n const response=await getV1ReportsReportList(payload)\n return response\n }catch(error){\n console.log(\"error\",error)\n }\n }\n\n export const deleteScheduleReportType=async(payload:any)=>{\n try{\n const {data={}}=await deleteV1ReportsScheduleReportId(payload)\n return data\n }catch(error){\n console.log(\"error\",error)\n }\n }","import \"./schedule-report-modal.scss\";\n\nimport { Close } from \"@mui/icons-material\";\nimport {\n Box,\n CircularProgress,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogProps,\n Grid,\n IconButton,\n} from \"@mui/material\";\nimport Modal from \"../modal/modal\";\nimport Typography from \"../typography/typography\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\n\nimport Button from \"../button/button\";\n\nimport DynamicInput from \"../form-control/form-builder/form-builder-element/text\";\nimport DynamicDate from \"../form-control/form-builder/form-builder-element/date\";\nimport DynamicTime from \"../form-control/form-builder/form-builder-element/time\";\nimport DynamicCheckBox from \"../form-control/form-builder/form-builder-element/checkbox\";\nimport dayjs from \"dayjs\";\nimport { scheduleReportValidationSchema } from \"./validator\";\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport React from \"react\";\nimport ChipGenerator from \"../chip-generator/chip-generator\";\nimport { formatDateForPayload, formatTimeForPayload, getErrorMessage, getToken, mapApiPayload } from \"../../utils/common\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { AUTO_POST_OPTIONS, createScheduleReportType, getScheduleReportById, updateScheduleReportType } from \"./utils/common\";\nimport ModalLoader from \"../loaders/modal-loader\";\nimport { apiPayload, defaultValues, formArrayName } from \"./utils/constant\";\ninterface ScheduleReportModalProps {\n isOpen?: boolean;\n isNewScheduleReport?: boolean;\n modalProps?: DialogProps;\n itemData?: any;\n onSubmit?: () => void;\n onClose: () => void;\n label?: string;\n module?: string;\n filters?: any;\n report?: string;\n}\n\nconst ScheduleReportModal: React.FC<ScheduleReportModalProps> = ({\n label,\n isOpen = false,\n modalProps,\n itemData,\n onSubmit,\n onClose,\n module = 'accounting',\n filters,\n report = null\n}) => {\n //Local States\n const [submitLoading, setSubmitLoading] = useState<boolean>(false);\n\n //Form Instance\n const {\n control,\n handleSubmit,\n reset,\n setValue,\n watch,\n trigger,\n formState: { dirtyFields }\n } = useForm({\n resolver: scheduleReportValidationSchema(!itemData?.id),\n mode: \"all\",\n // shouldUnregister: true,\n defaultValues: defaultValues\n });\n\n const isRecurring = watch(`${formArrayName}.is_recurring`)\n\n const disableReport = useMemo(() => {\n return (itemData?.id || report) ? true : false;\n }, [itemData?.id, report]);\n\n const handleFormSubmit = async (vals) => {\n const isValid = await trigger();\n if (!isValid) return;\n const values = vals?.[formArrayName];\n // setSubmitLoading(true);\n const valuesPayload = {\n ...values,\n type: module,\n filters,\n schedule_date: formatDateForPayload(values.schedule_date),\n schedule_time: formatTimeForPayload(values.schedule_time),\n ...(itemData && itemData?.id\n ? { id: String(itemData.id) || \"\" }\n : {}),\n };\n delete valuesPayload?.email;\n\n const updatedPayload = mapApiPayload(apiPayload, valuesPayload)\n const apiFunc = itemData?.id ? updateScheduleReportType : createScheduleReportType\n try {\n await apiFunc({\n ...updatedPayload,\n ...getToken(),\n })\n onSubmit?.()\n enqueueSnackbar(\"Report scheduled successfully\", {});\n handleModalClose()\n\n } catch (error) {\n const errorMessage = getErrorMessage(error?.message)\n enqueueSnackbar(errorMessage, {\n variant: \"error\",\n });\n } finally {\n setSubmitLoading(false);\n }\n //eslint-disable-next-line\n };\n\n\n const handleModalClose = () => {\n onClose();\n setTimeout(() => {\n reset({\n [formArrayName]: {}\n });\n }, 300);\n };\n\n const fetchReportByName = useCallback(async () => {\n console.log(\"report\", report)\n if (!isOpen || !report) {\n return\n }\n try {\n const { data = {} } = await getScheduleReportById({\n ...getToken(),\n filters: `(name.like=%${report}%)`\n })\n setValue(`${formArrayName}.report_id`, data?.reports?.[0]?.id)\n } catch (error) {\n console.log(\"error\", error)\n }\n //eslint-disable-next-line\n }, [report, isOpen, setValue])\n //Effects\n useEffect(() => {\n\n const time = itemData?.schedule_time?.split(\":\")?.map(Number);\n if (itemData?.id) {\n reset({\n [formArrayName]: {\n ...itemData,\n schedule_date: itemData?.schedule_date\n ? dayjs(itemData?.schedule_date)\n : \"\",\n schedule_time:\n time?.length === 3\n ? dayjs()\n .set(\"hour\", time[0])\n .set(\"minute\", time[1])\n .set(\"second\", time[2])\n .set(\"millisecond\", 0)\n : \"\",\n }\n });\n } else {\n reset(defaultValues)\n }\n //eslint-disable-next-line\n }, [isOpen, itemData?.id, module]);\n\n\n const scheduleDate = watch(`${formArrayName}.schedule_date`);\n\n useEffect(() => {\n if (scheduleDate) {\n trigger(`${formArrayName}.schedule_time`);\n }\n }, [scheduleDate, trigger]);\n\n const isToday = useMemo(() => {\n return scheduleDate && dayjs(scheduleDate).startOf(\"day\").isSame(dayjs().startOf(\"day\"));\n }, [scheduleDate]);\n\n useEffect(() => {\n fetchReportByName()\n }, [fetchReportByName]);\n\n return (\n <Modal\n open={isOpen}\n onClose={onClose}\n maxWidth=\"md\"\n fullWidth\n {...modalProps}\n >\n <form onSubmit={handleSubmit(handleFormSubmit)} id=\"scheduleReportModal\">\n {(submitLoading) && <ModalLoader />}\n <DialogTitle className=\"scheduleReportModal--Title\">\n <Typography type=\"s3\" color=\"inherit\" weight=\"medium\">\n {label || 'Schedule'}\n </Typography>\n <IconButton onClick={handleModalClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </DialogTitle>\n <DialogContent>\n <Grid container rowGap={1.5} columnSpacing={3} pt={3}>\n <Grid item sm={12}>\n <Grid item sm={6}>\n <DynamicSearchSelect\n disabled={Boolean(itemData?.id) || disableReport}\n label=\"Report\"\n apiType=\"reports\"\n name=\"report_id\"\n placeholder=\"Select report\"\n fieldArrayName={formArrayName}\n formControl={control}\n required\n customeFilter={{\n '&type.eq': module,\n '&allow_scheduling.eq': 1\n }}\n />\n </Grid>\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type=\"text\"\n formControl={control}\n label=\"Report name\"\n name=\"name\"\n fieldArrayName={formArrayName}\n placeholder=\"Enter Report Name\"\n required\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicInput\n type=\"text\"\n formControl={control}\n label=\"Subject\"\n name=\"subject\"\n fieldArrayName={formArrayName}\n placeholder=\"Enter Subject\"\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicDate\n formControl={control}\n name=\"schedule_date\"\n placeholder=\"DD-MM-YYYY\"\n label=\"Date\"\n fieldArrayName={formArrayName}\n required\n min_date={dayjs()}\n />\n </Grid>\n <Grid item sm={6}>\n <DynamicTime\n formControl={control}\n placeholder=\"hh:mm\"\n label=\"Time\"\n option={\"24hr\"}\n name=\"schedule_time\"\n fieldArrayName={formArrayName}\n required\n rest={{\n timeSteps: { minutes: 1 },\n ampm: false,\n ...(isToday && dirtyFields[formArrayName]?.schedule_time && { minTime: dayjs() }),\n }}\n />\n </Grid>\n <Grid item xs={12}>\n <ChipGenerator\n control={control}\n name=\"emails\"\n label=\"Email\"\n required\n fieldArrayName={formArrayName}\n placeholder=\"Enter Emails: example1@mail.com, example2@mail.com\"\n validation={[{\n type: 'email',\n message: 'Please enter a valid email address',\n pattern: /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/,\n }]}\n />\n </Grid>\n <Grid item sm={12}>\n <DynamicCheckBox\n formControl={control}\n name=\"is_recurring\"\n title=\"Recurring\"\n fieldArrayName={formArrayName}\n titlePosition=\"end\"\n />\n </Grid>\n {isRecurring ? (\n <Grid item sm={6}>\n <DynamicSearchSelect\n label=\"Auto Post\"\n options={AUTO_POST_OPTIONS || []}\n name=\"autopost\"\n placeholder=\"Select Auto Post\"\n fieldArrayName={formArrayName}\n formControl={control}\n required\n />\n </Grid>\n ) : null}\n </Grid>\n </DialogContent>\n <DialogActions className=\"scheduleReportModal--ActionContainer\">\n <Box display=\"flex\" gap={1.5}>\n <Button\n className=\"scheduleReportModal--ActionContainer--WhiteBtn\"\n onClick={handleModalClose}\n disabled={submitLoading}\n >\n Discard\n </Button>\n <Button\n type=\"button\"\n onClick={handleSubmit(handleFormSubmit)}\n endIcon={\n submitLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : undefined\n }\n disabled={submitLoading}\n >\n Schedule\n </Button>\n </Box>\n </DialogActions>\n </form>\n </Modal>\n );\n};\n\nexport default ScheduleReportModal;\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport \"./schedule-report.scss\";\nimport { Add } from \"@mui/icons-material\";\n\nimport Fallback from \"../fallback/fallback\";\nimport Button from \"../button/button\";\nimport MaterialTable from \"../material-table/material-table\";\nimport Toast from \"../toast/toast\";\n\nimport ConfirmPopUp from \"../confirm-modal/confirm-modal\";\nimport logo from \"../../assets/images\";\nimport { Box, IconButton } from \"@mui/material\";\nimport { Edit, Trash } from \"../icons\";\n\nimport ScheduleReportModal from \"../schedule-report/schedule-report-modal\";\nimport { getErrorMessage, getToken } from \"../../utils/common\";\nimport { ScheduleReportRow } from \"./utils/type\"\nimport { columns } from \"./utils/constant\"\nimport ErpLoader from \"../loaders/erp-loader\";\nimport Typography from \"../typography/typography\";\nimport Footer from \"../footer/footer\";\nimport { transformTableColumns } from \"../../utils/common-utility\";\nimport { useTranslation } from \"react-i18next\";\nimport Chip from \"../chip/chip\";\nimport { deleteScheduleReportType, getScheduleReportType } from \"./utils/common\";\ninterface IToast {\n type: \"normal\" | \"alert\";\n message: string;\n}\n\nconst GeneralScheduleReport = ({ module = 'accounting', title = 'Schedule report' }: { module: string, title: string }) => {\n\n //states\n const [pagination, setPagination] = useState<any>({\n pageNo: 1,\n limit: 10,\n totalCount: 0\n })\n const [toast, setToast] = useState<IToast | null>(null);\n const [initialLoading, setInitialLoading] = useState<boolean>(true);\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [openScheduleModal, setOpenScheduleModal] =\n useState<ScheduleReportRow | null>(null);\n console.log(\"🚀 ~ GeneralScheduleReport ~ openScheduleModal:\", openScheduleModal)\n\n const [isDeleting, setIsDeleting] = useState<boolean>(false)\n const [scheduleReportToDelete, setScheduleReportToDelete] =\n useState<ScheduleReportRow | null>(null);\n\n const [tableRows, setRows] = useState<ScheduleReportRow[]>([])\n const limit = pagination?.limit;\n const total = limit ? Math.ceil(pagination?.totalCount / limit) : 0;\n const skip = limit * (pagination?.pageNo - 1) || 0\n const { t } = useTranslation()\n\n //transform table columns\n const renderEmails = (value: string | undefined | null) => {\n const emails = value?.split(',');\n return emails ? (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1, flexWrap: 'wrap' }}>\n {emails.map((item: string) => (\n <Chip\n key={item}\n type='normal'\n label={\n <Typography type='s4' weight='medium' color={'inherit'}>\n {item}\n </Typography>\n }\n />\n ))}\n </Box>\n ) : '-';\n };\n\n const tableColumns = useMemo(\n () =>\n transformTableColumns({\n columns: columns,\n currencySymbol: undefined,\n translationFn: t,\n enableFooter: true,\n redirectionLink: undefined,\n redirectionLinkState: undefined,\n rows: tableRows,\n statusClasses: `scheduleReport--StatusChip--`,\n customizeValue: (row, columnAccessorKey, value) => {\n switch (columnAccessorKey) {\n case 'emails':\n return renderEmails(value);\n // Add other cases here if needed\n default:\n return value;\n }\n },\n }),\n //eslint-disable-next-line\n [columns, tableRows, t]\n );\n\n const getScheduleReport = useCallback(\n async () => {\n try {\n setIsLoading(true)\n const { data = {}, pagination: paginationData } = await getScheduleReportType({\n ...getToken(),\n skip,\n limit,\n filters: `(type.eq=${module})`,\n })\n setRows(data?.schedulers)\n setPagination(prev => ({ ...prev, ...paginationData }))\n\n } catch (error) {\n const errorMessage = getErrorMessage(error?.message)\n setToast({\n type: \"alert\",\n message: errorMessage,\n })\n } finally {\n setIsLoading(false)\n setInitialLoading(false)\n }\n //eslint-disable-next-line\n },\n [limit, skip, module, setPagination]\n );\n\n const handleScheduleReportDelete = async () => {\n try {\n if (scheduleReportToDelete) {\n setIsDeleting(true)\n await deleteScheduleReportType({\n ...getToken(),\n id: scheduleReportToDelete.id\n })\n setToast({\n type: \"normal\",\n message: \"Report schedule deleted successfully\",\n });\n getScheduleReport();\n setScheduleReportToDelete(null);\n }\n } catch (error) {\n const errorMessage = getErrorMessage(error?.message)\n setToast({\n type: \"alert\",\n message: errorMessage,\n })\n } finally {\n setIsDeleting(false)\n }\n };\n\n const handleUpdate = useCallback(async () => {\n getScheduleReport();\n //eslint-disable-next-line\n }, []);\n\n\n\n useEffect(() => {\n getScheduleReport();\n }, [getScheduleReport]);\n\n\n\n const handleAddButton = () => setOpenScheduleModal(true);\n const handlePaginationModel = (model: IPaginationModel) => {\n setPagination(model)\n }\n\n return (\n <section className=\"scheduleReport\">\n\n <Box p={2} display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\n <Typography type=\"h3\" weight=\"bold\" color={'inherit'}>{title}</Typography>\n {/* <Button\n variant=\"outlined\"\n className=\"scheduleReport__addBtn\"\n startIcon={<Add />}\n onClick={handleAddButton}\n >Schedule Report</Button> */}\n </Box>\n\n {initialLoading ? (\n <ErpLoader />\n ) : (\n <>\n {tableRows?.length > 0 ? (\n <>\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n totalPages={0}\n columnOrder={[\"mrt-row-select\"]}\n states={{ isLoading }}\n enableColumnDragging={true}\n enableEditing={false}\n isResetRow={false}\n enableRowSelection={false}\n paginationModel={{ pageNo: 1, limit: 10 }}\n defaultActionColumnItems={[\n <IconButton\n onClick={({ row }: any) =>\n setOpenScheduleModal(row?.original)\n }\n >\n <Edit fontSize=\"small\" htmlColor=\"#292D32\" />\n </IconButton>,\n <IconButton\n onClick={({ row }: any) =>\n setScheduleReportToDelete(row?.original)\n }\n >\n <Trash fontSize=\"small\" htmlColor=\"#292D32\" />\n </IconButton>,\n ]}\n />\n <Footer\n total={total}\n paginationModel={{\n ...pagination,\n limit: pagination?.limit\n }}\n handlePaginationModel={handlePaginationModel}\n resource='purchase-request'\n enablePages={false}\n />\n </>\n ) : (\n <>\n {!tableRows.length && (\n <Fallback\n heading=\"No schedule report\"\n subHeading=\"Add schedule report\"\n icon={<img src={logo.reportsFallback} />}\n >\n <Button\n variant=\"contained\"\n startIcon={<Add />}\n onClick={handleAddButton}\n >\n Add\n </Button>\n </Fallback>\n )}\n </>\n )}\n </>\n )}\n\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: \"right\", vertical: \"bottom\" }}\n />\n\n <ScheduleReportModal\n isOpen={Boolean(openScheduleModal)}\n onClose={() => setOpenScheduleModal(null)}\n itemData={openScheduleModal}\n onSubmit={handleUpdate}\n module={module}\n />\n\n\n\n <ConfirmPopUp\n open={Boolean(scheduleReportToDelete)}\n onClose={() => setScheduleReportToDelete(null)}\n onConfirm={handleScheduleReportDelete}\n title=\"Delete schedule report\"\n loading={isDeleting}\n description={`Are you sure you want to delete schedule report: ${scheduleReportToDelete?.name} ?`}\n />\n </section>\n );\n};\n\nexport { GeneralScheduleReport };\nexport default GeneralScheduleReport;\n","import React from 'react';\n\nimport {\n\tSnackbarProvider,\n\tSnackbarProviderProps,\n\tuseSnackbar\n} from 'notistack';\n\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Box } from '@mui/material';\n\nfunction SnackbarCloseButton({\n\tsnackbarKey\n}: {\n\tsnackbarKey: string | number;\n}) {\n\tconst { closeSnackbar } = useSnackbar();\n\n\treturn (\n\t\t<Box>\n\t\t\t<IconButton\n\t\t\t\tonClick={() => closeSnackbar(snackbarKey)}\n\t\t\t\tsx={{ width: 20, height: 20 }}>\n\t\t\t\t<CloseIcon sx={{ color: '#fff', width: 16, height: 16 }} />\n\t\t\t</IconButton>\n\t\t</Box>\n\t);\n}\n\nconst Snackbar = (props: SnackbarProviderProps) => {\n\tconst { children, ...rest } = props;\n\treturn (\n\t\t<SnackbarProvider\n\t\t\taction={(snackbarKey) => (\n\t\t\t\t<SnackbarCloseButton snackbarKey={snackbarKey} />\n\t\t\t)}\n\t\t\tstyle={{ flexWrap: 'unset' }}\n\t\t\t// iconVariant={}\n\t\t\tanchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n\t\t\t{...rest}>\n\t\t\t{children}\n\t\t</SnackbarProvider>\n\t);\n};\n\nexport { Snackbar };\nexport default Snackbar;\n","import Button from '../button/button';\nimport './sub-header-doc.scss';\n\nconst SubHeaderDoc = () => {\n return (\n <section>\n <div className=\"top-content\">\n <div className=\"left-content\"><a href=\"#\">Forms / </a>Add Custom Field</div>\n <div className=\"right-content\">\n <div className=\"actions\">\n <Button className='' variant='middle'>Action</Button>\n </div>\n <div className=\"show-preview\">\n <Button className='' variant='middle'>Show Preview</Button>\n </div>\n <div className=\"update\"><Button className='' variant='contained'>Update</Button></div> \n </div> \n </div>\n </section>\n );\n}\n\nexport { SubHeaderDoc };\nexport default SubHeaderDoc;","import React, { ReactNode, useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport Tab from \"@mui/material/Tab\";\n\nimport TabContext from \"@mui/lab/TabContext\";\nimport TabList from \"@mui/lab/TabList\";\nimport TabPanel from \"@mui/lab/TabPanel\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nimport \"./tab-bar-ui.scss\";\nimport TextField from \"../text-field/text-field\";\nimport images from \"../../assets/images\";\n\ninterface TabItem {\n tab_order: number;\n title: string;\n content?: string | ReactNode;\n data?: any;\n remove_tab?: boolean;\n tabIcon?: string;\n}\nexport interface ITabProps {\n tabs: TabItem[];\n activeTabValue?: number;\n setActiveTabValue?: React.Dispatch<React.SetStateAction<number | undefined>>;\n onEditTabTitle?: (tabId: number, newTitle: string) => void;\n handleTabChange?: () => void;\n handleRemoveTab?: (tabId: number) => void;\n}\n\nexport const TabBarUi = (props: TabProps) => {\n const { tabs, onEditTabTitle, activeTabValue, setActiveTabValue, handleTabChange, handleRemoveTab } = props;\n const [value, setValue] = useState(0);\n const [editableTabId, setEditableTabId] = useState<number | null>(null);\n const handleChange = (event: React.SyntheticEvent, newValue: number) => {\n setValue(newValue);\n setActiveTabValue && setActiveTabValue(newValue);\n handleTabChange && handleTabChange();\n };\n\n const handleTabDoubleClick = (tabId: number) => {\n setEditableTabId(tabId);\n };\n\n const handleEditTabTitle = (\n event: React.ChangeEvent<HTMLInputElement>,\n tabId: number,\n ) => {\n onEditTabTitle && onEditTabTitle(tabId, event.target.value);\n };\n\n useEffect(() => {\n if (setActiveTabValue && Boolean(tabs?.length)) setActiveTabValue(value);\n // eslint-disable-next-line\n }, [tabs]);\n\n return (\n <Box>\n <TabContext value={activeTabValue ?? value}>\n <Box>\n <TabList\n className=\"account-payble-tabsui-wrap\"\n onChange={handleChange}\n >\n {tabs.map((tab: TabItem) => (\n <Tab\n className=\"account-payble-tab-items\"\n key={tab.tab_order}\n label={\n onEditTabTitle && editableTabId === tab.tab_order ? (\n <TextField\n value={tab.title}\n autoFocus\n onBlur={() => setEditableTabId(null)}\n onChange={(e: any) =>\n handleEditTabTitle(e, tab.tab_order)\n }\n />\n ) : handleRemoveTab ? (\n <div className=\"Tabs--Title\">\n <div>{tab.title}</div>\n {!tab.remove_tab && (\n <CloseIcon\n style={{ fontSize: \"15px\", cursor: \"pointer\" }}\n onClick={() => {\n handleRemoveTab(tab.tab_order);\n }}\n />\n )}\n </div>\n ) : (\n <div className=\"text-display\">\n <img src={images.common[tab.tabIcon]} />\n {tab.title}\n </div>\n )\n }\n wrapped\n onDoubleClick={() => handleTabDoubleClick(tab.tab_order)}\n />\n ))}\n </TabList>\n </Box>\n {tabs.map(\n (tab: TabItem, index: number) =>\n tab.content && (\n <TabPanel value={index} key={tab.tab_order}>\n {value === index && tab.content}\n </TabPanel>\n ),\n )}\n </TabContext>\n </Box>\n );\n};\n\nexport default TabBarUi;\n","import {\n TextareaAutosize as MUITextArea,\n TextareaAutosizeProps,\n} from \"@mui/base\";\nimport { styled } from '@mui/material/styles';\nimport Typography from \"../typography/typography\";\n\ninterface TextAreaProps extends TextareaAutosizeProps {\n label?: string;\n error?: boolean;\n helperText?: string;\n}\n\nconst TextArea = (props: TextAreaProps) => {\n const { placeholder, minRows = 3, label, helperText, error, ...rest } = props;\n\n const StyledTextArea = styled(MUITextArea)(({ theme: { palette } }) => ({\n \"&\": {\n padding: \"0.4375rem 0.5rem\",\n borderRadius: \"0.25rem\",\n borderColor: error\n ? palette.theme?.error[600]\n : palette.theme?.secondary[400],\n outline: \"none\",\n color: palette.theme?.secondary[800],\n fontSize: \"0.875rem\",\n \"&::placeholder\": {\n opacity: 1,\n },\n \"&:hover\": {\n borderColor: error\n ? palette.theme?.error[600]\n : palette.theme?.secondary[500],\n },\n \"&:focus-visible\": {\n borderWidth: \"0.0625rem\",\n borderStyle: \"solid\",\n borderColor: error\n ? palette.theme?.error[600]\n : palette.theme?.primary[700],\n },\n \"&:disabled\": {\n background: palette.theme?.secondary[200],\n },\n },\n }));\n\n return (\n <>\n <Typography\n type=\"s4\"\n fontWeight={\"medium\"}\n mb={0.5}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n >\n {label}\n </Typography>\n <StyledTextArea\n aria-label=\"minimum height\"\n minRows={minRows}\n placeholder={placeholder}\n {...rest}\n />\n\n <Typography\n type=\"s4\"\n fontWeight={\"medium\"}\n mt={-0.25}\n color={error ? \"theme.error.600\" : \"theme.secondary.800\"}\n >\n {helperText}\n </Typography>\n </>\n );\n};\nexport { TextArea };\nexport default TextArea;\n","import React, { useEffect, useState } from \"react\";\nimport DatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport \"./time-range-picker.scss\";\nimport { AccessTimeRounded, Close } from \"@mui/icons-material\";\nimport { Box, IconButton, InputAdornment } from \"@mui/material\";\nimport TextField from \"../text-field/text-field\";\n\ninterface TimeRangePickerProps {\n hour12?: boolean;\n startTime?: string;\n endTime?: string;\n onTimeRangeChange: (timeRanges: any[]) => void;\n}\nconst TimeRangePicker: React.FC<TimeRangePickerProps> = (props: any) => {\n const [timeRange, setTimeRange] = useState<string[]>([]);\n const [differenceInMinutes, setDifferenceInMinutes] = useState(0);\n const [cnt, setCnt] = useState(0);\n const [isOpenTimePicker, setIsOpenTimePicker] = useState(undefined);\n const { hour12 = false, startTime, endTime, onTimeRangeChange } = props;\n\n useEffect(() => {\n setTimeRange([]);\n\n const formatDate = (time: string) => {\n if (!time) return null;\n\n const [timePart, meridiem] = time.split(\" \");\n const [hours, minutes] = timePart.split(\":\").map(Number);\n\n let formattedHours = hours;\n\n if (meridiem) {\n if (meridiem === \"PM\") {\n if (hours !== 12) {\n formattedHours += 12;\n }\n } else if (meridiem === \"AM\" && hours === 12) {\n formattedHours -= 12;\n }\n }\n\n const date = new Date();\n date.setHours(formattedHours, minutes, 0, 0);\n\n const formattedTime = date.toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: hour12,\n });\n let finalFormattedTime = formattedTime;\n\n if (date.getHours() === 0) {\n finalFormattedTime = \"00\" + formattedTime.slice(2); // Replace hours with 00\n } else if (date.getHours() === 12) {\n finalFormattedTime = \"12\" + formattedTime.slice(2); // Replace hours with 12\n }\n return finalFormattedTime;\n };\n\n setTimeRange((prevTimeRange: any) => {\n if (startTime && endTime) {\n const formattedStartTime = formatDate(startTime);\n const formattedEndTime = formatDate(endTime);\n return [...prevTimeRange, formattedStartTime, formattedEndTime];\n }\n return prevTimeRange;\n });\n }, [hour12, startTime, endTime]);\n\n const handleChange = (dates: any) => {\n const formattedTime: any = dates.toLocaleTimeString([], {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: hour12,\n });\n\n let finalFormattedTime = formattedTime;\n\n if (dates.getHours() === 0) {\n finalFormattedTime = \"00\" + formattedTime.slice(2); // Replace hours with 00\n } else if (dates.getHours() === 12) {\n finalFormattedTime = \"12\" + formattedTime.slice(2); // Replace hours with 12\n }\n\n if (timeRange.length < 2) {\n setTimeRange([...timeRange, finalFormattedTime]);\n } else if (cnt === 0) {\n setTimeRange((prevTimeRange) => {\n const updatedTimeRange: any = [...prevTimeRange];\n updatedTimeRange[0] = finalFormattedTime;\n return updatedTimeRange;\n });\n } else if (cnt === 1) {\n setTimeRange((prevTimeRange) => {\n const updatedTimeRange: any = [...prevTimeRange];\n updatedTimeRange[1] = finalFormattedTime;\n return updatedTimeRange;\n });\n }\n setCnt(cnt + 1);\n };\n\n useEffect(() => {\n if (cnt === 2) {\n setCnt(0);\n }\n\n // Calculate the difference between two time ranges\n if (timeRange.length === 2) {\n const startTimeString = timeRange[0];\n const endTimeString = timeRange[1];\n\n // Parsing start time\n const startTotalMinutes = parseTimeToMinutes(startTimeString);\n\n // Parsing end time\n const endTotalMinutes = parseTimeToMinutes(endTimeString);\n\n // Calculating difference\n let difference = endTotalMinutes - startTotalMinutes;\n if (difference < 0) {\n difference += 24 * 60; // Adding 24 hours if end time is smaller than start time\n }\n setDifferenceInMinutes(difference);\n } else {\n setDifferenceInMinutes(0);\n }\n }, [cnt, timeRange]);\n\n const parseTimeToMinutes = (timeString: string) => {\n const [hoursStr, minutesStr, meridiem] = timeString.split(/:| /);\n let hours = parseInt(hoursStr);\n const minutes = parseInt(minutesStr);\n\n if (meridiem && meridiem.toLowerCase() === \"pm\" && hours !== 12) {\n hours += 12;\n } else if (meridiem && meridiem.toLowerCase() === \"am\" && hours === 12) {\n hours = 0;\n }\n\n return hours * 60 + minutes;\n };\n\n useEffect(() => {\n onTimeRangeChange({\n timeRange: timeRange,\n differenceInMinutes: differenceInMinutes,\n });\n }, [differenceInMinutes, onTimeRangeChange, timeRange]);\n\n const handleClick = () => {\n const isOpen: any = isOpenTimePicker === true ? undefined : true;\n setIsOpenTimePicker(isOpen);\n };\n\n const handleCloseClick = (event: any) => {\n setTimeRange([]);\n setCnt(0);\n event.stopPropagation();\n };\n\n const customInput = (\n <TextField\n className=\"time-input\"\n type=\"text\"\n value={\n timeRange.length === 1\n ? `${timeRange[0]} - `\n : timeRange.length === 2\n ? `${timeRange[0]} - ${timeRange[1]}`\n : \"\"\n }\n InputProps={{\n readOnly: true,\n endAdornment: (\n <InputAdornment position=\"end\">\n {timeRange.length > 0 && (\n <IconButton onClick={handleCloseClick}>\n <Close />\n </IconButton>\n )}\n <IconButton onClick={handleClick}>\n <AccessTimeRounded />\n </IconButton>\n </InputAdornment>\n ),\n }}\n />\n );\n\n return (\n <>\n <Box className=\"DateRangePicker\">\n <DatePicker\n className=\"DatePickerWrapper\"\n onChange={(date: any) => {\n handleChange(date), handleClick();\n }}\n showTimeSelect\n showTimeSelectOnly\n timeIntervals={15}\n selectsRange\n customInput={customInput}\n open={isOpenTimePicker}\n value={\n timeRange && timeRange.length === 1\n ? `${timeRange[0]}-`\n : timeRange && timeRange.length === 2\n ? `${timeRange[0]}-${timeRange[1]}`\n : undefined\n }\n />\n <Box\n className=\"box-icon\"\n style={\n timeRange.length > 0 ? { right: \"2.5rem\" } : { right: \"1.563rem\" }\n }\n >\n {timeRange.length > 0 && <Close onClick={handleCloseClick} />}\n </Box>\n </Box>\n </>\n );\n};\n\nexport default TimeRangePicker;\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinearProgressUtilityClass(slot) {\n return generateUtilityClass('MuiLinearProgress', slot);\n}\nconst linearProgressClasses = generateUtilityClasses('MuiLinearProgress', ['root', 'colorPrimary', 'colorSecondary', 'determinate', 'indeterminate', 'buffer', 'query', 'dashed', 'dashedColorPrimary', 'dashedColorSecondary', 'bar', 'barColorPrimary', 'barColorSecondary', 'bar1Indeterminate', 'bar1Determinate', 'bar1Buffer', 'bar2Indeterminate', 'bar2Buffer']);\nexport default linearProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4,\n _t5,\n _t6;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getLinearProgressUtilityClass } from './linearProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst TRANSITION_DURATION = 4; // seconds\nconst indeterminate1Keyframe = keyframes(_t || (_t = _`\n 0% {\n left: -35%;\n right: 100%;\n }\n\n 60% {\n left: 100%;\n right: -90%;\n }\n\n 100% {\n left: 100%;\n right: -90%;\n }\n`));\nconst indeterminate2Keyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n left: -200%;\n right: 100%;\n }\n\n 60% {\n left: 107%;\n right: -8%;\n }\n\n 100% {\n left: 107%;\n right: -8%;\n }\n`));\nconst bufferKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n opacity: 1;\n background-position: 0 -23px;\n }\n\n 60% {\n opacity: 0;\n background-position: 0 -23px;\n }\n\n 100% {\n opacity: 1;\n background-position: -200px -23px;\n }\n`));\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, variant],\n dashed: ['dashed', `dashedColor${capitalize(color)}`],\n bar1: ['bar', `barColor${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar1Indeterminate', variant === 'determinate' && 'bar1Determinate', variant === 'buffer' && 'bar1Buffer'],\n bar2: ['bar', variant !== 'buffer' && `barColor${capitalize(color)}`, variant === 'buffer' && `color${capitalize(color)}`, (variant === 'indeterminate' || variant === 'query') && 'bar2Indeterminate', variant === 'buffer' && 'bar2Buffer']\n };\n return composeClasses(slots, getLinearProgressUtilityClass, classes);\n};\nconst getColorShade = (theme, color) => {\n if (color === 'inherit') {\n return 'currentColor';\n }\n if (theme.vars) {\n return theme.vars.palette.LinearProgress[`${color}Bg`];\n }\n return theme.palette.mode === 'light' ? lighten(theme.palette[color].main, 0.62) : darken(theme.palette[color].main, 0.5);\n};\nconst LinearProgressRoot = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`color${capitalize(ownerState.color)}`], styles[ownerState.variant]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'relative',\n overflow: 'hidden',\n display: 'block',\n height: 4,\n zIndex: 0,\n // Fix Safari's bug during composition of different paint.\n '@media print': {\n colorAdjust: 'exact'\n },\n backgroundColor: getColorShade(theme, ownerState.color)\n}, ownerState.color === 'inherit' && ownerState.variant !== 'buffer' && {\n backgroundColor: 'none',\n '&::before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'currentColor',\n opacity: 0.3\n }\n}, ownerState.variant === 'buffer' && {\n backgroundColor: 'transparent'\n}, ownerState.variant === 'query' && {\n transform: 'rotate(180deg)'\n}));\nconst LinearProgressDashed = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Dashed',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.dashed, styles[`dashedColor${capitalize(ownerState.color)}`]];\n }\n})(({\n ownerState,\n theme\n}) => {\n const backgroundColor = getColorShade(theme, ownerState.color);\n return _extends({\n position: 'absolute',\n marginTop: 0,\n height: '100%',\n width: '100%'\n }, ownerState.color === 'inherit' && {\n opacity: 0.3\n }, {\n backgroundImage: `radial-gradient(${backgroundColor} 0%, ${backgroundColor} 16%, transparent 42%)`,\n backgroundSize: '10px 10px',\n backgroundPosition: '0 -23px'\n });\n}, css(_t4 || (_t4 = _`\n animation: ${0} 3s infinite linear;\n `), bufferKeyframe));\nconst LinearProgressBar1 = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Bar1',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar1Indeterminate, ownerState.variant === 'determinate' && styles.bar1Determinate, ownerState.variant === 'buffer' && styles.bar1Buffer];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n top: 0,\n transition: 'transform 0.2s linear',\n transformOrigin: 'left',\n backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.variant === 'determinate' && {\n transition: `transform .${TRANSITION_DURATION}s linear`\n}, ownerState.variant === 'buffer' && {\n zIndex: 1,\n transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t5 || (_t5 = _`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n `), indeterminate1Keyframe));\nconst LinearProgressBar2 = styled('span', {\n name: 'MuiLinearProgress',\n slot: 'Bar2',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.bar, styles[`barColor${capitalize(ownerState.color)}`], (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && styles.bar2Indeterminate, ownerState.variant === 'buffer' && styles.bar2Buffer];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n width: '100%',\n position: 'absolute',\n left: 0,\n bottom: 0,\n top: 0,\n transition: 'transform 0.2s linear',\n transformOrigin: 'left'\n}, ownerState.variant !== 'buffer' && {\n backgroundColor: ownerState.color === 'inherit' ? 'currentColor' : (theme.vars || theme).palette[ownerState.color].main\n}, ownerState.color === 'inherit' && {\n opacity: 0.3\n}, ownerState.variant === 'buffer' && {\n backgroundColor: getColorShade(theme, ownerState.color),\n transition: `transform .${TRANSITION_DURATION}s linear`\n}), ({\n ownerState\n}) => (ownerState.variant === 'indeterminate' || ownerState.variant === 'query') && css(_t6 || (_t6 = _`\n width: auto;\n animation: ${0} 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n `), indeterminate2Keyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst LinearProgress = /*#__PURE__*/React.forwardRef(function LinearProgress(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiLinearProgress'\n });\n const {\n className,\n color = 'primary',\n value,\n valueBuffer,\n variant = 'indeterminate'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const isRtl = useRtl();\n const rootProps = {};\n const inlineStyles = {\n bar1: {},\n bar2: {}\n };\n if (variant === 'determinate' || variant === 'buffer') {\n if (value !== undefined) {\n rootProps['aria-valuenow'] = Math.round(value);\n rootProps['aria-valuemin'] = 0;\n rootProps['aria-valuemax'] = 100;\n let transform = value - 100;\n if (isRtl) {\n transform = -transform;\n }\n inlineStyles.bar1.transform = `translateX(${transform}%)`;\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n }\n }\n if (variant === 'buffer') {\n if (valueBuffer !== undefined) {\n let transform = (valueBuffer || 0) - 100;\n if (isRtl) {\n transform = -transform;\n }\n inlineStyles.bar2.transform = `translateX(${transform}%)`;\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n }\n }\n return /*#__PURE__*/_jsxs(LinearProgressRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n role: \"progressbar\"\n }, rootProps, {\n ref: ref\n }, other, {\n children: [variant === 'buffer' ? /*#__PURE__*/_jsx(LinearProgressDashed, {\n className: classes.dashed,\n ownerState: ownerState\n }) : null, /*#__PURE__*/_jsx(LinearProgressBar1, {\n className: classes.bar1,\n ownerState: ownerState,\n style: inlineStyles.bar1\n }), variant === 'determinate' ? null : /*#__PURE__*/_jsx(LinearProgressBar2, {\n className: classes.bar2,\n ownerState: ownerState,\n style: inlineStyles.bar2\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the progress indicator for the determinate and buffer variants.\n * Value between 0 and 100.\n */\n value: PropTypes.number,\n /**\n * The value for the buffer variant.\n * Value between 0 and 100.\n */\n valueBuffer: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate or query when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default LinearProgress;","import React, { useEffect } from \"react\";\nimport {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n IconButton,\n} from \"@mui/material\";\nimport Typography from \"../typography/typography\";\nimport \"../filter/filter.scss\"; \nimport Button from \"../button/button\";\nimport { Close } from \"@mui/icons-material\";\n\ninterface FileConfirmationDialogProps {\n open: boolean;\n onClose: () => void;\n onReplace: () => void;\n onKeepBoth: () => void;\n title?: string;\n isFile : boolean ; \n}\n\nconst FileConfirmationDialog: React.FC<FileConfirmationDialogProps> = ({\n open,\n onClose,\n onReplace,\n onKeepBoth,\n title , \n isFile\n}) => {\n\n useEffect(() => {\n }, [open])\n\n return (\n <Dialog open={open} className=\"filter-container\" onClose={onClose}>\n <DialogTitle className=\"filter-header\" sx={{padding: \"20px\"}}> <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Confirmation\n </Typography>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </DialogTitle>\n <DialogContent sx={{marginTop: \"20px\"}}>\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n {isFile ? `The destination already has a file named ${title}` : \"The destination already has a folder name \"}\n \n </Typography>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Button className=\"cancel-filter-btn\" onClick={onKeepBoth} >\n Keep Both\n </Button>\n <Button onClick={onReplace} >\n Replace\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nexport default FileConfirmationDialog;\n","import { useEffect, useRef, useState } from \"react\";\n\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport Typography from \"../typography/typography\";\nimport Box from \"@mui/material/Box\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport \"./upload.scss\";\nimport { useDropzone } from \"react-dropzone\";\nimport Toast from '../toast/toast';\nimport {\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n IconButton,\n} from \"@mui/material\";\nimport RemoveIcon from \"@mui/icons-material/Remove\";\nimport { Add } from \"@mui/icons-material\";\nimport Button from \"../button/button\";\nimport Checkbox from \"../checkbox/checkbox\";\nimport Avatar from \"../avatar/avatar\";\nimport images from \"../../assets/images\";\nimport Chip from \"../chip/chip\";\nimport { auth } from \"../../constants/auth\";\nimport { KeyboardArrowDown, KeyboardArrowUp, Clear } from \"@mui/icons-material\";\nimport FileConfirmationDialog from \"./file-confirmation\"\nimport { getApiConfig } from \"@/utils\";\n\ninterface UploadProps {\n open: boolean;\n title: string;\n multiple?: boolean;\n accept?: string;\n onClose: () => void;\n onConfirm: () => void;\n onSubmit: (files: any[]) => void;\n existingDriveData?: any;\n fileUploaded?: (value: boolean) => void | undefined;\n type: any\n\n\n}\ninterface CustomNavigator extends Navigator {\n connection?: {\n downlink?: number;\n };\n}\nconst formatBytes = (bytes: number, decimals = 2) => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\n};\n\nconst Upload = (props: UploadProps) => {\n const {\n open,\n title,\n onClose,\n onConfirm,\n accept = \"*\",\n onSubmit,\n multiple = true,\n existingDriveData,\n fileUploaded,\n type\n\n } = props;\n\n const [files, setFiles] = useState<\n {\n file: File;\n isPrivate: boolean;\n checkboxDisabled: boolean;\n status: string;\n uploadProgress: number;\n fileSize: number;\n fileName: string;\n fileType: string;\n location: string;\n message: string;\n }[]\n >([]);\n\n interface IToast {\n type: 'normal' | 'alert';\n message: string;\n }\n const [isUploading, setIsUploading] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [isDialogMinimized, setIsDialogMinimized] = useState(false);\n const [isDragOver, setIsDragOver] = useState(false);\n const [abortController, setAbortController] = useState(new AbortController());\n const authToken = localStorage.getItem(auth.storageTokenKeyName);\n const [allDriveData, setAllDriveData] = useState();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = useState(false);\n const [selectedFileTitle, setSelectedFileTitle] = useState();\n const [toast, setToast] = useState<IToast | null>(null);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDropAccepted: (newFiles) => {\n setFiles([\n ...files,\n ...newFiles.map((file) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file.size,\n fileName: file.name,\n fileType: file.type,\n location: \"\",\n message: \"\",\n })),\n ]);\n setIsDragOver(false);\n },\n onDragEnter: () => {\n setIsDragOver(true);\n },\n onDragLeave: () => {\n setIsDragOver(false);\n },\n noClick: true,\n noKeyboard: true,\n multiple: multiple,\n accept: accept ? convertAcceptObject(accept) : accept,\n });\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n const driveTitles = existingDriveData?.map(item => item['title'])\n setAllDriveData(driveTitles);\n }, [existingDriveData]);\n\n useEffect(() => {\n const handleBeforeUnload = (event: any) => {\n if (isUploading) {\n const message =\n \"Are you sure you want to leave? Your uploads are not complete.\";\n event.returnValue = message; // Standard for most browsers\n return message; // For some older browsers\n }\n };\n if (fileInputRef.current) {\n fileInputRef.current.multiple = multiple;\n }\n\n window.addEventListener(\"beforeunload\", handleBeforeUnload);\n\n return () => {\n // Clean up the event listener when the component unmounts\n window.removeEventListener(\"beforeunload\", handleBeforeUnload);\n };\n }, [isUploading, multiple]);\n\n const getInternetSpeed = () => {\n const customNavigator = navigator as CustomNavigator;\n if (\"connection\" in customNavigator && customNavigator.connection) {\n return customNavigator.connection.downlink;\n } else {\n return null;\n }\n };\n\n function convertAcceptObject(types: string) {\n const accepts = types.split(\",\").map((item) => item.trim());\n const acceptObject = accepts.reduce((acc: any, type: string) => {\n acc[type] = [];\n return acc;\n }, {});\n return acceptObject;\n }\n\n const renderFileIcon = (file: any) => {\n const fileType = file?.type.split(\"/\")[0];\n switch (fileType) {\n case \"image\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"application\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#FFEBEB\" }}\n >\n <Avatar size={20} src={images.upload.documentPDF}></Avatar>\n </div>\n );\n case \"text\":\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n default:\n return (\n <div\n className={\n isDialogMinimized ? \"document-icon-sm\" : \"document-icon-lg\"\n }\n style={{ backgroundColor: \"#EBF9F2\" }}\n >\n <Avatar size={20} src={images.upload.docFile}></Avatar>\n </div>\n );\n }\n };\n\n const BASE_URL = `${getApiConfig().backendBaseUrl}/document/v1/file-upload/`;\n\n const handleConfirm = async () => {\n setIsUploading(true);\n // Create a new AbortController for each confirmation\n const controller = new AbortController();\n setAbortController(controller);\n\n const filteredFiles = files.filter((file: any) => file.status !== \"canceled\").length;\n for (let i = 0; i < files.length; i++) {\n if (files[i].uploadProgress === 100 || files[i].status !== \"pending\") {\n continue;\n }\n\n const file = files[i];\n\n const fileSize = file?.fileSize;\n try {\n if (fileSize > 10 * 1024 * 1024) {\n const uploadResponse = await handleMultipartUpload(file, i, controller);\n if (uploadResponse) {\n setTimeout(() => { fileUploaded(true) }, 1000);\n }\n } else {\n await handleRegularUpload(file, i, controller, filteredFiles);\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[i] = {\n ...updatedFiles[i],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n } finally {\n setIsUploading(false);\n }\n }\n };\n\n\n\n\n let tempCount = 0;\n const handleRegularUpload = async (\n file: any,\n index: number,\n controller: any,\n fileCount: number\n ) => {\n try {\n const format = ['docx', 'doc', 'csv', 'pdf', 'xls', 'xlsx', 'vnd.ms-excel', 'excel', 'txt'];\n const mimeType = file?.mimeType || file?.fileType || '';\n const isValid = format.some(f => mimeType.includes(f));\n\n if (isValid && file?.fileSize && file?.fileSize >= 5242880) {\n return setToast({\n type: 'alert',\n message: 'File size must be within 5 MB!'\n });\n }\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=1&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n if (preSignedUrlsData?.status_code == 400) {\n // alert(preSignedUrlsData?.message);\n setToast({\n type: 'alert',\n message: preSignedUrlsData?.message\n });\n return;\n }\n const preSignedUrl = preSignedUrlsData.data?.preSignedData?.presignedUrl;\n const location = preSignedUrlsData.data?.preSignedData?.location;\n const partParams = {\n Body: file?.file.slice(0, file?.fileSize),\n url: preSignedUrl,\n };\n const contentLength = file.fileSize;\n // const maxChunkSize = 1024 * 1024 * 1024; // 10 MB maximum chunk size\n // const chunkSize = Math.min(contentLength * 0.1, maxChunkSize);\n const chunkSize = 1024 * 1024 * 1024 * 1024 // 1MB chunk size\n let bytesUploaded = 0;\n\n while (bytesUploaded < contentLength) {\n const start = bytesUploaded;\n const end = Math.min(bytesUploaded + chunkSize, contentLength);\n\n // Send chunk of the file\n await fetch(partParams.url, {\n method: \"PUT\",\n body: file.file.slice(start, end),\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n\n // Update progress\n bytesUploaded = end;\n const progress = Math.round((bytesUploaded / contentLength) * 100);\n\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location,\n message: \"Uploaded Successfully\",\n };\n tempCount = tempCount + 1;\n\n if (fileCount == tempCount) {\n onSubmit(updatedFiles);\n tempCount = 0;\n\n }\n return updatedFiles;\n });\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n\n };\n\n const handleMultipartUpload = async (\n file: any,\n index: number,\n controller: any,\n ) => {\n\n try {\n const partSize =\n (getInternetSpeed() || 10) * 1024 * 1024 < 5 * 1024 * 1024\n ? 5 * 1024 * 1024\n : (getInternetSpeed() || 10) * 1024 * 1024;\n const parts = Math.ceil(file?.fileSize / partSize);\n const preSignedUrlsResponse = await fetch(\n `${BASE_URL}?key=${file?.fileName}&partCount=${parts}&mimeType=${file?.fileType}&is_private=${!file?.isPrivate}`,\n {\n headers: {\n \"Content-Type\": \"application/json\",\n \"file-size\": file?.fileSize,\n \"x-token\": authToken,\n },\n signal: controller.signal,\n },\n );\n const preSignedUrlsData = await preSignedUrlsResponse.json();\n\n if (preSignedUrlsData && preSignedUrlsData?.status_code && preSignedUrlsData?.status_code == 400) {\n setToast({ message: preSignedUrlsData?.message || \"Internal Server Error\", type: \"error\" });\n return null;\n }\n\n const preSignedUrls = preSignedUrlsData.data.preSignedData?.preSignedUrls;\n if (preSignedUrls.length > 0) {\n const uploadId =\n preSignedUrls[0].presignedUrl.match(/uploadId=([^&]+)/)[1];\n for (let i = 0; i < preSignedUrls.length; i++) {\n const partNum = preSignedUrls[i].partNumber;\n const preSignedUrl = preSignedUrls[i].presignedUrl;\n const start = (partNum - 1) * partSize;\n const end = Math.min(start + partSize, file?.fileSize);\n const partParams = {\n Body: file?.file?.slice(start, end),\n url: preSignedUrl,\n };\n await fetch(partParams.url, {\n method: \"PUT\",\n body: partParams.Body,\n headers: {\n \"Content-Type\": \"application/octet-stream\",\n },\n });\n const progress = Math.round(((i + 1) * 100) / parts);\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n checkboxDisabled: true,\n status: \"uploading\",\n uploadProgress: progress,\n };\n return updatedFiles;\n });\n }\n const markCompleteResponse = await fetch(`${BASE_URL}mark-complete`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-token\": authToken,\n },\n body: JSON.stringify({\n fileName: file?.fileName,\n uploadId: uploadId,\n }),\n });\n const markCompleteData = await markCompleteResponse.json();\n const location = markCompleteData?.data?.location;\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"completed\",\n location: location,\n message: \"Uploaded Successfully\",\n };\n\n onSubmit(updatedFiles);\n return updatedFiles;\n });\n } else {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: \"Did not get pre-signed URLs\",\n };\n return updatedFiles;\n });\n }\n } catch (error: any) {\n setFiles((prevFiles) => {\n const updatedFiles = [...prevFiles];\n updatedFiles[index] = {\n ...updatedFiles[index],\n status: \"failed\",\n message: error.message || \"Internal Server Error\",\n };\n return updatedFiles;\n });\n }\n };\n\n const handleChipClick = () => {\n if (fileInputRef.current) {\n // If multiple is true, set input for multiple files\n if (props.multiple) {\n fileInputRef.current.setAttribute(\"multiple\", \"true\");\n } else {\n // If multiple is false, set input for a single file\n fileInputRef.current.removeAttribute(\"multiple\");\n }\n fileInputRef.current.click();\n }\n };\n\n //checking if the file already exists or not in the drive \n const handleFileChange = (e: any) => {\n\n const selectedFiles = e.target.files;\n\n const fileTitles = Array.from(selectedFiles).map(file => {\n const fileName = file.name;\n const nameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.')) || fileName;\n return nameWithoutExtension;\n })[0];\n\n setSelectedFileTitle(fileTitles);\n\n setIsConfirmDialogOpen(allDriveData?.includes(fileTitles));\n const newFiles = Array.from(selectedFiles).map((file: any) => ({\n file,\n isPrivate: false,\n checkboxDisabled: false,\n status: \"pending\",\n uploadProgress: 0,\n fileSize: file?.size,\n fileName: file?.name,\n fileType: file?.type,\n location: \"\",\n message: \"\",\n }));\n setFiles((prevFiles: any) => [...prevFiles, ...newFiles]);\n setIsUploading(false);\n\n\n };\n\n const removeFile = (indexToRemove: number) => {\n\n setFiles((prevFiles) =>\n prevFiles.map((file, index) =>\n index === indexToRemove ? { ...file, status: \"canceled\" } : file,\n ),\n );\n\n };\n\n\n\n const toggleIsPrivate = (index: number) => {\n setFiles((prevFiles) =>\n prevFiles.map((item, i) =>\n i === index ? { ...item, isPrivate: !item.isPrivate } : item,\n ),\n );\n };\n\n const toggleCollapse = () => {\n setIsCollapsed((prevIsCollapsed) => !prevIsCollapsed);\n };\n\n const handleMinimizeClick = () => {\n setIsDialogMinimized(!isDialogMinimized);\n isDialogMinimized ? onConfirm() : onClose();\n };\n\n const handleDialogClose = () => {\n if (files.length > 0) {\n if (\n confirm(\n \"Your uploads are not complete. Would you like to cancel all ongoing uploads?\",\n )\n ) {\n // Abort the ongoing requests when the dialog is closed\n abortController.abort();\n if (abortController?.signal?.aborted) {\n onClose();\n }\n setFiles([]);\n }\n } else {\n onClose();\n }\n };\n useEffect(() => {\n open && setFiles([]);\n }, [open]);\n\n const onCloseConfirmPopup = () => {\n setIsConfirmDialogOpen(false);\n }\n\n const onReplace = async () => {\n const baseUrl = `${getApiConfig().backendBaseUrl}`;\n const fileId = existingDriveData?.filter(file => file.title === selectedFileTitle)[0].id;\n const headers = {\n \"Content-type\": \"application/json; charset=utf-8\",\n };\n const authToken = localStorage.getItem(auth.storageTokenKeyName) || '';\n headers[\"x-token\"] = authToken;\n await fetch(`${baseUrl}/document/v1/drive/${fileId}`, {\n method: \"DELETE\",\n headers,\n });\n\n onCloseConfirmPopup();\n }\n\n const onKeepBoth = () => {\n onCloseConfirmPopup();\n }\n return (\n <>\n <Dialog open={open} onClose={onClose} className=\"upload\">\n <DialogTitle className=\"upload--head\">\n <Box className=\"upload--title\">\n <Typography\n type=\"s3\"\n ml={1}\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n {title}\n </Typography>\n </Box>\n <div>\n <IconButton disableRipple onClick={handleMinimizeClick}>\n <RemoveIcon />\n </IconButton>\n <IconButton disableRipple onClick={handleDialogClose}>\n <CloseIcon />\n </IconButton>\n </div>\n </DialogTitle>\n <Divider />\n <DialogContent className=\"upload--content\">\n {files.length === 0 ? (\n <div\n className={`upload--fileContent ${isDragActive ? \"drag-active\" : \"\"\n }`}\n >\n <div {...getRootProps()} className=\"drop-view\">\n {!isDragOver ? (\n <>\n <input {...getInputProps()} ref={fileInputRef} />\n <p className=\"upload--text\">\n Drag and Drop files here or upload from\n </p>\n\n <div className=\"device-wrap\">\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.monitor} />\n <Typography type=\"s5\">My Device</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={async () => {\n // handleFileChange(e) ; \n handleConfirm();\n }}\n accept={accept}\n />\n </div>\n <div className=\"select-button\" onClick={handleChipClick}>\n <img src={images.upload.camera} />\n <Typography type=\"s5\">Camera</Typography>\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </div>\n </div>\n </>\n ) : (\n <div className=\"after-drop\">\n <img src={images.upload.documentUpload} />\n <Typography type=\"s3\">\n Drag & Drop your files here\n </Typography>\n </div>\n )}\n </div>\n </div>\n ) : (\n <div className=\"main-container\">\n <div className=\"body-section\">\n <div className=\"document-section\">\n <div className=\"document-body\">\n {files.map((file: any, index: number) => (\n <div className=\"upload-list\" key={index}>\n <div className=\"document-cover\" key={file?.file?.name}>\n <div className=\"document-name\">\n {renderFileIcon(file?.file)}\n <div className=\"document-title\">\n <div className=\"document-box\">\n <div className=\"document-desc\">\n {file?.file?.name}\n </div>\n <div className=\"document-size\">\n {formatBytes(file?.file?.size)}\n <span\n className={\n file?.status === \"completed\" &&\n file?.message.length > 0\n ? \"success-file\"\n : \"fail-file\"\n }\n >\n {file?.message}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div className=\"document-choices\">\n {file?.status !== \"canceled\" ? (\n <>\n <div className=\"checkbox\">\n <Checkbox\n checked={file?.isPrivate || type == 'public'}\n onChange={() => toggleIsPrivate(index)}\n disabled={file?.checkboxDisabled || type == 'public'}\n />\n <div className=\"checkbox-text\">Public</div>\n </div>\n <div\n className=\"delete-icon\"\n onClick={() => removeFile(index)}\n >\n <Avatar\n size={24}\n src={images.upload.trash}\n ></Avatar>\n </div>\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n <div className=\"document-progress\">\n {file?.uploadProgress > 0 && (\n <LinearProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n {multiple && (\n <>\n <Chip\n className=\"add-file\"\n variant=\"outlined\"\n type=\"normal\"\n label={\"Add File\"}\n icon={<Add />}\n onClick={handleChipClick}\n />\n <input\n type=\"file\"\n {...getInputProps({ multiple: true })}\n ref={fileInputRef}\n style={{ display: \"none\" }}\n onChange={handleFileChange}\n accept={accept}\n />\n </>\n )}\n </div>\n </div>\n )}\n </DialogContent>\n <Divider />\n <DialogActions className=\"upload--actions\">\n <Button variant=\"text\" onClick={handleDialogClose}>\n Cancel\n </Button>\n <Button\n color=\"secondary\"\n onClick={handleConfirm}\n disabled={!files.length || isUploading}\n >\n Upload\n </Button>\n </DialogActions>\n </Dialog>\n {isDialogMinimized && (\n <div className=\"bottom-corner-box\">\n <div className=\"top-section\">\n <div className=\"top-text\">\n Uploading {files.length} Item{files.length !== 1 ? \"s\" : \"\"}\n </div>\n <div className=\"top-options\">\n <div className=\"btn\" onClick={handleMinimizeClick}>\n <RemoveIcon />\n </div>\n <div className=\"btn\" onClick={toggleCollapse}>\n <div className=\"arrow-btn\">\n {isCollapsed ? <KeyboardArrowUp /> : <KeyboardArrowDown />}\n </div>\n </div>\n <div className=\"btn\" onClick={handleDialogClose}>\n <Clear />\n </div>\n </div>\n </div>\n <div className=\"box-list\">\n {!isCollapsed &&\n files.map((file: any, index: number) => (\n <div className=\"bottom-section\">\n <div className=\"doc-icon\">{renderFileIcon(file?.file)}</div>\n <div className=\"file-detail\">\n <div className=\"file-name\">\n <div className=\"file-text\">\n {file?.file?.name}\n {index}\n </div>\n </div>\n <div className=\"file-status\">\n {file?.status !== \"canceled\" ? (\n <>\n {file.uploadProgress === 0 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.empty}\n ></Avatar>\n <Avatar\n size={20}\n onClick={() => removeFile(index)}\n src={images.upload.close}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n {file?.uploadProgress > 0 &&\n file?.uploadProgress < 100 && (\n <CircularProgress\n color=\"success\"\n variant=\"determinate\"\n value={file?.uploadProgress}\n />\n )}\n {file?.uploadProgress === 100 && (\n <div className=\"avatar-container\">\n <Avatar\n size={20}\n className=\"avatar\"\n src={images.upload.tick}\n ></Avatar>\n <Avatar\n size={20}\n src={images.upload.folder}\n className=\"close-icon\"\n ></Avatar>\n </div>\n )}\n </>\n ) : (\n <Typography type=\"s4\" className=\"canceled-text\">\n Upload Canceled\n </Typography>\n )}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {isConfirmDialogOpen && <FileConfirmationDialog title={selectedFileTitle} open={isConfirmDialogOpen} onClose={onCloseConfirmPopup} onReplace={onReplace} onKeepBoth={onKeepBoth} isFile={true} />}\n\n <Toast\n open={Boolean(toast)}\n type={toast?.type}\n message={toast?.message}\n handleClose={() => setToast(null)}\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\n />\n </>\n );\n};\n\nexport { Upload };\nexport default Upload;\n","import { useEffect, useState } from \"react\";\nimport List from \"@mui/material/List\";\nimport ListItem from \"@mui/material/ListItem\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport \"./user-dropdown.scss\";\nimport Checkbox from \"../checkbox/checkbox\";\n// import Toggle from \"../toggle/toggle\";\nimport Typography from \"../typography/typography\";\n// import FormControlLabel from \"@mui/material/FormControlLabel\";\n\ninterface UserDropdownProps {\n value: {\n isRoleVisible: boolean;\n selectedUsers: number[];\n };\n data: any;\n onToggleChange: () => void;\n onCheckboxChange: (values: number[]) => void;\n}\n\nexport const UserDropdown = (props: UserDropdownProps) => {\n const { value, data, onCheckboxChange, ...rest } = props;\n const { isRoleVisible, selectedUsers } = value;\n const [checked, setChecked] = useState(selectedUsers);\n const [dropdownData, setDropdownData] = useState([]);\n\n // const handleToggle = () => {\n // onToggleChange();\n // setDropdownData([]);\n // };\n\n const handleCheckbox = (value: number, item: any) => () => {\n const currentIndex = checked.findIndex(\n (user: any) => (isRoleVisible ? user.id : user.id) === value,\n );\n const newChecked = [...checked];\n\n if (currentIndex === -1) {\n newChecked.push(item);\n } else {\n newChecked.splice(currentIndex, 1);\n }\n\n setChecked(newChecked);\n onCheckboxChange(newChecked);\n };\n\n useEffect(() => {\n if (isRoleVisible) {\n setDropdownData(data?.departments ?? []);\n } else {\n setDropdownData(data?.users ?? []);\n }\n // eslint-disable-next-line\n }, [isRoleVisible, data]);\n\n return (\n <div className=\"SwitchList\" {...rest}>\n \n <List>\n {dropdownData &&\n dropdownData?.map((item: any) => {\n const labelId = `checkbox-list-secondary-label-${item.id}`;\n\n return (\n <ListItem key={item.id} sx={{cursor:'pointer'}} onClick={handleCheckbox(\n isRoleVisible ? item.id : item.id,\n item, // Pass the entire item to the handleCheckbox function\n )}>\n <ListItemText id={labelId}>\n <Typography\n dangerouslySetInnerHTML={{\n __html: `${\n isRoleVisible\n ? item?.name\n : `${item?.first_name} ${item?.last_name}`\n } <span>${\n isRoleVisible\n ? item.count + \" Users\"\n : item?.department?.name\n }</span>`,\n }}\n />\n </ListItemText>\n <div className=\"list-secondary-content\">\n <Checkbox\n edge=\"end\"\n \n checked={checked.some(\n (user: any) =>\n (isRoleVisible ? user.id : user.id) ===\n (isRoleVisible ? item.id : item.id),\n )}\n inputProps={{ \"aria-labelledby\": labelId }}\n />\n </div>\n </ListItem>\n );\n })}\n </List>\n </div>\n );\n};\n\nexport default UserDropdown;\n","import { Close } from \"@mui/icons-material\";\nimport { ChipProps } from \"@mui/material\";\nimport Chip from \"../../chip/chip\";\nimport Typography from \"../../typography/typography\";\n\ninterface ChipOrPlaceholderProps {\n data: string[];\n placeholder: string;\n onDelete?: () => void;\n chipProps?: Omit<ChipProps, \"label\">;\n}\n\nconst ChipOrPlaceholder: React.FC<ChipOrPlaceholderProps> = ({\n data,\n placeholder,\n onDelete,\n chipProps,\n}) => (\n <>\n {data.length ? (\n <Chip\n variant=\"outlined\"\n type=\"normal\"\n label={`${data.length} Selected`}\n deleteIcon={<Close fontSize=\"large\" />}\n onDelete={onDelete}\n onMouseDown={(event) => event.stopPropagation()}\n {...chipProps}\n />\n ) : (\n <Typography color=\"inherit\" type=\"s3\">\n {placeholder}\n </Typography>\n )}\n </>\n);\n\nexport default ChipOrPlaceholder;\n","import { Control, Controller, FieldValue } from \"react-hook-form\";\nimport { Box, FormHelperText, MenuItem, SelectProps } from \"@mui/material\";\n\nimport Select from '../select';\nimport Checkbox from '../../checkbox/checkbox';\nimport Typography from '../../typography/typography';\nimport Chip from '../../chip/chip';\nimport MoreIcon from '../../icons/more';\nimport { MenuItemProps } from '@mui/material';\nimport { ReactElement } from 'react';\nimport ChipOrPlaceholder from './chip-or-placeholder';\nimport './controller-select.scss';\n\ninterface IControllerSelect {\n name: string;\n label: string;\n options: any;\n placeholder: string;\n formControl: Control<FieldValue<any>, any>;\n fieldArrayName?: string;\n position?: string;\n required?: boolean;\n size?: SelectProps[\"size\"];\n multiple?: boolean;\n disabled?: boolean;\n searchPlaceholder?: string;\n handleSearch?: () => void;\n classes?: string;\n with_checkboxes?: boolean;\n onChipRemove?: () => void;\n}\n\nexport interface IOption {\n\ttext: string;\n\tvalue: string | number;\n\tisGroup?: boolean;\n\tparent?: string;\n\toptions?: { text: string; value: string }[];\n}\n\ninterface IMenuItems extends MenuItemProps {\n\toptions: IOption[];\n\tmultiple: boolean;\n\tplaceholder: string;\n\twith_checkboxes: boolean;\n onChange: (value: string[]) => void\n\tvalues: string | string[];\n}\n\nconst SelectedItems = ({\n\tdata,\n\toptions\n}: {\n\tdata: string[];\n\toptions: IOption[];\n}) => {\n\tconst displayTitle = data.map(\n\t\t(selectedItem) =>\n\t\t\toptions.find((option: any) => option.value === selectedItem)?.text ||\n\t\t\tselectedItem\n\t);\n\n\treturn (\n\t\t<Typography\n\t\t\ttype='s4'\n\t\t\tcolor='inherit'\n\t\t\tsx={{ display: 'flex', gap: 1, alignItems: 'center', mt: 0.5 }}>\n\t\t\t{displayTitle.slice(0.4).join(', ')}\n\t\t\t{data.length > 4 && (\n\t\t\t\t<Chip variant='outlined' type='normal' label={<MoreIcon />} />\n\t\t\t)}\n\t\t</Typography>\n\t);\n};\n\nconst generateMenuItems = ({\n\toptions,\n\tmultiple,\n\tplaceholder,\n\twith_checkboxes,\n onChange,\n\tvalues\n}: IMenuItems) => {\n\tconst items: ReactElement[] = [];\n\tif (!multiple) {\n\t\titems.push(\n\t\t\t<MenuItem disabled value=''>\n\t\t\t\t<em>{placeholder}</em>\n\t\t\t</MenuItem>\n\t\t);\n\t}\n\n const handleParentChange = (parentValue: string, childOptions: IOption[]) => {\n const childValues = childOptions.map((child) => child.value);\n\n const isParentSelected = values.includes(parentValue);\n const updatedValues = isParentSelected\n ? values.filter((value) => value !== parentValue && !childValues.includes(value))\n : [...values, parentValue, ...childValues];\n\n onChange(updatedValues);\n };\n\n\toptions.forEach((option) => {\n\t\titems.push(\n\t\t\t<MenuItem\n\t\t\t\tvalue={option.value}\n\t\t\t\tclassName={option?.isGroup ? 'select--MenuItemHeader' : ''}>\n\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t// <Checkbox checked={values?.indexOf((option.value)) > -1} />\n <Checkbox checked={values?.indexOf((option.value)) > -1}\n onChange={() => handleParentChange(option.value, option.options || [])}\n />\n\t\t\t\t\t)}\n\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t{option.text}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</MenuItem>\n\t\t);\n\t\tif (option?.isGroup && Array.isArray(option?.options)) {\n\t\t\toption.options.forEach((opt) => {\n\t\t\t\titems.push(\n\t\t\t\t\t<MenuItem value={opt.value} sx={{ pl: 5 }}>\n\t\t\t\t\t\t<Box sx={{ display: 'flex', gap: 1 }}>\n\t\t\t\t\t\t\t{multiple && with_checkboxes && (\n\t\t\t\t\t\t\t\t<Checkbox checked={values?.indexOf(opt.value) > -1} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{opt.text}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t});\n\n\treturn items;\n};\n\nconst ControllerSelect: React.FC<IControllerSelect> = ({\n name,\n fieldArrayName,\n options,\n label,\n placeholder,\n formControl,\n position,\n required,\n size = \"small\",\n multiple,\n disabled,\n searchPlaceholder,\n handleSearch,\n classes,\n with_checkboxes,\n onChipRemove,\n}) => {\n return (\n <Controller\n control={formControl}\n name={`${fieldArrayName}.${name}`}\n render={({ field, fieldState: { error } }) => (\n <>\n <Select\n fullWidth\n name={name}\n dataPosition={position}\n dataName={`${fieldArrayName}.${name}`}\n placeholder={placeholder}\n label={label}\n value={field.value || (multiple ? [] : \"\")}\n defaultValue=\"\"\n onChange={(e:any)=>(multiple&&e.target?.value.filter((i:any)=>i)?.length>0||!multiple&&(e.target?.value))?field.onChange(e.target.value):field.onChange(\"\")}\n required={Boolean(required)}\n size={size}\n multiple={Boolean(multiple)}\n disabled={Boolean(disabled)}\n searchPlaceholder={searchPlaceholder}\n handleSearch={handleSearch}\n className={classes}\n variant=\"outlined\"\n error={Boolean(error)}\n renderValue={(selected: string | string[]) => (\n <>\n {Array.isArray(selected) ? (\n <ChipOrPlaceholder\n data={selected}\n placeholder={placeholder}\n onDelete={onChipRemove}\n />\n ) : (\n selected || placeholder\n )}\n </>\n )}\n >\n {generateMenuItems({\n options,\n multiple: Boolean(multiple),\n placeholder: placeholder,\n values: field.value,\n with_checkboxes: Boolean(with_checkboxes),\n onChange: field.onChange\n })}\n </Select>\n {error &&\n <FormHelperText error>{error.message}</FormHelperText>\n }\n {multiple && Array.isArray(field?.value) && (\n <SelectedItems data={field.value} options={options} />\n )}\n </>\n )}\n />\n );\n};\n\nexport default ControllerSelect;\n","import { Typography } from \"../../components\";\nimport { Box } from \"@mui/material\";\n\nconst LabelValue = ({\n key,\n label,\n children\n}: {\n key: string;\n label: string;\n children: React.ReactNode;\n}) => {\n return (\n <Box key={key} gap={1} flexDirection=\"column\" display=\"flex\">\n <Typography type=\"s3\" weight=\"bold\" color=\"theme.secondary.1000\">{label}</Typography>\n {children}\n </Box>\n )\n}\n\nexport { LabelValue };\nexport default LabelValue","import React, { useState, useMemo, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddIcon from '@mui/icons-material/Add';\n\nimport { MaterialTable, ActionBar, Fallback, Footer, Button, ConfirmModal as ConfirmPopUp } from '../../components';\nimport { viewTypes } from '../../constants';\n\nimport { IListingComponentProps, IListingState } from './types'\nimport logo from '../../assets/images';\n\nimport './listing.scss';\nimport { useDataFetcher, apiHelper } from '../../hooks';\nimport { useDispatch } from 'react-redux';\nimport { usePages } from '../../hooks';\nimport { useAppSelector } from '../../redux';\nimport { enqueueSnackbar } from 'notistack';\n\nconst ListingComponent: React.FC<IListingComponentProps> = ({\n title,\n tableColumns,\n columnOrder = ['mrt-row-select'],\n rowActionMenu,\n destructiveActionMenu,\n handleAddButton,\n searchText,\n handleSearch,\n disabledViews = ['Kanban', 'Calendar', 'Gantt'],\n fields,\n selectedIds = [],\n pageName,\n importModuleName,\n showAddButton = true,\n actionButtons,\n paginationResource,\n enablePages = false,\n GridComponent,\n onSelectRow,\n onColumnOrdering,\n onColumnVisibility,\n onSortingChange,\n fallbackIcon,\n className = '',\n onDeleteConfirm,\n deleteTitle,\n deleteDescription,\n fetchApi,\n resetState,\n setPaginationModel,\n deleteApi,\n storeName,\n isUseFields,\n customeFilter,\n customFields,\n isLoading: loadinState,\n customRows = [],\n ...rest\n}) => {\n const { t } = useTranslation();\n\n //dispatch\n const dispatch = useDispatch()\n\n //Page Context\n const { activePage, updatePageInfo } = usePages();\n //Store \n const {\n paginationModel,\n rows,\n isLoading,\n } = useAppSelector((store) => store?.[storeName]);\n\n\n const { pageNo, limit: pLimit, totalCount } = paginationModel;\n const limit = activePage.page_size || pLimit;\n const skip = limit * (pageNo - 1);\n\n\n // Local state\n const [listingState, setListingState] = useState<IListingState>({\n selectedRows: selectedIds,\n itemToDelete: null,\n isDeleting: false\n });\n\n // Calculate pagination values\n const total = Math.ceil(totalCount / limit);\n\n // Memoized table data\n const tableRows = useMemo(() => customRows?.length ? customRows : rows, [rows, customRows]);\n\n // Handle row selection\n const handleRowSelection = (selectedRows: any[]) => {\n const selectedRowIds = selectedRows.map((row) => row.original.id);\n setListingState(prev => ({ ...prev, selectedRows: selectedRowIds }));\n onSelectRow?.(selectedRows);\n };\n\n // Handle pagination changes\n const handlePaginationChange = (model: any) => {\n if (activePage.page_size !== model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n handlePaginationModel(model);\n };\n\n // Handle search\n const handleSearchChange = (search: string) => {\n updatePageInfo({ search });\n handlePaginationModel({ pageNo: 1 });\n handleSearch?.(search);\n };\n\n // Handle delete confirmation\n const handleDeleteClick = (item: any) => {\n setListingState(prev => ({ ...prev, itemToDelete: item }));\n };\n\n const handleDeleteConfirm = async () => {\n if (!listingState.itemToDelete) return;\n\n setListingState(prev => ({ ...prev, isDeleting: true }));\n\n try {\n onDeleteConfirm ? await onDeleteConfirm(listingState.itemToDelete) : await deleteRecord(listingState.itemToDelete);\n setListingState(prev => ({ ...prev, itemToDelete: null, isDeleting: false }));\n } catch (error) {\n setListingState(prev => ({ ...prev, isDeleting: false }));\n }\n };\n\n const handleDeleteCancel = () => {\n setListingState(prev => ({ ...prev, itemToDelete: null }));\n };\n\n // Enhance destructive actions to include delete confirmation\n const enhancedDestructiveActions = useMemo(() => {\n if (!destructiveActionMenu) return undefined;\n\n return destructiveActionMenu.map(action => ({\n ...action,\n handleAction: action.label.toLowerCase().includes('delete')\n ? handleDeleteClick\n : action.handleAction\n }));\n }, [destructiveActionMenu]);\n\n //Handle pagination model\n const handlePaginationModel = (model: IPaginationModel) => {\n if (activePage.page_size != model?.limit) {\n updatePageInfo({ page_size: model.limit });\n }\n dispatch(setPaginationModel(model));\n }\n\n //Delete\n const deleteRecord = async (requestToDelete: any) => {\n const response: any = await dispatch(deleteApi(String(requestToDelete.id)));\n apiHelper(response, () => {\n enqueueSnackbar(\n ` ${title}: ${requestToDelete?.id} ${t('common.msg.deleted')}`,\n )\n getData()\n })\n };\n\n\n\n\n //clean up\n const cleanUp = useCallback(() => {\n dispatch(resetState())\n }, [dispatch, resetState]);\n\n // Data fetching\n const getData = useDataFetcher(\n tableColumns?.length ? tableColumns : activePage,\n { skip, limit },\n fetchApi,\n customeFilter,\n [],\n true,\n customFields\n\n )\n\n useEffect(() => {\n getData()\n }, [getData])\n\n useEffect(() => {\n return cleanUp;\n }, [cleanUp]);\n\n useEffect(() => {\n if (activePage?.views?.length) return;\n updatePageInfo({\n active_view: viewTypes.TABLE,\n views: [\n {\n label: 'Table',\n position: 0\n }\n ]\n })\n }, [activePage?.views])\n\n return (\n <section className={`listing-component ${className}`}>\n <ActionBar\n title={title}\n data={activePage?.views || [\n {\n label: 'Table',\n position: 0\n }\n ]}\n setData={(views) => updatePageInfo({ views })}\n active={activePage.active_view}\n setActive={(tab) => updatePageInfo({ active_view: tab })}\n handleAddButton={handleAddButton}\n searchText={searchText || activePage.search || ''}\n handleSearch={handleSearchChange}\n disabledViews={disabledViews}\n fields={fields}\n isUseFields={isUseFields}\n selectedIds={listingState.selectedRows}\n pageName={pageName}\n importModuleName={importModuleName}\n button={showAddButton}\n actionBtn={actionButtons}\n {...rest}\n />\n\n\n <>\n {activePage?.active_view === viewTypes.TABLE && (\n <MaterialTable\n rows={tableRows || []}\n columns={tableColumns}\n paginationModel={paginationModel}\n totalPages={total}\n columnOrder={[...columnOrder, ...activePage.column_order]}\n states={{ isLoading: loadinState || isLoading }}\n onSortingChange={onSortingChange ? (sort) => {\n updatePageInfo({ sort });\n onSortingChange(sort);\n } : undefined}\n enableColumnDragging={false}\n enableEditing={false}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n isResetRow={false}\n onSelectRow={handleRowSelection}\n handleColumnOrdering={onColumnOrdering ? (colOrder) => {\n const newOrder = colOrder.slice(1);\n updatePageInfo({ column_order: newOrder });\n onColumnOrdering(newOrder);\n } : undefined}\n onColumnVisibility={onColumnVisibility ? (columns) => {\n updatePageInfo({ visible_columns: columns });\n onColumnVisibility(columns);\n } : undefined}\n />\n )}\n\n {activePage?.active_view === viewTypes.GRID && GridComponent && (\n <GridComponent\n data={tableRows}\n rowActionMenu={rowActionMenu}\n destructiveActionMenu={enhancedDestructiveActions}\n />\n )}\n\n {!activePage?.active_view && !isLoading && (\n <Fallback\n heading={title}\n icon={fallbackIcon || <img src={logo.shippmentFallback} alt=\"fallback\" />}\n >\n {showAddButton && handleAddButton && (\n <Button\n variant='contained'\n startIcon={<AddIcon />}\n onClick={handleAddButton}\n >\n {`${t('common.add')} ${t('common.new')}`}\n </Button>\n )}\n </Fallback>\n )}\n\n <Footer\n total={total}\n paginationModel={{\n ...paginationModel,\n limit: activePage.page_size\n }}\n handlePaginationModel={handlePaginationChange}\n resource={paginationResource}\n enablePages={enablePages}\n />\n\n <ConfirmPopUp\n open={Boolean(listingState.itemToDelete)}\n onClose={handleDeleteCancel}\n onConfirm={handleDeleteConfirm}\n loading={listingState.isDeleting}\n title={deleteTitle || `${t('common.delete')} ${title}`}\n description={\n deleteDescription\n ? deleteDescription(listingState.itemToDelete)\n : `${t('common.deleteMsg')} ${title}: ${listingState.itemToDelete?.id || listingState.itemToDelete?.name || ''} ?`\n }\n />\n </>\n </section>\n );\n};\n\nexport default ListingComponent;\n","import { Operator, type Field, type RuleType } from \"react-querybuilder\";\n\nexport const validator = (r: RuleType) => !!r.value;\n\nconst defaultOperators: Operator[] = [\n { name: \"null\", label: \"is null\" },\n { name: \"notNull\", label: \"is not null\" },\n];\n\nconst textOperators: Operator[] = [\n { name: \"contains\", label: \"contains\" },\n { name: \"beginsWith\", label: \"begins with\" },\n { name: \"endsWith\", label: \"ends with\" },\n { name: \"doesNotContain\", label: \"does not contain\" },\n { name: \"doesNotBeginWith\", label: \"does not begin with\" },\n { name: \"doesNotEndWith\", label: \"does not end with\" },\n ...defaultOperators,\n];\n\nconst numberOperators: Operator[] = [\n { name: \"=\", label: \"equal to\" },\n { name: \"<\", label: \"less than\" },\n { name: \"<=\", label: \"less than or equal to\" },\n { name: \">\", label: \"greater than\" },\n { name: \">=\", label: \"greater than or equal to\" },\n ...defaultOperators,\n];\n\nconst selectOperators: Operator[] = [\n { name: \"in\", label: \"in\" },\n { name: \"notIn\", label: \"not in\" },\n ...defaultOperators,\n];\n\nconst dateOperators: Operator[] = [\n { name: \"=\", label: \"on\" },\n { name: \"!=\", label: \"not on\" },\n { name: \"<\", label: \"before\" },\n { name: \"<=\", label: \"on or before\" },\n { name: \">\", label: \"after\" },\n { name: \">=\", label: \"on or after\" },\n ...defaultOperators,\n];\n\nexport const fields: Field[] = [\n {\n name: \"Select\",\n label: \"Select\",\n valueEditorType: \"select\",\n operators: selectOperators,\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n ],\n },\n {\n name: \"role\",\n label: \"Role\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"status\",\n label: \"Status\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"enable\",\n label: \"Enable\",\n },\n {\n name: \"disabled\",\n label: \"Disabled\",\n },\n ],\n },\n {\n name: \"roleType\",\n label: \"Role Type\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"admin\",\n label: \"Admin\",\n },\n {\n name: \"manager\",\n label: \"Manager\",\n },\n {\n name: \"executive\",\n label: \"Executive\",\n },\n {\n name: \"support\",\n label: \"Support\",\n },\n ],\n },\n {\n name: \"roleLevel\",\n label: \"Role level\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n {\n name: \"dateCreated\",\n label: \"Date Created\",\n operators: dateOperators,\n datatype: \"date\",\n inputType: \"date\",\n },\n {\n name: \"companyName\",\n label: \"Company Name\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"location\",\n label: \"Location\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"email\",\n label: \"Email\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n];\n\nexport const dynamicFields: Field[] = [\n {\n name: \"document\",\n label: \"Document\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"filesize\",\n label: \"File size\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n // {\n // name: \"dateCreated\",\n // label: \"Date Created\",\n // operators: dateOperators,\n // datatype: \"date\",\n // inputType: \"date\",\n // },\n {\n name: \"owner\",\n label: \"Owner\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n }\n];\n\n","import React from 'react';\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst Loader = styled(CircularProgress)(({ theme }) => ({\n\tcolor: theme.palette?.theme.primary[500]\n}));\n\nconst LoaderContainer = styled(Box)(() => ({\n\tposition: 'fixed',\n\tdisplay: 'flex',\n\twidth: '100%',\n\theight: '100%',\n\tjustifyContent: 'center',\n\talignItems: 'center',\n\tbackgroundColor: '#ffffff96',\n\tzIndex: 1,\n\tleft: 0,\n\ttop: 0\n}));\n\nconst FormLoader = (props: CircularProgressProps) => {\n\treturn (\n\t\t<LoaderContainer>\n\t\t\t<Loader size={50} {...props} />\n\t\t</LoaderContainer>\n\t);\n};\n\nexport { FormLoader };\nexport default FormLoader;\n","import React from \"react\"\nimport { Box, CircularProgress, CircularProgressProps } from '@mui/material';\nimport { styled } from '@mui/material/styles';\n\nconst Loader = styled(CircularProgress)(({theme})=>({\n color: theme.palette?.theme.primary[500]\n}))\n\nconst PageLoader = (props:CircularProgressProps) => {\n\treturn <Box position=\"absolute\" left='50%' top=\"50%\">\n <Loader size={50} {...props}/>\n </Box>\n};\n\nexport { PageLoader };\nexport default PageLoader;\n","import { Box } from '@mui/material';\nimport * as d3 from 'd3';\nimport { useEffect, useRef, useState } from 'react';\n\ninterface IChartProps {\n data: { name: string, values: { month: string, value: number }[], isSmooth?: boolean }[],\n height: number,\n yAxisLabelType?: 'inPercent' | 'inValue' | 'custom';\n customLabelFormatter?: (value: number) => string;\n currency?: string;\n colors?: string[];\n customLegend: React.ReactNode\n}\n\nconst formatNumber = (num: number, symbol: string, labelType: string) => {\n if (labelType === 'inPercent') {\n return `${d3.format(\".0%\")(num / 100)}`;\n } else if (labelType === 'inValue') {\n return `${symbol || ''} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n }\n return num.toString();\n};\n\nconst AreaLineChart = ({ data, height = 400, customLabelFormatter, yAxisLabelType = 'inValue', currency, colors, customLegend }: IChartProps) => {\n const svgRef = useRef<SVGSVGElement | null>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n const [tooltipData, setTooltipData] = useState<any>(null);\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; // Wait for the container width\n\n const margin = { top: 20, right: 30, bottom: 30, left: 40 };\n const width = containerWidth - margin.left - margin.right;\n const chartHeight = height - margin.top - margin.bottom;\n\n // Clear the SVG\n d3.select(svgRef.current).selectAll('*').remove();\n\n const svg = d3\n .select(svgRef.current)\n .attr('width', containerWidth)\n .attr('height', height)\n .append('g')\n .attr('transform', `translate(${margin.left},${margin.top})`);\n\n // Define scales\n const x = d3\n .scalePoint()\n .domain(data[0]?.values?.map(d => d.month)) // Assuming all datasets share the same x-domain\n .range([0, width]);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, dataset => d3.max(dataset.values, d => d.value))!]) // Max value across all datasets\n .range([chartHeight, 0]);\n\n // Limit x-axis ticks dynamically based on width\n const numTicks = Math.floor(width / 80); // Adjust the factor (80) based on chart width\n const xAxis = d3.axisBottom(x).ticks(numTicks);\n\n const xAxisGroup = svg.append('g')\n .attr('transform', `translate(0,${chartHeight})`)\n .call(xAxis);\n\n xAxisGroup.selectAll(\"text\")\n .attr(\"transform\", \"translate(0, 10)\")\n .attr('color', '#8E8E93')\n .style(\"text-anchor\", \"middle\");\n\n // Y Axis\n const yAxis = svg.append('g')\n yAxis.append('g').attr('color', '#8E8E93').attr(\"transform\", `translate(-10,0)`)\n .call(d3.axisLeft(y).tickSize(-width).tickFormat((d: any) =>\n customLabelFormatter\n ? customLabelFormatter(d)\n : formatNumber(d, currency, yAxisLabelType)\n ).tickSizeOuter(0) as any)\n .selectAll('line')\n .attr('stroke-dasharray', '3,3')\n .attr('stroke', '#D3D3D4');\n\n xAxisGroup.selectAll(\".tick line\").remove();\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n xAxisGroup.select(\".domain\").attr(\"stroke\", \"none\");\n\n // Define color scale for lines\n // const color = d3.scaleOrdinal(d3.schemeCategory10);\n\n // Line and area generators\n const line = (isSmooth: boolean) => d3.line<any>()\n .x(d => x(d.month)!)\n .y(d => y(d.value))\n .curve(isSmooth ? d3.curveMonotoneX : d3.curveLinear); // Conditionally smooth the line\n\n const area = d3.area<any>()\n .x(d => x(d.month)!)\n .y0(chartHeight)\n .y1(d => y(d.value));\n\n // Iterate over each dataset to create lines and areas\n data.forEach((dataset, i) => {\n // const datasetColor = color(i.toString());\n\n // Create gradient for each area\n const gradient = svg.append('defs')\n .append('linearGradient')\n .attr('id', `area-gradient-${i}`)\n .attr('x1', '0%')\n .attr('x2', '0%')\n .attr('y1', '0%')\n .attr('y2', '100%');\n\n gradient.append('stop')\n .attr('offset', '0%')\n .attr('stop-color', colors[i])\n .attr('stop-opacity', 0.4);\n\n gradient.append('stop')\n .attr('offset', '100%')\n .attr('stop-color', colors[i])\n .attr('stop-opacity', 0.1);\n\n // Append the area with gradient\n svg.append('path')\n .datum(dataset.values)\n .attr('fill', `url(#area-gradient-${i})`)\n .attr('d', area);\n\n // Append the line with smoothness condition\n svg.append('path')\n .datum(dataset.values)\n .attr('fill', 'none')\n .attr('stroke', colors[i])\n .attr('stroke-width', 2)\n .attr('d', line(dataset.isSmooth || false)); // Use smoothness from the dataset\n\n // Append circles for hover effect\n {\n dataset?.showCircle &&\n svg.selectAll(`circle-${i}`)\n .data(dataset.values)\n .enter()\n .append('circle')\n .attr('cx', d => x(d.month)!)\n .attr('cy', d => y(d.value))\n .attr('r', 5)\n .attr('fill', colors[i])\n .attr('stroke', '#fff')\n .style('cursor', 'pointer')\n .on('mouseover', function (event, d) {\n setTooltipData({\n x: `${event.pageX + 10}px`,\n y: `${event.pageY - 30}px`,\n content: `${dataset.name}: ${d.value}`\n });\n d3.select(this).transition().attr('r', 7).attr('fill', '#ff4500');\n })\n .on('mouseout', function () {\n setTooltipData(null);\n d3.select(this).transition().attr('r', 5).attr('fill', colors[i]);\n });\n }\n\n });\n\n }, [data, containerWidth, height, customLabelFormatter, yAxisLabelType, currency, colors, customLegend]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <svg ref={svgRef} width=\"100%\" height={height} />\n {\n customLegend &&\n customLegend\n\n }\n </div>\n {tooltipData &&\n <Box sx={{\n position: 'absolute',\n left: tooltipData.x,\n top: tooltipData.y,\n pointerEvents: 'none',\n backgroundColor: '#2EB273',\n zIndex: '99999',\n border: 'none',\n borderRadius: '3px',\n transform: 'translate(-50%, -100%)',\n padding: '2px 6px 2px 6px',\n gap: '10px'\n }}>\n <span style={{ fontSize: '16px', weight: '500', color: '#ffff' }}>\n {tooltipData.content}\n </span>\n </Box>\n }\n </div>\n );\n};\n\nexport { AreaLineChart };\nexport default AreaLineChart;\n","import { Box } from '@mui/material';\nimport Typography from '../typography/typography';\nimport './chartLegend.scss';\ninterface IProps {\n\tlegends: string[];\n\tcolors: string[];\n}\nexport function ChartLegends({ legends, colors }: IProps) {\n\treturn (\n\t\t<Box\n\t\t\tsx={{\n\t\t\t\tdisplay: 'flex',\n\t\t\t\tjustifyContent: 'center',\n\t\t\t\talignContent: 'space-between'\n\t\t\t}}>\n\t\t\t{legends.map((legend, index) => (\n\t\t\t\t<div style={{ marginLeft: '20px', display: 'flex' }}>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName='legends-circle'\n\t\t\t\t\t\tstyle={{ backgroundColor: colors[index] }}></div>\n\t\t\t\t\t<Typography type='s5' sx={{ color: '#656669' }}>\n\t\t\t\t\t\t{legend}\n\t\t\t\t\t</Typography>\n\t\t\t\t</div>\n\t\t\t))}\n\t\t</Box>\n\t);\n}\n\nexport default ChartLegends\n","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface BarChartProps {\n data: DataPoint[];\n numOfLines?: number;\n width?: number;\n height?: number;\n line?: boolean;\n}\n\nconst formatNumber = (num: number) => {\n if (num >= 1e9) return (num / 1e9).toFixed(1) + \"B\";\n if (num >= 1e6) return (num / 1e6).toFixed(1) + \"M\";\n if (num >= 1e3) return (num / 1e3).toFixed(1) + \"K\";\n return num;\n};\n\nconst BarChart: React.FC<BarChartProps> = ({\n data,\n numOfLines = 5,\n width = 500,\n height = 300,\n line = false,\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n const maxValue = useMemo(() => {\n return Math.max(...data.map((d) => d.value));\n }, [data]);\n\n const yAxisMaxValue = useMemo(() => {\n return maxValue * 1.25;\n }, [maxValue]);\n\n const yAxisTicks = useMemo(() => {\n const ticks = [];\n const interval = yAxisMaxValue / numOfLines;\n for (let i = 0; i <= numOfLines; i++) {\n ticks.push(interval * i);\n }\n return ticks;\n }, [yAxisMaxValue, numOfLines]);\n\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = { top: 20, right: 20, bottom: 70, left: 40 };\n const barWidth = width - margin.left - margin.right;\n const barHeight = height - margin.top - margin.bottom;\n\n const mousemove = (event: MouseEvent, d: DataPoint) => {\n let xPosition = event.offsetX + margin.left - 25;\n const yPosition = event.offsetY + margin.top - 40;\n const tooltipWidth = tooltip.node()?.getBoundingClientRect()?.width;\n const rightOffset = tooltipWidth ? xPosition + tooltipWidth : xPosition;\n if (rightOffset > width) {\n xPosition = Math.floor(\n tooltipWidth ? xPosition - tooltipWidth - 20 : xPosition - 20,\n );\n }\n\n const text = `${d.label} - ${d.value}`;\n tooltip\n .attr(\"x\", xPosition)\n .attr(\"y\", yPosition)\n .style(\"opacity\", 9)\n .style(\"height\", text.length >= 16 ? 50 : 35);\n\n tooltipText.html(text);\n };\n\n const mouseleave = () => {\n tooltip.style(\"opacity\", 0);\n };\n\n const x = d3\n .scaleBand()\n .domain(data.map((d) => d.label))\n .range([0, barWidth])\n .padding(0.1);\n\n const y = d3.scaleLinear().domain([0, yAxisMaxValue]).range([barHeight, 0]);\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n if (line) {\n yAxisTicks.slice(1).forEach((tick) => {\n chart\n .append(\"line\")\n .attr(\"class\", \"dotted-line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", y(tick))\n .attr(\"x2\", barWidth)\n .attr(\"y2\", y(tick))\n .style(\"stroke\", \"gray\")\n .style(\"stroke-dasharray\", \"3,3\")\n .style(\"opacity\", 1);\n });\n }\n\n chart\n .selectAll(\".bar\")\n .data(data)\n .enter()\n .append(\"rect\")\n .attr(\"class\", \"bar\")\n //@ts-expect-error not applicable\n .attr(\"x\", (d: any) => x(d.label))\n .attr(\"y\", (d: any) => y(d.value))\n .attr(\"width\", x.bandwidth())\n .attr(\"height\", (d: any) => barHeight - y(d.value))\n .style(\"fill\", \"#357AF6\")\n .style(\"opacity\", \"1\")\n .on(\"mousemove\", mousemove)\n .on(\"mouseleave\", mouseleave);\n\n const xAxis = chart\n .append(\"g\")\n .attr(\"class\", \"x-axis\")\n .attr(\"transform\", `translate(0, ${barHeight})`)\n .call(d3.axisBottom(x) as any);\n\n xAxis.selectAll(\".tick line\").remove();\n\n const yAxis = chart\n .append(\"g\")\n .attr(\"class\", \"y-axis\")\n .call(\n d3\n .axisLeft(y)\n .tickValues(yAxisTicks)\n //@ts-expect-error not applicable\n .tickFormat((d: any) => {\n return formatNumber(d);\n })\n .tickSizeOuter(0) as any,\n );\n\n yAxis.selectAll(\".tick line\").remove();\n\n const tooltip = svg\n .append(\"foreignObject\")\n .attr(\"class\", \"tooltip\")\n .attr(\"width\", 120)\n .attr(\"height\", 20)\n .style(\"opacity\", 0)\n .style(\"position\", \"absolute\")\n .style(\"background-color\", \"white\")\n .style(\"border\", \"none\")\n .style(\"box-shadow\", \"0rem 0rem 0.469rem 0rem rgba(0, 0, 0, 0.15)\")\n .style(\"border-radius\", \"0.313rem\")\n .style(\"padding\", \"0.625rem\")\n .style(\"font-size\", \"0.75rem\");\n\n const tooltipText = tooltip\n .append(\"xhtml:div\")\n .style(\"font-size\", \"0.75rem\")\n .style(\"color\", \"black\");\n }, [data, height, width, line, yAxisMaxValue, yAxisTicks]);\n\n return (\n <>\n <svg ref={svgRef} width={width} height={height}></svg>\n </>\n );\n};\n\nexport { BarChart };\nexport default BarChart;\n","import React, { useRef, useEffect, useMemo, useState } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface BarChartProps {\n data: DataPoint[];\n numOfLines?: number;\n initialWidth?: number;\n height?: any;\n line?: boolean;\n chartBarWidth?: number;\n yAxisLabelType?: 'inPercent' | 'inValue' | 'custom';\n customLabelFormatter?: (value: number) => string;\n currency: string\n}\n\nconst formatNumber = (num: number, symbol: string, labelType: string) => {\n if (labelType === 'inPercent') {\n return `${d3.format(\".0%\")(num / 100)}`;\n } else if (labelType === 'inValue') {\n return `${symbol || ''} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n }\n return num.toString();\n};\n\nfunction wrapText(textSelection: any, width: number) {\n textSelection.each(function (this: any) {\n const text = d3.select(this);\n const originalText = text.text();\n \n if (originalText.length <= 8) {\n return;\n }\n \n if (originalText.length > 12) {\n text.text(originalText.substring(0, 10) + '...');\n return;\n }\n \n const words = originalText.split(/\\s+/).reverse();\n let word;\n let line: string[] = [];\n let lineNumber = 0;\n const lineHeight = 1.1; // ems\n const y = text.attr(\"y\");\n const dy = parseFloat(text.attr(\"dy\")) || 0;\n \n let tspan = text\n .text(null)\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"y\", y)\n .attr(\"dy\", `${dy}em`);\n \n while ((word = words.pop())) {\n line.push(word);\n tspan.text(line.join(\" \"));\n if (tspan.node() && tspan.node()!.getComputedTextLength() > width) {\n line.pop();\n tspan.text(line.join(\" \"));\n line = [word];\n tspan = text\n .append(\"tspan\")\n .attr(\"x\", 0)\n .attr(\"y\", y)\n .attr(\"dy\", `${++lineNumber * lineHeight + dy}em`)\n .text(word);\n }\n }\n });\n }\n \nconst BarChart: React.FC<BarChartProps> = ({\n data,\n numOfLines = 5,\n initialWidth = 500,\n height = 400,\n line = false,\n yAxisLabelType = 'inValue',\n currency,\n customLabelFormatter,\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(initialWidth);\n\n const maxValue = useMemo(() => Math.max(...data.map((d) => d.value)), [data]);\n\n const yAxisMaxValue = useMemo(() => maxValue * 1.25, [maxValue]);\n\n const yAxisTicks = useMemo(() => {\n const ticks = [];\n const interval = yAxisMaxValue / numOfLines;\n for (let i = 0; i <= numOfLines; i++) {\n ticks.push(interval * i);\n }\n return ticks;\n }, [yAxisMaxValue, numOfLines]);\n\n\n const needsHorizontalScroll = data.length > 12;\n const minGroupWidth = 120; \n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(data.length * minGroupWidth, containerWidth)\n : containerWidth;\n\n // ResizeObserver to make the chart responsive\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n \n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n useEffect(() => {\n if (containerWidth === 0) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n // Calculate dynamic left margin based on label length (accounting for wrapping)\n // const sampleLabel = customLabelFormatter \n // ? customLabelFormatter(yAxisMaxValue)\n // : formatNumber(yAxisMaxValue, currency, yAxisLabelType);\n const maxLabelWidth = 80; // Maximum width for wrapped labels\n const dynamicLeftMargin = Math.max(60, maxLabelWidth + 30);\n \n const margin = { top: 20, right: 20, bottom: 25, left: dynamicLeftMargin };\n const barWidth = calculatedChartWidth - margin.left - margin.right;\n const barHeight = maxValue ? height - margin.top - margin.bottom : 0;\n\n const x = d3\n .scaleBand()\n .domain(data.map((d) => d.label))\n .range([0, barWidth])\n .padding(0.5);\n\n const y = d3.scaleLinear().domain([0, yAxisMaxValue]).range([barHeight, 0]);\n\n \n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${maxValue?margin.top:height-50})`);\n \n if (line) {\n yAxisTicks.slice(1).forEach((tick) => {\n chart\n .append(\"line\")\n .attr(\"class\", \"dotted-line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", y(tick))\n .attr(\"x2\", barWidth)\n .attr(\"y2\", y(tick))\n .style(\"stroke\", \"#D3D3D4\")\n .style(\"stroke-dasharray\", \"3,3\")\n .style(\"opacity\", 1);\n });\n }\n\n chart\n .selectAll(\".bar\")\n .data(data)\n .enter()\n .append(\"rect\")\n .attr(\"rx\", 5)\n .attr(\"ry\", 5)\n .attr(\"class\", \"bar\")\n .attr(\"x\", (d: any) => x(d.label))\n .attr(\"y\", (d: any) => y(d.value))\n .attr(\"width\", x.bandwidth())\n .attr(\"height\", (d: any) => barHeight - y(d.value))\n .style(\"fill\", (d: any) => d.color);\n\n const xAxis = chart\n .append(\"g\")\n .attr(\"class\", \"x-axis\")\n .attr(\"transform\", `translate(0, ${barHeight})`)\n .call(d3.axisTop(x).tickPadding(10) as any)\n .call(d3.axisBottom(x).tickPadding(5) as any)\n // .call(d3.axisLeft(x).tickPadding(5) as any)\n\n xAxis.selectAll(\".tick line\").remove();\n xAxis.selectAll(\".tick text\").call(wrapText,80); \n\n // Calculate optimal number of ticks to prevent overlap\n const availableHeight = barHeight;\n const minTickSpacing = 30; // Minimum pixels between ticks\n const maxOptimalTicks = Math.floor(availableHeight / minTickSpacing);\n const optimalNumTicks = Math.min(numOfLines, maxOptimalTicks, 8);\n \n // Generate optimal tick values\n const optimalTicks = [];\n const optimalInterval = yAxisMaxValue / optimalNumTicks;\n for (let i = 0; i <= optimalNumTicks; i++) {\n optimalTicks.push(optimalInterval * i);\n }\n\n const yAxis = chart\n .append(\"g\")\n .attr(\"class\", \"y-axis\")\n .call(\n d3.axisLeft(y)\n .tickValues(optimalTicks)\n .tickFormat((d: any) =>\n customLabelFormatter\n ? customLabelFormatter(d)\n : formatNumber(d, currency, yAxisLabelType)\n )\n .tickSizeOuter(0)\n .tickPadding(8) as any, // Add padding between ticks and labels\n );\n\n yAxis.selectAll(\".tick line\").remove();\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n xAxis.select(\".domain\").attr(\"stroke\", \"none\");\n \n // Style y-axis labels for better readability and apply text wrapping\n yAxis.selectAll(\".tick text\")\n .style(\"font-size\", \"11px\")\n .style(\"fill\", \"#666\")\n .style(\"font-family\", \"Inter, system-ui, Avenir, Helvetica, Arial, sans-serif\")\n .style(\"text-anchor\", \"end\")\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data, containerWidth, height, line, yAxisMaxValue, yAxisTicks, currency, yAxisLabelType, customLabelFormatter, calculatedChartWidth]);\n\n return (\n <div ref={wrapperRef} \n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}>\n <svg ref={svgRef} width={calculatedChartWidth} height={height} viewBox={`0 0 ${calculatedChartWidth} ${height}`} />\n </div>\n );\n};\n\nexport { BarChart };\nexport default BarChart;\n","import React, { useRef, useEffect, useState } from 'react';\nimport * as d3 from 'd3';\nimport { Box, /* List, ListItem */ } from '@mui/material';\nimport Typography from '../../typography/typography';\nimport './barLineChart.scss';\n\ninterface DataPoint {\n [key: string]: string | number;\n}\n\ninterface ChartField {\n field: string;\n color: string;\n label: string;\n}\n\nexport interface IBarLineChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n margin?: { top: number; right: number; bottom: number; left: number };\n bars: ChartField[];\n lines: ChartField[];\n line?: boolean;\n showGrid?: boolean;\n barColors?: any[];\n lineColors?: any[];\n}\n\nconst BarLineChart: React.FC<IBarLineChartProps> = ({\n data,\n height = 400,\n margin = { top: 20, right: 30, bottom: 30, left: 50 },\n bars,\n lines,\n line = true,\n showGrid = true,\n barColors,\n lineColors\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [tooltip, setTooltip] = useState<{ x: number; y: number; content: DataPoint } | null>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n const formatNumber = (num: number) => d3.format('.2s')(num).replace('k', 'K');\n\n const needsHorizontalScroll = data.length > bars.length;\n const minBarWidth = 60\n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(data.length * minBarWidth, containerWidth)\n : containerWidth;\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, [])\n \n useEffect(() => {\n if (containerWidth === 0) return;\n const yMax = d3.max(data, d => {\n return Math.max(\n ...bars.map(bar => d[bar.field] as number),\n ...lines.map(line => d[line.field] as number)\n );\n }) ?? 0;\n const yMin = d3.min(data, d => {\n return Math.min(\n ...bars.map(bar => d[bar.field] as number),\n ...lines.map(line => d[line.field] as number)\n );\n }) ?? 0;\n\n const svg = d3.select(svgRef.current);\n const innerWidth = calculatedChartWidth - margin.left - margin.right;\n const innerHeight = yMax || yMin ? height - margin.top - margin.bottom : 0;\n\n const x = d3.scaleBand()\n .domain(data.map(d => d.month as string))\n .range([0, innerWidth])\n .padding(0.3);\n\n const y = d3.scaleLinear()\n .domain([yMin, yMax])\n .nice()\n .range([innerHeight, 0]);\n\n svg.selectAll('*').remove();\n\n const g = svg.append('g')\n .attr('transform', `translate(${margin.left},${margin.top})`);\n\n // Y axis\n const yAxis = g.append('g')\n .call(d3.axisLeft(y).tickFormat(formatNumber))\n .call(g => g.select('.domain').remove());\n yAxis.select(\".domain\").attr(\"stroke\", \"none\")\n \n // X axis\n const xAxis = g.append('g')\n .attr('transform', `translate(0,${innerHeight})`)\n .call(d3.axisBottom(x))\n .selectAll('.tick text')\n .attr('text-anchor', 'middle');\n xAxis.select(\".domain\").attr(\"stroke\", \"none\")\n \n // Render grid lines if applicable\n if (showGrid) {\n g.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', innerWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '8,8') // Dotted line\n .style('stroke-width', 1);\n }\n \n // Render grid lines if applicable\n if (line) {\n g.selectAll('.grid-line-2')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line-2')\n .attr('x1', 0)\n .attr('x2', innerWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '8,8') // Dotted line\n .style('stroke-width', 1)\n }\n\n // Draw bars for bar chart\n bars.forEach((bar, i) => {\n g.selectAll(`.bar-${bar.field}`)\n .data(data)\n .enter()\n .append('rect')\n .attr('class', `bar bar-${bar.field}`)\n .attr('x', d => x(d.month as string) ?? 0)\n .attr('y', d => d[bar.field] >= 0 ? y(d[bar.field]) : y(0)) // Positive bars above y(0), negative bars below\n .attr(\"rx\", 5)\n .attr(\"ry\", 5)\n .attr('width', x.bandwidth() / bars.length)\n .attr('height', d => {\n return Math.abs(y(d[bar.field]) - y(0)); // Absolute height from y(0)\n })\n .attr('fill', barColors[i])\n .attr('transform', `translate(${(i * x.bandwidth()) / bars.length}, 0)`)\n .on('mouseover', function (event, d) {\n const [xPos, yPos] = d3.pointer(event, svgRef.current);\n const scrollLeft = scrollContainerRef.current?.scrollLeft || 0;\n setTooltip({ \n x: xPos + margin.left - scrollLeft, \n y: yPos + margin.top, \n content: d \n });\n })\n .on('mouseout', () => setTooltip(null));\n });\n \n // Draw lines for line chart\n lines.forEach((line, index) => {\n const lineGenerator = d3.line<DataPoint>()\n .x(d => (x(d.month as string) ?? 0) + x.bandwidth() / 2) // Calculate x position for each data point\n .y(d => y(d[line.field] as number))\n .curve(d3.curveMonotoneX);\n\n g.append('path')\n .datum(data)\n .attr('fill', 'none')\n .attr('stroke', lineColors[index])\n .attr('stroke-width', 2)\n .attr('d', lineGenerator)\n .on('mouseover', function (event) {\n const [xPos] = d3.pointer(event, svgRef.current);\n const month = x.domain().find((month) => {\n const monthPosition = x(month as string) ?? 0;\n return xPos >= monthPosition && xPos <= monthPosition + x.bandwidth();\n });\n\n if (month) {\n const closestDataPoint = data.find(d => d.month === month);\n if (closestDataPoint) {\n const scrollLeft = scrollContainerRef.current?.scrollLeft || 0;\n setTooltip({\n x: xPos + margin.left - scrollLeft,\n y: y(closestDataPoint[line.field]) + margin.top,\n content: closestDataPoint\n });\n }\n }\n })\n .on('mouseout', () => setTooltip(null));\n });\n }, [data, containerWidth, calculatedChartWidth, line, height, margin, bars, lines, showGrid, barColors, lineColors]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <div \n ref={scrollContainerRef}\n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}\n >\n <svg \n ref={svgRef} \n width={calculatedChartWidth} \n height={height} \n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n style={{ display: 'block' }}\n />\n </div>\n {tooltip && (\n <div\n style={{\n position: 'absolute',\n left: tooltip.x,\n top: tooltip.y,\n pointerEvents: 'none',\n backgroundColor: 'white',\n zIndex: '99999',\n border: 'none',\n padding: '5px',\n borderRadius: '3px',\n transform: 'translate(-50%, -100%)'\n }}\n >\n <Box>\n <div style={{ background: '#F3F2F2', padding: '10px' }}>\n <Typography type='s4' style={{ whiteSpace: 'noWrap', width: '200px', color: '#232529' }}>{tooltip.content?.month}</Typography>\n </div>\n <Box sx={{ p: 1.5, display: 'flex', flexDirection: 'column', gap: 1.5 }}>\n\n {bars.map((bar, index) => (\n <Box key={`bar-${index}`} sx={{ display: 'flex', gap: 1.5, alignItems: 'center' }}>\n <div className=\"circle\" style={{ backgroundColor: barColors[index] }} />\n <Typography type='s5' color='theme.secondary.900'>\n {bar.label}: <span style={{ fontWeight: 600 }}>$ {tooltip.content[bar.field]}</span>\n </Typography>\n </Box>\n ))}\n {lines.map((line, index) => (\n <Box key={`line-${index}`} sx={{ display: 'flex', gap: 1.5, alignItems: 'center' }}>\n <div className=\"circle\" style={{ backgroundColor: lineColors[index] }} />\n <Typography type='s5' color='theme.secondary.900'>\n {line.label}: <span style={{ fontWeight: 600 }}>$ {tooltip.content[line.field]}</span>\n </Typography>\n </Box>\n ))}\n </Box>\n </Box>\n \n </div>\n )\n }\n </div>\n </div>\n );\n};\n\nexport default BarLineChart;","import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n colors ?:Array<string>;\n titleProps?:any\n valueProps?:any \n isUserDashbord ?: boolean \n totalUsers ? : any \n}\n\nconst defaultColors = [\n \"#5BCE97\",\n \"#B3D8E2\",\n \"#F5F6F5\",\n \"#AE6B9E\",\n \"#CBD49A\",\n \"#EEE0B3\",\n];\n\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nexport const DonutChart: React.FC<DonutChartProps> = ({\n\tdata,\n\theight = 140,\n\twidth = 140,\n isUserDashbord , \n\tlegend = true,\n\tdirection = 'horizontal' ,\n totalUsers , \n\ttotal = isUserDashbord ? totalUsers : \"2.4 GB\",\n colors = defaultColors,\n titleProps={},\n valueProps={}, \n\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n const innerRadius = Math.min(width, height) / 2 - margin * 2;\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n //@ts-expect-error not applicable\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value));\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius);\n\n const pies = g\n .selectAll(\".arc\")\n //@ts-expect-error not applicable\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n pies\n .append(\"path\")\n //@ts-expect-error not applicable\n .attr(\"d\", path)\n //@ts-expect-error not applicable\n .attr(\"fill\", (d: DataPoint, i: number) => {\n return colors[i % colors.length]});\n\n\n // const words = total.split(' '); // Split the text into words\n // const lineHeight = 22; // Define the line height\n // const maxCharsPerLine = 15; // Define the maximum number of characters per line\n\n // let currentLine = '';\n // let lineNumber = 0;\n\n // const textElement =\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n // .text(total);\n\n // words.forEach((word) => {\n // \tconst tempLine = currentLine + word + ' ';\n\n // \t// Check if the line exceeds the max character count\n // \tif (tempLine.length > maxCharsPerLine && currentLine.length > 0) {\n // \t\ttextElement\n // \t\t\t.append('tspan')\n // \t\t\t.attr('x', 0)\n // \t\t\t.attr('y', lineHeight * lineNumber)\n // \t\t\t.text(currentLine.trim());\n\n // \t\tcurrentLine = word + ' ';\n // \t\tlineNumber++;\n // \t} else {\n // \t\tcurrentLine = tempLine;\n // \t}\n // });\n\n // // Add the last line\n // textElement\n // \t.append('tspan')\n // \t.attr('x', 0)\n // \t.attr('y', lineHeight * lineNumber)\n // \t.text(currentLine.trim());\n }, [colors, data, height, total, width]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n <div className=\"donut-chart-legend\">\n {data && data.map((d: DataPoint, i: number) => {\n return (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${colors[i]}` }}\n >\n <div className=\"legend-title\">\n <Typography type=\"s5\" color=\"theme.secondary.800\" {...titleProps}>\n {d.label}\n </Typography>\n </div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color=\"theme.secondary.1000\"\n >\n <Typography type=\"s5\" color=\"theme.secondary.1000\" weight=\"bold\" {...valueProps}>\n {d.value}\n </Typography>\n </Typography>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </>\n );\n};\n\nexport default DonutChart;\n","import React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\nimport \"./donut-chart.scss\";\nimport Typography from \"../../typography/typography\";\nimport { useAuth } from \"../../../hooks/useAuth\";\n\ninterface DataPoint {\n label: string;\n value: number;\n\n}\n\ninterface DonutChartProps {\n data: DataPoint[];\n width?: number;\n height?: number;\n legend?: boolean;\n direction?: \"vertical\" | \"horizontal\";\n total?: string;\n donutThickerValue?: number\n CustomLegends?: React.FC<{ data: DataPoint[] }>;\n title: string\n}\n\nconst formatNumber = (num: number, defaultCurrencySymbol: string = ''): string => {\n if (num >= 1_000_000) {\n return `${defaultCurrencySymbol} ${(num / 1_000_000).toFixed(1)} M`;\n } else if (num >= 100_000) {\n return `${defaultCurrencySymbol} ${(num / 100_000).toFixed(1)} L`; // L for Lakhs\n } else if (num >= 1_000) {\n return `${(num / 1_000).toFixed(1)} K`;\n } else {\n return `${defaultCurrencySymbol} ${num.toFixed(2)}`;\n }\n};\nconst getSingleNumberFromString = (str) => {\n if (typeof str === \"number\") {\n return str;\n }\n const match = str?.match(/\\d.+/) || null;\n return match ? Number(match[0]) : 0;\n};\n\nconst DonutChart: React.FC<DonutChartProps> = ({\n data,\n height = 140,\n width = 140,\n legend = true,\n direction = \"vertical\",\n total = \"300\",\n donutThickerValue,\n CustomLegends,\n title = ''\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n useEffect(() => {\n if (!svgRef.current) return;\n\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = 6;\n\n const outerRadius = Math.min(width, height) / 2 - margin;\n let innerRadius = Math.min(width, height) / 2 - margin * 2;\n if (donutThickerValue) {\n innerRadius = outerRadius - donutThickerValue;\n }\n\n\n\n\n const g = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${width / 2}, ${height / 2})`);\n const pie = d3\n .pie()\n .value((d: DataPoint) => getSingleNumberFromString(d.value)).padAngle(0);\n\n const path = d3.arc().outerRadius(outerRadius).innerRadius(innerRadius)\n\n const pies = g\n .selectAll(\".arc\")\n .data(pie(data))\n .enter()\n .append(\"g\")\n .attr(\"class\", \"arc\");\n\n\n pies\n .append(\"path\")\n .attr(\"d\", path)\n .attr(\"fill\", (d: DataPoint) => d?.data?.color).attr(\"stroke\", \"none\");\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"font-size\", \"18px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"alignment-baseline\", `central`)\n .html(total);\n g.append(\"text\")\n .attr(\"text-anchor\", \"middle\")\n .attr('maring-top', \"20px\")\n .attr(\"font-size\", \"13px\")\n .attr(\"font-weight\", \"600\")\n .attr(\"dy\", \"2em\")\n .attr(\"color\", \"#7B7C7F\")\n .html(title);\n\n }, [data, height, total, width, defaultCurrencySymbol, donutThickerValue, CustomLegends, title]);\n\n if (!legend) {\n return <svg ref={svgRef} width={width} height={height}></svg>;\n }\n\n return (\n <>\n <div className={`donut-chart-container ${direction}`}>\n <div>\n <svg ref={svgRef} width={width} height={height}></svg>\n </div>\n\n\n {CustomLegends ? (\n <CustomLegends data={data} /> // Render the custom component\n ) : (\n <div className='donut-legend'>\n <div className={`donut-chart-legend ${direction}`}>\n {data.map((d: DataPoint) => (\n <div\n className=\"legend\"\n key={d.label}\n style={{ borderLeft: `0.188rem solid ${d.color}` }}\n >\n <div className=\"legend-title\" style={{ color: `${d.labelColor}` }}>{d.label}</div>\n <div className=\"legend-value\">\n <Typography\n type=\"s5\"\n weight=\"medium\"\n color={d.valueColor}\n style={{\n whiteSpace: 'nowrap'\n }}\n >\n {formatNumber(d.value, defaultCurrencySymbol)}\n </Typography>\n </div>\n </div>\n ))\n }\n </div>\n </div>\n )}\n </div>\n </>\n );\n};\n\nexport { DonutChart };\nexport default DonutChart;\n","import React, { useRef, useEffect, useState, useMemo } from 'react';\nimport * as d3 from 'd3';\nimport { useAuth } from '../../../hooks/useAuth';\n\nexport interface IGroupChartProps {\n chartData: any[],\n height?: number,\n margin?: any,\n barWidth?: number,\n line?: boolean\n}\n\nconst formatNumber = (num: number, symbol) => {\n return `${symbol} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n};\n\nconst GroupedBarChart = ({ \n chartData, \n height = 500, \n barWidth = 40, \n margin = { top: 40, right: 20, bottom: 40, left: 50 }, \n line = false \n}: IGroupChartProps) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n const maxValue = useMemo(() => Math.max(...chartData.map((d) => d.data.map(v=>v.value)).flat()), [chartData]);\n\n const needsHorizontalScroll = chartData.length > 12;\n const minGroupWidth = 120; \n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(chartData.length * minGroupWidth, containerWidth)\n : containerWidth;\n\n const { user } = useAuth();\n const defaultCurrencySymbol = user?.currency_data?.symbol || '';\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; \n \n const chartWidth = calculatedChartWidth - margin.left - margin.right;\n const chartHeight = maxValue ? height - margin.top - margin.bottom : 0;\n \n d3.select(svgRef.current).selectAll('*').remove();\n \n const svg = d3.select(svgRef.current)\n .attr('height', height)\n .append('g')\n .attr('transform', `translate(${margin.left}, ${maxValue ? margin.top : height-50})`);\n\n const x0 = d3.scaleBand()\n .domain(chartData.map(d => d.month))\n .range([0, chartWidth])\n .padding(0.2);\n\n const x1 = d3.scaleBand()\n .domain(['Total Transaction', 'Total Value', 'Average Value'])\n .range([0, x0.bandwidth()])\n .padding(0.1);\n\n const y = d3.scaleLinear()\n .domain([0, d3.max(chartData, d => d3.max(d.data, data => data.value))])\n .nice()\n .range([chartHeight, 0]);\n\n const xAxis = svg.append('g')\n .attr('class', 'x-axis')\n .attr('transform', `translate(0, ${chartHeight})`)\n .call(d3.axisBottom(x0).tickPadding(20));\n \n const yAxis = svg.append('g')\n .attr('class', 'y-axis')\n .call(d3.axisLeft(y).tickPadding(10).tickFormat((d: any) => formatNumber(d, defaultCurrencySymbol)));\n\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n xAxis.select(\".domain\").attr(\"stroke\", \"none\");\n \n if (line) {\n svg.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', chartWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '3,3') // Dotted line\n .style('stroke-width', 1);\n }\n\n const monthGroups = svg.selectAll('.month-group')\n .data(chartData)\n .enter()\n .append('g')\n .attr('class', 'month-group')\n .attr('transform', d => `translate(${x0(d.month)}, 0)`);\n\n monthGroups.selectAll('rect')\n .data(d => d.data)\n .enter()\n .append('rect')\n .attr('x', d => x1(d.type) + (x1.bandwidth() - barWidth) / 2)\n .attr('y', d => y(d.value))\n .attr('width', barWidth)\n .attr('height', d => chartHeight - y(d.value))\n .attr('fill', d => d.color)\n .attr('rx', 5)\n .attr('ry', 5);\n\n }, [chartData, barWidth, height, calculatedChartWidth, containerWidth, line, margin, defaultCurrencySymbol, maxValue]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <div \n ref={scrollContainerRef}\n style={{ \n width: '100%', \n overflowX: needsHorizontalScroll ? 'auto' : 'hidden',\n overflowY: 'hidden'\n }}\n >\n <svg \n ref={svgRef} \n width={calculatedChartWidth} \n height={height} \n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n style={{ display: 'block' }}\n />\n </div>\n </div>\n </div>\n );\n};\n\nexport { GroupedBarChart };\nexport default GroupedBarChart;","import React, { useRef, useEffect, useMemo } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface LineChartProps {\n data: DataPoint[];\n numOfLines?: number;\n width?: number;\n height?: number;\n}\n\nconst formatNumber = (num: number) => {\n if (num >= 1e9) return (num / 1e9).toFixed(1) + \"B\";\n if (num >= 1e6) return (num / 1e6).toFixed(1) + \"M\";\n if (num >= 1e3) return (num / 1e3).toFixed(1) + \"K\";\n return num;\n};\n\nconst LineChart: React.FC<LineChartProps> = ({\n data,\n numOfLines = 5,\n width = 500,\n height = 300,\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const maxValue = useMemo(() => {\n return Math.max(...data.map((d) => d.value));\n }, [data]);\n\n const yAxisMaxValue = useMemo(() => {\n return maxValue * 1.25;\n }, [maxValue]);\n\n const yAxisTicks = useMemo(() => {\n const ticks = [];\n const interval = yAxisMaxValue / numOfLines;\n for (let i = 0; i <= numOfLines; i++) {\n ticks.push(interval * i);\n }\n return ticks;\n }, [yAxisMaxValue, numOfLines]);\n\n const needsHorizontalScroll = data.length > 12;\n const minGroupWidth = 120; \n const calculatedChartWidth = needsHorizontalScroll \n ? Math.max(data.length * minGroupWidth, width)\n : width;\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n useEffect(() => {\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = { top: 20, right: 20, bottom: 70, left: 40 };\n const barWidth = calculatedChartWidth - margin.left - margin.right;\n const barHeight = height - margin.top - margin.bottom;\n\n const mousemove = (event: any, d: any) => {\n\n const xPosition = event.offsetX + margin.left - 25;\n const yPosition = event.offsetY + margin.top - 40;\n const text = `${d.label} - ${d.value}`;\n tooltip\n .attr(\"x\", xPosition)\n .attr(\"y\", yPosition)\n .style(\"opacity\", 9)\n .style(\"height\", text.length >= 16 ? 50 : 35);\n\n tooltipText.html(text);\n };\n\n const mouseleave = () => {\n tooltip.style(\"opacity\", 0);\n };\n\n const x = d3\n .scaleBand()\n .domain(data.map((d: any) => d.label))\n .range([0, barWidth])\n .padding(0.1);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, (d: any) => d.value)])\n .range([barHeight, 0]);\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n const line = d3\n .line<DataPoint>()\n //@ts-expect-error not applicable\n .x((d: any) => x(d.label) + x.bandwidth() / 2)\n .y((d: any) => y(d.value));\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line)\n .style(\"fill\", \"none\")\n .style(\"stroke\", \"#357AF6\")\n .style(\"stroke-width\", 2);\n\n chart\n .selectAll(\".point\")\n .data(data)\n .enter()\n .append(\"circle\")\n .attr(\"class\", \"point\")\n //@ts-expect-error not applicable\n .attr(\"cx\", (d: any) => x(d.label) + x.bandwidth() / 2)\n .attr(\"cy\", (d: any) => y(d.value))\n .attr(\"r\", 4)\n .style(\"fill\", \"#357AF6\")\n .on(\"mousemove\", mousemove)\n .on(\"mouseleave\", mouseleave);\n\n yAxisTicks.slice(1).forEach((tick) => {\n chart\n .append(\"line\")\n .attr(\"class\", \"dotted-line\")\n .attr(\"x1\", 0)\n .attr(\"y1\", y(tick))\n .attr(\"x2\", width)\n .attr(\"y2\", y(tick))\n .style(\"stroke\", \"gray\")\n .style(\"stroke-dasharray\", \"3,3\");\n });\n\n const xAxis = chart\n .append(\"g\")\n .attr(\"class\", \"x-axis\")\n .attr(\"transform\", `translate(0, ${barHeight})`)\n .call(d3.axisBottom(x));\n\n xAxis.selectAll(\".tick line\").remove();\n\n const yAxis = chart\n .append(\"g\")\n .attr(\"class\", \"y-axis\")\n .call(\n d3\n .axisLeft(y)\n .tickValues(yAxisTicks)\n //@ts-expect-error not applicable\n .tickFormat((d: any) => {\n return formatNumber(d);\n })\n .tickSizeOuter(0),\n 0,\n );\n\n yAxis.selectAll(\".domain\").remove();\n yAxis.selectAll(\".tick line\").remove();\n\n const tooltip = svg\n .append(\"foreignObject\")\n .attr(\"class\", \"tooltip\")\n .attr(\"width\", 120)\n .attr(\"height\", 20)\n .style(\"opacity\", 0)\n .style(\"position\", \"absolute\")\n .style(\"background-color\", \"white\")\n .style(\"border\", \"none\")\n .style(\"box-shadow\", \"0rem 0rem 0.469rem 0rem rgba(0, 0, 0, 0.15)\")\n .style(\"border-radius\", \"0.313rem\")\n .style(\"padding\", \"0.625rem\")\n .style(\"font-size\", \"0.75rem\");\n\n const tooltipText = tooltip\n .append(\"xhtml:div\")\n .style(\"font-size\", \"0.75rem\")\n .style(\"color\", \"black\");\n }, [data, height, width, yAxisMaxValue, yAxisTicks, calculatedChartWidth]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <svg \n ref={svgRef}\n width={calculatedChartWidth}\n height={height}\n viewBox={`0 0 ${calculatedChartWidth} ${height}`}\n />\n </div>\n );\n};\n\nexport default LineChart;\n","import React, { useRef, useEffect, useState } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface LineChartProps {\n data: DataPoint[];\n width?: number | string; // Accept string for percentage width\n height?: number | string;\n lineColor?: string;\n lineFillColor?: string;\n}\n\nconst AreaLineChartTwo: React.FC<LineChartProps> = ({\n data,\n width = \"100%\", // Default to responsive width\n height = 200, // Set a default numeric height\n lineColor = \"#ADE7CB\",\n lineFillColor = \"#EBF9F2\",\n ...rest\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const containerRef = useRef<HTMLDivElement>(null); // Reference to the container\n const [containerWidth, setContainerWidth] = useState(0);\n\n useEffect(() => {\n // Set up ResizeObserver to track container width\n const resizeObserver = new ResizeObserver(() => {\n if (containerRef.current) {\n setContainerWidth(containerRef.current.clientWidth);\n }\n });\n\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current);\n setContainerWidth(containerRef.current.clientWidth);\n }\n\n return () => resizeObserver.disconnect();\n }, []);\n\n useEffect(() => {\n if (containerWidth === 0) return; // Skip rendering until we have a valid width\n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove(); // Clear previous content\n\n const margin = { top: 5, left: 0, right: 0, bottom: 5 };\n const chartWidth = containerWidth - margin.left - margin.right; // Use container width\n const chartHeight = height as number;\n\n const x = d3\n .scaleLinear()\n .domain([0, data.length - 1])\n .range([0, chartWidth]);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, (d: DataPoint) => d.value) || 1]) // Fallback for empty data\n .range([chartHeight, 0]);\n\n const line = d3\n .line<DataPoint>()\n .x((_, i) => x(i))\n .y((d) => y(d.value));\n\n const area = d3\n .area<DataPoint>()\n .x((_, i) => x(i))\n .y0(chartHeight)\n .y1((d) => y(d.value));\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line)\n .style(\"fill\", \"none\")\n .style(\"stroke\", lineColor)\n .style(\"stroke-width\", 5);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"area\")\n .attr(\"d\", area)\n .style(\"fill\", lineFillColor);\n\n chart.selectAll(\".domain\").remove();\n chart.selectAll(\".tick line\").remove();\n }, [data, height, lineColor, lineFillColor, containerWidth]);\n\n return (\n <div ref={containerRef} style={{ width: width, height: height }}>\n <svg ref={svgRef} width=\"100%\" height=\"100%\" {...rest}></svg>\n </div>\n );\n};\n\nexport default AreaLineChartTwo;\n","import React, { useRef, useEffect, useState } from 'react';\nimport * as d3 from 'd3';\n\nexport interface IMultiLineChartProps {\n data: any;\n width?: number;\n height?: number;\n margin?: { top: number, right: number, bottom: number, left: number };\n yAxisData: any;\n xAxisData: any;\n colors?: string[];\n line?: boolean;\n yAxisLabelType?: 'inPercent' | 'inValue' | 'custom';\n customLabelFormatter?: (value: number) => string;\n currency?: string\n}\nconst formatNumber = (num: number, symbol: string, labelType: string) => {\n if (labelType === 'inPercent') {\n return `${d3.format(\".0%\")(num / 100)}`;\n } else if (labelType === 'inValue') {\n return `${symbol||''} ${d3.format(\".2s\")(num).replace('k', 'K')}`;\n }\n return num.toString();\n};\n\n\n\nconst MultiLineChart = ({\n data,\n yAxisData,\n xAxisData,\n colors = ['steelblue', 'orange', 'green', 'red'], // Default colors\n height = 400,\n margin = { top: 20, right: 50, bottom: 30, left: 50 },\n line = false,\n yAxisLabelType = 'inValue',\n currency,\n customLabelFormatter,\n}: IMultiLineChartProps) => {\n const svgRef = useRef<SVGSVGElement>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number>(0);\n\n useEffect(() => {\n }, [yAxisLabelType]);\n // ResizeObserver to adjust the chart size dynamically\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n const resizeObserver = new ResizeObserver((entries) => {\n if (entries[0]) {\n const newWidth = entries[0].contentRect.width;\n setContainerWidth(newWidth);\n }\n });\n\n if (wrapper) {\n resizeObserver.observe(wrapper);\n }\n\n return () => {\n if (wrapper) {\n resizeObserver.unobserve(wrapper);\n }\n };\n }, []);\n\n useEffect(() => {\n \n if (containerWidth === 0) return; \n\n const svg = d3.select(svgRef.current);\n svg.selectAll(\"*\").remove(); \n\n const innerWidth = containerWidth-margin.left- margin.right;\n const innerHeight = height - margin.top - margin.bottom;\n\n // Scales\n const x = d3.scaleLinear()\n .domain([0, xAxisData.length]) // Linear scale based on index of xAxisData\n .range([0, innerWidth]);\n\n const y = d3.scaleLinear()\n .domain([0, d3.max(yAxisData) as number])\n .nice()\n .range([innerHeight, 0]);\n\n\n // Append x-axis\n const xAxis = svg.append(\"g\")\n .attr(\"class\", \"x-axis\")\n .attr(\"transform\", `translate(${margin.left},${height - margin.bottom})`)\n .call(d3.axisBottom(x)\n .ticks(xAxisData.length - 1)\n .tickFormat((d, i) => xAxisData[i])\n );\n\n xAxis.selectAll(\"text\")\n .attr(\"transform\", \"translate(20, 10)\") // Push labels down by 10px\n .style(\"text-anchor\", \"middle\"); // Keep the labels centered\n xAxis.select(\".domain\").attr(\"stroke\", \"none\");\n\n // Append y-axis\n const yAxis = svg.append(\"g\")\n .attr(\"class\", \"y-axis\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`)\n .call(d3.axisLeft(y).tickPadding(10).tickFormat((d: any) =>\n customLabelFormatter\n ? customLabelFormatter(d)\n : formatNumber(d, currency, yAxisLabelType)\n )\n .tickSizeOuter(0) as any,);\n\n if (line) {\n yAxis.selectAll('.grid-line')\n .data(y.ticks())\n .enter()\n .append('line')\n .attr('class', 'grid-line')\n .attr('x1', 0)\n .attr('x2', innerWidth)\n .attr('y1', d => y(d))\n .attr('y2', d => y(d))\n .style('stroke', '#ddd')\n .style('stroke-dasharray', '6,3') // Dotted line\n .style('stroke-width', 1);\n }\n xAxis.selectAll(\".tick line\").remove();\n yAxis.selectAll(\".tick line\").remove();\n yAxis.select(\".domain\").attr(\"stroke\", \"none\");\n\n // Plot the lines for each dataset\n\n Object.keys(data).forEach((key, index) => {\n if (key !== 'months') {\n const chartLine = d3.line()\n .x((d, i) => x(i)) // Use index-based positioning for x-axis\n .y((d: any) => y(d)).curve(data[key].isSmooth ? d3.curveMonotoneX : d3.curveLinear);\n // Append the line\n svg.append(\"path\")\n .datum(data[key]?.data)\n .attr(\"fill\", \"none\")\n .attr(\"stroke\", colors[index % colors.length])\n .attr(\"stroke-width\", 2)\n .attr(\"transform\", `translate(${margin.left},${margin.top})`)\n .attr(\"d\", chartLine)\n .on(\"mouseover\", function () {\n d3.select(this).attr(\"stroke-width\", 4);\n })\n .on(\"mouseout\", function () {\n d3.select(this).attr(\"stroke-width\", 2);\n });\n\n\n\n // Append circles for each data point\n if (data[key]?.displayDot) {\n svg.selectAll(`.circle-${key}`)\n .data(data[key]?.data)\n .enter()\n .append(\"circle\")\n .attr(\"class\", `circle-${key}`)\n .attr(\"cx\", (d, i) => x(i) + margin.left) // Adjust for margin.left\n .attr(\"cy\", (d: any) => y(d) + margin.top) // Adjust for margin.top\n .attr(\"r\", 4) // Circle radius\n .attr(\"fill\", colors[index % colors.length])\n .attr(\"stroke\", \"white\") // Optional: adds a border for contrast\n .attr(\"stroke-width\", 1.5)\n .on(\"mouseover\", function () {\n d3.select(this).attr(\"r\", 6); // Increase size on hover\n })\n .on(\"mouseout\", function () {\n d3.select(this).attr(\"r\", 4); // Return to normal size\n });\n }\n\n }\n });\n }, [data, yAxisData, xAxisData, height, containerWidth, colors, margin, line, yAxisLabelType, currency, customLabelFormatter]);\n\n return (\n <div ref={wrapperRef} style={{ width: '100%', height: '100%' }}>\n <div style={{ position: 'relative' }}>\n <svg ref={svgRef} width=\"100%\" height={height} viewBox={`0 0 ${containerWidth} ${height}`} />\n </div>\n </div>\n );\n};\n\nexport { MultiLineChart };\nexport default MultiLineChart;\n","import { Box, Card, CardContent, IconButton, MenuItem } from '@mui/material';\nimport React, { useState } from 'react';\nimport Typography, { ITypography } from '../../typography/typography';\nimport { MoreIcon } from '../../icons';\nimport { formatDate } from '../../../utils/dateFormat';\n// import Chip from '../../chip/chip';\nimport Menu from '../../menu/menu';\n\ninterface CustomGridCardProps {\n\ttitle: React.ReactNode | string;\n\tsubTitle?: React.ReactNode | string;\n\tchildren?: React.ReactNode | string;\n\ttitleProps?: ITypography;\n\tdata: Record<any, any>;\n\trowActionMenu: any[];\n\tdestructiveActionMenu: any[];\n}\n\nconst CustomGridCard: React.FC<CustomGridCardProps> = ({\n\ttitle,\n\tsubTitle,\n\tchildren,\n\tdata,\n\trowActionMenu,\n\tdestructiveActionMenu\n}) => {\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<HTMLElement | null>(null);\n\tconst [row, setRow] = useState<[] | null>(null);\n\n\tconst handleMenuOpen = (\n\t\te: React.MouseEvent<HTMLButtonElement>,\n\t\tcurrencyRow: []\n\t) => {\n\t\tsetRow(currencyRow);\n\t\tsetRowAnchorEl(e.currentTarget);\n\t};\n\n\treturn (\n\t\t<Card\n\t\t\tsx={{\n\t\t\t\twidth: '16.625rem',\n\t\t\t\tborderRadius: '0.5rem',\n\t\t\t\tborder: '0.5px solid #eeeff1',\n\t\t\t\t// backgroundColor: 'theme.secondary.100',\n\t\t\t\tboxShadow: `\n 0px 0px 2px 0px #e0e0e0,\n 0px 1px 4px -2px rgba(24, 39, 75, 0.02),\n 0px 4px 4px -2px rgba(24, 39, 75, 0.06);`\n\t\t\t\t// m: 3\n\t\t\t}}>\n\t\t\t<CardContent\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\tpadding: '1rem 1rem 1.25rem 1rem',\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\tflexShrink: 0\n\t\t\t\t}}>\n\t\t\t\t{/* Title & More Button */}\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'flex-start'\n\t\t\t\t\t\t// marginBottom: 1\n\t\t\t\t\t}}>\n\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tcolor='inherit'\n\t\t\t\t\t\tsize='small'\n\t\t\t\t\t\tonClick={(e) => handleMenuOpen(e, data)}>\n\t\t\t\t\t\t<MoreIcon\n\t\t\t\t\t\t\tsx={{ transform: 'rotate(90deg)' }}\n\t\t\t\t\t\t\torient='vertical'\n\t\t\t\t\t\t\tfontSize='small'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Box>\n\t\t\t\t{/* Sub Title */}\n\t\t\t\t<Box>\n\t\t\t\t\t<Typography type='s4' color='theme.secondary.800'>\n\t\t\t\t\t\t{subTitle}\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t\t{children}\n\t\t\t\t{data?.created_at && (\n\t\t\t\t\t<Box>\n\t\t\t\t\t\t<Typography type='s4' color='theme.secondary.800'>\n\t\t\t\t\t\t\tCreated On {formatDate(data?.created_at, 'DD MMM, YYYY')}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</CardContent>\n\n\t\t\t{/* Action Menu */}\n\t\t\t<Menu\n\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\tonClose={() => setRowAnchorEl(null)}>\n\t\t\t\t<Box>\n\t\t\t\t\t{rowActionMenu.map((item) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\trow && item.handleAction(row);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t\t<Box className='dropdown-inner--DestructiveHeader'>\n\t\t\t\t\t{destructiveActionMenu.map((item) => (\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\trow && item.handleAction(row);\n\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tclassName='dropdown-inner--DestructiveActions'>\n\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t{item.label}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t))}\n\t\t\t\t</Box>\n\t\t\t</Menu>\n\t\t</Card>\n\t);\n};\n\nexport default CustomGridCard;\n","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCard'\n });\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n raised\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n return null;\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport { getCardContentUtilityClass } from './cardContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n name: 'MuiCardContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n };\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCardContent'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardContentRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import Box from '@mui/material/Box';\nimport Card from '@mui/material/Card';\n// import CardActions from '@mui/material/CardActions';\nimport CardContent from '@mui/material/CardContent';\n// import Button from '@mui/material/Button';\nimport Typography from '../../typography/typography';\n\nexport interface IGridCard {\n\tname: string;\n\tcompany: string;\n\tstatus: string;\n\temail: string;\n\tamount: string;\n}\n\nexport const GridCardMarkup = (props: any) => {\n\treturn (\n\t\t<Card\n\t\t\tsx={{\n\t\t\t\twidth: '16.625rem',\n\t\t\t\tborderRadius: '0.5rem',\n\t\t\t\tborder: '0.5px solid theme.secondary.200, #F5F6F5',\n\t\t\t\tbackgroundColor: 'theme.secondary.100',\n\t\t\t\tboxShadow: `\n 0px 0px 2px 0px #E0E0E0, \n 0px 1px 4px - 2px rgba(24, 39, 75, 0.02), \n 0px 4px 4px - 2px rgba(24, 39, 75, 0.06)`,\n\t\t\t\tm: 3\n\t\t\t}}>\n\t\t\t<CardContent\n\t\t\t\tsx={{\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\tpadding: '1rem 1rem 1.25rem 1rem',\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'flex-start',\n\t\t\t\t\tflexShrink: 0\n\t\t\t\t}}>\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\tmarginBottom: 1\n\t\t\t\t\t}}>\n\t\t\t\t\t<Box>\n\t\t\t\t\t\t<Typography type='s3' weight='medium'>\n\t\t\t\t\t\t\t{props.data.name || 'Kristin Watson'}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography type='s3' color='theme.secondary.800'>\n\t\t\t\t\t\t\t{props.data.company || 'Barone LLC.'}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Box>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\ttype='s4'\n\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\tpadding: '0.25rem 0.375rem',\n\t\t\t\t\t\t\t\tgap: '0.5rem',\n\t\t\t\t\t\t\t\tborderRadius: '0.5rem',\n\t\t\t\t\t\t\t\tbackgroundColor: 'theme.secondary.200'\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tcolor='theme.secondary.900'>\n\t\t\t\t\t\t\t{props.data.status || 'Lost'}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t\t<Typography\n\t\t\t\t\ttype='s3'\n\t\t\t\t\tsx={{\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tcolor: 'theme.secondary.900',\n\t\t\t\t\t\ttextDecorationLine: 'underline'\n\t\t\t\t\t}}>\n\t\t\t\t\t{props.data.email || 'kristen.watson@example.com'}\n\t\t\t\t</Typography>\n\t\t\t\t<Box sx={{ mt: '1.25rem', display: 'flex', alignItems: 'center' }}>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\ttype='s3'\n\t\t\t\t\t\tsx={{ mr: '.2rem' }}\n\t\t\t\t\t\tcolor='theme.secondary.900'>\n\t\t\t\t\t\t{props.data.amount || '$10,000,000'}\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Typography type='s4' color='theme.secondary.800'>\n\t\t\t\t\t\test value\n\t\t\t\t\t</Typography>\n\t\t\t\t</Box>\n\t\t\t</CardContent>\n\t\t\t{/* <CardActions>\n <Button size=\"small\">Learn More</Button>\n </CardActions> */}\n\t\t</Card>\n\t);\n};\n\nexport const GridCard = (props: any) => {\n\treturn (\n\t\t<>\n\t\t\t{props.data.map((cardData: IGridCard) => {\n\t\t\t\treturn <GridCardMarkup data={cardData} />;\n\t\t\t})}\n\t\t</>\n\t);\n};\n\nexport default GridCard;\n","import { Box } from \"@mui/material\";\nimport \"./grid-wrapper.scss\";\nimport Typography from \"../../typography/typography\";\nimport images from \"../../../assets/images\"\nimport ErpLoader from \"../../loaders/erp-loader\";\n\ninterface GridWrapperProps {\n children: React.ReactNode;\n data?: any[]\n isLoading?: boolean\n}\n\nconst GridWrapper = (props: GridWrapperProps) => {\n const { children, data, isLoading } = props;\n return (\n <>\n {isLoading \n ? \n <ErpLoader/> \n :\n <>\n {data?.length \n ? \n <div className=\"grid-wrapper\">{children}</div>\n : \n <Box position=\"fixed\" left='50%' top=\"50%\" transform=\"translate(-50%, -50%)\">\n <img src={images.common.tableNoData} />\n <Typography color='theme.secondary.1000' weight=\"medium\" align=\"center\">No data</Typography>\n </Box>\n }\n </>\n }\n </>\n );\n};\n\nexport { GridWrapper };\nexport default GridWrapper;\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m7 14 5-5 5 5z\"\n}), 'ArrowDropUp');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m7 10 5 5 5-5z\"\n}), 'ArrowDropDown');","import { GridWrapper } from '../../grid/grid-wrapper';\nimport { CardWrapper } from '../../card-wrapper';\nimport { Typography } from '../../typography';\nimport './grid-view.scss';\nimport { useNavigate } from 'react-router-dom';\nimport { createdOnAndBy } from '../../../utils/common';\n\ninterface IGridCard {\n\tdata: any[];\n\tconfig?: any;\n}\n\nconst GridCard: React.FC<IGridCard> = ({ data, config }) => {\n\tconst navigate = useNavigate();\n\tconst currentModule = location.pathname.split('/')[2];\n\t\n\tconst moduleConfig = config?.[currentModule] || { filterName: '', redirectionPath: '' };\n\tconst path = `/dashboard/${currentModule}${moduleConfig.redirectionPath}`;\n\n\tconst handleRedirection = (form: any) => {\n\t\tnavigate(path, {\n\t\t\tstate: { form }\n\t\t});\n\t};\n\n\tconst formatText = (text: string) => {\n\t\treturn text?.split('_')?.map(i => i?.charAt(0).toUpperCase() + i?.slice(1).toLowerCase())?.join(' ');\n\t};\n\n\treturn (\n\t\t<GridWrapper data={data}>\n\t\t\t{data.map((form, index) => (\n\t\t\t\t<CardWrapper key={form?._id || index}>\n\t\t\t\t\t<div className='gridView--CardHeader'>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName='gridView--redirection'\n\t\t\t\t\t\t\tonClick={() => handleRedirection(form)}>\n\t\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.900'>\n\t\t\t\t\t\t\t\t{formatText(form?.name)}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName='gridView--redirection'\n\t\t\t\t\t\tonClick={() => handleRedirection(form)}>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.900'>\n\t\t\t\t\t\t\t{form?.fields?.filter(\n\t\t\t\t\t\t\t\t(field: { is_system_field: boolean }) => !field.is_system_field,\n\t\t\t\t\t\t\t).length || 0}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{form?.description && (\n\t\t\t\t\t\t\t<Typography type='s4' weight='medium' color={'inherit'}>\n\t\t\t\t\t\t\t\t{formatText(form?.description)}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t<div className='gridView--CardBottom'>\n\t\t\t\t\t\t\t<Typography type='s5' color='theme.secondary.600'>\n\t\t\t\t\t\t\t\t{createdOnAndBy(form)}\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</CardWrapper>\n\t\t\t))}\n\t\t</GridWrapper>\n\t);\n};\n\nexport default GridCard;\n","import { ActionBar } from '../action-bar';\nimport { MaterialTable } from '../material-table';\nimport { Typography } from '../typography';\nimport { viewTypes } from '../../constants';\nimport { MRT_ColumnOrderState, MRT_SortingState } from \"material-react-table\";\nimport { useState, useEffect, useMemo, useCallback } from \"react\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport \"./custom-forms.scss\";\nimport { useAuth } from '../../hooks/useAuth';\nimport { Footer } from '../footer/footer';\nimport { IPaginationModel } from '../../types';\nimport { Box } from \"@mui/material\";\nimport GridCard from \"./grid-view/grid-view.js\";\nimport { useAppTranslations } from \"../../hooks/use-translations\";\nimport { useTranslation } from 'react-i18next';\nimport useApi from '../../hooks/useApi';\nimport { getV1FormBuilder, setBaseUrl as setSystemBaseUrl } from '../../api-client/api.system-feature/api';\nimport { getToken } from '../../utils/common';\n\ninterface ActionData {\n label: string;\n position: number;\n}\n\ninterface ModuleConfig {\n filterName: string;\n redirectionPath: string;\n}\n\n\n\nconst INITIAL_ORDER = [\"name\", \"fields\", \"noOfCustomFields\", \"customFields\"];\nconst DEFAULT_ACTION_BAR_DATA = [{ label: 'Table', position: 0 }];\nconst CUSTOM_FIELD_DISPLAY_LIMIT = 5;\n\ninterface FormBuilderState {\n rows: any[];\n isLoading: boolean;\n paginationModel: {\n pageNo: number;\n limit: number;\n totalCount: number;\n };\n}\n\nconst Forms = ({ config }: { config?: any }) => {\n const { t } = useTranslation();\n useAppTranslations(); // Load translations for current module\n const navigate = useNavigate();\n const location = useLocation();\n const { user } = useAuth();\n console.log(\"user.........\", user)\n const { callApi } = useApi();\n\n const [formBuilder, setFormBuilder] = useState<FormBuilderState>({\n rows: [],\n isLoading: false,\n paginationModel: {\n pageNo: 1,\n limit: 10,\n totalCount: 0\n }\n });\n\n // Initialize state with proper defaults and memoization\n const [actionBarData, setActionBarData] = useState<ActionData[]>(() => {\n const formView = localStorage.getItem(\"form-view\");\n return formView ? JSON.parse(formView) : DEFAULT_ACTION_BAR_DATA;\n });\n\n const [search, setSearch] = useState<string>(\"\");\n const [actionBarActiveTab, setActionBarActiveTab] = useState<string>(() =>\n actionBarData?.[0]?.label || viewTypes.TABLE\n );\n const [columnOrder, setColumnOrder] = useState(INITIAL_ORDER);\n const [sorting, setSorting] = useState<MRT_SortingState>([]);\n\n // Memoized computed values to prevent unnecessary recalculations\n const currentModule = useMemo(() => location.pathname.split('/')[2], [location.pathname]);\n\n const modulesConfig = useMemo(() => ({\n ...config\n }), [config]);\n\n const moduleConfig = useMemo(() =>\n modulesConfig[currentModule] || { filterName: '', redirectionPath: '' },\n [currentModule, modulesConfig]\n );\n\n console.log(\"external moduleConfig..........\", moduleConfig)\n const navigationPath = useMemo(() =>\n `/dashboard/${currentModule}${moduleConfig.redirectionPath}`,\n [currentModule, moduleConfig.redirectionPath]\n );\n\n const filters = useMemo(() =>\n `(company_id.eq=${user?.company_id}&module.eq=${moduleConfig.filterName})`,\n [user?.company_id, moduleConfig.filterName]\n );\n\n const paginationData = useMemo(() => {\n const { pageNo, limit, totalCount } = formBuilder.paginationModel;\n const total = limit ? Math.ceil(totalCount / limit) : 0;\n const skip = limit * (pageNo - 1);\n return { total, skip, pageNo, limit };\n }, [formBuilder.paginationModel]);\n\n // Utility function moved outside render to prevent recreation\n const formatText = useCallback((key: string): string => {\n return key\n ? key\n .split(/[:_-]/)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ')\n : key;\n }, []);\n\n // Memoized event handlers to prevent child re-renders\n const handleColumnOrdering = useCallback((colOrder: MRT_ColumnOrderState) => {\n setColumnOrder(colOrder.slice(1));\n }, []);\n\n const handlePaginationModel = useCallback((model: IPaginationModel) => {\n setFormBuilder(prev => ({\n ...prev,\n paginationModel: {\n ...model,\n totalCount: prev.paginationModel.totalCount\n }\n }));\n }, []);\n\n const handleSearch = useCallback((searchValue: string) => {\n setSearch(searchValue);\n }, []);\n\n const handleRowClick = useCallback((rowData: any) => {\n navigate(navigationPath, {\n state: rowData,\n });\n }, [navigate, navigationPath]);\n\n // Memoized columns definition to prevent recreation on each render\n const columns = useMemo(() => [\n {\n accessorKey: \"name\",\n header: \"Form Name\",\n visible: true,\n Cell: ({ row }: any) =>\n row?.original?.name ? (\n <div\n onClick={() => handleRowClick(row.original)}\n style={{ cursor: 'pointer' }}\n >\n {formatText(row.original.name)}\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields.length\",\n header: \"No. of Fields\",\n visible: true,\n size: 150\n },\n {\n accessorKey: \"fields\",\n header: \"No. of custom fields\",\n visible: true,\n size: 80,\n Cell: ({ row }: any) =>\n row?.original?.fields ? (\n <div>\n {\n row.original.fields.filter(\n (field: { is_system_field: boolean }) => !field.is_system_field,\n ).length\n }\n </div>\n ) : (\n \"-\"\n ),\n },\n {\n accessorKey: \"fields\",\n header: \"Custom Fields\",\n visible: true,\n Cell: ({ row }: any) => {\n const fields = row?.original?.fields?.filter(\n (field: { is_system_field: boolean; label: string }) =>\n !field?.is_system_field && field?.label,\n ) || [];\n\n if (!fields.length) return '-';\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexWrap: 'wrap', p: 0.5 }}>\n {fields.slice(0, CUSTOM_FIELD_DISPLAY_LIMIT).map((item: any, index: number) => (\n <Typography\n key={`${item.label}-${index}`}\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n {item?.label?.includes(\".\") ? t(item.label) : item.label}\n </Typography>\n ))}\n {fields.length > CUSTOM_FIELD_DISPLAY_LIMIT && (\n <Typography\n type=\"s5\"\n weight=\"medium\"\n className=\"forms--CustomField\"\n >\n +{fields.length - CUSTOM_FIELD_DISPLAY_LIMIT} more\n </Typography>\n )}\n </Box>\n );\n }\n },\n ], [formatText, handleRowClick, t]);\n\n // Memoized footer pages to prevent recreation\n const footerPages = useMemo(() => [\n {\n name: 'Default',\n _id: 1,\n data: []\n }\n ], []);\n\n\n const fetchForms = useCallback(async() => {\n console.log(\"moduleConfig.............\", moduleConfig)\n if (!moduleConfig.filterName || !user?.company_id) return;\n\n const sort = sorting?.[0];\n const params = {\n skip: paginationData.skip,\n limit: paginationData.limit,\n search,\n filters,\n ...(sort && { order: `${sort.id}:${sort.desc ? -1 : 1}` }),\n ...getToken(),\n 'x-timezone': getToken()['x-timezone']?.toString() || ''\n };\n console.log(\"params..............\", params)\n\n setFormBuilder(prev => ({ ...prev, isLoading: true }));\n const response = await getV1FormBuilder({\n ...params,\n ...getToken\n })\n console.log(\"response........\", response)\n setFormBuilder({\n rows: response?.data?.form,\n isLoading: false,\n paginationModel: {\n ...formBuilder.paginationModel,\n ...response?.data?.pagination\n }\n });\n\n\n }, [filters,\n paginationData.skip,\n paginationData.limit,\n sorting,\n search,\n moduleConfig.filterName,\n user?.company_id,\n ])\n // Effect for fetching data - optimized with proper dependencies\n useEffect(() => {\n fetchForms()\n }, [\n fetchForms\n ]);\n\n // Effect for setting active tab - only run when actionBarData changes\n useEffect(() => {\n if (actionBarData?.length && actionBarData[0].label !== actionBarActiveTab) {\n setActionBarActiveTab(actionBarData[0].label);\n }\n }, [actionBarData]);\n\n // Effect for localStorage - debounced to prevent excessive writes\n useEffect(() => {\n if (actionBarData?.length) {\n const timeoutId = setTimeout(() => {\n localStorage.setItem(\"form-view\", JSON.stringify(actionBarData));\n }, 300);\n\n return () => clearTimeout(timeoutId);\n }\n }, [actionBarData]);\n\n return (\n <section className=\"forms\">\n <ActionBar\n title=\"Form\"\n button={false}\n data={actionBarData}\n setData={setActionBarData}\n active={actionBarActiveTab}\n setActive={(tab) => {\n setActionBarActiveTab(tab);\n }}\n handleSearch={handleSearch}\n showFilter={false}\n />\n\n {actionBarActiveTab === viewTypes.TABLE && (\n <MaterialTable\n enablePagination={false}\n columnOrder={[\"mrt-row-select\", ...columnOrder]}\n handleColumnOrdering={handleColumnOrdering}\n rows={formBuilder.rows}\n columns={columns}\n totalPages={1}\n paginationModel={{ pageNo: 1, limit: 10 }}\n enableEditing={false}\n states={{ sorting: sorting || [] }}\n onSortingChange={setSorting}\n disableDefaultActionColumn\n getSelectedData={() => { }}\n />\n )}\n\n {actionBarActiveTab === viewTypes.GRID && (\n <GridCard data={formBuilder.rows} config={config} />\n )}\n\n <Footer\n pages={footerPages}\n setPages={() => { }}\n currentPage={1}\n setCurrentPage={() => { }}\n total={paginationData.total}\n paginationModel={{\n pageNo: formBuilder.paginationModel.pageNo,\n limit: formBuilder.paginationModel.limit\n }}\n handlePaginationModel={handlePaginationModel}\n sharedPages={[]}\n resource=\"\"\n savePageConfiguration={() => { }}\n handlePageDelete={() => { }}\n enablePages={false}\n isPaginationDisplayed={true}\n />\n </section>\n );\n};\n\nexport default Forms;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium']);\nexport default checkboxClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from '../internal/SwitchBase';\nimport CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n indeterminate,\n color,\n size\n } = ownerState;\n const slots = {\n root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`, `size${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiCheckbox',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.color !== 'default' && {\n [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${checkboxClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n var _icon$props$fontSize, _indeterminateIcon$pr;\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCheckbox'\n });\n const {\n checkedIcon = defaultCheckedIcon,\n color = 'primary',\n icon: iconProp = defaultIcon,\n indeterminate = false,\n indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n inputProps,\n size = 'medium',\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const icon = indeterminate ? indeterminateIconProp : iconProp;\n const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n const ownerState = _extends({}, props, {\n color,\n indeterminate,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n type: \"checkbox\",\n inputProps: _extends({\n 'data-indeterminate': indeterminate\n }, inputProps),\n icon: /*#__PURE__*/React.cloneElement(icon, {\n fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n }),\n checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n }),\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * If `true`, the component is checked.\n */\n checked: PropTypes.bool,\n /**\n * The icon to display when the component is checked.\n * @default <CheckBoxIcon />\n */\n checkedIcon: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The default checked state. Use when the component is not controlled.\n */\n defaultChecked: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * The icon to display when the component is unchecked.\n * @default <CheckBoxOutlineBlankIcon />\n */\n icon: PropTypes.node,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * If `true`, the component appears indeterminate.\n * This does not set the native input element to indeterminate due\n * to inconsistent behavior across browsers.\n * However, we set a `data-indeterminate` attribute on the `input`.\n * @default false\n */\n indeterminate: PropTypes.bool,\n /**\n * The icon to display when the component is indeterminate.\n * @default <IndeterminateCheckBoxIcon />\n */\n indeterminateIcon: PropTypes.node,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * Callback fired when the state is changed.\n *\n * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n */\n onChange: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * `small` is equivalent to the dense checkbox styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the component. The DOM API casts this to a string.\n * The browser uses \"on\" as the default value.\n */\n value: PropTypes.any\n} : void 0;\nexport default Checkbox;","import { Box, Collapse, IconButton, TableCell, TableRow } from \"@mui/material\";\nimport { useEffect, useState } from \"react\";\nimport Typography from \"../../typography/typography\";\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ArrowDropUpIcon from '@mui/icons-material/ArrowDropUp';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslation } from \"react-i18next\";\nimport { formateValueByType } from \"../../../utils/common-utility\";\n\ninterface IRowProps {\n rowData: any;\n level: number;\n tableHeaders: any[];\n totalHeaders: any[];\n headers: any[];\n collapsAll: boolean;\n collapsLevel: number;\n isIncrese: boolean,\n data: any,\n rowPath: number[],\n selectedRowPaths: number[][],\n onCheckboxChange: (rowPath: number[], checked: boolean) => void;\n dataSlice: any[];\n dataIndex: number;\n enableCheckBox: boolean\n rowHeight?: string\n columnWidths?: { [key: string]: number }\n}\n\nexport function DynamicRow({\n rowData,\n level = 0,\n tableHeaders,\n totalHeaders,\n headers,\n collapsAll = false,\n collapsLevel = 0,\n isIncrese,\n data,\n rowPath,\n selectedRowPaths,\n onCheckboxChange,\n // dataSlice,\n enableCheckBox,\n rowHeight,\n columnWidths = {},\n}: IRowProps) {\n const [open, setOpen] = useState<boolean>(false);\n const {t}=useTranslation()\n\n useEffect(() => {\n if (isIncrese && collapsLevel > level) {\n setOpen(true);\n }\n if (!isIncrese && collapsLevel <= level + 2) {\n setOpen(false);\n }\n }, [collapsLevel, level, isIncrese]);\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen);\n };\n\n function getNestedValue(obj: any, path: any) {\n if (path?.name == '') {\n return ''\n }\n\n const formattedValue=path?.name.split('.').reduce((acc: any, key: any) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj) || (path?.name.split('.').reduce((acc: any, key: any) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj) == '0' ? '0' : '-');\n return formateValueByType({\n value: formattedValue,\n ...path\n })\n }\n\n const isChecked = selectedRowPaths.some(path => path.length === rowPath.length && path.every((v, i) => v === rowPath[i]));\n\n return (\n <>\n <TableRow sx={{ cursor: 'pointer', \n height: rowHeight,\n overflow: 'hidden',\n '&:not(:last-child) td': {\n // borderBottom: (data?.length > 1)? 'none' : '1px solid #E5E7EB',\n },\n // Ensure last row has bottom border\n '&:last-child td': {\n borderBottom: 'none' ,\n borderBottomColor: 'divider',\n borderTop: \"0\",\n },\n // '&:first-child td': {\n // borderTop: 'none !important' ,\n // }\n }}>\n {tableHeaders[level]?.enableCheckbox && (\n <TableCell\n className=\"dynamic-report-row\"\n sx={{\n paddingLeft: `8px`,\n wordWrap: 'break-word',\n width: '60px',\n minWidth: '60px',\n maxWidth: '60px',\n overflow: 'hidden',\n }}\n >\n <Checkbox\n checked={isChecked}\n onChange={e => onCheckboxChange(rowPath, e.target.checked)}\n onClick={e => e.stopPropagation()}\n />\n </TableCell>\n )}\n\n {tableHeaders[level].headers.map((header: any, index: number) => {\n if (header.joinWithLeft) return null;\n\n const cellIndex = tableHeaders[level].headers.slice(index + 1).findIndex((h: any) => !h.joinWithLeft);\n const cellsToMerge = cellIndex === -1\n ? tableHeaders[level].headers.slice(index + 1).length + 1\n : cellIndex + 1;\n const colSpan = header.mergeCells ? cellsToMerge : 1;\n\n // Calculate total width for merged cells\n let totalWidth = 0;\n const defaultWidth = 100;\n\n for (let i = index; i < index + colSpan && i < headers.length; i++) {\n const cellWidth = columnWidths[t(headers[i].label)] > 100 ? columnWidths[t(headers[i].label)] : 100;\n totalWidth += cellWidth || defaultWidth;\n }\n const showData=header?.showData ? header?.showData(open) : true;\n \n return (\n <TableCell\n key={index}\n className=\"dynamic-report-row\"\n colSpan={colSpan}\n sx={{\n paddingLeft: index === 0 ? `8px` : '16px',\n wordWrap: 'break-word',\n width: `${totalWidth}px`,\n minWidth: `${totalWidth}px`,\n maxWidth: `${totalWidth}px`,\n height: rowHeight,\n overflow: 'hidden'\n }}\n >\n {showData && header?.isCollaps ? (\n <Box\n onClick={handleToggle}\n sx={{\n paddingLeft: (level > index && index === 0) ? level * 2 : 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: header?.position ? header?.position : 'start',\n width: '100%',\n height: rowHeight,\n overflow: 'hidden'\n }}\n >\n <IconButton size=\"small\" sx={{p:0}}>\n {open ? <ArrowDropUpIcon sx={{ fontSize: '20px' }} /> : <ArrowDropDownIcon sx={{ fontSize: '20px' }} />}\n </IconButton>\n {header?.render ? header.render(getNestedValue(rowData, header), rowData, data) : (\n <Typography\n type=\"s4\"\n weight=\"medium\"\n color='theme.neutral.1000'\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }}\n >\n {getNestedValue(rowData, header)}\n </Typography>\n )}\n </Box>\n ) : (\n showData && <Box sx={{\n paddingLeft: (level > index && index === 0) ? level * 2 : 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: header?.position ? header?.position : 'start',\n width: '100%',\n height: rowHeight,\n overflow: 'hidden'\n }}>\n \n {header?.render ? header.render(getNestedValue(rowData, header), rowData, data) : (\n <Typography\n type=\"s4\"\n weight=\"normal\"\n color='theme.neutral.800'\n sx={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n }}\n >\n {getNestedValue(rowData, header)}\n </Typography>\n )}\n </Box>\n )}\n </TableCell>\n );\n })}\n </TableRow>\n\n {Array.isArray(rowData[tableHeaders[level + 1]?.rowKey]) && (\n <TableRow sx={{}}>\n <TableCell\n sx={{\n // border:level>0?'none':'none',\n border: '0 !important',\n borderBottom: \"0 !important\"\n }}\n style={{ padding: 0 }}\n colSpan={tableHeaders[level].headers.filter((h: any) => !h.joinWithLeft).length + (enableCheckBox ? 1 : 0)}\n >\n <Collapse in={open} timeout=\"auto\" unmountOnExit>\n {rowData[tableHeaders[level + 1]?.rowKey]?.map((itemData: any, idx: number, arr: any[]) => (\n <DynamicRow\n key={itemData.id || [...rowPath, idx].join('-')}\n rowData={itemData}\n level={level + 1}\n tableHeaders={tableHeaders}\n headers={headers}\n collapsAll={collapsAll}\n collapsLevel={collapsLevel}\n isIncrese={isIncrese}\n totalHeaders={totalHeaders}\n data={data}\n rowPath={[...rowPath, idx]}\n selectedRowPaths={selectedRowPaths}\n onCheckboxChange={onCheckboxChange}\n dataSlice={arr}\n dataIndex={idx}\n enableCheckBox={enableCheckBox}\n rowHeight={rowHeight}\n columnWidths={columnWidths}\n />\n ))}\n\n {rowData?.total && Object.keys(rowData?.total).length > 0 && totalHeaders && (\n <TableRow sx={{ backgroundColor: totalHeaders?.[0]?.bgColor || '#FAFAFA', }}>\n {enableCheckBox && (\n <TableCell sx={{\n width: '60px',\n minWidth: '60px',\n maxWidth: '60px'\n }} />\n )}\n\n {totalHeaders.map((header: any, index: number) => {\n if (header.joinWithLeft) return null;\n\n const cellsToMerge = totalHeaders.slice(index + 1).findIndex((h: any) => !h.joinWithLeft && h !== header) === -1\n ? totalHeaders.slice(index + 1)?.length + 1\n : totalHeaders.slice(index + 1).findIndex((h: any) => !h.joinWithLeft && h !== header) + 1;\n const colSpan = header.mergeCells ? cellsToMerge : 1;\n\n // Calculate merged width for totals\n let totalWidth = 0;\n for (let i = index; i < index + colSpan && i < headers.length; i++) {\n totalWidth += columnWidths[t(headers[i].label)] || 100;\n }\n\n return (\n <TableCell\n key={index}\n className=\"dynamic-report-row\"\n colSpan={colSpan}\n sx={{\n paddingLeft: index === 0 ? `${level * 24}px` : '16px',\n width: `${totalWidth}px`,\n minWidth: `${totalWidth}px`,\n maxWidth: `${totalWidth}px`,\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: header?.position || 'start', width: '100%' }}>\n {header?.render ? header?.render(getNestedValue(rowData, header), rowData) : (\n <Typography type=\"s4\" weight=\"bold\" color='theme.neutral.1000'>\n {getNestedValue(rowData?.total, header)}\n </Typography>\n )}\n </Box>\n </TableCell>\n );\n })}\n </TableRow>\n )}\n </Collapse>\n </TableCell>\n </TableRow>\n )}\n </>\n );\n}","import { primaryFont } from '../theme/typography';\nimport { toFixedWithNumbers } from './common';\nimport { formatDate } from './dateFormat';\n\nexport interface MeasurementConfig {\n fontSize: string;\n fontFamily: string;\n fontWeight: string | number;\n}\n\nexport const DEFAULT_MEASUREMENT_CONFIG: MeasurementConfig = {\n fontSize: '14px',\n fontFamily: primaryFont,\n fontWeight: '500'\n};\n\nlet canvasContext: CanvasRenderingContext2D | null = null;\n\nfunction getCanvasContext(): CanvasRenderingContext2D | null {\n if (canvasContext) {\n return canvasContext;\n }\n\n try {\n const canvas = document.createElement('canvas');\n canvasContext = canvas.getContext('2d');\n return canvasContext;\n } catch (error) {\n console.warn('Canvas context creation failed, falling back to DOM measurement:', error);\n return null;\n }\n}\n\nfunction measureTextWidthCanvas(text: string, config: MeasurementConfig): number {\n const context = getCanvasContext();\n\n if (!context) {\n console.warn('Canvas context not available, returning 0');\n return 0;\n }\n\n context.font = `${config.fontWeight} ${config.fontSize} ${config.fontFamily}`;\n\n const metrics = context.measureText(text);\n return metrics.width;\n}\n\nfunction measureTextWidthDOM(text: string, config: MeasurementConfig): number {\n try {\n const element = document.createElement('span');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n element.style.whiteSpace = 'nowrap';\n element.style.fontSize = config.fontSize;\n element.style.fontFamily = config.fontFamily;\n element.style.fontWeight = String(config.fontWeight);\n element.textContent = text;\n\n document.body.appendChild(element);\n const width = element.offsetWidth;\n document.body.removeChild(element);\n\n return width;\n } catch (error) {\n console.warn('DOM measurement failed:', error);\n return text.length * 8;\n }\n}\n\nexport function measureTextWidth(\n text: string,\n config: MeasurementConfig = DEFAULT_MEASUREMENT_CONFIG\n): number {\n if (!text || text.length === 0) {\n return 0;\n }\n\n const textStr = String(text);\n\n const context = getCanvasContext();\n if (context) {\n return measureTextWidthCanvas(textStr, config);\n }\n\n return measureTextWidthDOM(textStr, config);\n}\n\nexport function getFontConfig(element?: HTMLElement): MeasurementConfig {\n if (!element) {\n return DEFAULT_MEASUREMENT_CONFIG;\n }\n\n try {\n const computedStyle = window.getComputedStyle(element);\n\n return {\n fontSize: computedStyle.fontSize || DEFAULT_MEASUREMENT_CONFIG.fontSize,\n fontFamily: computedStyle.fontFamily || DEFAULT_MEASUREMENT_CONFIG.fontFamily,\n fontWeight: computedStyle.fontWeight || DEFAULT_MEASUREMENT_CONFIG.fontWeight\n };\n } catch (error) {\n console.warn('Failed to extract font config from element:', error);\n return DEFAULT_MEASUREMENT_CONFIG;\n }\n}\n\nexport function formatValueForMeasurement(value: any, type?: string): string {\n if (value === null || value === undefined) {\n return '-';\n }\n\n if (type === 'date' || value instanceof Date) {\n try {\n return new Date(value).toLocaleDateString();\n } catch {\n return String(value);\n }\n }\n\n if (type === 'number' || typeof value === 'number') {\n return String(value);\n }\n\n if (typeof value === 'object') {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n }\n\n return String(value);\n}\n\nexport function cleanupMeasurementContext(): void {\n canvasContext = null;\n}\n\nexport interface SampleConfig {\n maxRows: number;\n headers: any[];\n data: any[];\n tableHeaders: any[];\n}\n\nexport interface WidthConstraints {\n min: number;\n max?: number;\n padding: number;\n}\n\nexport interface WidthCalculationResult {\n [columnName: string]: number;\n}\n\nexport interface HeaderConfig {\n name: string;\n label: string;\n width?: number | string;\n enableSorting?: boolean;\n type?: 'date' | 'number' | 'string';\n render?: (value: any, row: any, data: any) => React.ReactNode;\n}\n\nexport function calculateColumnWidths(\n headers: HeaderConfig[],\n rowContentSamples: { [columnName: string]: string[] },\n measurementConfig: MeasurementConfig = DEFAULT_MEASUREMENT_CONFIG,\n constraints: WidthConstraints = { min: 80, padding: 24 },\n t: any\n): WidthCalculationResult {\n\n const calculatedWidths: WidthCalculationResult = {};\n\n headers.forEach((header) => {\n const label = t(header.label)\n if (header.width) {\n const numericWidth = typeof header.width === 'string'\n ? parseInt(header.width.replace(/[^\\d]/g, ''), 10)\n : header.width;\n\n calculatedWidths[label] = numericWidth;\n return;\n }\n\n const headerText = label;\n let headerWidth = measureTextWidth(headerText, measurementConfig);\n\n if (header.enableSorting) {\n headerWidth += 48;\n }\n\n let maxRowContentWidth = 0;\n const samples = rowContentSamples[label] || [];\n\n samples.forEach((content) => {\n const contentWidth = measureTextWidth(content, measurementConfig);\n maxRowContentWidth = Math.max(maxRowContentWidth, contentWidth);\n });\n // console.log(\"🚀 ~ calculateColumnWidths ~ maxRowContentWidth:\", maxRowContentWidth,headerWidth,label)\n // const isHeaderWidth=(headerWidth < 100 ? headerWidth + 24 : headerWidth >maxRowContentWidth)\n\n let calculatedWidth = Math.max(headerWidth < 100 ? headerWidth + 24 : headerWidth, maxRowContentWidth);\n\n const dynamicPadding = constraints.padding \n\n calculatedWidth += dynamicPadding;\n\n if (maxRowContentWidth > 10) {\n calculatedWidth = Math.max(constraints.min, calculatedWidth);\n } else {\n calculatedWidth = Math.max(60, calculatedWidth);\n }\n\n if (constraints.max) {\n calculatedWidth = Math.min(constraints.max, calculatedWidth);\n }\n\n calculatedWidths[label] = Math.round(calculatedWidth) > 100 ? Math.round(calculatedWidth) : 100;\n });\n\n return calculatedWidths\n}\n\nconst valueMapper = {\n 'amount': {\n format: toFixedWithNumbers\n },\n 'date': {\n format: formatDate\n },\n 'string': {\n format: (value: any) => value\n },\n 'toFixed':{\n format:(value:any)=>toFixedWithNumbers(value)\n }\n}\n\nfunction getNestedValue(obj: any, path: any): any {\n const type = path?.type || 'string';\n if (!path?.name || path?.name === '') {\n return '';\n }\n\n const value = path?.name.split('.').reduce(\n (acc: any, key: any) => (acc && acc[key] !== undefined ? acc[key] : undefined),\n obj\n );\n\n if (value === 0 || value === '0') {\n return '0';\n }\n\n return value !== undefined ? valueMapper[type]?.format(value) : '-';\n}\nexport function sampleRowContent(config: SampleConfig): { [columnName: string]: string[] } {\n const { maxRows, headers, data, tableHeaders, t } = config;\n const samples: { [columnName: string]: string[] } = {};\n\n headers.forEach((header) => {\n samples[t(header.label)] = [];\n });\n\n if (!data || !Array.isArray(data) || data.length === 0) {\n return samples;\n }\n\n let sampledCount = 0;\n const maxSamples = maxRows;\n\n function sampleRows(rows: any[], level: number = 0, /* parentRow?: any */) {\n if (!Array.isArray(rows) || sampledCount >= maxSamples) {\n return;\n }\n\n const levelHeaders = tableHeaders && tableHeaders[level] && tableHeaders[level].headers\n ? tableHeaders[level].headers\n : headers;\n\n for (let i = 0; i < rows.length && sampledCount < maxSamples; i++) {\n const row = rows[i];\n\n // Process all headers in the original headers array\n headers.forEach((header: any) => {\n const columnLabel = t(header.label);\n if (!samples[columnLabel]) {\n return;\n }\n\n // Check if this header belongs to the current level\n const headerInCurrentLevel = levelHeaders.find((lh: any) =>\n t(lh.label) === columnLabel\n );\n\n let content: string;\n\n if (headerInCurrentLevel) {\n // This header belongs to current level - get value from current row\n if (header.render && typeof header.render === 'function') {\n try {\n const rendered = header.render(getNestedValue(row, header), row, data);\n\n if (typeof rendered === 'string') {\n content = rendered;\n } else if (typeof rendered === 'number') {\n content = String(rendered);\n } else if (rendered && typeof rendered === 'object' && 'props' in rendered) {\n const props = (rendered as any).props;\n if (props && props.children) {\n content = String(props.children);\n } else {\n content = String(rendered);\n }\n } else {\n content = String(rendered);\n }\n } catch (error) {\n content = formatValueForMeasurement(getNestedValue(row, header), header.type);\n }\n } else {\n const value = getNestedValue(row, header);\n content = formatValueForMeasurement(value, header.type);\n }\n } else {\n // This header belongs to a parent level - use placeholder\n content = \"-\";\n }\n\n samples[columnLabel].push(content);\n });\n\n sampledCount++;\n\n // Recurse into nested data\n if (tableHeaders && tableHeaders[level + 1]) {\n const nextRowKey = tableHeaders[level + 1]?.rowKey;\n if (nextRowKey && row[nextRowKey] && Array.isArray(row[nextRowKey])) {\n sampleRows(row[nextRowKey], level + 1, row);\n }\n }\n }\n }\n\n sampleRows(data, 0);\n\n return samples;\n}\n\nexport function getCheckboxColumnWidth(): number {\n return 60;\n}","import React, { useEffect, useState, useRef } from \"react\";\nimport {\n\tTable,\n\tTableBody,\n\tTableCell,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n\tIconButton,\n\tBox,\n} from \"@mui/material\";\nimport Typography from '../../typography/typography';\nimport './dynamic-report.scss'\nimport { DynamicRow } from \"./dynamic-rows\";\nimport { useTranslation } from \"react-i18next\";\nimport { formateValueByType, renderEmptyRowsFallback } from \"../../../utils/common-utility\";\nimport SearchBar from \"../../search-bar/search-bar\";\nimport dayjs from \"dayjs\";\nimport Checkbox from '@mui/material/Checkbox';\nimport { ArrowDown } from \"../../icons\";\nimport { ArrowUp } from \"../../icons\";\nimport {\n\tcalculateColumnWidths,\n\tsampleRowContent,\n\tDEFAULT_MEASUREMENT_CONFIG,\n\tgetCheckboxColumnWidth\n} from \"../../../utils/text-measurement\";\n\ninterface IReportTableProps {\n\tdata: any[];\n\theaders: any[];\n\ttableHeaders: any[];\n\ttotalHeaders?: any[];\n\thandleSort?: (data: string, direction: string) => void;\n\tcollapsLevel?: number,\n\tenableSearch?: boolean,\n\theaderHeight?: string,\n\tisIncrese?: boolean,\n\tonSelectionChange?: (selectedData: any[]) => void;\n\tenableCheckbox?: boolean;\n\tafterHeader?: React.ReactNode | (() => React.ReactNode);\n\ttotalKey?: string\n\trowHeight?: string\n}\n\n// Updated DynamicRow interface and component in separate file\nexport interface IDynamicRowProps {\n\trowData: any;\n\tlevel: number;\n\ttableHeaders: any[];\n\ttotalHeaders: any[];\n\theaders: any[];\n\tcollapsAll: boolean;\n\tcollapsLevel: number;\n\tisIncrese: boolean,\n\tdata: any,\n\trowPath: number[],\n\tselectedRowPaths: number[][],\n\tonCheckboxChange: (rowPath: number[], checked: boolean) => void;\n\tdataSlice: any[];\n\tdataIndex: number;\n\tenableCheckBox: boolean\n\trowHeight?: string\n\tcolumnWidths?: { [key: string]: number }\n}\n\nexport function ReportTable({\n\theaders,\n\tdata,\n\ttableHeaders,\n\ttotalHeaders = [],\n\thandleSort,\n\tcollapsLevel = 0,\n\tisIncrese,\n\tenableSearch = true,\n\theaderHeight = '16px',\n\tonSelectionChange,\n\tenableCheckbox = false,\n\tafterHeader,\n\ttotalKey = 'total',\n\trowHeight = 'auto'\n}: IReportTableProps) {\n\n\ttype HeaderType = {\n\t\ttype?: string;\n\t\t[key: string]: any;\n\t};\n\tconst [filter, setFilter] = useState(null)\n\tconst [baseData, setBaseData] = useState<any>(null);\n\tconst [formatedData, setFormatedData] = useState<any>(null);\n\tconst [searchQueries, setSearchQueries] = useState<any>({});\n\tconst { t } = useTranslation()\n\tconst [selectedRowPaths, setSelectedRowPaths] = useState<number[][]>([]);\n\tconst [columnWidths, setColumnWidths] = useState<{ [key: string]: number }>({});\n\tconst [resizingColumn, setResizingColumn] = useState<string | null>(null);\n\tconst resizeStartX = useRef<number>(0);\n\tconst resizeStartWidth = useRef<number>(0);\n\tconst headerRefs = useRef<{ [key: string]: HTMLElement | null }>({});\n\tconst [isInitialized, setIsInitialized] = useState(false);\n\tconst [isSorting, setIsSorting] = useState(false);\n\n\tfunction getNestedValue(obj: any, path: any) {\n\t\tif (path?.name == '') {\n\t\t\treturn ''\n\t\t}\n\n\t\tconst formattedValue = path?.name?.split('.').reduce((acc: any, key: any) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj) || (path?.name.split('.').reduce((acc: any, key: any) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj) == '0' ? '0' : '-');\n\t\treturn formateValueByType({\n\t\t\tvalue: formattedValue,\n\t\t\t...path\n\t\t})\n\t}\n\t// Initialize column widths based on content\n\tuseEffect(() => {\n\t\tif (!isInitialized && data && headers.length > 0 && !isSorting) {\n\t\t\t// Sample row content for width calculation\n\t\t\tconst rowContentSamples = sampleRowContent({\n\t\t\t\tmaxRows: 9999,\n\t\t\t\theaders,\n\t\t\t\tdata: Array.isArray(data) ? data : data?.[tableHeaders[0]?.rowKey] || [],\n\t\t\t\ttableHeaders,\n\t\t\t\tt,\n\t\t\t});\n\n\t\t\t// Calculate optimal widths based on header and content\n\t\t\tconst calculatedWidths = calculateColumnWidths(\n\t\t\t\theaders,\n\t\t\t\trowContentSamples,\n\t\t\t\tDEFAULT_MEASUREMENT_CONFIG,\n\t\t\t\t{ min: 100, padding: 32, max: 400 },\n\t\t\t\tt\n\t\t\t);\n\t\t\tsetColumnWidths(calculatedWidths);\n\t\t\tsetIsInitialized(true);\n\t\t}\n\t\t//eslint-disable-next-line\n\t}, [data, headers, isInitialized, isSorting, tableHeaders]);\n\t// useEffect(() => {\n\t// if (!isInitialized && data && headers.length > 0) {\n\t// const initialWidths: { [key: string]: number } = {};\n\n\t// headers.forEach((header) => {\n\t// // Check if width is already specified in header config\n\t// if (header.width) {\n\t// const numericWidth = typeof header.width === 'string'\n\t// ? parseInt(header.width.replace(/[^\\d]/g, ''))\n\t// : header.width;\n\t// initialWidths[header.name] = numericWidth;\n\t// } else {\n\t// // Calculate width based on header ref if available\n\t// const headerElement = headerRefs.current[header.name];\n\t// if (headerElement) {\n\t// const contentWidth = headerElement.scrollWidth;\n\t// // Add some padding (e.g., 48px for icons and padding)\n\t// initialWidths[header.name] = Math.max(100, contentWidth + 48);\n\t// } else {\n\t// // Default width\n\t// initialWidths[header.name] = 100;\n\t// }\n\t// }\n\t// });\n\t// setColumnWidths(initialWidths);\n\t// setIsInitialized(true);\n\t// }\n\t// }, [data, headers, isInitialized]);\n\n\tfunction getAllRowPaths(data: any, tableHeaders: any[], rowKey: string, currentPath: number[] = [], level: number = 0): number[][] {\n\t\tif (!Array.isArray(data)) return [];\n\t\tlet paths: number[][] = [];\n\t\tdata.forEach((row: any, idx: number) => {\n\t\t\tconst path = [...currentPath, idx];\n\t\t\tif (tableHeaders[level]?.enableCheckbox) {\n\t\t\t\tpaths.push(path);\n\t\t\t}\n\t\t\tconst nextLevel = level + 1;\n\t\t\tconst nextRowKey = tableHeaders[nextLevel]?.rowKey;\n\t\t\tif (nextRowKey && Array.isArray(row[nextRowKey])) {\n\t\t\t\tpaths = paths.concat(getAllRowPaths(row[nextRowKey], tableHeaders, nextRowKey, path, nextLevel));\n\t\t\t}\n\t\t});\n\t\treturn paths;\n\t}\n\n\tconst handleCheckboxChange = (rowPath: number[], checked: boolean) => {\n\t\tsetSelectedRowPaths(prev => {\n\t\t\tconst next = checked\n\t\t\t\t? [...prev, rowPath]\n\t\t\t\t: prev.filter(path => !(path.length === rowPath.length && path.every((v, i) => v === rowPath[i])));\n\t\t\treturn next;\n\t\t});\n\t};\n\n\tconst handleHeaderCheckboxChange = (checked: boolean) => {\n\t\tconst allPaths = getAllRowPaths(\n\t\t\tArray.isArray(formatedData) ? formatedData : formatedData?.[tableHeaders[0]?.rowKey],\n\t\t\ttableHeaders,\n\t\t\ttableHeaders[0]?.rowKey\n\t\t);\n\t\tif (checked) {\n\t\t\tsetSelectedRowPaths(allPaths);\n\t\t} else {\n\t\t\tsetSelectedRowPaths([]);\n\t\t}\n\t};\n\n\tconst allRowPaths = getAllRowPaths(\n\t\tArray.isArray(formatedData) ? formatedData : formatedData?.[tableHeaders[0]?.rowKey],\n\t\ttableHeaders,\n\t\ttableHeaders[0]?.rowKey\n\t);\n\tconst allSelected = allRowPaths.length > 0 && allRowPaths.every(path =>\n\t\tselectedRowPaths.some(sel => sel.length === path.length && sel.every((v, i) => v === path[i]))\n\t);\n\tconst someSelected = allRowPaths.some(path =>\n\t\tselectedRowPaths.some(sel => sel.length === path.length && sel.every((v, i) => v === path[i]))\n\t);\n\n\tfunction searchReportNestedByKey(\n\t\tobj: any,\n\t\tquery: string,\n\t\tkeysToSearch: string | string[] | null,\n\t\theader: HeaderType\n\t): boolean {\n\t\tif (obj == null) return false;\n\t\tconst queryLower = query.toLowerCase();\n\t\tif (typeof keysToSearch === 'string') {\n\t\t\tkeysToSearch = [keysToSearch];\n\t\t}\n\t\tif (header?.type == 'date') {\n\t\t\treturn dayjs(obj).format('DD-MM-YYYY').includes(queryLower);\n\t\t}\n\n\t\tif (typeof obj === 'string') {\n\t\t\treturn obj.toLowerCase().includes(queryLower);\n\t\t}\n\n\t\tif (typeof obj === 'object') {\n\t\t\tif (Array.isArray(obj)) {\n\t\t\t\treturn obj.some(item => searchReportNestedByKey(item, queryLower, keysToSearch, header));\n\t\t\t}\n\t\t\tif (keysToSearch) {\n\t\t\t\treturn keysToSearch.some(key => {\n\t\t\t\t\tconst val = obj[key];\n\t\t\t\t\tif (val != null) {\n\t\t\t\t\t\treturn typeof val === 'string' ? val.toLowerCase().includes(queryLower) : searchReportNestedByKey(val, queryLower, null, header);\n\t\t\t\t\t}\n\t\t\t\t\tconst nestedObj = Object.keys(obj).filter(k => typeof obj[k] === 'object' && obj[k] !== null);\n\t\t\t\t\tif (nestedObj.length > 0) {\n\t\t\t\t\t\treturn nestedObj.some(n => searchReportNestedByKey(obj[n], queryLower, null, header));\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn Object.values(obj).some(val => searchReportNestedByKey(val, queryLower, null, header));\n\t\t\t}\n\t\t}\n\n\t\treturn String(obj).toLowerCase().includes(queryLower);\n\t}\n\n\tuseEffect(() => {\n\t\tlet filteredData = Array.isArray(baseData) ? baseData : baseData?.[tableHeaders[0]?.rowKey];\n\t\tObject.keys(searchQueries)?.forEach(key => {\n\t\t\tconst query = searchQueries?.[key]?.query?.toLowerCase();\n\t\t\tif (query) {\n\t\t\t\tfilteredData = filteredData?.filter((item: any) => searchReportNestedByKey(item, query, key, searchQueries?.[key]?.header));\n\t\t\t}\n\t\t});\n\t\tsetFormatedData(Array.isArray(baseData) ? filteredData : { ...baseData, [tableHeaders[0]?.rowKey]: filteredData });\n\t\t//eslint-disable-next-line\n\t}, [searchQueries, baseData]);\n\n\tconst handleSearch = (searchQuery: string, key: string, header: any) => {\n\t\tsetSearchQueries((prev: any) => ({\n\t\t\t...prev,\n\t\t\t[key]: {\n\t\t\t\tquery: searchQuery,\n\t\t\t\theader\n\t\t\t},\n\t\t}));\n\t};\n\n\t// Column resize handlers\n\tconst handleMouseDown = (e: React.MouseEvent, columnName: string) => {\n\t\tconsole.log(\"columnName\", columnName)\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tsetResizingColumn(columnName);\n\t\tresizeStartX.current = e.clientX;\n\t\tresizeStartWidth.current = columnWidths[columnName] || 100;\n\t};\n\n\tconst handleMouseMove = (e: MouseEvent) => {\n\t\tif (!resizingColumn) return;\n\t\tconst diff = e.clientX - resizeStartX.current;\n\t\tconst newWidth = Math.max(100, resizeStartWidth.current + diff);\n\t\tsetColumnWidths(prev => ({\n\t\t\t...prev,\n\t\t\t[resizingColumn]: newWidth\n\t\t}));\n\t};\n\n\tconst handleMouseUp = () => {\n\t\tsetResizingColumn(null);\n\t};\n\n\tuseEffect(() => {\n\t\tif (resizingColumn) {\n\t\t\tdocument.addEventListener('mousemove', handleMouseMove);\n\t\t\tdocument.addEventListener('mouseup', handleMouseUp);\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\t\t\tdocument.removeEventListener('mouseup', handleMouseUp);\n\t\t\t};\n\t\t}\n\t\t//eslint-disable-next-line\n\t}, [resizingColumn]);\n\n\tuseEffect(() => {\n\t\tsetBaseData(data);\n\t\tsetFormatedData(data);\n\t\tsetIsInitialized(false)\n\t\t// setIsSorting(false)\n\t}, [data]);\n\n\tuseEffect(() => {\n\t\treturn () => setIsInitialized(false)\n\t}, [])\n\n\tfunction getDataByPath(data: any, tableHeaders: any[], path: number[]): any {\n\t\tlet current = Array.isArray(data) ? data : data?.[tableHeaders[0]?.rowKey];\n\t\tlet obj = null;\n\t\tfor (let i = 0; i < path.length; i++) {\n\t\t\tif (!current || !Array.isArray(current)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tobj = current[path[i]];\n\t\t\tif (i < path.length - 1) {\n\t\t\t\tconst nextLevel = i + 1;\n\t\t\t\tconst nextRowKey = tableHeaders[nextLevel]?.rowKey;\n\t\t\t\tcurrent = obj?.[nextRowKey];\n\t\t\t}\n\t\t}\n\t\treturn obj;\n\t}\n\n\tuseEffect(() => {\n\t\tif (onSelectionChange) {\n\t\t\tconst filteredPaths = selectedRowPaths.filter(path => {\n\t\t\t\tconst level = path.length - 1;\n\t\t\t\treturn tableHeaders[level]?.enableCheckbox;\n\t\t\t});\n\t\t\tconst selectedData = filteredPaths\n\t\t\t\t.map(path => getDataByPath(formatedData, tableHeaders, path))\n\t\t\t\t.filter(Boolean);\n\t\t\tonSelectionChange(selectedData);\n\t\t}\n\t\t// eslint-disable-next-line\n\t}, [selectedRowPaths, formatedData]);\n\n\t// Check if we should show totals\n\tconst showTotals = formatedData?.[totalKey] &&\n\t\t!(formatedData?.length === 0 || formatedData[tableHeaders[0]?.rowKey]?.length === 0);\n\n\treturn (\n\t\t<TableContainer sx={{\n\t\t\twidth: '100%',\n\t\t\tmaxHeight: '600px',\n\t\t\toverflowX: 'auto',\n\t\t\tbackgroundColor: 'white',\n\t\t\tdisplay: 'block',\n\t\t\tposition: 'relative'\n\t\t}}\n\t\t\tclassName=\"dynamic-reports\"\n\t\t>\n\t\t\t<Table\n\t\t\t\taria-label=\"collapsible table\"\n\t\t\t\tsx={{\n\t\t\t\t\tborderCollapse: \"collapse\",\n\t\t\t\t\twidth: \"max-content\",\n\t\t\t\t\ttableLayout: 'fixed',\n\t\t\t\t\tmarginBottom: showTotals ? '0px' : '10px'\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<TableHead sx={{ position: 'sticky', top: 0, zIndex: 10, backgroundColor: 'white' }}>\n\t\t\t\t\t<TableRow sx={{ zIndex: 11, backgroundColor: 'white' }}>\n\t\t\t\t\t\t{enableCheckbox && (\n\t\t\t\t\t\t\t<TableCell sx={{\n\t\t\t\t\t\t\t\twidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\tminWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\tmaxWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\theight: headerHeight,\n\t\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t\t\tposition: 'sticky',\n\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\tbackgroundColor: 'white',\n\t\t\t\t\t\t\t\tzIndex: 9999\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\t\t\tchecked={allSelected}\n\t\t\t\t\t\t\t\t\tindeterminate={!allSelected && someSelected}\n\t\t\t\t\t\t\t\t\tonChange={e => handleHeaderCheckboxChange(e.target.checked)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{headers.map((obj, index) => {\n\t\t\t\t\t\t\tconst enableSorting = obj?.enableSorting ?? true;\n\t\t\t\t\t\t\tconst width = columnWidths[t(obj.label)] || 100;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName=\"dynamic-report-header\"\n\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\twidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\theight: headerHeight,\n\t\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t\t\t\t\toverflow: 'hidden'\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\tref={(el) => headerRefs.current[obj.name] = el}\n\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\t\t\t\t\theight: headerHeight,\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\twidth: 'calc(100% - 8px)',\n\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\t\t\t\tpaddingRight: '0px'\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\t\t\t\ttype=\"s3\"\n\t\t\t\t\t\t\t\t\t\t\tweight=\"medium\"\n\t\t\t\t\t\t\t\t\t\t\tcolor='theme.primary'\n\t\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\t\t\t\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 'unset'\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{typeof obj?.label === 'string' ? t(obj?.label) : obj?.label}\n\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t{enableSorting && (\n\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\t\t\tpadding: '4px 0px'\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(/* e */) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// e.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsSorting(true)\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetFilter(filter == obj.name ? null : obj.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\thandleSort && handleSort(obj.name, filter == obj.name ? 'asc' : 'desc');\n\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{filter == obj.name ? <ArrowUp fontSize='small' /> : <ArrowDown fontSize='small' />}\n\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t{/* Resize Handle */}\n\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\tclassName=\"dynamic-report-resize-handle\"\n\t\t\t\t\t\t\t\t\t\tonMouseDown={(e) => handleMouseDown(e, t(obj.label))}\n\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\tright: 0,\n\t\t\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\t\t\twidth: '16px',\n\t\t\t\t\t\t\t\t\t\t\tcursor: 'col-resize',\n\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\t\t\t\t\t\t\t'&::before, &::after': {\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'&::before': {\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: '\"\"',\n\t\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\t\tleft: '2px',\n\t\t\t\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '2px',\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'background-color 0.2s ease'\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t'&::after': {\n\t\t\t\t\t\t\t\t\t\t\t\tcontent: '\"\"',\n\t\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\t\t\tright: '2px',\n\t\t\t\t\t\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tbottom: 0,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '2px',\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'background-color 0.2s ease'\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tzIndex: 2,\n\t\t\t\t\t\t\t\t\t\t\tuserSelect: 'none'\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</TableRow>\n\t\t\t\t\t{enableSearch && (\n\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t{enableCheckbox && (\n\t\t\t\t\t\t\t\t<TableCell sx={{\n\t\t\t\t\t\t\t\t\twidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\tminWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\tmaxWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\theight: headerHeight,\n\t\t\t\t\t\t\t\t\tpadding: '0px',\n\t\t\t\t\t\t\t\t\tposition: 'sticky',\n\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\tbackgroundColor: 'white',\n\t\t\t\t\t\t\t\t\tzIndex: 9999\n\t\t\t\t\t\t\t\t}} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{headers.map((obj, index) => {\n\t\t\t\t\t\t\t\tconst width = columnWidths[t(obj.label)] || 50;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\tkey={obj?.label}\n\t\t\t\t\t\t\t\t\t\tclassName=\"dynamic-report-search\"\n\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\twidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\t\tminWidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\t\tmaxWidth: `${width}px`,\n\t\t\t\t\t\t\t\t\t\t\tpadding: '8px'\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<SearchBar sx={{\n\t\t\t\t\t\t\t\t\t\t\tpadding: '4px !important',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tmarginLeft: '0.5rem !important',\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={(e) => handleSearch(e, obj.name, headers[index])} />\n\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Move afterHeader inside TableHead */}\n\t\t\t\t\t{afterHeader && (\n\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\tcolSpan={headers.length + (enableCheckbox ? 1 : 0)}\n\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t\t\tborderBottom: 'none',\n\t\t\t\t\t\t\t\t\tbackgroundColor: 'white',\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{React.createElement(afterHeader, {\n\t\t\t\t\t\t\t\t\tcolumnWidths,\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t)}\n\t\t\t\t</TableHead>\n\n\n\n\t\t\t\t{formatedData && (\n\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t{Array.isArray(formatedData) ? formatedData?.map((row, index, arr) => (\n\t\t\t\t\t\t\t<DynamicRow\n\t\t\t\t\t\t\t\tkey={row.id || index}\n\t\t\t\t\t\t\t\tlevel={0}\n\t\t\t\t\t\t\t\trowPath={[index]}\n\t\t\t\t\t\t\t\trowData={row}\n\t\t\t\t\t\t\t\ttableHeaders={tableHeaders}\n\t\t\t\t\t\t\t\ttotalHeaders={totalHeaders}\n\t\t\t\t\t\t\t\theaders={headers}\n\t\t\t\t\t\t\t\tcollapsAll={collapsLevel >= index + 1}\n\t\t\t\t\t\t\t\tcollapsLevel={collapsLevel}\n\t\t\t\t\t\t\t\tisIncrese={!!isIncrese}\n\t\t\t\t\t\t\t\tdata={formatedData}\n\t\t\t\t\t\t\t\tselectedRowPaths={selectedRowPaths}\n\t\t\t\t\t\t\t\tonCheckboxChange={handleCheckboxChange}\n\t\t\t\t\t\t\t\tdataSlice={arr}\n\t\t\t\t\t\t\t\tdataIndex={index}\n\t\t\t\t\t\t\t\tenableCheckBox={enableCheckbox}\n\t\t\t\t\t\t\t\trowHeight={rowHeight}\n\t\t\t\t\t\t\t\tcolumnWidths={columnWidths}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)) :\n\t\t\t\t\t\t\ttableHeaders[0]?.rowKey && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{formatedData[tableHeaders[0]?.rowKey]?.map((row: any, index: number, arr: any[]) => (\n\t\t\t\t\t\t\t\t\t\t<DynamicRow\n\t\t\t\t\t\t\t\t\t\t\tkey={row.id || index}\n\t\t\t\t\t\t\t\t\t\t\tlevel={0}\n\t\t\t\t\t\t\t\t\t\t\trowPath={[index]}\n\t\t\t\t\t\t\t\t\t\t\trowData={row}\n\t\t\t\t\t\t\t\t\t\t\ttableHeaders={tableHeaders}\n\t\t\t\t\t\t\t\t\t\t\ttotalHeaders={totalHeaders}\n\t\t\t\t\t\t\t\t\t\t\theaders={headers}\n\t\t\t\t\t\t\t\t\t\t\tcollapsAll={collapsLevel >= index + 1}\n\t\t\t\t\t\t\t\t\t\t\tcollapsLevel={collapsLevel}\n\t\t\t\t\t\t\t\t\t\t\tisIncrese={!!isIncrese}\n\t\t\t\t\t\t\t\t\t\t\tdata={formatedData}\n\t\t\t\t\t\t\t\t\t\t\tselectedRowPaths={selectedRowPaths}\n\t\t\t\t\t\t\t\t\t\t\tonCheckboxChange={handleCheckboxChange}\n\t\t\t\t\t\t\t\t\t\t\tdataSlice={arr}\n\t\t\t\t\t\t\t\t\t\t\tdataIndex={index}\n\t\t\t\t\t\t\t\t\t\t\tenableCheckBox={enableCheckbox}\n\t\t\t\t\t\t\t\t\t\t\trowHeight={rowHeight}\n\t\t\t\t\t\t\t\t\t\t\tcolumnWidths={columnWidths}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t</TableBody>\n\t\t\t\t)}\n\t\t\t</Table>\n\n\t\t\t{/* Fixed Totals Row */}\n\t\t\t{showTotals && (\n\t\t\t\t<Box\n\t\t\t\t\tsx={{\n\t\t\t\t\t\t// position: 'sticky',\n\t\t\t\t\t\tbottom: '-2px',\n\t\t\t\t\t\t// left: 0,\n\t\t\t\t\t\twidth: 'max-content',\n\t\t\t\t\t\tbackgroundColor: totalHeaders?.[0]?.bgColor || '#FAFAFA',\n\t\t\t\t\t\tborderTop: '1px solid #e0e0e0',\n\t\t\t\t\t\t// zIndex: 9\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<Table\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\twidth: \"max-content\",\n\t\t\t\t\t\t\ttableLayout: 'fixed',\n\t\t\t\t\t\t\tmarginBottom: 0\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TableBody>\n\t\t\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t\t\t{enableCheckbox && (\n\t\t\t\t\t\t\t\t\t<TableCell sx={{\n\t\t\t\t\t\t\t\t\t\twidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\t\tminWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\t\tmaxWidth: `${getCheckboxColumnWidth()}px`,\n\t\t\t\t\t\t\t\t\t\tpadding: '8px',\n\t\t\t\t\t\t\t\t\t\tposition: 'sticky',\n\t\t\t\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: totalHeaders?.[0]?.bgColor || '#FAFAFA',\n\t\t\t\t\t\t\t\t\t\tzIndex: 10,\n\t\t\t\t\t\t\t\t\t\tborderBottom: 'none'\n\t\t\t\t\t\t\t\t\t}} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{totalHeaders?.map((header, index) => {\n\t\t\t\t\t\t\t\t\tif (header.joinWithLeft) return null;\n\t\t\t\t\t\t\t\t\tconst cellsToMerge = totalHeaders.slice(index).findIndex((h: any) => !h.joinWithLeft && h !== header) == -1 ? totalHeaders.slice(index)?.length : totalHeaders.slice(index).findIndex((h: any) => !h.joinWithLeft && h !== header);\n\t\t\t\t\t\t\t\t\tconst colSpan = header.mergeCells ? cellsToMerge || 1 : 1;\n\n\t\t\t\t\t\t\t\t\t// Calculate merged width\n\t\t\t\t\t\t\t\t\tlet totalWidth = 0;\n\t\t\t\t\t\t\t\t\tfor (let i = index; i < index + colSpan && i < headers.length; i++) {\n\t\t\t\t\t\t\t\t\t\ttotalWidth += columnWidths[t(headers[i].label)] || 100;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<TableCell\n\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"dynamic-report-row\"\n\t\t\t\t\t\t\t\t\t\t\tcolSpan={colSpan}\n\t\t\t\t\t\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\t\t\t\t\t\tpaddingLeft: '8px',\n\t\t\t\t\t\t\t\t\t\t\t\twidth: `${totalWidth}px`,\n\t\t\t\t\t\t\t\t\t\t\t\tminWidth: `${totalWidth}px`,\n\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth: `${totalWidth}px`,\n\t\t\t\t\t\t\t\t\t\t\t\tborderBottom: 'none'\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<Box sx={{\n\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\t\t\tjustifyContent: `${header?.position ? header?.position : 'start'}`,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%'\n\t\t\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t\t\t\t{header?.render ? header.render(formatedData?.[totalKey][header.name], formatedData) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Typography type=\"s4\" weight=\"bold\" color='theme.neutral.1000'>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getNestedValue(formatedData?.[totalKey], header)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t\t</TableCell>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t</TableBody>\n\t\t\t\t\t</Table>\n\t\t\t\t</Box>\n\t\t\t)}\n\n\t\t\t{(data?.length === 0 || data?.[tableHeaders[0]?.rowKey]?.length === 0) && renderEmptyRowsFallback(t('common.noData'))}\n\t\t</TableContainer>\n\t);\n}\n\nexport default ReportTable","import { useCallback } from \"react\";\n\nexport const useUomFieldUpdater = ({\n fieldMapping,\n sourceData,\n conversation_factor,\n fieldPrefix = 'item_entries',\n setValue,\n shouldUpdate = true,\n active_location,\n}: {\n fieldMapping: Record<string, string>;\n sourceData: any;\n conversation_factor?: number | string;\n fieldPrefix: string;\n setValue: any;\n shouldUpdate: boolean;\n active_location?: any;\n}) => {\n\n return useCallback(() => {\n if (!shouldUpdate || !sourceData) return;\n\n Object.entries(fieldMapping).forEach(([sourceKey, targetKey]) => {\n \n const sourceValue = sourceData[sourceKey];\n const factor = Number(conversation_factor) || 1;\n\n const fieldPath = fieldPrefix\n ? `${fieldPrefix}.${targetKey}`\n : targetKey;\n \n let convertedValue;\n\n // If active_location is null, set value to 0\n if (active_location === null) {\n convertedValue = 0;\n } else if (active_location && typeof active_location === 'object' && sourceData?.location_wise_quantity) {\n // Find location from array where active_location.id = location_id\n const location_quantity = sourceData.location_wise_quantity.find((item: any) => item.location_id === active_location.id);\n if (location_quantity) {\n // Use location-specific values\n switch(sourceKey) {\n case 'total_on_hand_quantity':\n convertedValue = (location_quantity.total_available_quantity - location_quantity.total_reserved_quantity) / factor;\n break;\n case 'total_available_quantity':\n convertedValue = location_quantity.total_available_quantity / factor;\n break;\n case 'total_committed_quantity':\n convertedValue = location_quantity.total_committed_quantity / factor;\n break;\n default:\n convertedValue = (sourceKey == 'sales_price' || sourceKey == 'rental_base_price' || sourceKey == 'cost') \n ? factor !== 0 ? (Number(sourceValue) * factor) || 0 : 0 \n : factor !== 0 ? (Number(location_quantity[sourceKey]) / factor) || 0 : 0;\n }\n } else {\n // Location not found, use 0\n convertedValue = 0;\n }\n } else {\n // Default conversion logic\n convertedValue = (sourceKey == 'sales_price' || sourceKey == 'rental_base_price' || sourceKey == 'cost') \n ? factor !== 0 ? (Number(sourceValue) * factor) || 0 : 0 \n : factor !== 0 ? (Number(sourceValue) / factor) || 0 : 0;\n }\n\n setValue(fieldPath, convertedValue);\n });\n }, [fieldMapping, sourceData, conversation_factor, fieldPrefix, setValue, shouldUpdate, active_location]);\n};\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState, useMemo } from 'react';\nimport DynamicSearchSelect from '../form-control/form-builder/form-builder-element/dynamic-select';\nimport { useUomFieldUpdater } from '../../hooks/useUomFieldUpdater';\nimport { useFormContext } from 'react-hook-form';\n\ninterface UomFieldWrapperProps {\n label: string;\n name?: string;\n placeholder?: string;\n fieldArrayName?: string;\n required?: boolean;\n is_loading?: boolean;\n disabled?: boolean;\n selectedItem: any;\n selectedUom?: any;\n fieldMapping?: Record<string, string>;\n customeFilter?: Record<string, any>;\n getSelectedData?: (data: any, name: string) => void;\n fieldPrefix?: string;\n setValue?: any;\n control?: any;\n isConversationFactor?: boolean;\n active_location?: any;\n}\n\nconst UomFieldWrapper: React.FC<UomFieldWrapperProps> = ({\n label,\n name = 'uom_id',\n placeholder,\n fieldArrayName,\n required = false,\n is_loading = false,\n disabled = false,\n selectedItem,\n fieldMapping = {\n 'total_on_hand_quantity': 'on_hand_quantity',\n 'total_available_quantity': 'available_quantity',\n 'total_committed_quantity': 'committed_quantity',\n },\n customeFilter,\n getSelectedData,\n fieldPrefix,\n setValue,\n control,\n isConversationFactor = true,\n active_location\n}) => {\n // const selectedUom = useMemo(() => getValues(`${fieldArrayName}.${name}`), [getValues(`${fieldArrayName}.${name}`)])\n\n const [uomDetails, setUomDetails] = useState<any>(null);\n const formContext = useFormContext()\n const {\n control: contextControl,\n setValue: contextSetValue,\n } = formContext || {};\n\n const effectiveFieldPrefix = fieldPrefix !== undefined ? fieldPrefix : fieldArrayName || '';\n const finalFieldMapping = useMemo(() => fieldMapping,\n //eslint-disable-next-line\n [JSON.stringify(fieldMapping)]);\n\n const handleUomChange = useUomFieldUpdater({\n fieldMapping: finalFieldMapping,\n sourceData: selectedItem,\n conversation_factor: uomDetails?.conversation_factor,\n fieldPrefix: effectiveFieldPrefix,\n setValue: setValue || contextSetValue,\n control: control || contextControl,\n active_location: active_location,\n // shouldUpdate: !!selectedUom\n });\n\n useEffect(() => {\n if (!isConversationFactor) return;\n handleUomChange();\n // eslint-disable-next-line\n }, [handleUomChange, isConversationFactor]);\n\n const handleUomSelect = (data: any, name: string) => {\n setUomDetails(data);\n getSelectedData?.(data, name);\n };\n\n const effectiveCustomeFilter = customeFilter || {\n '&template_id.eq': selectedItem?.unit_of_measurement || 0\n };\n\n return (\n <DynamicSearchSelect\n label={label}\n name={name}\n placeholder={placeholder || ''}\n fieldArrayName={fieldArrayName || ''}\n formControl={control}\n required={required}\n is_loading={is_loading}\n disabled={disabled}\n apiType='uom'\n customeFilter={effectiveCustomeFilter}\n getSelectedData={handleUomSelect}\n />\n );\n};\n\nexport default UomFieldWrapper;\n"],"names":["o","jsxs","Fragment","jsx","CloseIcon","AddIcon","formatDistance","formatRelative","ordinalNumber","valueCallback","start","end","React","DatePicker","_excluded","TextareaAutosize","_jsxs","_jsx","_extends","useUtilityClasses","styles","Timeline","Typography","TimelineContent","TimelineItem","TimelineSeparator","TimelineConnector","TimelineDot","styled","MUITextField","ActivityTag","Accordion","formatAxisValue","formatBarLabel","formatHover","truncateLabel","d","PIE_COLORS","DonutChart","_a","_","GroupedBarChart","validationSchema","yupResolver","SelectedItems","data","users","error","ChipOrPlaceholder","Checkbox","Box","logo","theme","Close","location","useTheme","task","ReportButtons","handleCompareDateRange","Menu","KeyboardArrowDownIcon","FilterIcon","MuiButton","Paper","Collapse","isFragment","ButtonBase","AccordionSummary","AccordionDetails","_interopRequireDefault","require$$0","default_1","_createSvgIcon","require$$1","_jsxRuntime","require$$2","_setPrototypeOf","p","ResizeObserver","handleChange","addEventListeners","observerCallback","_loop","element","shouldCloseWhenClickedOutside","SideBase","BoundsOffsets","side","Bounds","Placement","PlacementCenter","Placements","primary","secondary","placement","SubjectsBounds","window","handlePositioning","Status","columns","ExpandMoreIcon","Chip","RadioButtonCheckedIcon","col","row","yup","_b","valueKey","_c","TextField","path","table","isCreatingRow","isEditingRow","Tooltip","Add","CheckBoxIcon","rows","ChevronLeftIcon","ChevronRightIcon","MenuItem","generateMenuItems","customStyle","dateFilter","filters","options","handleClose","ExportIcon","CalendarIcon","limit","IconButton","MUITextArea","formatDate","lighten","darken","LinearProgress","type","authToken","RemoveIcon","value","List","ListItemText","fields","useDataFetcher","Loader","formatNumber","setContainerWidth","BarChart","line","g","month","getSingleNumberFromString","match","Card","CardContent","GridCard","formatText","alpha","getNestedValue","ArrowDropUpIcon","ArrowDropDownIcon","tableHeaders","name"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,QAAQA,IAAG;AAClB;AAEA,SAAO,UAAU,cAAc,OAAO,UAAU,YAAY,OAAO,OAAO,WAAW,SAAUA,IAAG;AAChG,WAAO,OAAOA;AAAA,EAChB,IAAI,SAAUA,IAAG;AACf,WAAOA,MAAK,cAAc,OAAO,UAAUA,GAAE,gBAAgB,UAAUA,OAAM,OAAO,YAAY,WAAW,OAAOA;AAAA,EACpH,GAAG,QAAQA,EAAC;AACd;ACAO,MAAM,oBAAoB,CAAC,UAAe;AAC/C,QAAM,EAAE,QAAQ,WAAW,OAAA,IAAW,cAAc;AAAA,IAClD,SAAS,MAAM;AAAA,IACf,MAAM;AAAA,EAAA,CACP;AAED,QAAM,eAAe,CAAC,MAAc,gBAAwB;AAC1D,YAAQ,MAAA;AAAA,MACN,KAAK;AACH,eAAO,EAAE,MAAM,SAAS,aAAa,aAAa;AAClD;AAAA,MACF,KAAK;AACH,eAAO,EAAE,MAAM,UAAU,aAAa,aAAa;AACnD;AAAA,IAGA;AAAA,EAEN;AAEA,SACEC,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,IAAAC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,MAAM;AAAA,QACf,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM,gBAAgB;AAAA,QACpC,QAAQ,CAAC,EAAE,YAAY;AACrB,cACE,OAAO,KAAK,MAAM,MAAM,EAAE,UAC1B,OAAO,KAAK,MAAM,MAAM,MAAM,OAAO,KAAK,KAAK,GAC/C;AACA,kBAAM,YAAY,EAAE,GAAG,OAAO;AAAA,UAChC;AACA,iBAAO,MAAM;AAAA,QACf;AAAA,MAAA;AAAA,IAAA;AAAA,IAEFA,kCAAAA;AAAAA,MAACC;AAAAA,MAAA;AAAA,QACC,OAAO,EAAE,UAAU,QAAQ,QAAQ,UAAA;AAAA,QACnC,SAAS,MAAM,aAAa,SAAS,MAAM,IAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjDD,kCAAAA;AAAAA,MAACE;AAAAA,MAAA;AAAA,QACC,OAAO,EAAE,UAAU,QAAQ,QAAQ,UAAA;AAAA,QACnC,SAAS,MAAM,aAAa,UAAU,MAAM,IAAI;AAAA,MAAA;AAAA,IAAA;AAAA,IAEjD,UAAU,IAAI,CAAC,UAAe;AAC7B,UAAI,MAAM,gBAAgB,MAAM,MAAM;AACpC,eACEJ,kCAAAA,KAAAC,4BAAA,EACG,UAAA;AAAA,UAAA,MAAM,SAAS,WACdC,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAY;AAAA,cACZ,OAAM;AAAA,cACN,aAAa,MAAM;AAAA,cACnB,MAAK;AAAA,cACL,gBAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAGlB,MAAM,SAAS,YACdA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAY;AAAA,cACZ,OAAM;AAAA,cACN,SAAS;AAAA,gBACP,EAAE,OAAO,WAAW,OAAO,WAAA;AAAA,gBAC3B,EAAE,OAAO,WAAW,OAAO,WAAA;AAAA,cAAW;AAAA,cAExC,aAAa,MAAM;AAAA,cACnB,MAAK;AAAA,cACL,gBAAe;AAAA,YAAA;AAAA,UAAA;AAAA,QACjB,GAEJ;AAAA,MAEJ;AAAA,IACF,CAAC;AAAA,EAAA,GACH;AAEJ;AAEA,kBAAkB,YAAY;AAAA,EAC5B,MAAM,UAAU,OAAO;AAAA,EACvB,cAAc,UAAU;AAAA,EACxB,QAAQ,UAAU;AAAA,EAClB,UAAU,UAAU,KAAK;AAAA,EACzB,aAAa,UAAU,KAAK;AAAA,EAC5B,SAAS,UAAU,OAAO;AAC5B;AC7Fe,SAAS,aAAa,UAAU,MAAM;AACnD,MAAI,KAAK,SAAS,UAAU;AAC1B,UAAM,IAAI,UAAU,WAAW,kCAAmE,KAAK,SAAS,UAAU;AAAA,EAC5H;AACF;AC4Be,SAAS,OAAO,UAAU;AACvC,eAAa,GAAG,SAAS;AACzB,MAAI,SAAS,OAAO,UAAU,SAAS,KAAK,QAAQ;AAGpD,MAAI,oBAAoB,QAAQ,QAAQ,QAAQ,MAAM,YAAY,WAAW,iBAAiB;AAE5F,WAAO,IAAI,KAAK,SAAS,SAAS;AAAA,EACpC,WAAW,OAAO,aAAa,YAAY,WAAW,mBAAmB;AACvE,WAAO,IAAI,KAAK,QAAQ;AAAA,EAC1B,OAAO;AACL,SAAK,OAAO,aAAa,YAAY,WAAW,sBAAsB,OAAO,YAAY,aAAa;AAEpG,cAAQ,KAAK,oNAAoN;AAEjO,cAAQ,KAAK,IAAI,MAAK,EAAG,KAAK;AAAA,IAChC;AACA,WAAO,oBAAI,KAAK,GAAG;AAAA,EACrB;AACF;ACnDA,IAAI,uBAAuB;AAAA,EACzB,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,EACb,kBAAkB;AAAA,IAChB,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,UAAU;AAAA,IACR,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,OAAO;AAAA,IACL,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,SAAS;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,QAAQ;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,YAAY;AAAA,IACV,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AAAA,EACE,cAAc;AAAA,IACZ,KAAK;AAAA,IACL,OAAO;AAAA,EACX;AACA;AACA,IAAI,iBAAiB,SAASG,gBAAe,OAAO,OAAO,SAAS;AAClE,MAAI;AACJ,MAAI,aAAa,qBAAqB,KAAK;AAC3C,MAAI,OAAO,eAAe,UAAU;AAClC,aAAS;AAAA,EACX,WAAW,UAAU,GAAG;AACtB,aAAS,WAAW;AAAA,EACtB,OAAO;AACL,aAAS,WAAW,MAAM,QAAQ,aAAa,MAAM,UAAU;AAAA,EACjE;AACA,MAAI,YAAY,QAAQ,YAAY,UAAU,QAAQ,WAAW;AAC/D,QAAI,QAAQ,cAAc,QAAQ,aAAa,GAAG;AAChD,aAAO,QAAQ;AAAA,IACjB,OAAO;AACL,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;ACjFe,SAAS,kBAAkB,MAAM;AAC9C,SAAO,WAAY;AACjB,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAElF,QAAI,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AACzD,QAAI,SAAS,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,KAAK,YAAY;AAClE,WAAO;AAAA,EACT;AACF;ACPA,IAAI,cAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AACA,IAAI,cAAc;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AACA,IAAI,kBAAkB;AAAA,EACpB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AACA,IAAI,aAAa;AAAA,EACf,MAAM,kBAAkB;AAAA,IACtB,SAAS;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,MAAM,kBAAkB;AAAA,IACtB,SAAS;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,UAAU,kBAAkB;AAAA,IAC1B,SAAS;AAAA,IACT,cAAc;AAAA,EAClB,CAAG;AACH;AChCA,IAAI,uBAAuB;AAAA,EACzB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,OAAO;AAAA,EACP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AACT;AACA,IAAI,iBAAiB,SAASC,gBAAe,OAAO,OAAO,WAAW,UAAU;AAC9E,SAAO,qBAAqB,KAAK;AACnC;ACVe,SAAS,gBAAgB,MAAM;AAC5C,SAAO,SAAU,YAAY,SAAS;AACpC,QAAI,UAAU,YAAY,QAAQ,YAAY,UAAU,QAAQ,UAAU,OAAO,QAAQ,OAAO,IAAI;AACpG,QAAI;AACJ,QAAI,YAAY,gBAAgB,KAAK,kBAAkB;AACrD,UAAI,eAAe,KAAK,0BAA0B,KAAK;AACvD,UAAI,QAAQ,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI;AAC9F,oBAAc,KAAK,iBAAiB,KAAK,KAAK,KAAK,iBAAiB,YAAY;AAAA,IAClF,OAAO;AACL,UAAI,gBAAgB,KAAK;AACzB,UAAI,SAAS,YAAY,QAAQ,YAAY,UAAU,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI,KAAK;AACpG,oBAAc,KAAK,OAAO,MAAM,KAAK,KAAK,OAAO,aAAa;AAAA,IAChE;AACA,QAAI,QAAQ,KAAK,mBAAmB,KAAK,iBAAiB,UAAU,IAAI;AAExE,WAAO,YAAY,KAAK;AAAA,EAC1B;AACF;AChBA,IAAI,YAAY;AAAA,EACd,QAAQ,CAAC,KAAK,GAAG;AAAA,EACjB,aAAa,CAAC,MAAM,IAAI;AAAA,EACxB,MAAM,CAAC,iBAAiB,aAAa;AACvC;AACA,IAAI,gBAAgB;AAAA,EAClB,QAAQ,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,EAC3B,aAAa,CAAC,MAAM,MAAM,MAAM,IAAI;AAAA,EACpC,MAAM,CAAC,eAAe,eAAe,eAAe,aAAa;AACnE;AAMA,IAAI,cAAc;AAAA,EAChB,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACnE,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,MAAM,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AACjI;AACA,IAAI,YAAY;AAAA,EACd,QAAQ,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EAC1C,OAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAChD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC7D,MAAM,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AACrF;AACA,IAAI,kBAAkB;AAAA,EACpB,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AAAA,EACE,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AACA;AACA,IAAI,4BAA4B;AAAA,EAC9B,QAAQ;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AAAA,EACE,aAAa;AAAA,IACX,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AAAA,EACE,MAAM;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AACA;AACA,IAAI,gBAAgB,SAASC,eAAc,aAAa,UAAU;AAChE,MAAI,SAAS,OAAO,WAAW;AAS/B,MAAI,SAAS,SAAS;AACtB,MAAI,SAAS,MAAM,SAAS,IAAI;AAC9B,YAAQ,SAAS,IAAE;AAAA,MACjB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AACH,eAAO,SAAS;AAAA,IACxB;AAAA,EACE;AACA,SAAO,SAAS;AAClB;AACA,IAAI,WAAW;AAAA,EACb;AAAA,EACA,KAAK,gBAAgB;AAAA,IACnB,QAAQ;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,SAAS,gBAAgB;AAAA,IACvB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,kBAAkB,SAAS,iBAAiB,SAAS;AACnD,aAAO,UAAU;AAAA,IACnB;AAAA,EACJ,CAAG;AAAA,EACD,OAAO,gBAAgB;AAAA,IACrB,QAAQ;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,KAAK,gBAAgB;AAAA,IACnB,QAAQ;AAAA,IACR,cAAc;AAAA,EAClB,CAAG;AAAA,EACD,WAAW,gBAAgB;AAAA,IACzB,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,kBAAkB;AAAA,IAClB,wBAAwB;AAAA,EAC5B,CAAG;AACH;AC7Ie,SAAS,aAAa,MAAM;AACzC,SAAO,SAAU,QAAQ;AACvB,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,QAAI,QAAQ,QAAQ;AACpB,QAAI,eAAe,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AAClG,QAAI,cAAc,OAAO,MAAM,YAAY;AAC3C,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AACA,QAAI,gBAAgB,YAAY,CAAC;AACjC,QAAI,gBAAgB,SAAS,KAAK,cAAc,KAAK,KAAK,KAAK,cAAc,KAAK,iBAAiB;AACnG,QAAI,MAAM,MAAM,QAAQ,aAAa,IAAI,UAAU,eAAe,SAAU,SAAS;AACnF,aAAO,QAAQ,KAAK,aAAa;AAAA,IACnC,CAAC,IAAI,QAAQ,eAAe,SAAU,SAAS;AAC7C,aAAO,QAAQ,KAAK,aAAa;AAAA,IACnC,CAAC;AACD,QAAI;AACJ,YAAQ,KAAK,gBAAgB,KAAK,cAAc,GAAG,IAAI;AACvD,YAAQ,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,IAAI;AAC/D,QAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACF;AACA,SAAS,QAAQ,QAAQ,WAAW;AAClC,WAAS,OAAO,QAAQ;AACtB,QAAI,OAAO,eAAe,GAAG,KAAK,UAAU,OAAO,GAAG,CAAC,GAAG;AACxD,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,UAAU,OAAO,WAAW;AACnC,WAAS,MAAM,GAAG,MAAM,MAAM,QAAQ,OAAO;AAC3C,QAAI,UAAU,MAAM,GAAG,CAAC,GAAG;AACzB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;ACzCe,SAAS,oBAAoB,MAAM;AAChD,SAAO,SAAU,QAAQ;AACvB,QAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAA;AAClF,QAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,QAAI,CAAC,YAAa,QAAO;AACzB,QAAI,gBAAgB,YAAY,CAAC;AACjC,QAAI,cAAc,OAAO,MAAM,KAAK,YAAY;AAChD,QAAI,CAAC,YAAa,QAAO;AACzB,QAAI,QAAQ,KAAK,gBAAgB,KAAK,cAAc,YAAY,CAAC,CAAC,IAAI,YAAY,CAAC;AACnF,YAAQ,QAAQ,gBAAgB,QAAQ,cAAc,KAAK,IAAI;AAC/D,QAAI,OAAO,OAAO,MAAM,cAAc,MAAM;AAC5C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACE;AACF;ACdA,IAAI,4BAA4B;AAChC,IAAI,4BAA4B;AAChC,IAAI,mBAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR;AACA,IAAI,mBAAmB;AAAA,EACrB,KAAK,CAAC,OAAO,SAAS;AACxB;AACA,IAAI,uBAAuB;AAAA,EACzB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR;AACA,IAAI,uBAAuB;AAAA,EACzB,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI;AAC9B;AACA,IAAI,qBAAqB;AAAA,EACvB,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,MAAM;AACR;AACA,IAAI,qBAAqB;AAAA,EACvB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3F,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,SAAS,SAAS,SAAS,QAAQ,OAAO,OAAO,OAAO,KAAK;AACrG;AACA,IAAI,mBAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AACR;AACA,IAAI,mBAAmB;AAAA,EACrB,QAAQ,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EACxD,KAAK,CAAC,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAC3D;AACA,IAAI,yBAAyB;AAAA,EAC3B,QAAQ;AAAA,EACR,KAAK;AACP;AACA,IAAI,yBAAyB;AAAA,EAC3B,KAAK;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACX;AACA;AACA,IAAI,QAAQ;AAAA,EACV,eAAe,oBAAoB;AAAA,IACjC,cAAc;AAAA,IACd,cAAc;AAAA,IACd,eAAe,SAAS,cAAc,OAAO;AAC3C,aAAO,SAAS,OAAO,EAAE;AAAA,IAC3B;AAAA,EACJ,CAAG;AAAA,EACD,KAAK,aAAa;AAAA,IAChB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,SAAS,aAAa;AAAA,IACpB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe,SAASC,eAAc,OAAO;AAC3C,aAAO,QAAQ;AAAA,IACjB;AAAA,EACJ,CAAG;AAAA,EACD,OAAO,aAAa;AAAA,IAClB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,KAAK,aAAa;AAAA,IAChB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AAAA,EACD,WAAW,aAAa;AAAA,IACtB,eAAe;AAAA,IACf,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,mBAAmB;AAAA,EACvB,CAAG;AACH;AClFA,IAAI,SAAS;AAAA,EACX,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,IACP,cAAc;AAAA,IACd,uBAAuB;AAAA,EAC3B;AACA;ACNe,SAAS,SAAS,WAAW;AAC1C,eAAa,GAAG,SAAS;AACzB,MAAI,OAAO,OAAO,SAAS;AAC3B,MAAI,QAAQ,KAAK,SAAQ;AACzB,SAAO;AACT;ACLe,SAAS,QAAQ,WAAW;AACzC,eAAa,GAAG,SAAS;AACzB,SAAO,OAAO,SAAS,EAAE,YAAW;AACtC;ACLA,MAAM,SAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,wBAA8D,CAAC;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAEER,kCAAAA,KAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,EAAAE,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,WAAU;AAAA,IAAA;AAAA,EAAA;AAAA,EAEZA,kCAAAA,IAAC,SAAI,WAAW,QAAM,iBAAe,YACnC,UAAAA,kCAAAA,IAAC,gBAAa,EAAA,CAChB;AAAA,GACF;AAeF,SAAS,gBAAgB,OAAY;AACnC,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ;AAAA,IACA,GAAG;AAAA,EAAA,IACD;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,GAAG;AAC1C,QAAM,EAAC,MAAA,IAAO,YAAA;AACd,QAAM,WAAW,CAAC,UAAe;AAC/B,UAAM,CAACO,QAAOC,IAAG,IAAI;AACrB,iBAAaD,MAAK;AAClB,eAAWC,IAAG;AACd,sBAAkB,KAAK;AAAA,EACzB;AAEA,QAAM,QAAa,CAAA;AACnB,QAAM,cAAc,QAAQ,oBAAI,MAAM;AACtC,WAAS,IAAI,WAAW,KAAK,cAAc,IAAI,KAAK;AAClD,UAAM,KAAK,CAAC;AAAA,EACd;AAEA,SACER,kCAAAA,IAAC,KAAA,EAAI,WAAU,mBACb,UAAAA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAW;AAAA,MACV,GAAG;AAAA,MACJ,aACEA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,iBAAgB;AAAA,UAChB,OAAM;AAAA,UACN;AAAA,UACA,SAAS,MAAM;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,MAGrB;AAAA,MACA;AAAA,MACA;AAAA,MACA,cAAc;AAAA,MACd,aAAa;AAAA,MACb,oBAAoB,CAAC;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,MAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,QAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,UAAAE,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,WAAU;AAAA,cACV,MAAK;AAAA,cAEL,gDAAC,mBAAA,CAAA,CAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,UAErBA,sCAAC,SAAI,WAAU,cAAc,iBAAO,SAAS,IAAI,CAAC,GAAE;AAAA,UACpDA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,WAAU;AAAA,cACV,MAAK;AAAA,cAEL,gDAAC,oBAAA,CAAA,CAAmB;AAAA,YAAA;AAAA,UAAA;AAAA,QACtB,GACF;AAAA,QACAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,UAAAE,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,WAAU;AAAA,cACV,MAAK;AAAA,cAEL,gDAAC,mBAAA,CAAA,CAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,UAErBA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,QAAQ,IAAI;AAAA,cACnB,UAAU,CAAC,MAAM;AACf,6BAAA;AACA,6BAAa,IAAI,KAAK,CAAC,EAAE,OAAO,OAAO,SAAS,IAAI,CAAC,CAAC;AAAA,cACxD;AAAA,cAEC,UAAA,MAAM,IAAI,CAAC,SACVA,kCAAAA,IAAC,YAAkB,OAAO,MACvB,UAAA,KAAA,GADU,IAEb,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,UAEHA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,UAAU;AAAA,cACV,WAAU;AAAA,cACV,MAAK;AAAA,cAEL,gDAAC,oBAAA,CAAA,CAAmB;AAAA,YAAA;AAAA,UAAA;AAAA,QACtB,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;ACxKA,MAAM,mBAAmB,CAAC,UAAe;AACrC,QAAM,UAAU,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACxC,MAAM,MAAM,QAAQ,EAAE,WACtB;AAEN,QAAM,UAAU,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACxC,MAAM,MAAM,QAAQ,EAAE,WACtB;AAEN,SACIA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACdF,sDAAAC,kBAAAA,UAAA,EACK,UAAA;AAAA,WAAA,+BAAO,UACJD,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,QAAO;AAAA,cACP,IAAI;AAAA,cACJ,OAAO,MAAM,QAAQ,oBAAoB;AAAA,cAGxC,UAAA;AAAA,gBAAA,MAAM;AAAA,gBACN,MAAM,YAAYE,kCAAAA,IAAC,QAAA,EAAK,WAAU,gBAAe,UAAA,IAAA,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAG3DA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,QAAO,WAAM,UAAN,mBAAc;AAAA,cACrB,MAAK,WAAM,UAAN,mBAAc;AAAA,cACnB,WAAW,MAAM,aAAa;AAAA,cAC9B,mBAAmB,CAAC,UAAsC;AACtD,sBAAM,SAAS,KAAK;AACpB,oBAAI,MAAM,UAAU;AAChB,wBAAM,SAAS,KAAK;AAAA,gBACxB;AAAA,cACJ;AAAA,cACA,iBAAiB,MAAM,eAAe;AAAA,cACtC,cAAc,MAAM;AAAA,cACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,cAC/C,OAAO,MAAM;AAAA,cACb,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,cACvD;AAAA,cACA;AAAA,cACA,UAAU,MAAM;AAAA,cAChB,OAAO,QAAQ,WAAW,KAAK;AAAA,cAC/B,aAAY,gBAAW,UAAX,mBAAkB;AAAA,YAAA;AAAA,UAAA;AAAA,QAClC,EAAA,CACJ;AAAA;AAAA,IAAA;AAAA,EAAA;AAIhB;AAEA,iBAAiB,YAAY;AAAA,EACzB,aAAa,UAAU,MAAM;AAAA,IACzB,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACvB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU;AAAA,EACjB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,WAAW,UAAU;AAAA,EACrB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AACxB;ACvEA,MAAM,kBAAkB,CAAC,UAAe;AACtC,QAAM,EAAC,WAAS,MAAA,IAAS;AACzB,SACEA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,MAC3C,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AAC3BA,iDAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,cAAc,MAAM;AAAA,YACpB,UAAU,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,YAC/C,OAAO,MAAM;AAAA,YACb,aAAa,MAAM;AAAA,YACnB,UAAU,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,YACvD,cAAc,MAAM;AAAA,YACpB,oBAAoB,MAAM;AAAA,YAC1B,kBAAkB,MAAM;AAAA,YACxB,aAAY,gBAAW,UAAX,mBAAkB;AAAA,YAC9B,OAAO,QAAQ,WAAW,KAAK;AAAA,YAC/B,UAAU,MAAM;AAAA,YAChB,SAAS,MAAM;AAAA,YACf,SAAS,MAAM;AAAA,YACf,aAAa,MAAM;AAAA,YACnB,aAAa,MAAM;AAAA,YACnB,gBAAgB,WAAU,EAAC,UAAU,SAAQ,EAAC,UAAU,MAAA;AAAA,YACxD,UAAU,CAAC,aAAa;AACtB,kBAAI,MAAM,iBAAiB,YAAY,MAAM,QAAQ,EAAE,OAAO,MAAM,eAAe,KAAK,GAAG;AACzF,sBAAM,WAAW,MAAM,QAAQ;AAE/B,oBAAI,SAAS,SAAS,MAAM,aAAa,GAAG;AAC1C,wBAAM,WAAW,SAAS,KAAK,MAAM,cAAc,KAAA,CAAM,EAAE,OAAO,MAAM,cAAc,OAAA,CAAQ;AAC9F,wBAAM,SAAS,QAAQ;AACvB;AAAA,gBACF;AAAA,cACF;AAEA,oBAAM,SAAS,QAAQ;AAAA,YACzB;AAAA,UAAA;AAAA,QAAA;AAAA;AAAA,IACF;AAAA,EAAA;AAIR;AAEA,gBAAgB,YAAY;AAAA,EAC1B,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,cAAc,UAAU;AAAA,EACxB,yBAAyB,UAAU;AAAA,EACnC,uBAAuB,UAAU;AAAA,EACjC,aAAa,UAAU;AAAA,EACvB,SAAS,UAAU;AAAA,EACnB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AACtB;AClEA,MAAM,eAAe,KAAK,MAAM,OAAO,iCAA+B,CAAC;AAWvE,MAAM,oBAAsD,CAAC;AAAA,EAC5D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;AACL,SACCA,sCAAAD,kBAAAA,UAAA,EACC,UAAAC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,MAC/B,SAAS;AAAA,MACT,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACjBF,sDAAAC,kBAAAA,UAAA,EACC,UAAA;AAAA,UAAAC,kCAAAA,IAAC,OAAA,EAAI,WAAU,oBACd,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,mBAAmB,MAAM;AACxB,oBAAI,MAAM,MAAO,OAAM,SAAS,MAAM,KAAK;AAAA,cAC5C;AAAA,cACA,MAAM,MAAM;AAAA,cACZ,gBAAgB,CAAC,YAAoB;AACpC,sBAAM,SAAS,OAAO;AAAA,cACvB;AAAA,cACA,QAAQ;AAAA,gBACP;AAAA,cAAA;AAAA,YACD;AAAA,UAAA,GAEF;AAAA,YACC,gBAAW,UAAX,mBAAkB,YAClBA,kCAAAA,IAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,WAAA,gBAAW,UAAX,mBAAkB,QAAA,CACpB;AAAA,QAAA,EAAA,CAEF;AAAA;AAAA,IAAA;AAAA,EAAA,GAGH;AAEF;ACxBA,MAAM,mBAAmBS,eAAM,KAA4B,CAAC,UAAU;AAIpE,QAAM,YAAY;AAAA,IAAQ,MACxB,GAAG,MAAM,cAAc,IAAI,MAAM,IAAI;AAAA,IACrC,CAAC,MAAM,gBAAgB,MAAM,IAAI;AAAA,EAAA;AAInC,QAAM,EAAE,SAAS,QAAA,IAAY,QAAQ,MAAM;AACzC,UAAM,MAAM,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACtC,MAAM,MAAM,QAAQ,IACpB;AAEJ,UAAM,MAAM,MAAM,MAAM,YAAY,IAAI,EAAE,QAAA,IACtC,MAAM,MAAM,QAAQ,IACpB;AAEJ,WAAO,EAAE,SAAS,KAAK,SAAS,IAAA;AAAA,EAClC,GAAG,CAAC,MAAM,UAAU,MAAM,QAAQ,CAAC;AAGnC,QAAM,aAAa;AAAA,IAAQ,MACzB,MAAM,aAAa,YAAY,QAAQ,MAAM;AAAA,IAC7C,CAAC,MAAM,UAAU,MAAM,QAAQ;AAAA,EAAA;AAGjC,SACET,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS,MAAM;AAAA,MACf,MAAM;AAAA,MACN,QAAQ,CAAC,EAAE,OAAO,iBAAW;;AAC3BA,iDAAAA;AAAAA,UAACU;AAAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACH,GAAG;AAAA,YACJ,cAAc,MAAM;AAAA,YACpB,UAAU;AAAA,YACV,OAAO,MAAM;AAAA,YACb,aAAa,MAAM;AAAA,YACnB,UAAU;AAAA,YACV,cAAc,MAAM;AAAA,YACpB,oBAAoB,MAAM;AAAA,YAC1B,kBAAkB,MAAM;AAAA,YACxB,aAAY,gBAAW,UAAX,mBAAkB;AAAA,YAC9B,OAAO,QAAQ,WAAW,KAAK;AAAA,YAC/B,UAAU,MAAM;AAAA,YAChB;AAAA,YACA;AAAA,UAAA;AAAA,QAAA;AAAA;AAAA,IACF;AAAA,EAAA;AAIR,CAAC;AAED,iBAAiB,cAAc;AAE/B,iBAAiB,YAAY;AAAA,EAC3B,aAAa,UAAU,MAAM;AAAA,IAC3B,UAAU,UAAU,KAAK;AAAA,IACzB,UAAU,UAAU;AAAA,EAAA,CACrB,EAAE;AAAA,EACH,MAAM,UAAU,OAAO;AAAA,EACvB,OAAO,UAAU,OAAO;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,aAAa,UAAU;AAAA,EACvB,cAAc,UAAU;AAAA,EACxB,yBAAyB,UAAU;AAAA,EACnC,uBAAuB,UAAU;AAAA,EACjC,aAAa,UAAU;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AACtB;ACpDA,MAAM,WAAW;AAAA,EACf;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,gBAAgB;AAAA,IAChB,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAAA,EAEN;AAAA,IACE,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,aAAa;AAAA,IACb,WAAW;AAAA,IACX,IAAI;AAAA,EAAA;AAER;AC3HA,MAAMC,cAAY,CAAC,YAAY,WAAW,WAAW,SAAS,OAAO;AAMrE,SAAS,cAAc,OAAO;AAC5B,SAAO,SAAS,OAAO,EAAE,KAAK;AAChC;AACA,MAAM,SAAS;AAAA,EACb,QAAQ;AAAA;AAAA,IAEN,YAAY;AAAA;AAAA,IAEZ,UAAU;AAAA;AAAA,IAEV,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA;AAAA,IAEN,WAAW;AAAA,EACf;AACA;AACA,SAAS,QAAQ,KAAK;AACpB,SAAO,QAAQ,UAAa,QAAQ,QAAQ,OAAO,KAAK,GAAG,EAAE,WAAW,KAAK,IAAI,qBAAqB,KAAK,CAAC,IAAI;AAClH;AAaA,MAAM,mBAAgC,sBAAM,WAAW,SAASC,kBAAiB,OAAO,cAAc;AACpG,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOD,WAAS;AACxD,QAAM;AAAA,IACJ,SAAS;AAAA,EACb,IAAM,MAAM,OAAO,SAAS,IAAI;AAC9B,QAAM,WAAW,MAAM,OAAO,IAAI;AAClC,QAAM,YAAY,WAAW,cAAc,QAAQ;AACnD,QAAM,YAAY,MAAM,OAAO,IAAI;AACnC,QAAM,YAAY,MAAM,OAAO,IAAI;AACnC,QAAM,0BAA0B,MAAM,YAAY,MAAM;AACtD,UAAM,QAAQ,SAAS;AACvB,UAAM,kBAAkB,YAAY,KAAK;AACzC,UAAM,gBAAgB,gBAAgB,iBAAiB,KAAK;AAG5D,QAAI,cAAc,UAAU,OAAO;AACjC,aAAO;AAAA,QACL,kBAAkB;AAAA,QAClB,aAAa;AAAA,MACrB;AAAA,IACI;AACA,UAAM,eAAe,UAAU;AAC/B,iBAAa,MAAM,QAAQ,cAAc;AACzC,iBAAa,QAAQ,MAAM,SAAS,MAAM,eAAe;AACzD,QAAI,aAAa,MAAM,MAAM,EAAE,MAAM,MAAM;AAIzC,mBAAa,SAAS;AAAA,IACxB;AACA,UAAM,YAAY,cAAc;AAChC,UAAM,UAAU,cAAc,cAAc,aAAa,IAAI,cAAc,cAAc,UAAU;AACnG,UAAM,SAAS,cAAc,cAAc,iBAAiB,IAAI,cAAc,cAAc,cAAc;AAG1G,UAAM,cAAc,aAAa;AAGjC,iBAAa,QAAQ;AACrB,UAAM,kBAAkB,aAAa;AAGrC,QAAI,cAAc;AAClB,QAAI,SAAS;AACX,oBAAc,KAAK,IAAI,OAAO,OAAO,IAAI,iBAAiB,WAAW;AAAA,IACvE;AACA,QAAI,SAAS;AACX,oBAAc,KAAK,IAAI,OAAO,OAAO,IAAI,iBAAiB,WAAW;AAAA,IACvE;AACA,kBAAc,KAAK,IAAI,aAAa,eAAe;AAGnD,UAAM,mBAAmB,eAAe,cAAc,eAAe,UAAU,SAAS;AACxF,UAAM,cAAc,KAAK,IAAI,cAAc,WAAW,KAAK;AAC3D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACE,GAAG,CAAC,SAAS,SAAS,MAAM,WAAW,CAAC;AACxC,QAAM,aAAa,MAAM,YAAY,MAAM;AACzC,UAAM,iBAAiB,wBAAuB;AAC9C,QAAI,QAAQ,cAAc,GAAG;AAC3B;AAAA,IACF;AACA,UAAM,mBAAmB,eAAe;AACxC,UAAM,QAAQ,SAAS;AACvB,QAAI,UAAU,YAAY,kBAAkB;AAC1C,gBAAU,UAAU;AACpB,YAAM,MAAM,SAAS,GAAG,gBAAgB;AAAA,IAC1C;AACA,UAAM,MAAM,WAAW,eAAe,cAAc,WAAW;AAAA,EACjE,GAAG,CAAC,uBAAuB,CAAC;AAC5B,oBAAkB,MAAM;AACtB,UAAM,eAAe,MAAM;AACzB,iBAAU;AAAA,IACZ;AAKA,QAAI;AACJ,UAAM,kBAAkB,MAAM;AAC5B,2BAAqB,GAAG;AACxB,YAAM,sBAAsB,MAAM;AAChC,qBAAY;AAAA,MACd,CAAC;AAAA,IACH;AACA,UAAM,uBAAuB,SAAS,YAAY;AAClD,UAAM,QAAQ,SAAS;AACvB,UAAM,kBAAkB,YAAY,KAAK;AACzC,oBAAgB,iBAAiB,UAAU,oBAAoB;AAC/D,QAAI;AACJ,QAAI,OAAO,mBAAmB,aAAa;AACzC,uBAAiB,IAAI,eAAe,QAAQ,IAAI,aAAa,SAAS,kBAAkB,YAAY;AACpG,qBAAe,QAAQ,KAAK;AAAA,IAC9B;AACA,WAAO,MAAM;AACX,2BAAqB,MAAK;AAC1B,2BAAqB,GAAG;AACxB,sBAAgB,oBAAoB,UAAU,oBAAoB;AAClE,UAAI,gBAAgB;AAClB,uBAAe,WAAU;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,yBAAyB,UAAU,CAAC;AACxC,oBAAkB,MAAM;AACtB,eAAU;AAAA,EACZ,CAAC;AACD,QAAM,eAAe,WAAS;AAC5B,QAAI,CAAC,cAAc;AACjB,iBAAU;AAAA,IACZ;AACA,QAAI,UAAU;AACZ,eAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACA,SAAoBE,kCAAAA,KAAM,MAAM,UAAU;AAAA,IACxC,UAAU,CAAcC,kCAAAA,IAAK,YAAYC,WAAS;AAAA,MAChD;AAAA,MACA,UAAU;AAAA,MACV,KAAK;AAAA,MAGL,MAAM;AAAA,MACN;AAAA,IACN,GAAO,KAAK,CAAC,GAAgBD,kCAAAA,IAAK,YAAY;AAAA,MACxC,eAAe;AAAA,MACf,WAAW,MAAM;AAAA,MACjB,UAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,MACV,OAAOC,WAAS,CAAA,GAAI,OAAO,QAAQ,OAAO;AAAA,QACxC,YAAY;AAAA,QACZ,eAAe;AAAA,MACvB,CAAO;AAAA,IACP,CAAK,CAAC;AAAA,EACN,CAAG;AACH,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,iBAAiB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1F,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,SAAS,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjE,SAAS,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,EAIjE,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,aAAa,UAAU;AAAA;AAAA;AAAA;AAAA,EAIvB,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA,EAIjB,OAAO,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,MAAM,GAAG,UAAU,QAAQ,UAAU,MAAM,CAAC;AACtG,IAAI;ACzNJ,MAAM,kBAA+B,sBAAM,cAAc,EAAE;AAC3D,IAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,kBAAgB,cAAc;AAChC;ACNO,SAAS,wBAAwB,MAAM;AAC5C,SAAO,qBAAqB,eAAe,IAAI;AACjD;AACwB,uBAAuB,eAAe,CAAC,QAAQ,gBAAgB,iBAAiB,qBAAqB,0BAA0B,CAAC;ACJzI,SAAS,+BAA+B,UAAU;AAC/D,SAAO,aAAa,sBAAsB,6BAA6B,WAAW,WAAW,QAAQ,CAAC;AACxG;ACCA,MAAMJ,cAAY,CAAC,YAAY,WAAW;AAU1C,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,YAAY,+BAA+B,QAAQ,CAAC;AAAA,EACvE;AACE,SAAO,eAAe,OAAO,yBAAyB,OAAO;AAC/D;AACA,MAAM,eAAe,OAAO,MAAM;AAAA,EAChC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAM,WAAW,YAAYA,QAAO,+BAA+B,WAAW,QAAQ,CAAC,CAAC;AAAA,EACzG;AACF,CAAC,EAAE;AAAA,EACD,SAAS;AAAA,EACT,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AACZ,CAAC;AAYD,MAAM,WAAwB,sBAAM,WAAW,SAASC,UAAS,SAAS,KAAK;AAC7E,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF,WAAW;AAAA,IACX;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOP,WAAS;AACxD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,QAAM,eAAe,MAAM,QAAQ,OAAO;AAAA,IACxC;AAAA,EACJ,IAAM,CAAC,QAAQ,CAAC;AACd,SAAoBF,kCAAAA,IAAK,gBAAgB,UAAU;AAAA,IACjD,OAAO;AAAA,IACP,UAAuBA,kCAAAA,IAAK,cAAcC,WAAS;AAAA,MACjD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,MACvC;AAAA,MACA;AAAA,IACN,GAAO,KAAK,CAAC;AAAA,EACb,CAAG;AACH,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,SAAS,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlF,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,UAAU,UAAU,MAAM,CAAC,qBAAqB,aAAa,QAAQ,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,EAI7E,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;ACpGG,SAAS,+BAA+B,MAAM;AACnD,SAAO,qBAAqB,sBAAsB,IAAI;AACxD;AACA,MAAM,yBAAyB,uBAAuB,sBAAsB,CAAC,QAAQ,gBAAgB,iBAAiB,qBAAqB,0BAA0B,CAAC;ACDtK,MAAMJ,cAAY,CAAC,WAAW;AAW9B,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,+BAA+B,QAAQ,CAAC;AAAA,EAC3D;AACE,SAAO,eAAe,OAAO,gCAAgC,OAAO;AACtE;AACA,MAAM,sBAAsB,OAAOG,cAAY;AAAA,EAC7C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOF,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAMA,QAAO,+BAA+B,WAAW,QAAQ,CAAC,CAAC;AAAA,EAClF;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AACF,MAAMF,WAAS;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AACb,GAAG,WAAW,aAAa,UAAU;AAAA,EACnC,WAAW;AACb,CAAC,CAAC;AACF,MAAM,kBAA+B,sBAAM,WAAW,SAASK,iBAAgB,SAAS,KAAK;AAC3F,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOT,WAAS;AACxD,QAAM;AAAA,IACJ,UAAU;AAAA,EACd,IAAM,MAAM,WAAW,eAAe;AACpC,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC,UAAU,mBAAmB;AAAA,EACjC,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,qBAAqBC,WAAS;AAAA,IACrD,WAAW;AAAA,IACX,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,gBAAgB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQzF,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;AClFJ,MAAM,iCAAiC,uBAAuB,8BAA8B,CAAC,QAAQ,gBAAgB,iBAAiB,qBAAqB,0BAA0B,CAAC;ACH/K,SAAS,4BAA4B,MAAM;AAChD,SAAO,qBAAqB,mBAAmB,IAAI;AACrD;AAC4B,uBAAuB,mBAAmB,CAAC,QAAQ,gBAAgB,iBAAiB,qBAAqB,4BAA4B,wBAAwB,CAAC;ACD1L,MAAMJ,cAAY,CAAC,YAAY,WAAW;AAa1C,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,+BAA+B,QAAQ,GAAG,CAAC,sBAAsB,wBAAwB;AAAA,EAC5G;AACE,SAAO,eAAe,OAAO,6BAA6B,OAAO;AACnE;AACA,MAAM,mBAAmB,OAAO,MAAM;AAAA,EACpC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAMA,QAAO,+BAA+B,WAAW,QAAQ,CAAC,CAAC;AAAA,EAClF;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AACF,MAAMF,WAAS;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AAAA,EACT,UAAU;AAAA,EACV,WAAW;AACb,GAAG,WAAW,aAAa,UAAU;AAAA,EACnC,eAAe;AACjB,IAAI,WAAW,aAAa,eAAe,WAAW,aAAa,wBAAwB;AAAA,EACzF,CAAC,iBAAiB,WAAW,aAAa,cAAc,SAAS,KAAK,GAAG,GAAG;AAAA,IAC1E,eAAe;AAAA,IACf,CAAC,MAAM,uBAAuB,IAAI,EAAE,GAAG;AAAA,MACrC,WAAW;AAAA,IACjB;AAAA,IACI,CAAC,MAAM,+BAA+B,IAAI,EAAE,GAAG;AAAA,MAC7C,WAAW;AAAA,IACjB;AAAA,EACA;AACA,GAAG,CAAC,WAAW,sBAAsB;AAAA,EACnC,aAAa;AAAA,IACX,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,EACb;AACA,CAAC,CAAC;AACF,MAAM,eAA4B,sBAAM,WAAW,SAASM,cAAa,SAAS,KAAK;AACrF,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF,UAAU;AAAA,IACV;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOV,WAAS;AACxD,QAAM;AAAA,IACJ,UAAU;AAAA,EACd,IAAM,MAAM,WAAW,eAAe;AACpC,MAAI,qBAAqB;AACzB,QAAM,SAAS,QAAQ,MAAM,UAAU,WAAS;AAC9C,QAAI,aAAa,OAAO,CAAC,yBAAyB,CAAC,GAAG;AACpD,2BAAqB;AAAA,IACvB;AAAA,EACF,CAAC;AACD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC,UAAU,gBAAgB,mBAAmB;AAAA,IAC7C;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,QAAM,eAAe,MAAM,QAAQ,OAAO;AAAA,IACxC,UAAU,WAAW;AAAA,EACzB,IAAM,CAAC,WAAW,QAAQ,CAAC;AACzB,SAAoBF,kCAAAA,IAAK,gBAAgB,UAAU;AAAA,IACjD,OAAO;AAAA,IACP,UAAuBA,kCAAAA,IAAK,kBAAkBC,WAAS;AAAA,MACrD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,MACvC;AAAA,MACA;AAAA,IACN,GAAO,KAAK,CAAC;AAAA,EACb,CAAG;AACH,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,aAAa,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQtF,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,UAAU,UAAU,MAAM,CAAC,qBAAqB,aAAa,QAAQ,OAAO,CAAC;AAAA;AAAA;AAAA;AAAA,EAI7E,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;AC1HG,SAAS,iCAAiC,MAAM;AACrD,SAAO,qBAAqB,wBAAwB,IAAI;AAC1D;AACiC,uBAAuB,wBAAwB,CAAC,MAAM,CAAC;ACDxF,MAAMJ,cAAY,CAAC,WAAW;AAQ9B,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,MAAM;AAAA,EACjB;AACE,SAAO,eAAe,OAAO,kCAAkC,OAAO;AACxE;AACA,MAAM,wBAAwB,OAAO,OAAO;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAWA,QAAO;AAC/C,CAAC,EAAE;AAAA,EACD,SAAS;AAAA,EACT,eAAe;AAAA,EACf,MAAM;AAAA,EACN,YAAY;AACd,CAAC;AACD,MAAM,oBAAiC,sBAAM,WAAW,SAASK,mBAAkB,SAAS,KAAK;AAC/F,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOX,WAAS;AACxD,QAAM,aAAa;AACnB,QAAM,UAAUK,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,uBAAuBC,WAAS;AAAA,IACvD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,kBAAkB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3F,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;ACnEG,SAAS,iCAAiC,MAAM;AACrD,SAAO,qBAAqB,wBAAwB,IAAI;AAC1D;AACiC,uBAAuB,wBAAwB,CAAC,MAAM,CAAC;ACDxF,MAAMJ,cAAY,CAAC,WAAW;AAQ9B,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,MAAM;AAAA,EACjB;AACE,SAAO,eAAe,OAAO,kCAAkC,OAAO;AACxE;AACA,MAAM,wBAAwB,OAAO,QAAQ;AAAA,EAC3C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAWA,QAAO;AAC/C,CAAC,EAAE,CAAC;AAAA,EACF;AACF,MAAM;AACJ,SAAO;AAAA,IACL,OAAO;AAAA,IACP,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,KAAK,GAAG;AAAA,IACvD,UAAU;AAAA,EACd;AACA,CAAC;AACD,MAAM,oBAAiC,sBAAM,WAAW,SAASM,mBAAkB,SAAS,KAAK;AAC/F,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOZ,WAAS;AACxD,QAAM,aAAa;AACnB,QAAM,UAAUK,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,uBAAuBC,WAAS;AAAA,IACvD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,kBAAkB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3F,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;ACtEG,SAAS,2BAA2B,MAAM;AAC/C,SAAO,qBAAqB,kBAAkB,IAAI;AACpD;AAC2B,uBAAuB,kBAAkB,CAAC,QAAQ,UAAU,YAAY,cAAc,gBAAgB,iBAAiB,mBAAmB,mBAAmB,mBAAmB,CAAC;ACD5M,MAAMJ,cAAY,CAAC,aAAa,SAAS,SAAS;AASlD,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,SAAS,UAAU,aAAa,GAAG,OAAO,GAAG,WAAW,KAAK,CAAC,EAAE;AAAA,EACnF;AACE,SAAO,eAAe,OAAO,4BAA4B,OAAO;AAClE;AACA,MAAM,kBAAkB,OAAO,QAAQ;AAAA,EACrC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAMA,QAAO,WAAW,UAAU,aAAa,GAAG,WAAW,OAAO,GAAG,WAAW,WAAW,KAAK,CAAC,EAAE,GAAGA,QAAO,WAAW,OAAO,CAAC;AAAA,EACnJ;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAMF,WAAS;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,cAAc;AAAA,EACd,YAAY,MAAM,QAAQ,OAAO,QAAQ,CAAC;AAAA,EAC1C,QAAQ;AACV,GAAG,WAAW,YAAY,YAAYA,WAAS;AAAA,EAC7C,aAAa;AACf,GAAG,WAAW,UAAU,aAAaA,WAAS,CAAA,GAAI,WAAW,UAAU,SAAS;AAAA,EAC9E,QAAQ,MAAM,QAAQ,OAAO,QAAQ,KAAK,EAAE;AAAA,EAC5C,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,KAAK,GAAG;AACzD,IAAI;AAAA,EACF,QAAQ,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AAAA,EACvD,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AACnE,CAAC,CAAC,GAAG,WAAW,YAAY,cAAcA,WAAS;AAAA,EACjD,WAAW;AAAA,EACX,iBAAiB;AACnB,GAAG,WAAW,UAAU,aAAaA,WAAS,CAAA,GAAI,WAAW,UAAU,SAAS;AAAA,EAC9E,cAAc,MAAM,QAAQ,OAAO,QAAQ,KAAK,GAAG;AACrD,IAAI;AAAA,EACF,cAAc,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AAC/D,CAAC,CAAC,CAAC,CAAC;AACJ,MAAM,cAA2B,sBAAM,WAAW,SAASS,aAAY,SAAS,KAAK;AACnF,QAAM,QAAQ,cAAc;AAAA,IAC1B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,EAChB,IAAQ,OACJ,QAAQ,8BAA8B,OAAOb,WAAS;AACxD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,iBAAiBC,WAAS;AAAA,IACjD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,YAAY,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrF,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,OAAO,UAAgD,UAAU,CAAC,UAAU,MAAM,CAAC,SAAS,QAAQ,QAAQ,WAAW,WAAW,aAAa,WAAW,SAAS,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,EAIxL,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtJ,SAAS,UAAgD,UAAU,CAAC,UAAU,MAAM,CAAC,UAAU,UAAU,CAAC,GAAG,UAAU,MAAM,CAAC;AAChI,IAAI;AClGJ,MAAM,kBAAkBU,SAAOC,SAAY,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IACxE,OAAO;AAAA,IACP,4BAA4B;AAAA,MAC1B,QAAQ;AAAA,MACR,cAAc;AAAA,QACZ,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,QACtC,aAAa;AAAA,MAAA;AAAA,MAEf,oBAAoB;AAAA,QAClB,cAAa,aAAQ,UAAR,mBAAe,UAAU;AAAA,MAAG;AAAA,MAE3C,0BAA0B;AAAA;AAAA;AAAA,QAGxB,cAAa,aAAQ,UAAR,mBAAe,QAAQ;AAAA,MAAG;AAAA,MAEzC,wBAAwB;AAAA,QACtB,cAAa,aAAQ,UAAR,mBAAe,MAAM;AAAA,MAAG;AAAA,IACvC;AAAA,EAEJ;AAAA,CAAE;AAEK,MAAMC,gBAAc,CAAC,UAAe;AACzC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,GAAG;AAAA,EAAA,IACD;AACJ,QAAM,EAAE,KAAA,IAAS,QAAA;AAEjB,QAAM,UAAU,OAAuB,IAAI;AAE3C,QAAM,iBAAiB,MAAM;AAC3B,QAAI,QAAQ,SAAS;AACnB,cAAQ,QAAQ,YAAY,QAAQ,QAAQ;AAAA,IAC9C;AAAA,EACF;AAEA,YAAU,MAAM;AACd,mBAAA;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,iBAAiB,CAAC,aAAqB;AAC3C,UAAM,kCAAkB,KAAA;AACxB,UAAM,cAAc,IAAI,KAAK,QAAQ;AACrC,UAAM,iBAAiB,YAAY,QAAA,IAAY,YAAY,QAAA;AAC3D,UAAM,oBAAoB,KAAK,MAAM,iBAAiB,GAAI;AAC1D,UAAM,oBAAoB,KAAK,MAAM,oBAAoB,EAAE;AAC3D,UAAM,kBAAkB,KAAK,MAAM,oBAAoB,EAAE;AAEzD,QAAI,oBAAoB,IAAI;AAC1B,aAAO,GAAG,iBAAiB,UAAU,sBAAsB,IAAI,MAAM,EACnE;AAAA,IACJ,WAAW,oBAAoB,IAAI;AACjC,aAAO,GAAG,iBAAiB,UAAU,sBAAsB,IAAI,MAAM,EACnE;AAAA,IACJ,WAAW,kBAAkB,IAAI;AAC/B,aAAO,GAAG,eAAe,QAAQ,oBAAoB,IAAI,MAAM,EAAE;AAAA,IACnE,OAAO;AAEL,YAAM,cAA0C;AAAA,QAC9C,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAGR,YAAM,cAA0C;AAAA,QAC9C,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAGV,YAAM,gBAAgB,YAAY,eAAe,SAAS,WAAW;AACrE,YAAM,gBAAgB,YAAY,eAAe,SAAS,WAAW;AAErE,aAAO,GAAG,aAAa,MAAM,aAAa;AAAA,IAC5C;AAAA,EACF;AAEA,QAAM,iBAAiB,CAAC,UAAe;AACrC,QAAI,MAAM,QAAQ,SAAS;AACzB,YAAM,eAAgB,MAAM,OAA4B;AACxD,UAAI,aAAa,KAAA,MAAW,IAAI;AAC9B,wBAAgB,YAAY;AAC5B,uBAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBACJ,SAAS,aACP,6BAAM,IAAI,CAAC,MAAW,UACpB3B,kCAAAA,IAAC,OAAA,EAAI,WAAU,sBACb,iDAAC,cAAA,EACC,UAAA;AAAA,IAAAF,uCAAC,mBAAA,EACC,UAAA;AAAA,MAAAE,kCAAAA,IAAC,aAAA,EAAY;AAAA,MACZ,KAAK,SAAS,MAAM,+CAAU,mBAAA,CAAA,CAAkB;AAAA,IAAA,GACnD;AAAA,IACAA,kCAAAA,IAAC,iBAAA,EAAgB,WAAU,qBACzB,UAAAF,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAsB,WAAU,6BACzD,UAAA;AAAA,MAAA,KAAK;AAAA,MAAQ;AAAA,MAAI,eAAe,KAAK,UAAU;AAAA,IAAA,EAAA,CAClD,EAAA,CACF;AAAA,EAAA,EAAA,GATiB,KAUnB,GACF,KAGFE,kCAAAA,IAAAD,4BAAA,EACE,gDAAC,OAAA,EAAI,WAAU,kBAAiB,KAAK,SAClC,UAAA,KAAK,IAAI,CAAC,MAAW,iDACnB,cAAA,EACC,UAAA;AAAA,IAAAD,uCAAC,mBAAA,EACC,UAAA;AAAA,MAAAE,kCAAAA,IAAC,QAAA,EAAO,KAAK,OAAO,MAAM,MAAM,IAAI;AAAA,4CACnC,mBAAA,CAAA,CAAkB;AAAA,IAAA,GACrB;AAAA,2CACC,iBAAA,EACE,UAAA;AAAA,MAAA,KAAK;AAAA,MAAK;AAAA,MAAmB,eAAe,KAAK,UAAU;AAAA,MAC5DA,kCAAAA,IAAC,OAAA,EAAI,WAAU,yBACb,UAAAA,kCAAAA,IAAC,OAAE,WAAU,qBAAqB,UAAA,KAAK,QAAA,CAAQ,EAAA,CACjD;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,EAAA,GAViB,KAWnB,CACD,EAAA,CACH,GACF;AAWJ;AAAA;AAAA,IAEEA,kCAAAA,IAAC,SAAI,WAAU,qBAAqB,GAAG,gBACrC,UAAAF,kCAAAA,KAAC,UAAA,EAAS,WAAU,YACjB,UAAA;AAAA,MAAA,YACCE,kCAAAA,IAAC4B,aAAA,EAAU,OAAM,cAAa,gBAAgB,EAAE,iBAAiB,KAAA,GAChE,yBACH,IACA5B,kCAAAA,IAAC,OAAA,EAAI,WAAU,yBACZ,UAAA,eACH;AAAA,MAEC,aACCF,kCAAAA,KAAC,OAAA,EAAI,WAAU,wBACZ,UAAA;AAAA,QAAA;AAAA,QACDA,kCAAAA,KAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,UAAAE,kCAAAA,IAAC,QAAA,EAAO,MAAM,IAAI,KAAK,WAAW,6BAAM,SAAS,GAAG,WAAU,eAAA,CAAe;AAAA,UAC7EA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA;AAAA,cACA,WAAU;AAAA,cACV,WAAW;AAAA,cACX;AAAA,cACC,GAAG;AAAA,YAAA;AAAA,UAAA;AAAA,QACN,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA,EAAA,CAEJ,EAAA,CACF;AAAA;AAGJ;AChLO,MAAM,cAAc,CAAC,UAAe;AAC1C,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,EAAE,SAAS;AAEjB,QAAM,iBAAiB,CAAC,SAAuB;AAC9C,UAAM,gBAAgB,MAAM,IAAI,EAAE,OAAO,cAAc;AACvD,UAAM,gBAAgB,MAAM,IAAI,EAAE,OAAO,OAAO;AAChD,WAAO,GAAG,aAAa,MAAM,aAAa;AAAA,EAC3C;AAEA,QAAM,UAAU;AAAA,IACf,MAAM,EAAE,oBAAoB;AAAA,IAC5B,QAAQ,EAAE,qBAAqB;AAAA,IAC/B,QAAQ,EAAE,qBAAqB;AAAA,IAC/B,QAAQ,EAAE,qBAAqB;AAAA,EAAA;AAEhC;AAAA;AAAA,IAECA,sCAAC,KAAA,EACA,UAAAA,kCAAAA,IAAC,UAAA,EAAS,WAAU,YACnB,UAAAF,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,IAAI;AAAA,UACH,SAAS;AAAA,UACT,eAAe;AAAA,UACf,KAAK;AAAA,UACL,SAAS;AAAA,QAAA;AAAA,QAEV,WAAU;AAAA,QACV,UAAA;AAAA,UAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAC1C,UAAA,EAAE,yBAAyB,EAAA,CAC7B;AAAA,UACAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,IAAI;AAAA,gBACH,QAAQ;AAAA,gBACR,WAAW;AAAA,gBACX,KAAK;AAAA,gBACL,SAAS;AAAA,gBACT,eAAe;AAAA,cAAA;AAAA,cAEf,UAAA,6BAAM,IAAI,CAAC,MAAW,UAAA;;6DACrB,OAAA,EAAI,WAAU,sBACd,UAAAF,kCAAAA,KAAC,cAAA,EACA,UAAA;AAAA,kBAAAA,uCAAC,mBAAA,EACA,UAAA;AAAA,oBAAAE,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACA,OAAM;AAAA,wBACN,IAAI,EAAE,iBAAiB,UAAA;AAAA,sBAAU;AAAA,oBAAA;AAAA,oBAEjC,KAAK,SAAS,MAAM,+CAAU,mBAAA,CAAA,CAAkB;AAAA,kBAAA,GAClD;AAAA,kBACAF,kCAAAA,KAAC,iBAAA,EAAgB,WAAU,qBAC1B,UAAA;AAAA,oBAAAA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACA,MAAK;AAAA,wBACL,OAAM;AAAA,wBACN,WAAU;AAAA,wBACV,UAAA;AAAA,0BAAAE,kCAAAA,IAAC,KAAA,EAAG,UAAA,WAAW,KAAK,QAAQ,GAAE;AAAA,0BAAI;AAAA,0BAAE,QAAQ,KAAK,MAAM;AAAA,0BAAG;AAAA,0BAC1DA,kCAAAA,IAAC,OAAG,UAAA,YAAW,UAAK,aAAL,mBAAe,QAAQ,KAAK,IAAI,EAAA,CAAE;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAElDA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACA,MAAK;AAAA,wBACL,OAAM;AAAA,wBACN,WAAU;AAAA,wBACT,UAAA,eAAe,6BAAM,UAAU;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACjC,EAAA,CACD;AAAA,gBAAA,EAAA,GAtBkB,KAuBnB,GACD;AAAA;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA,GAEF,EAAA,CACD;AAAA;AAGF;ACxEA,MAAM6B,oBAAkB,CAAC,KAAa,aAAsB;AAE1D,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,MAAI,UAAU,IAAW,QAAO,IAAI,SAAS,KAAW,QAAQ,CAAC,CAAC;AAClE,MAAI,UAAU,IAAO,QAAO,IAAI,SAAS,KAAO,QAAQ,CAAC,CAAC;AAC1D,SAAO,OAAO,MAAM;AACtB;AAEA,MAAMC,mBAAiB,CAAC,KAAa,aAAsB;AAEzD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,SAAO,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACjE;AAEA,MAAMC,gBAAc,CAAC,KAAa,aAAsB;AAEtD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,QAAM,SAAS,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACvE,SAAO,GAAG,MAAM,IAAI,QAAQ;AAC9B;AAEA,MAAMC,kBAAgB,CAAC,KAAa,WAAmB;AACrD,MAAI,IAAI,UAAU,OAAQ,QAAO;AACjC,SAAO,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI;AACpC;AAEO,SAAS,mBAAmB,EAAE,OAAO,YAAqC;AAC/E,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,aAAa,OAAuB,IAAI;AAE9C,QAAM,OAAO,QAAQ,MAAM;AACzB,QAAI,EAAC,+BAAO,QAAQ,QAAO,CAAA;AAC3B,WAAO,MAAM,OAAO,IAAI,CAAC,OAAe,MAAA;;AAAe;AAAA,QACrD,MAAM;AAAA,QACN,SAAO,uBAAM,aAAN,mBAAiB,OAAjB,mBAAqB,WAArB,mBAA8B,OAAM;AAAA,MAAA;AAAA,KAC3C;AAAA,EACJ,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,gBAAgB,aAAY,+BAAO,aAAY;AACrD,QAAM,cAAc,QAAQ,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,CAAA,MAAK,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACvF,QAAM,cAAc,QAAQ,MAAM,KAAK,KAAK,CAAA,MAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAErE,QAAM,aAAa,cAAc,MAAM;AACvC,QAAM,eAAe;AACrB,QAAM,cAAc,KAAK,IAAI,KAAK,SAAS,KAAK,IAAI,GAAG;AACvD,QAAM,SAAS,EAAE,KAAK,IAAI,OAAO,cAAc,QAAQ,IAAI,MAAM,WAAA;AAEjE,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,WAAW,CAAC,KAAK,OAAQ;AAErC,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,mBAAiB,YAAO,QAAQ,kBAAf,mBAA8B,gBAAe;AACpE,UAAM,QAAQ,KAAK,IAAI,iBAAiB,IAAI,GAAG;AAC/C,UAAM,SAAS;AACf,UAAM,WAAW,QAAQ,OAAO,OAAO,OAAO;AAC9C,UAAM,YAAY,SAAS,OAAO,MAAM,OAAO;AAE/C,UAAM,OAAO,cAAc;AAC3B,UAAM,IAAI,GAAG,YAAA,EAAc,OAAO,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC;AAEtF,UAAM,IAAI,GAAG,UAAA,EACV,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC9B,MAAM,CAAC,GAAG,SAAS,CAAC,EACpB,QAAQ,IAAI;AAEf,UAAM,aAAa,IAChB,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,QAAI,aAAa;AACf,iBACG,OAAO,MAAM,EACb,KAAK,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,SAAS,EACpB,KAAK,UAAU,SAAS,EACxB,KAAK,gBAAgB,CAAC;AAAA,IAC3B;AAEA,UAAM,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAA,MAAK,MAAM,CAAC;AAC7C,eACG,UAAU,YAAY,EACtB,KAAK,MAAM,EACX,MAAA,EACA,OAAO,MAAM,EACb,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,SAAS,EACpB,KAAK,UAAU,SAAS,EACxB,KAAK,oBAAoB,KAAK;AAEjC,eACG,UAAU,SAAS,EACnB,KAAK,MAAM,EACX,QACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,MAAK,EAAE,CAAC,CAAC,EACnB,KAAK,KAAK,YAAY,EAAE,EACxB,KAAK,eAAe,QAAQ,EAC5B,KAAK,aAAa,MAAM,EACxB,KAAK,QAAQ,SAAS,EACtB,KAAK,OAAKH,kBAAgB,CAAgB,CAAC;AAE9C,eACG,UAAU,MAAM,EAChB,KAAK,IAAI,EACT,MAAA,EACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,MAAK,EAAE,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,EAC/C,KAAK,KAAK,CAAA,MAAK,EAAE,EAAE,IAAI,KAAK,CAAC,EAC7B,KAAK,SAAS,CAAA,MAAK,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAC9C,KAAK,UAAU,EAAE,UAAA,CAAW,EAC5B,KAAK,QAAQ,CAAA,MAAK,EAAE,SAAS,IAAI,YAAY,SAAS,EACtD,KAAK,MAAM,CAAC,EACZ,MAAM,UAAU,SAAS,EACzB,GAAG,cAAc,SAAU,OAAO,GAAG;AACpC,SAAG,OAAO,IAAI,EAAE,KAAK,QAAQ,CAAAI,OAAKA,GAAE,SAAS,IAAI,YAAY,SAAS;AACtE,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,MAAM,UAAU;AACnC,mBAAW,QAAQ,YAAY,WAAW,EAAE,IAAI,iBAAiBF,cAAY,EAAE,OAAO,aAAa,CAAC;AACpG,mBAAW,QAAQ,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE;AACrD,mBAAW,QAAQ,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE;AAAA,MACtD;AAAA,IACF,CAAC,EACA,GAAG,cAAc,SAAU,OAAO,GAAG;AACpC,SAAG,OAAO,IAAI,EAAE,KAAK,QAAQ,CAAAE,OAAKA,GAAE,SAAS,IAAI,YAAY,SAAS;AACtE,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,MAAM,UAAU;AAAA,MACrC;AAAA,IACF,CAAC;AAEH,eACG,UAAU,cAAc,EACxB,KAAK,IAAI,EACT,QACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,MAAK;AACd,UAAI,EAAE,SAAS,GAAG;AAChB,eAAO,EAAE,EAAE,KAAK,IAAI;AAAA,MACtB,OAAO;AACL,eAAO,EAAE,CAAC,IAAI;AAAA,MAChB;AAAA,IACF,CAAC,EACA,KAAK,KAAK,CAAA,OAAM,EAAE,EAAE,IAAI,KAAK,KAAK,EAAE,cAAc,CAAC,EACnD,KAAK,MAAM,QAAQ,EACnB,KAAK,eAAe,OAAO,EAC3B,KAAK,aAAa,KAAK,EACvB,KAAK,eAAe,KAAK,EACzB,KAAK,QAAQ,SAAS,EACtB,KAAK,CAAA,MAAKH,iBAAe,EAAE,KAAoB,CAAC;AAEnD,UAAM,QAAQ,WACX,OAAO,GAAG,EACV,KAAK,aAAa,gBAAgB,EAClC,KAAK,GAAG,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAA,MAAKE,gBAAc,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAEhF,UAAM,UAAU,MAAM,EAAE,KAAK,aAAa,MAAM,EAAE,KAAK,QAAQ,SAAS;AACxE,UAAM,UAAU,SAAS,EAAE,OAAA;AAAA,EAC7B,GAAG,CAAC,MAAM,eAAe,aAAa,aAAa,cAAc,YAAY,aAAa,MAAM,CAAC;AAEjG,SACElC,kCAAAA,KAAC,OAAA,EAAI,WAAU,0BAAyB,KAAK,cAC3C,UAAA;AAAA,IAAAE,sCAAC,KAAA,EAAE,WAAU,gCAAgC,WAAA,+BAAO,UAAS,IAAG;AAAA,IAChEF,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,UAAU,WAAW,QAAQ,aAAa,OAAO,OAAA,GACnF,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAQ,aAAa,OAAO,EAAE,SAAS,QAAA,EAAQ,CAAG;AAAA,MACjFA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,OAAO;AAAA,YACL,UAAU;AAAA,YACV,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,YACP,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,YAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACnMA,MAAM6B,oBAAkB,CAAC,KAAa,aAAsB;AAE1D,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,MAAI,UAAU,IAAW,QAAO,IAAI,SAAS,KAAW,QAAQ,CAAC,CAAC;AAClE,MAAI,UAAU,IAAO,QAAO,IAAI,SAAS,KAAO,QAAQ,CAAC,CAAC;AAC1D,SAAO,OAAO,MAAM;AACtB;AAEA,MAAMC,mBAAiB,CAAC,KAAa,aAAsB;AAEzD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,SAAO,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACjE;AAEA,MAAMC,gBAAc,CAAC,KAAa,aAAsB;AAEtD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,QAAM,SAAS,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACvE,SAAO,GAAG,MAAM,IAAI,QAAQ;AAC9B;AAEA,MAAMC,kBAAgB,CAAC,KAAa,WAAmB;AACrD,MAAI,IAAI,UAAU,OAAQ,QAAO;AACjC,SAAO,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI;AACpC;AAEO,SAAS,eAAe,EAAE,OAAO,YAAiC;AACvE,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,aAAa,OAAuB,IAAI;AAE9C,QAAM,OAAO,QAAQ,MAAM;AACzB,QAAI,EAAC,+BAAO,QAAQ,QAAO,CAAA;AAC3B,WAAO,MAAM,OAAO,IAAI,CAAC,OAAe,MAAA;;AAAe;AAAA,QACrD,MAAM;AAAA,QACN,SAAO,uBAAM,aAAN,mBAAiB,OAAjB,mBAAqB,WAArB,mBAA8B,OAAM;AAAA,MAAA;AAAA,KAC3C;AAAA,EACJ,GAAG,CAAC,KAAK,CAAC;AAEV,QAAM,gBAAgB,aAAY,+BAAO,aAAY;AACrD,QAAM,kBAAkB,QAAQ,MAAM,KAAK,UAAU,GAAG,CAAC,IAAI,CAAC;AAC9D,QAAM,cAAc,KAAK,IAAI,KAAK,SAAS,KAAK,KAAK,GAAG;AACxD,QAAM,WAAW,QAAQ,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAEtF,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,WAAW,CAAC,KAAK,OAAQ;AAErC,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,mBAAiB,YAAO,QAAQ,kBAAf,mBAA8B,gBAAe;AACpE,UAAM,QAAQ,KAAK,IAAI,iBAAiB,IAAI,GAAG;AAC/C,UAAM,SAAS;AACf,UAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AACvD,UAAM,WAAW,QAAQ,OAAO,OAAO,OAAO;AAC9C,UAAM,YAAY,SAAS,OAAO,MAAM,OAAO;AAE/C,UAAM,cAAc,KAAK,KAAK,CAAA,MAAK,EAAE,QAAQ,CAAC;AAE9C,UAAM,UAAU,KAAK,SAAS,IAAI,OAAO;AACzC,UAAM,IAAI,GACP,UAAA,EACA,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC9B,MAAM,CAAC,GAAG,QAAQ,CAAC,EACnB,QAAQ,OAAO;AAElB,UAAM,OAAO,cAAc,KAAK,IAAI,GAAG,GAAG,IAAI,MAAM,CAAA,MAAK,EAAE,KAAK,KAAK,CAAC,IAAI;AAC1E,UAAM,OAAO,KAAK,IAAI,GAAG,GAAG,IAAI,MAAM,CAAA,MAAK,EAAE,KAAK,KAAK,CAAC;AACxD,UAAM,IAAI,GAAG,YAAA,EACV,OAAO,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC,EACjC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,UAAM,aAAa,IAChB,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,UAAM,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAA,MAAK,MAAM,CAAC;AAC7C,eACG,UAAU,YAAY,EACtB,KAAK,MAAM,EACX,MAAA,EACA,OAAO,MAAM,EACb,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,QAAQ,EACnB,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,KAAK,UAAU,SAAS,EACxB,KAAK,oBAAoB,KAAK;AAEjC,eACG,UAAU,SAAS,EACnB,KAAK,MAAM,EACX,QACA,OAAO,MAAM,EACb,KAAK,KAAK,EAAE,EACZ,KAAK,KAAK,CAAA,MAAK,EAAE,CAAC,CAAC,EACnB,KAAK,MAAM,QAAQ,EACnB,KAAK,eAAe,KAAK,EACzB,KAAK,aAAa,KAAK,EACvB,KAAK,QAAQ,SAAS,EACtB,KAAK,OAAKH,kBAAgB,CAAgB,CAAC;AAE9C,QAAI,aAAa;AACf,iBACG,OAAO,MAAM,EACb,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,QAAQ,EACnB,KAAK,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,MAAM,EAAE,CAAC,CAAC,EACf,KAAK,UAAU,SAAS,EACxB,KAAK,gBAAgB,CAAC;AAAA,IAC3B;AAEA,eACG,UAAU,MAAM,EAChB,KAAK,IAAI,EACT,MAAA,EACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,MAAK,EAAE,EAAE,IAAI,KAAK,CAAC,EAC7B,KAAK,KAAK,CAAA,MAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAC/C,KAAK,SAAS,EAAE,UAAA,CAAW,EAC3B,KAAK,UAAU,CAAA,MAAK,KAAK,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,EAC/C,KAAK,QAAQ,CAAA,MAAK,EAAE,SAAS,IAAI,YAAY,SAAS,EACtD,KAAK,MAAM,CAAC,EACZ,MAAM,UAAU,SAAS,EACzB,GAAG,cAAc,SAAU,OAAO,GAAG;AACpC,SAAG,OAAO,IAAI,EAAE,KAAK,WAAW,MAAM;AACtC,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,MAAM,UAAU;AACnC,mBAAW,QAAQ,YAAY,WAAW,EAAE,IAAI,iBAAiBE,cAAY,EAAE,OAAO,aAAa,CAAC;AACpG,mBAAW,QAAQ,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE;AACrD,mBAAW,QAAQ,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE;AAAA,MACtD;AAAA,IACF,CAAC,EACA,GAAG,cAAc,WAAY;AAC5B,SAAG,OAAO,IAAI,EAAE,KAAK,WAAW,GAAG;AACnC,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,MAAM,UAAU;AAAA,MACrC;AAAA,IACF,CAAC;AAEH,QAAI,iBAAiB;AACnB,iBACG,UAAU,cAAc,EACxB,KAAK,IAAI,EACT,QACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,OAAM,EAAE,EAAE,IAAI,KAAK,KAAK,EAAE,UAAA,IAAc,CAAC,EACnD,KAAK,KAAK,CAAA,MAAK,EAAE,SAAS,IAAI,EAAE,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,EAC9D,KAAK,eAAe,QAAQ,EAC5B,KAAK,aAAa,KAAK,EACvB,KAAK,eAAe,KAAK,EACzB,KAAK,QAAQ,SAAS,EACtB,KAAK,CAAA,MAAKD,iBAAe,EAAE,KAAoB,CAAC;AAAA,IACrD;AAEA,UAAM,QAAQ,WACX,OAAO,GAAG,EACV,KAAK,aAAa,eAAe,SAAS,GAAG,EAC7C,KAAK,GAAG,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;AAEpC,UAAM,UAAU,MAAM,EAAE,KAAK,aAAa,KAAK,EAAE,KAAK,QAAQ,SAAS;AACvE,UAAM,UAAU,SAAS,EAAE,OAAA;AAE3B,QAAI,KAAK,SAAS,GAAG;AACnB,YAAM,UAAU,MAAM,EAAE,KAAK,WAAY;AACvC,cAAM,OAAO,GAAG,OAAO,IAAI;AAC3B,aAAK,KAAKE,gBAAc,KAAK,KAAA,GAAQ,CAAC,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,eAAe,iBAAiB,aAAa,QAAQ,CAAC;AAEhE,SACElC,kCAAAA,KAAC,OAAA,EAAI,WAAU,0BAAyB,KAAK,cAC3C,UAAA;AAAA,IAAAE,sCAAC,KAAA,EAAE,WAAU,gCAAgC,WAAA,+BAAO,UAAS,IAAG;AAAA,IAChEF,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,UAAU,WAAW,QAAQ,aAAa,OAAO,OAAA,GACnF,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAQ,aAAa,OAAO,EAAE,SAAS,QAAA,EAAQ,CAAG;AAAA,MACjFA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAK;AAAA,UACL,OAAO;AAAA,YACL,UAAU;AAAA,YACV,iBAAiB;AAAA,YACjB,SAAS;AAAA,YACT,cAAc;AAAA,YACd,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,YACP,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,eAAe;AAAA,YACf,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,YAAY;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IACF,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACzMA,MAAMkC,eAAa,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS;AAa1G,MAAM,mBAAmB,CAAC,KAAa,UAAmB,SAAkB;AAC1E,MAAI,KAAM,QAAO,GAAG,GAAG,IAAI,IAAI;AAC/B,MAAI,UAAU;AACZ,UAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAI,UAAU,IAAW,QAAO,GAAG,QAAQ,KAAK,SAAS,KAAW,QAAQ,CAAC,CAAC;AAC9E,QAAI,UAAU,IAAO,QAAO,GAAG,QAAQ,KAAK,SAAS,KAAO,QAAQ,CAAC,CAAC;AACtE,WAAO,GAAG,QAAQ,IAAI,GAAG;AAAA,EAC3B;AACA,SAAO,IAAI,SAAA;AACb;AAEA,MAAM,qBAAqB,CAAC,QAAgB;AAC1C,MAAI,OAAO,IAAW,SAAQ,MAAM,KAAW,QAAQ,CAAC,IAAI;AAC5D,MAAI,OAAO,IAAO,SAAQ,MAAM,KAAO,QAAQ,CAAC,IAAI;AACpD,SAAO,OAAO,GAAG;AACnB;AAEO,SAASC,aAAW,EAAE,SAA0B;;AACrD,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,aAAa,OAAuB,IAAI;AAE9C,QAAM,UAAS,+BAAO,WAAU,CAAA;AAChC,QAAM,YAAU,oCAAO,aAAP,mBAAkB,OAAM,CAAA;AACxC,QAAM,UAAS,mCAAS,WAAU,CAAA;AAClC,QAAM,iBAAgB,+BAAO,aAAY;AACzC,QAAM,QAAO,+BAAO,SAAQ;AAE5B,QAAM,QAAQ,QAAQ,MAAM,OAAO,OAAO,CAAC,KAAK,MAAM,OAAO,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;AAElF,QAAM,OAAO,QAAQ,MAAM,OAAO,IAAI,CAAC,OAAe,OAAe;AAAA,IACnE,MAAM;AAAA,IACN,OAAO,OAAO,CAAC,KAAK;AAAA,IACpB,KAAK,QAAQ,KAAK,OAAO,CAAC,KAAK,KAAK,QAAQ,MAAM;AAAA,EAAA,EAClD,GAAG,CAAC,QAAQ,QAAQ,KAAK,CAAC;AAE5B,QAAM,aAAa,QAAQ,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC;AAIpF,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,WAAW,CAAC,KAAK,OAAQ;AAErC,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,gBAAcC,MAAA,aAAa,YAAb,gBAAAA,IAAsB,gBAAe;AACzD,UAAM,YAAY,KAAK,IAAI,cAAc,KAAK,GAAG;AACjD,UAAM,SAAS;AACf,UAAM,cAAc,YAAY,IAAI;AACpC,UAAM,cAAc,cAAc;AAElC,UAAM,IAAI,IAAI,OAAO,GAAG,EAAE,KAAK,aAAa,aAAa,YAAY,CAAC,IAAI,YAAY,CAAC,GAAG;AAE1F,UAAM,MAAM,GAAG,IAAA,EAAoD,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,SAAS,IAAI;AACjH,UAAM,MAAM,GAAG,IAAA,EACZ,YAAY,WAAW,EAAE,YAAY,WAAW,EAAE,aAAa,CAAC;AAEnE,MAAE,UAAU,MAAM,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,MAAA,EAAQ,OAAO,MAAM,EACtD,KAAK,KAAK,GAAG,EAAE,KAAK,QAAQ,CAACC,IAAG,MAAMH,aAAW,IAAIA,aAAW,MAAM,CAAC,EAAE,MAAM,UAAU,SAAS,EAClG,GAAG,cAAc,SAAU,OAAO,GAAG;AACpC,SAAG,OAAO,IAAI,EAAE,KAAK,WAAW,MAAM;AACtC,UAAI,WAAW,SAAS;AACtB,mBAAW,QAAQ,MAAM,UAAU;AAChB,yBAAiB,EAAE,KAAK,OAAO,eAAe,IAAI;AACrE,cAAM,iBAAiB,CAAC,KAAa,SAAkB;AACrD,cAAI,CAAC,KAAM,QAAO,OAAO,GAAG;AAC5B,cAAI,KAAK,IAAI,GAAG,KAAK,YAAkB,IAAI,KAAK,IAAI,GAAG,IAAI,KAAW,QAAQ,CAAC,CAAC,KAAK,IAAI;AACzF,cAAI,KAAK,IAAI,GAAG,KAAK,YAAc,IAAI,KAAK,IAAI,GAAG,IAAI,KAAO,QAAQ,CAAC,CAAC,KAAK,IAAI;AACjF,iBAAO,GAAG,GAAG,IAAI,IAAI;AAAA,QACvB;AACA,mBAAW,QAAQ,YAAY,WAAW,EAAE,KAAK,IAAI,iBAAiB,eAAe,EAAE,KAAK,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,IAAI,QAAQ,CAAC,CAAC;AAC/I,mBAAW,QAAQ,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE;AACrD,mBAAW,QAAQ,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE;AAAA,MACtD;AAAA,IACF,CAAC,EACA,GAAG,cAAc,WAAY;AAC5B,SAAG,OAAO,IAAI,EAAE,KAAK,WAAW,GAAG;AACnC,UAAI,WAAW,QAAS,YAAW,QAAQ,MAAM,UAAU;AAAA,IAC7D,CAAC;AAEH,UAAM,kBAAkB,mBAAmB,KAAK;AAEhD,MAAE,OAAO,MAAM,EAAE,KAAK,eAAe,QAAQ,EAAE,KAAK,qBAAqB,QAAQ,EAC9E,KAAK,aAAa,gBAAgB,SAAS,IAAI,SAAS,MAAM,EAAE,KAAK,eAAe,KAAK,EAAE,KAAK,QAAQ,SAAS,EACjH,KAAK,eAAe;AAAA,EACzB,GAAG,CAAC,MAAM,eAAe,MAAM,OAAO,KAAK,CAAC;AAE5C,SACEpC,kCAAAA,KAAC,OAAA,EAAI,WAAU,0BAAyB,KAAK,cAC3C,UAAA;AAAA,IAAAE,sCAAC,KAAA,EAAE,WAAU,gCAAiC,WAAA,+BAAO,UAAS,IAAG;AAAA,IACjEF,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,eAAe,UAAU,YAAY,UAAU,KAAK,QAAQ,OAAO,UAChG,UAAA;AAAA,MAAAA,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,SAAS,QAAQ,gBAAgB,UAAU,OAAO,OAAA,GACpF,UAAA;AAAA,QAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAQ,KAAK,OAAO,EAAE,UAAU,QAAA,EAAQ,CAAG;AAAA,QAC1EA,kCAAAA,IAAC,OAAA,EAAI,KAAK,YAAY,OAAO;AAAA,UAC3B,UAAU;AAAA,UAAY,iBAAiB;AAAA,UAAS,SAAS;AAAA,UAAY,cAAc;AAAA,UACnF,WAAW;AAAA,UAA+B,UAAU;AAAA,UAAQ,OAAO;AAAA,UAAW,SAAS;AAAA,UACvF,YAAY;AAAA,UAAiB,eAAe;AAAA,UAAQ,QAAQ;AAAA,UAAI,QAAQ;AAAA,UAAqB,YAAY;AAAA,QAAA,EAC3G,CAAG;AAAA,MAAA,GACL;AAAA,4CACC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,UAAU,QAAQ,gBAAgB,UAAU,KAAK,YAAY,UAAU,OAAA,GACnG,qBAAW,IAAI,CAAC,MAAM,6CACpB,OAAA,EAAoB,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,OAAO,SAAS,WAAW,cAAc,OAAO,QAAQ,aAChI,UAAA;AAAA,QAAAA,sCAAC,SAAI,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,cAAc,OAAO,iBAAiBkC,aAAW,IAAIA,aAAW,MAAM,GAAG,YAAY,KAAK;AAAA,QACrIlC,kCAAAA,IAAC,UAAK,OAAO,EAAE,UAAU,QAAQ,OAAO,WAAW,UAAU,QAAQ,UAAU,UAAU,cAAc,YAAY,YAAY,YAAY,OAAO,KAAK,MAAO,UAAA,KAAK,KAAA,CAAK;AAAA,QACxKF,kCAAAA,KAAC,QAAA,EAAK,OAAO,EAAE,UAAU,QAAQ,OAAO,WAAW,YAAY,OAAO,YAAY,EAAA,GAAM,UAAA;AAAA,UAAA,KAAK,IAAI,QAAQ,CAAC;AAAA,UAAE;AAAA,QAAA,EAAA,CAAC;AAAA,MAAA,KAHrG,KAAK,IAIf,CACD,EAAA,CACH;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AC9HA,MAAM,aAAa,CAAC,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,SAAS;AAE1G,MAAM,kBAAkB,CAAC,KAAa,aAAsB;AAE1D,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,MAAI,UAAU,IAAW,QAAO,IAAI,SAAS,KAAW,QAAQ,CAAC,CAAC;AAClE,MAAI,UAAU,IAAO,QAAO,IAAI,SAAS,KAAO,QAAQ,CAAC,CAAC;AAC1D,SAAO,OAAO,MAAM;AACtB;AAEA,MAAM,iBAAiB,CAAC,KAAa,aAAsB;AAEzD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,SAAO,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACjE;AAEA,MAAM,cAAc,CAAC,KAAa,aAAsB;AAEtD,QAAM,SAAS,KAAK,IAAI,GAAG,KAAK,MAAY,MAAM,KAAK,IAAI,GAAG,KAAK,MAAQ,MAAM;AACjF,QAAM,SAAS,KAAK,IAAI,GAAG;AAC3B,QAAM,WAAW,UAAU,OAAa,SAAS,KAAW,QAAQ,CAAC,IAAI,UAAU,OAAS,SAAS,KAAO,QAAQ,CAAC,IAAI,OAAO,MAAM;AACtI,QAAM,SAAS,MAAM,IAAI,IAAI,QAAQ,GAAG,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM;AACvE,SAAO,GAAG,MAAM,IAAI,QAAQ;AAC9B;AAEA,MAAM,gBAAgB,CAAC,KAAa,WAAmB;AACrD,MAAI,IAAI,UAAU,OAAQ,QAAO;AACjC,SAAO,IAAI,MAAM,GAAG,SAAS,CAAC,IAAI;AACpC;AAEO,SAASwC,kBAAgB,EAAE,OAAO,YAAkC;AACzE,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,aAAa,OAAuB,IAAI;AAE9C,QAAM,UAAS,+BAAO,WAAU,CAAA;AAChC,QAAM,YAAW,+BAAO,aAAY,CAAA;AACpC,QAAM,gBAAgB,aAAY,+BAAO,aAAY;AAErD,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO,OAAO,IAAI,CAAC,OAAe,MAAc;AAC9C,YAAM,MAAuC,EAAE,MAAM,MAAA;AACrD,eAAS,QAAQ,CAAC,IAAI,QAAQ;;AAAE,YAAI,GAAG,SAAS,WAAW,GAAG,EAAE,MAAI,QAAG,WAAH,mBAAY,OAAM;AAAA,MAAG,CAAC;AAC1F,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,QAAQ,CAAC;AAErB,QAAM,WAAW,QAAQ,MAAM,SAAS,IAAI,CAAC,OAAO,GAAG,SAAS,WAAW,SAAS,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC;AAC9G,QAAM,kBAAkB,QAAQ,MAAM,KAAK,SAAS,SAAS,UAAU,IAAI,CAAC,MAAM,QAAQ,CAAC;AAC3F,QAAM,aAAa,QAAQ,MAAM,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;AAE3E,QAAM,cAAc,KAAK,IAAI,KAAK,SAAS,KAAK,SAAS,SAAS,KAAK,KAAK,GAAG;AAC/E,QAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,aAAa,MAAM,IAAI,MAAM,GAAA;AAE1E,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,WAAW,CAAC,KAAK,OAAQ;AAErC,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,mBAAiB,YAAO,QAAQ,kBAAf,mBAA8B,gBAAe;AACpE,UAAM,QAAQ,KAAK,IAAI,iBAAiB,IAAI,GAAG;AAC/C,UAAM,SAAS;AACf,UAAM,WAAW,QAAQ,OAAO,OAAO,OAAO;AAC9C,UAAM,YAAY,SAAS,OAAO,MAAM,OAAO;AAE/C,UAAM,KAAK,GAAG,UAAA,EAAY,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,IAAc,CAAC,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,QAAQ,GAAG;AACpG,UAAM,KAAK,GAAG,UAAA,EAAY,OAAO,QAAQ,EAAE,MAAM,CAAC,GAAG,GAAG,UAAA,CAAW,CAAC,EAAE,QAAQ,GAAG;AAEjF,UAAM,WAAW,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,QAAQ,KAAK,IAAI,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAC3G,UAAM,IAAI,GAAG,YAAA,EAAc,OAAO,CAAC,GAAG,WAAW,IAAI,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAE5E,UAAM,aAAa,IAAI,OAAO,GAAG,EAAE,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9F,UAAM,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAA,MAAK,IAAI,CAAC;AAC3C,eAAW,UAAU,YAAY,EAAE,KAAK,MAAM,EAAE,MAAA,EAC7C,OAAO,MAAM,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,MAAM,QAAQ,EAAE,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EAC5F,KAAK,UAAU,SAAS,EAAE,KAAK,oBAAoB,KAAK;AAE3D,eAAW,UAAU,SAAS,EAAE,KAAK,MAAM,EAAE,QAC1C,OAAO,MAAM,EAAE,KAAK,KAAK,EAAE,EAAE,KAAK,KAAK,CAAA,MAAK,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,QAAQ,EAAE,KAAK,eAAe,KAAK,EAChG,KAAK,aAAa,MAAM,EAAE,KAAK,QAAQ,SAAS,EAAE,KAAK,OAAK,gBAAgB,CAAgB,CAAC;AAEhG,SAAK,QAAQ,CAAC,MAAM;AAClB,YAAM,IAAI,WAAW,OAAO,GAAG,EAAE,KAAK,aAAa,aAAa,GAAG,EAAE,IAAc,CAAC,KAAK;AACzF,eAAS,QAAQ,CAAC,KAAK,MAAM;AAC3B,cAAM,QAAQ,OAAO,EAAE,GAAG,CAAC,KAAK;AAChC,cAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,cAAM,OAAO,EAAE,QAAQ;AACvB,UAAE,OAAO,MAAM,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,SAAS,GAAG,WAAW,EAClF,KAAK,UAAU,YAAY,IAAI,EAAE,KAAK,QAAQ,WAAW,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,MAAM,UAAU,SAAS,EACxH,GAAG,cAAc,SAAU,OAAO;AACjC,aAAG,OAAO,IAAI,EAAE,KAAK,WAAW,MAAM;AACtC,cAAI,WAAW,SAAS;AACtB,uBAAW,QAAQ,MAAM,UAAU;AACnC,uBAAW,QAAQ,YAAY,WAAW,GAAG,eAAe,EAAE,IAAI,QAAQ,YAAY,OAAO,aAAa,CAAC;AAC3G,uBAAW,QAAQ,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE;AACrD,uBAAW,QAAQ,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE;AAAA,UACtD;AAAA,QACF,CAAC,EACA,GAAG,cAAc,WAAY;AAC5B,aAAG,OAAO,IAAI,EAAE,KAAK,WAAW,GAAG;AACnC,cAAI,WAAW,QAAS,YAAW,QAAQ,MAAM,UAAU;AAAA,QAC7D,CAAC;AAEH,YAAI,mBAAmB,GAAG,UAAA,IAAc,MAAM,WAAW,GAAG;AAC1D,YAAE,OAAO,MAAM,EAAE,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,GAAG,cAAc,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,EAC/E,KAAK,eAAe,QAAQ,EAAE,KAAK,aAAa,KAAK,EAAE,KAAK,eAAe,KAAK,EAAE,KAAK,QAAQ,SAAS,EACxG,KAAK,eAAe,KAAoB,CAAC;AAAA,QAC9C;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAED,UAAM,QAAQ,WAAW,OAAO,GAAG,EAAE,KAAK,aAAa,eAAe,SAAS,GAAG,EAC/E,KAAK,GAAG,WAAW,EAAE,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,MAAM,aAAa,cAAc,OAAO,CAAC,GAAG,EAAE,IAAI,cAAc,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AACjI,UAAM,UAAU,MAAM,EAAE,KAAK,aAAa,MAAM,EAAE,KAAK,QAAQ,SAAS;AACxE,QAAI,WAAY,OAAM,UAAU,MAAM,EAAE,KAAK,aAAa,aAAa,EAAE,KAAK,eAAe,KAAK;AAClG,UAAM,UAAU,SAAS,EAAE,OAAA;AAAA,EAC7B,GAAG,CAAC,MAAM,UAAU,eAAe,iBAAiB,YAAY,aAAa,MAAM,CAAC;AAEpF,SACExC,kCAAAA,KAAC,OAAA,EAAI,WAAU,0BAAyB,KAAK,cAC3C,UAAA;AAAA,IAAAE,sCAAC,KAAA,EAAE,WAAU,gCAAgC,WAAA,+BAAO,UAAS,IAAG;AAAA,IAChEA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,QAAQ,UAAU,QAAQ,cAAc,OAAA,GACzE,UAAA,SAAS,IAAI,CAAC,KAAK,MAClBF,kCAAAA,KAAC,OAAA,EAAc,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,MAAA,GAClE,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,OAAO,QAAQ,QAAQ,QAAQ,cAAc,OAAO,iBAAiB,WAAW,IAAI,WAAW,MAAM,KAAK;AAAA,MACxHA,kCAAAA,IAAC,UAAK,OAAO,EAAE,UAAU,QAAQ,OAAO,UAAA,GAAc,UAAA,IAAA,CAAI;AAAA,IAAA,KAFlD,GAGV,CACD,GACH;AAAA,IACAF,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,YAAY,UAAU,WAAW,QAAQ,aAAa,OAAO,OAAA,GACnF,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAQ,aAAa,OAAO,EAAE,SAAS,QAAA,EAAQ,CAAG;AAAA,MACjFA,kCAAAA,IAAC,OAAA,EAAI,KAAK,YAAY,OAAO;AAAA,QAC3B,UAAU;AAAA,QAAY,iBAAiB;AAAA,QAAS,SAAS;AAAA,QAAY,cAAc;AAAA,QACnF,WAAW;AAAA,QAA+B,UAAU;AAAA,QAAQ,OAAO;AAAA,QAAW,SAAS;AAAA,QACvF,YAAY;AAAA,QAAiB,eAAe;AAAA,QAAQ,QAAQ;AAAA,QAAI,QAAQ;AAAA,QAAqB,YAAY;AAAA,MAAA,EAC3G,CAAG;AAAA,IAAA,EAAA,CACL;AAAA,EAAA,GACF;AAEJ;ACtIA,SAAS,kBAAkB,EAAE,QAAQ,WAAW,SAA+C;AAC7F,QAAM,WAAgC;AAAA,IACpC,KAAK;AAAA,IACL,gBAAgB;AAAA,IAChB,OAAOmC;AAAAA,IACP,aAAaG;AAAAA,EAAA;AAGf,SACEtC,sCAAC,SAAI,WAAU,6BACZ,iBAAO,IAAI,CAAC,OAAY,MAAc;AACrC,UAAM,YAAY,SAAS,MAAM,UAAU;AAC3C,WAAO,YACLA,kCAAAA,IAAC,WAAA,EAAkB,OAAc,SAAA,GAAjB,CAAqC,IACnD;AAAA,EACN,CAAC,EAAA,CACH;AAEJ;AAEA,SAAS,gBAAgB,MAAc,QAAQ,IAAI;AACjD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,EAAE;AAC7C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,YAAU,MAAM;AACd,QAAI,IAAI;AACR,UAAM,WAAW,YAAY,MAAM;AACjC;AACA,mBAAa,KAAK,MAAM,GAAG,CAAC,CAAC;AAE7B,UAAI,KAAK,KAAK,QAAQ;AACpB,sBAAc,QAAQ;AACtB,gBAAQ,IAAI;AAAA,MACd;AAAA,IACF,GAAG,KAAK;AAER,WAAO,MAAM,cAAc,QAAQ;AAAA,EACrC,GAAG,CAAC,MAAM,KAAK,CAAC;AAEhB,SAAO,EAAE,WAAW,KAAA;AACtB;AAEO,SAAS,eAAe,QAA6B,IAAI;AAC9D,QAAM,EAAE,eAAe,WAAW,SAAA,IAAa;AAE/C,QAAM,cAAc,QAAQ,MAAM;;AAChC,QAAI,CAAC,cAAe,QAAO,EAAE,aAAa,IAAI,UAAU,CAAA,GAAI,QAAQ,GAAC;AAErE,UAAM,YAAY,cAAc,SAAS,CAAA,GAAI,IAAI,CAAC,UAAe;AAAA,MAC/D,MACE,KAAK,aAAa,aACd,gBACA,KAAK,aAAa,YAClB,QACA;AAAA,MACN,MAAM,KAAK;AAAA,MACX,OACE,KAAK,aAAa,aACd,aACA,KAAK,aAAa,YAClB,YACA;AAAA,MACN,OACE,KAAK,aAAa,aACd,YACA,KAAK,aAAa,YAClB,YACA;AAAA,IAAA,EACN;AAEF,WAAO;AAAA,MACL,aAAa,cAAc,WAAW;AAAA,MACtC;AAAA,MACA,QAAQ,cAAc,UAAU,CAAA;AAAA,MAChC,YAAU,0DAAe,WAAf,mBAAwB,OAAxB,mBAA4B,aAAY;AAAA,IAAA;AAAA,EAEtD,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC9C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAE5D,QAAM,EAAE,WAAW,KAAA,IAAS,gBAAgB,YAAY,aAAa,EAAE;AAEvE,YAAU,MAAM;AACd,QAAI,MAAM;AACR,iBAAW,MAAM,mBAAmB,IAAI,GAAG,GAAG;AAAA,IAChD;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,WAAS,aAAa;AACpB,cAAU,UAAU,UAAU,YAAY,WAAW;AACrD,cAAU,IAAI;AACd,eAAW,MAAM,UAAU,KAAK,GAAG,GAAI;AAAA,EACzC;AAEA,SACEF,kCAAAA,KAAC,OAAA,EAAI,WAAU,oBACZ,UAAA;AAAA,IAAA,CAAC,YACAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,MAAM;AACb,sBAAY,IAAI;AAChB;AAAA,QACF;AAAA,QACA,WAAU;AAAA,QACV,UAAU;AAAA,QAEV,UAAA;AAAA,UAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,2CACZ,UAAA,YACCA,kCAAAA,IAAC,OAAA,EAAI,WAAU,qCAAoC,IAEnDA,kCAAAA,IAAC,UAAA,CAAA,CAAS,GAEd;AAAA,UAEAA,kCAAAA,IAAC,QAAA,EAAK,WAAU,4CAA2C,UAAA,cAE3D;AAAA,gDAEC,QAAA,EAAK,WAAU,+CACb,UAAA,YAAY,2BAA2B,4BAC1C;AAAA,UAEC,CAAC,aACAA,kCAAAA,IAAC,aAAA,EAAY,WAAU,6CAAA,CAA6C;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAKzE,YACCF,kCAAAA,KAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,MAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,4BACb,UAAA;AAAA,QAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,UAAAE,sCAAC,OAAA,EAAI,WAAU,iCACb,UAAAA,sCAAC,YAAS,GACZ;AAAA,UACAA,kCAAAA,IAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,cAEjD;AAAA,UACAA,kCAAAA,IAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,OAAA,CAAI;AAAA,QAAA,GACvD;AAAA,QAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,UAAAE,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS;AAAA,cACT,WAAW,gCACT,SAAS,WAAW,EACtB;AAAA,cAEC,UAAA,SAASA,sCAAC,OAAA,CAAA,CAAM,0CAAM,MAAA,CAAA,CAAK;AAAA,YAAA;AAAA,UAAA;AAAA,UAG9BA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAAS,MAAM,YAAY,KAAK;AAAA,cAChC,WAAU;AAAA,cAEV,gDAAC,WAAA,CAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,QAAA,aACCA,kCAAAA,KAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,UAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,0CAAA,CAA0C;AAAA,UACzDA,kCAAAA,IAAC,QAAA,EAAK,WAAU,kCAAiC,UAAA,4BAAA,CAEjD;AAAA,QAAA,GACF;AAAA,QAGD,CAAC,aACAF,kCAAAA,KAAC,KAAA,EAAE,WAAU,6BACV,UAAA;AAAA,UAAA;AAAA,UACA,CAAC,QACAE,kCAAAA,IAAC,QAAA,EAAK,WAAU,mCAAA,CAAmC;AAAA,QAAA,GAEvD;AAAA,QAGD,YAAY,OAAO,SAAS,KAAK,mBAChCA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ,YAAY;AAAA,YACpB,UAAU,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAIzB,mBACCA,kCAAAA,IAAC,OAAA,EAAI,WAAU,8BACZ,sBAAY,SAAS,IAAI,CAAC,SAAc,MAAA;;AACvCF,mDAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAW,oEAAkE,aAAQ,UAAR,mBAAe,kBAAiB,MAAM;AAAA,cAEnH,UAAA;AAAA,gBAAAE,sCAAC,QAAQ,MAAR,EAAa,OAAO,EAAE,OAAO,QAAQ,SAAS;AAAA,gBAC/CA,kCAAAA,IAAC,QAAA,EAAK,WAAU,wCACb,kBAAQ,OACX;AAAA,gBACAF,kCAAAA,KAAC,QAAA,EAAK,WAAU,uCAAsC,UAAA;AAAA,kBAAA;AAAA,kBACjD,QAAQ;AAAA,gBAAA,GACb;AAAA,sDACC,OAAA,EAAI,WAAU,wCAAuC,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KACtH,UAAAE,kCAAAA,IAAC,QAAA,EAAK,GAAE,iBAAgB,EAAA,CAC1B;AAAA,cAAA;AAAA,YAAA;AAAA,YAZK;AAAA,UAAA;AAAA,SAcR,EAAA,CACH;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;ACzLA,MAAMuC,qBAAmB,IAAI,OAAA,EAAS,MAAM;AAAA,EAC3C,aAAa,IAAI,QACf,SAAS,6BAA6B,EACtC,IAAI,GAAG,6BAA6B;AACvC,CAAC;AAED,MAAM,qBAAwD,CAAC;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACC;AACF,MAAM;AACL,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAqB;AAAA,IAC9C,WAAW;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM,CAAA;AAAA,EAAC,CACP;AACD,QAAM,EAAE,WAAW,SAAS,OAAO,SAAS;AAE5C,QAAM,EAAE,SAAS,cAAc,OAAO,UAAU,WAAW,OAAO,QAAA,IACjE,QAAoB;AAAA,IACnB,UAAUC,EAAYD,kBAAgB;AAAA,IACtC,MAAM;AAAA,EAAA,CACN;AAEF,QAAM,aAAa;AACnB,QAAM,aAAa,UAAU,aAAa;AAE1C,QAAM,WAAW,OAAO,WAAuB;AAC9C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,cAAU,OAAO,WAAW;AAC5B,qBAAA;AAAA,EACD;AAEA,QAAM,mBAAmB,MAAM;AAC9B,UAAM,EAAC,aAAa,CAAA,GAAG;AACvB,cAAA;AAAA,EACD;AAEA,QAAME,iBAAgB,CAAC;AAAA,IACtB,MAAAC;AAAAA,IACA;AAAA,EAAA,MAIK;AACL,UAAM,eAAeA,MAAK,IAAI,CAAC,iBAAiB;AAC/C,YAAM,OAAO,QAAQ,KAAK,CAAC,WAAgB,OAAO,OAAO,YAAY;AACrE,UAAI,MAAM;AACT,eAAO,SAAS,IAAI;AAAA,MACrB;AACA,aAAO;AAAA,IACR,CAAC;AAED,kDACE,KAAA,EAAI,SAAQ,QAAO,gBAAe,iBAAgB,YAAW,UAC7D,UAAA;AAAA,MAAA5C,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,OAAM;AAAA,UACN,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,UAAU,IAAI,IAAA;AAAA,UACxD,UAAA;AAAA,YAAA,aAAa,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,YAClC4C,MAAK,SAAS,KACd1C,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,OAAOA,kCAAAA,IAAC,UAAA,EAAS,UAAS,QAAA,CAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UACnC;AAAA,QAAA;AAAA,MAAA;AAAA,4CAGD,QAAA,EAAO,SAAQ,QAAO,SAAS,MAAM,SAAS,eAAe,EAAE,GAC/D,gDAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,oBAEtC,EAAA,CACD;AAAA,IAAA,GACD;AAAA,EAEF;AAEA,QAAM,sBAAsB,YAAY;;AACvC,QAAI;AACH,YAAM,UAAU,EAAE,MAAM,GAAG,OAAO,IAAI,SAAS,sBAAA;AAC/C,YAAM,WAAW,MAAM,UAAU,EAAE,GAAG,SAAS,GAAG,SAAA,GAAY;AAE9D,YAAM2C,WAAe,0CAAU,SAAV,mBAAgB,UAAS,CAAA;AAC9C,eAAS;AAAA,QACR,WAAW;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,MAAMA;AAAAA,MAAA,CACN;AAAA,IACF,SAASC,QAAO;AACf,eAAS;AAAA,QACR,WAAW;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,MAAM,CAAA;AAAA,MAAC,CACP;AAAA,IACF;AAAA,EACD;AAEA,YAAU,MAAM;AACf,QAAI,QAAQ;AACX,0BAAA;AAAA,IACD;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AACX,YAAU,MAAM;AACf,QAAI,SAAS;AACZ,sBAAgB,SAAS,wBAAwB,EAAE,SAAS,SAAQ;AAAA,IACrE;AAAA,EACD,GAAG,CAAC,OAAO,OAAO,CAAC;AAEnB,QAAM,WAAW,CAAC,QAA0B;AAC3C,UAAM,EAAC,aAAa,IAAI,YAAU,GAAA,IAAM,OAAO,CAAA;AAE/C,WAAO,YAAY,GAAG,UAAU,IAAI,SAAS,EAAE;AAAA,EAChD;AAEC,YAAU,MAAM;AACd,WAAO,MAAM;AACX,uBAAA;AAAA,IACF;AAAA,EAEF,GAAE,CAAA,CAAE;AAEL,SACC5C,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAS;AAAA,MACT,WAAS;AAAA,MACT,sBAAoB;AAAA,MACnB,GAAG;AAAA,MACJ,UAAAF,kCAAAA,KAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GACpC,UAAA;AAAA,QAAAA,kCAAAA,KAAC,aAAA,EAAY,WAAU,6BACtB,UAAA;AAAA,UAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC3C,mBAAS,iBAAA,CACX;AAAA,UACAA,kCAAAA,IAAC,cAAW,SAAS,kBACpB,gDAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CACzB;AAAA,QAAA,GACD;AAAA,QACAA,kCAAAA,IAAC,eAAA,EAAc,WAAU,6CACxB,UAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL;AAAA,YACA,QAAQ,CAAC,EAAE,OAAO,WAAA;;AACjBF,4DAAAC,kBAAAA,UAAA,EACC,UAAA;AAAA,gBAAAC,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACA,MAAK;AAAA,oBACL,OAAO,MAAM,SAAS,CAAA;AAAA,oBACtB,UAAU,MAAM;AAAA,oBAChB,OAAO,SAAQ,gBAAW,UAAX,mBAAkB,OAAO;AAAA,oBACxC,cAAY,gBAAW,UAAX,mBAAkB,YAAW;AAAA,oBACzC,MAAK;AAAA,oBACL,aAAa,CAAC,aACbA,kCAAAA;AAAAA,sBAAC6C;AAAAA,sBAAA;AAAA,wBACA,MAAM;AAAA,wBACN,aAAY;AAAA,wBACZ,UAAU,MAAM,SAAS,eAAe,CAAA,CAAE;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAG5C,UAAQ;AAAA,oBACR,WAAS;AAAA,oBACR,UAAA,KAAK,IAAI,CAAC,SAAS;AACnB,4BAAM,SAAS;AAAA,wBACd;AAAA,wBACA;AAAA,wBACA;AAAA,sBAAA;AAED,4BAAM,cAAc,KAAK;AAAA,wBACxB,KAAK,OAAA,IAAW,OAAO;AAAA,sBAAA;AAExB,4BAAM,cAAc,OAAO,WAAW;AACtC,4BAAM,cAAc;AAAA,wBACnB,cAAc;AAAA,wBACd,WAAW;AAAA,wBACX,iBAAiB,GAAG,WAAW;AAAA,wBAC/B,OAAO,GAAG,WAAW;AAAA,sBAAA;AAGtB,6BACC7C,kCAAAA;AAAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEA,OAAO,KAAK;AAAA,0BACZ,UAAU;AAAA,4BACT,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,EAAE;AAAA,0BAAA;AAAA,0BAE5C,UAAAF,kCAAAA,KAAC,KAAA,EAAI,WAAU,4CACd,UAAA;AAAA,4BAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,8BAAAE,kCAAAA;AAAAA,gCAAC;AAAA,gCAAA;AAAA,kCACA,KAAK,KAAK;AAAA,kCACV,KAAK,SAAS,IAAI;AAAA,kCAClB,IAAI;AAAA,kCACJ,MAAM;AAAA,gCAAA;AAAA,8BAAA;AAAA,8BAEPA,sCAAC,cAAW,MAAK,MAAK,OAAM,wBAC1B,UAAA,SAAS,IAAI,EAAA,CACf;AAAA,4BAAA,GACD;AAAA,4BACAA,kCAAAA;AAAAA,8BAAC8C;AAAAA,8BAAA;AAAA,gCACA,SAAS;AAAA,kCACR,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,EAAE;AAAA,gCAAA;AAAA,8BAC5C;AAAA,4BAAA;AAAA,0BACD,EAAA,CACD;AAAA,wBAAA;AAAA,wBAtBK,KAAK;AAAA,sBAAA;AAAA,oBAyBb,CAAC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAED,MAAM,QAAQ,+BAAO,KAAK,OAAK,oCAAO,UAAP,mBAAc,UAAS,2CACrDL,gBAAA,EAAc,MAAM,MAAM,OAAO,SAAS,KAAA,CAAM;AAAA,cAAA,EAAA,CAEnD;AAAA;AAAA,UAAA;AAAA,QAAA,GAGH;AAAA,QACA3C,kCAAAA,KAAC,eAAA,EAAc,WAAU,qCACxB,UAAA;AAAA,UAAAE,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,WAAU;AAAA,cACV,SAAS;AAAA,cACT,UAAU,aAAa;AAAA,cAAc,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGtCA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,MAAK;AAAA,cACL,SAAS,aAAa,QAAQ;AAAA,cAC9B,SACC,eACCA,kCAAAA,IAAC,kBAAA,EAAiB,MAAM,IAAI,OAAM,WAAU,IACzC;AAAA,cAEL,UAAU,gBAAgB,aAAa,QAAQ,EAAC,yCAAY,OAAM;AAAA,cAAG,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAEtE,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAGH;AChSO,MAAM,kBAAkB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAW;AAEV,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,WAAW,YAAA;AAGjB,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,KAAK;AAClE,QAAM,CAAC,wBAAwB,yBAAyB,IAAI,SAAS,KAAK;AAC1E,QAAM,CAAC,0BAA0B,2BAA2B,IAC3D,SAAiB,EAAE;AAIpB,QAAM,uBAAuB,MAAM;AAClC,oBAAgB,EAAE,cAAc,CAAC;AACjC,aAAA;AAAA,EACD;AACA,QAAM,0BAA0B,OAC/B,MACA,cACI;AACJ,QAAI,MAAM;AACT,4BAAsB,IAAI;AAC1B,YAAM,UAAU;AAAA,QACf,CAAC,WAAW,GAAG;AAAA,QACf;AAAA,QACA,GAAI,cAAa,uCAAW,WAAU,EAAE,aAAa,UAAA;AAAA,MAAU;AAGhE,YAAM,WAAW,MAAM,SAAS,YAAY,OAAO,CAAC;AAEpD,4BAAsB,KAAK;AAC3B,gBAAU,UAAU,MAAM,sBAAsB;AAAA,IACjD;AAAA,EACD;AACA,QAAM,+BAA+B,YAAY;AAChD,SAAI,mDAAiB,OAAM,0BAA0B;AACpD,YAAM,UAAU;AAAA,QACf,IAAI,mDAAiB;AAAA,QACrB,CAAC,WAAW,GAAG;AAAA,QACf,QAAQ;AAAA,MAAA;AAET,4BAAsB,IAAI;AAC1B,YAAM,WAAW,MAAM,SAAS,UAAU,OAAO,CAAC;AAClD,4BAAsB,KAAK;AAC3B,YAAM,UAAU;AAChB,kCAA4B,EAAE;AAC9B,gBAAU,UAAU,MAAM,UAAU;AACpC,UAAI,SAAS,KAAK,kBAAkB,aAAa;AAChD,cAAM,MAAM,GAAG,KAAK,IAAI,YAAY,aAAa,EAAE,iBAAiB,IAAI,EAAE,iBAAiB,CAAC;AAC5F,wBAAgB,GAAG;AAAA,MACpB;AAAA,IACD;AAAA,EACD;AACA,SACCF,kCAAAA,KAAAC,4BAAA,EACG,UAAA;AAAA,KAAA,kBAAiB,6BAAM,YAAW,eACnCC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,yBAAyB;AAAA,QACzB,SAAS,MAAM,wBAAwB,qBAAqB;AAAA,QAC5D,SAAS;AAAA,UACR;AAAA,YACC,OAAO,EAAE,0BAA0B;AAAA,YACnC,UAAU,MAAM,wBAAwB,qBAAqB;AAAA,UAAA;AAAA,UAE9D;AAAA,YACC,OAAO,EAAE,sBAAsB;AAAA,YAC/B,UAAU,MAAM,0BAA0B,IAAI;AAAA,UAAA;AAAA,QAC/C;AAAA,QAED,SAAS;AAAA,QACR,wCAAM,YAAW,aACf,EAAE,iBAAiB,IACnB,EAAE,eAAe;AAAA,MAAA;AAAA,IAAA;AAAA,IAGtBA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,QAAQ;AAAA,QACR,WAAW,MAAM,0BAA0B,KAAK;AAAA,QAChD,WAAW,CAAC,gBACX,wBAAwB,kBAAkB,WAAW;AAAA,QAEtD,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,IAEfA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM,QAAQ,wBAAwB;AAAA,QACtC,SAAS,MAAM,4BAA4B,EAAE;AAAA,QAC7C,WAAW;AAAA,QACX,OAAO,GAAG,wBAAwB;AAAA,QAClC,aAAa,4BAA4B,wBAAwB,IAAI,KAAK,MAAM,6BAAM,EAAE;AAAA,QACxF,aAAa;AAAA,UACZ,SAAS,EAAE,eAAe;AAAA,UAC1B,QAAQ,EAAE,eAAe;AAAA,QAAA;AAAA,QAE1B,cAAc;AAAA,UACb,SAAS,6BAA6B,aAAa,UAAU;AAAA,QAAA;AAAA,QAE9D,WAAU;AAAA,QACV,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAET,sBACAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,yBAAyB;AAAA,QACzB,SAAS,MAAM,4BAA4B,UAAU;AAAA,QACrD,SAAS;AAAA,UACR;AAAA,YACC,OAAO,EAAE,eAAe;AAAA,YACxB,UAAU,MAAM,4BAA4B,UAAU;AAAA,UAAA;AAAA,UAEvD;AAAA,YACC,OAAO,EAAE,eAAe;AAAA,YACxB,UAAU,MAAM,4BAA4B,UAAU;AAAA,YACtD,OAAO;AAAA,UAAA;AAAA,QACR;AAAA,QAED,SAAS;AAAA,QACR,YAAE,eAAe;AAAA,MAAA;AAAA,IAAA;AAAA,EACnB,GAEF;AAEF;AC3IA,MAAM,eAAe,CAAC,EAAE,aAAkB;AACxC,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,OAAO,KAAK;AAEjE,QAAM,qBAAqB,MAAM;AAC/B,WAAO,QAAQ;AACf,sBAAkB,KAAK;AAAA,EACzB;AAEA,SACEF,kCAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,IAAA,iBACCA,kCAAAA,KAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,MAAAE,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,aAAY;AAAA,UACZ,OAAO;AAAA,UACP,UAAU,CAAC,MAAM,kBAAkB,EAAE,OAAO,KAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAEnDF,kCAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,QAAAE,kCAAAA,IAAC,UAAA,EAAO,SAAS,MAAM,sBAAsB,UAAA,UAAM;AAAA,8CAClD,UAAA,EAAO,SAAS,MAAM,kBAAkB,KAAK,GAAG,UAAA,SAAA,CAAM;AAAA,MAAA,EAAA,CACzD;AAAA,IAAA,EAAA,CACF,IAEAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,eAAe,MAAM,kBAAkB,IAAI;AAAA,QAE1C,UAAA,OAAO;AAAA,MAAA;AAAA,IAAA;AAAA,0CAIX,QAAA,EAAK,WAAU,qBAAqB,UAAA,OAAO,MAAM,QAAO;AAAA,IAEzDA,kCAAAA,IAAC,YAAA,EAAW,OAAM,WAAU,MAAK,SAAQ,WAAU,iBACjD,UAAAA,sCAAC,SAAI,KAAK,OAAO,MAAM,KAAI,aAAY,EAAA,CACzC;AAAA,EAAA,GACF;AAEJ;ACZO,MAAM,eAAe,CAAC,UAA6B;AACxD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,MAAM,IAAI;AAC7C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAC1D,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,EAAE;AAEvD,QAAM,kBAAkB,CAAC,UAAkB;AACzC,UAAM,iBAAiB,EAAE,GAAG,MAAA;AAC5B,mBAAe,QAAQ,KAAK;AAAA,MAC1B,IAAI,KAAK,IAAA;AAAA,MACT;AAAA,MACA,OAAO,CAAA;AAAA,IAAC,CACT;AACD,aAAS,cAAc;AACvB,sBAAkB,KAAK;AACvB,sBAAkB,EAAE;AAAA,EACtB;AAEA,SACEA,kCAAAA,IAAC,OAAA,EAAI,WAAU,mBACb,UAAAA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAc;AAAA,MACd,cAAY;AAAA,MACZ,gBAAc;AAAA,MACd,oBAAoB,CAAC,WACnBA,kCAAAA,IAAC,OAAA,EAAI,WAAU,iBACb,UAAAA,kCAAAA,IAAC,cAAA,EAA6B,OAAA,GAAX,OAAO,EAAoB,GAChD;AAAA,MAEF,mBAAmB,MACjB,iBACEF,kCAAAA,KAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,QAAAE,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,aAAY;AAAA,YACZ,OAAO;AAAA,YACP,UAAU,CAAC,MAAM,kBAAkB,EAAE,OAAO,KAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAEnDF,kCAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,UAAAE,sCAAC,YAAO,SAAS,MAAM,gBAAgB,cAAc,GAAG,UAAA,OAExD;AAAA,gDACC,UAAA,EAAO,SAAS,MAAM,kBAAkB,KAAK,GAAG,UAAA,SAAA,CAAM;AAAA,QAAA,EAAA,CACzD;AAAA,MAAA,EAAA,CACF,IAEAF,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAS,MAAM,kBAAkB,IAAI;AAAA,UACrC,MAAK;AAAA,UACN,UAAA;AAAA,YAAA;AAAA,kDAEE,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAItD,iBAAe;AAAA,MACf,mBAAiB;AAAA,MACjB,WAAW,QAAQ;AAAA,MACnB,cAAc,QAAQ;AAAA,MACtB,gBAAgB,QAAQ;AAAA,MACxB,gBAAgB,QAAQ;AAAA,MACxB,kBAAkB,CAAC,eAA0B;AAAA,QAC3C,KAAI,oBAAI,KAAA,GAAO,QAAA;AAAA,QACf,GAAG;AAAA,MAAA;AAAA,IACL;AAAA,EAAA,GAEJ;AAEJ;ACtFA,MAAM,eAA6C,CAAC,EAAE,WAAW;AAChE,SACCE,kCAAAA;AAAAA,IAAC4B;AAAAA,IAAA;AAAA,MACA,6CACE,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,QAAA,CAEnE;AAAA,MAED,gBAAgB;AAAA,QACf,iBAAiB;AAAA,QACjB,IAAI;AAAA,UACH,mBAAmB;AAAA,UACnB,+BAA+B,EAAE,mBAAmB,EAAA;AAAA,QAAE;AAAA,MACvD;AAAA,MAED,UAAA9B,kCAAAA,KAAC,KAAA,EAAI,WAAU,wCACd,UAAA;AAAA,QAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,iBAAA,CAElE;AAAA,UACAA,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA,KAAK,cAAA,CACP;AAAA,QAAA,GACD;AAAA,QACAF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,QAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAGH;AChCA,MAAM,kBAAmD,CAAC;AAAA,EACzD;AAAA,EACA;AACD,MAAM;AACL,SACCA,kCAAAA;AAAAA,IAAC4B;AAAAA,IAAA;AAAA,MACA,6CACE,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,YAAA,CAEnE;AAAA,MAED,gBAAgB;AAAA,QACf,iBAAiB;AAAA,QACjB,IAAI;AAAA,UACH,mBAAmB;AAAA,UACnB,+BAA+B,EAAE,mBAAmB,EAAA;AAAA,QAAE;AAAA,MACvD;AAAA,MAED,UAAA9B,kCAAAA,KAAC,KAAA,EAAI,WAAU,wCACd,UAAA;AAAA,QAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,gBAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACC,OAAO,KAAK,kBAAkB,IAAI,KAClCF,uCAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,sBAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QAEA,QAAQ,iBAAiB,KACzBF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,mBAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QAEDF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,iBAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAGH;AC7DA,MAAM,kBAAmD,CAAC,EAAE,WAAW;AACtE,SACCA,kCAAAA;AAAAA,IAAC4B;AAAAA,IAAA;AAAA,MACA,6CACE,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,WAAA,CAEnE;AAAA,MAED,gBAAgB;AAAA,QACf,iBAAiB;AAAA,QACjB,IAAI;AAAA,UACH,mBAAmB;AAAA,UACnB,+BAA+B,EAAE,mBAAmB,EAAA;AAAA,QAAE;AAAA,MACvD;AAAA,MAED,UAAA9B,kCAAAA,KAAC,KAAA,EAAI,WAAU,wCACd,UAAA;AAAA,QAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,2BAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACAF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,8BAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAAA;AAGH;AC/BA,MAAM,yBAAiE,CAAC;AAAA,EACvE;AAAA,EACA;AACD,MAAM;AACL,SACCA,kCAAAA;AAAAA,IAAC4B;AAAAA,IAAA;AAAA,MACA,6CACE,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,oBAAA,CAEnE;AAAA,MAED,gBAAgB;AAAA,QACf,iBAAiB;AAAA,QACjB,IAAI;AAAA,UACH,mBAAmB;AAAA,UACnB,+BAA+B,EAAE,mBAAmB,EAAA;AAAA,QAAE;AAAA,MACvD;AAAA,MAED,UAAA9B,kCAAAA,KAAC,KAAA,EAAI,WAAU,wCACd,UAAA;AAAA,QAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,0BAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACAF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,6BAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACAF,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,gCAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACC,QAAQ,eAAe,KACvBF,kCAAAA,KAAAC,kBAAAA,UAAA,EACC,UAAA;AAAA,UAAAD,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,YAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,kBAAA,CAElE;AAAA,YACAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,OAAM;AAAA,gBACL,UAAA;AAAA,kBAAA,KAAK;AAAA,kBAAe;AAAA,kBAAE,KAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAC7B,GACD;AAAA,UACAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,YAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,kBAAA,CAElE;AAAA,YACAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,OAAM;AAAA,gBACL,UAAA;AAAA,kBAAA,KAAK;AAAA,kBAAe;AAAA,kBAAE,KAAK;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAC7B,EAAA,CACD;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CAEF;AAAA,IAAA;AAAA,EAAA;AAGH;AC5EA,MAAM,eAA6C,CAAC,EAAE,WAAW;AAChE,SACCE,kCAAAA;AAAAA,IAAC4B;AAAAA,IAAA;AAAA,MACA,6CACE,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,QAAA,CAEnE;AAAA,MAED,gBAAgB;AAAA,QACf,iBAAiB;AAAA,QACjB,IAAI;AAAA,UACH,mBAAmB;AAAA,UACnB,+BAA+B,EAAE,mBAAmB,EAAA;AAAA,QAAE;AAAA,MACvD;AAAA,MAED,UAAA9B,kCAAAA,KAAC,KAAA,EAAI,WAAU,wCACd,UAAA;AAAA,QAAAA,kCAAAA,KAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,cAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,GACD;AAAA,QACC,OAAO,KAAK,wBAAwB,IAAI,KACxCF,uCAAC,KAAA,EAAI,WAAU,mCACd,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,uBAAA,CAElE;AAAA,iDACC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA;AAAA,YAAA,KAAK;AAAA,YAAe;AAAA,YAAE,KAAK;AAAA,UAAA,EAAA,CAC7B;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CAEF;AAAA,IAAA;AAAA,EAAA;AAGH;ACpBA,MAAM,qBAAoD,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;;AACL,QAAM,EAAE,KAAA,IAAS,QAAA;AACjB,QAAM,wBACL,oBAAkB,kCAAM,kBAAN,mBAAqB,WAAU;AAElD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB;AAAA,IACzD,eAAe;AAAA,IACf,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA,CAChB;AACD,QAAM,CAAC,cAAc,eAAe,IAAI,SAA2B;AAAA,IAClE,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,eAAe;AAAA,IACf,gBAAgB;AAAA,EAAA,CAChB;AACD,QAAM,CAAC,cAAc,eAAe,IAAI,SAA2B;AAAA,IAClE,eAAe;AAAA,IACf,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,EAAA,CAChB;AACD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkC;AAAA,IACnE,OAAO;AAAA,IACP,aAAa;AAAA,IACb,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAAA,CAChB;AACD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAwB;AAAA,IACzD,OAAO;AAAA,IACP,0BAA0B;AAAA,IAC1B,gBAAgB;AAAA,EAAA,CAChB;AAED,YAAU,MAAM;AAEf,UAAM,QAAQ,OAAO,yCAAY,aAAa,KAAK;AAEnD,QAAI;AAAA;AAAA,MAEH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IAEG;AAAA,MACH;AAAA,MACA;AAAA,MACA,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,MACZ,yCAAY;AAAA,IAAA;AAGb,qBAAiB;AACjB,gCAA4B;AAC5B,iCAA6B;AAC7B,sBAAkB;AAClB,mBAAe;AACf,0BAAsB;AAEtB,UAAM,kBACJ,OAAO,yCAAY,aAAa,KAAK,MACrC,OAAO,yCAAY,mBAAmB,KAAK;AAC7C,UAAM,kBACJ,OAAO,yCAAY,aAAa,KAAK,MACrC,OAAO,yCAAY,mBAAmB,KAAK;AAE7C,UAAM,0BAA0B,iBAAiB;AACjD,UAAM,0BAA0B,iBAAiB;AACjD,UAAM,2BAA2B,QAAO,yCAAY,qBAAoB,CAAC,IAAI;AAC7E,kBAAe,cAAe;AACzB,UAAM,aAAc,cAAc,0BAA0B,0BAA2B;AAC5F,iBAAa;AAAA,MACZ,GAAG;AAAA,MACH;AAAA,MACA,OAAO,YAAY,QAAQ,CAAC;AAAA,MAC5B;AAAA,IAAA,CACA;AACD,oBAAgB;AAAA,MACf,GAAG;AAAA,MACH,cAAc,0BAA0B,QAAQ,CAAC;AAAA,MACjD,oBAAoB,OAAO,wBAAwB,EAAE,QAAQ,CAAC;AAAA,MAC9D,gBAAgB,gBAAgB,0BAA0B,QAAQ,CAAC;AAAA,MACnE,iBAAiB,yBAAyB,QAAQ,CAAC;AAAA,MACnD;AAAA,IAAA,CACA;AACD,oBAAgB;AAAA,MACf,GAAG;AAAA,MACH,gBAAgB,cAAc,gBAAgB,QAAQ,CAAC;AAAA,MACvD,oBAAoB,OAAO,cAAc,OAAO,aAAa,CAAC,EAAE;AAAA,QAC/D;AAAA,MAAA;AAAA,MAED;AAAA,IAAA,CACA;AAED,iBAAa;AAAA,MACZ,GAAG;AAAA,MACH,OAAO,eAAe,QAAQ,CAAC;AAAA,MAC/B,OAAO,eAAe,QAAQ,CAAC;AAAA,MAC/B,gBAAgB,wBAAwB,QAAQ,CAAC;AAAA,MACjD,gBAAgB,wBAAwB,QAAQ,CAAC;AAAA,MACjD;AAAA,IAAA,CACA;AACD,iBAAa;AAAA,MACZ,GAAG;AAAA,MACH,OAAO,WAAW,QAAQ,CAAC;AAAA,MAC3B,0BAA0B,mBAAmB,QAAQ,CAAC;AAAA,MACtD;AAAA,IAAA,CACA;AAAA,EAEF,GAAG;AAAA,IACF;AAAA,IACA,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ,yCAAY;AAAA,IACZ;AAAA,EAAA,CACA;AAED,SACCF,kCAAAA,KAAC,KAAA,EAAI,WAAU,sCACd,UAAA;AAAA,IAAAE,kCAAAA,IAAC,cAAA,EAAa,MAAM,UAAA,CAAW;AAAA,IAC/BA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MAAA;AAAA,IAAA;AAAA,IAEDA,kCAAAA,IAAC,iBAAA,EAAgB,MAAM,aAAA,CAAc;AAAA,IACrCA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM;AAAA,QACN;AAAA,MAAA;AAAA,IAAA;AAAA,IAEDA,kCAAAA,IAAC,cAAA,EAAa,MAAM,UAAA,CAAW;AAAA,EAAA,GAChC;AAEF;ACzKO,MAAM,kBAAkB,CAAC,UAAe;AAG7C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,IAAI;AAoB3C,SACEA,kCAAAA,IAAC,OAAA,EAAI,WAAU,oBACb,UAAAA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACD,cAAc,+BAAO;AAAA,MACnB,qBAAoB;AAAA,MAEpB,aAAY;AAAA,MAEZ,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,eAAe;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,MAAA;AAAA,MAGT,YAAY;AAAA,QACV,OAAO;AAAA;AAAA,MAAA;AAAA,MAET,YAAY;AAAA,MACZ,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,YAAY,CAAC,UAAU;AAAA,MACvB;AAAA,MACA,QAAQ,KAAK;AAAA,MACb,QAAQ,+BAAO;AAAA,MAEf,cAAc;AAAA,MACd,qBAAqB;AAAA,MACrB,QAAO;AAAA,MACP,YAAY,MAAM,KAAK,MAAM,KAAK,WAAW,QAAQ,EAAE,SAAS,EAAE;AAAA,IAAA;AAAA,EAAA,GAEtE;AAEJ;ACzEA,MAAM,cAAc,CAAC,EAAE,UAAU,GAAG,WAAiC;AACnE,+CACG,KAAA,EAAI,WAAU,gBAAgB,GAAG,MAC/B,UACH;AAEJ;ACGA,MAAM,mBAAmB,IAAI,OAAO;AAAA,EAClC,OAAO,IAAI,OAAO;AAAA,IACd,UAAU,IAAI,OAAA,EACH,SAAS,uBAAuB,EAChC,IAAI,GAAG,wCAAwC,EAC/C,QAAQ,SAAS,qDAAqD,EACtE,QAAQ,0BAA0B,sDAAsD;AAAA,EAAA,CACtG;AACH,CAAC;AAID,MAAM,0BAA0B,CAAC,EAAC,WAAW,cAAc,aAAY;AAClE,QAAM,EAAE,0BAAA,IAA8B,QAAA;AACtC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAMtD,QAAM,EAAE,SAAS,cAAc,OAAO,QAAA,IAAY,QAAoB;AAAA,IACpE,UAAUwC,EAAY,gBAAgB;AAAA,IACtC,MAAM;AAAA,EAAA,CACP;AAED,QAAM,WAAW,OAAO,WAAuB;AAC3C,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,WAAO,MAAM,KAAK;AAClB,WAAO,MAAM,WAAW;AAC1B,UAAM,0BAA0B,OAAO,OAAO,CAAC,SAAS,SAAS;AAC/D,UAAI,MAAM;AACR,iBAAS,EAAE,SAAkB,MAAM,SAAA,CAAU;AAC7C,qBAAa,KAAK;AAClB,cAAM;AAAA,UACJ,OAAO;AAAA,YACH,UAAU;AAAA,YACV,IAAI;AAAA,YACJ,UAAU;AAAA,UAAA;AAAA,QACd,CACH;AAAA,MACD,OAAO;AACL,iBAAS,EAAE,SAAkB,MAAM,QAAA,CAAS;AAAA,MAC9C;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAC/D,QAAM,qBAAqB,MAAM,gBAAgB,CAAC,YAAY;AAE7D,QAAM,UAAU,OAAOO,KAAG,EAAE,OAAO;AAAA,IAChC,SAAS;AAAA,IACT,eAAe;AAAA,EAAA,EACjB;AAEF,SACIjD,kCAAAA,KAAAC,4BAAA,EACA,UAAA;AAAA,IAAAC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACD,MAAM;AAAA,QACN,SAAS,MAAM,aAAa,KAAK;AAAA,QACjC,UACEA,kCAAAA,IAAAD,kBAAAA,UAAA,EACE,UAAAC,kCAAAA,IAAC,QAAA,EAAK,UAAU,aAAa,QAAQ,GACjC,UAAAF,kCAAAA,KAAC,SAAA,EAAQ,KAAK,GAAG,WAAU,qBACzB,UAAA;AAAA,UAAAA,kCAAAA,KAAC,SAAA,EAAQ,KAAK,GACZ,UAAA;AAAA,YAAAE,sCAAC+C,OAAA,EACC,UAAA/C,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,OAAM;AAAA,gBACP,UAAA;AAAA,cAAA;AAAA,YAAA,GAGH;AAAA,YACAF,kCAAAA,KAAC,SAAA,EAAQ,KAAK,GACZ,UAAA;AAAA,cAAAE,sCAAC+C,OAAA,EACC,UAAA/C,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,aAAa;AAAA,kBACb,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,MAAM,eAAe,SAAS;AAAA,kBAC9B,aAAY;AAAA,kBACZ,gBAAe;AAAA,kBACf,SACEA,kCAAAA,IAAAD,kBAAAA,UAAA,EACG,UAAA,eACCC,sCAAC,KAAA,EAAI,UAAS,SAAQ,WAAU,UAAA,CAAU,0CAEzC,QAAA,EAAO,UAAS,SAAQ,WAAU,WAAU,GAEjD;AAAA,kBAEF,aAAa;AAAA,gBAAA;AAAA,cAAA,GAEjB;AAAA,oDACC+C,OAAA,EACC,UAAA/C,kCAAAA,IAAC,kBAAA,EAAkB,+CAAU8C,YAAA,EAAS,MAAK,SAAQ,UAAU,CAAC,MAAM,YAAY,EAAE,OAAO,OAAO,GAAG,IAAI;AAAA,gBACnG,iBAAiB;AAAA,kBACjB,OAAO;AAAA,gBAAA;AAAA,cACP,EACJ,CAAG,GAAI,OAAM,kCAAiC,IAAI;AAAA,gBAC9C,gCAAgC;AAAA,kBAChC,UAAU;AAAA,gBAAA;AAAA,cACV,GACF,EAAA,CACJ;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,GACF;AAAA,gDACC,SAAA,EAAQ,KAAK,GACZ,UAAA9C,sCAAC,UAAO,MAAK,UAAS,SAAS,aAAa,QAAQ,GAAG,MAAK,SAAQ,SAAQ,aAAY,6BAExF,EAAA,CACF;AAAA,QAAA,EAAA,CACF,GACF,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAM,QAAQ,KAAK;AAAA,QACnB,SAAS,+BAAO;AAAA,QAChB,MAAM,+BAAO;AAAA,QACb,aAAa,MAAM,SAAS,IAAI;AAAA,QAChC,cAAc,EAAE,YAAY,SAAS,UAAU,SAAA;AAAA,QAC/C,kBAAkB;AAAA,MAAA;AAAA,IAAA;AAAA,EAClB,GACJ;AAER;AC1IA,MAAM,oBAAoB,OAAO,gBAAgB;AAAA,EAC/C,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,MAC3B,mBAAmB;AAAA,QACjB,MAAM;AAAA,UACJ,UAAU;AAAA,QAAA;AAAA,QAEZ,KAAK;AAAA,UACH,UAAU;AAAA,QAAA;AAAA,QAEZ,SAAS;AAAA,QACT,cAAc;AAAA,QACd,QAAQ;AAAA,MAAA;AAAA,MAGV,IAAI;AAAA,QACF,OAAO;AAAA,UACL,SAAS;AAAA,UACT,cAAc;AAAA,UACd,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,UAClD,YAAY,OAAO,OAAO,MAAM;AAAA,UAChC,aAAa;AAAA,UACb,kBAAkB;AAAA,UAClB,iBAAiB,IAAG,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,QAAA;AAAA,QAEnD,IAAI;AAAA,UACF,UAAU;AAAA,UACV,SAAS;AAAA,QAAA;AAAA,QAEX,WACE;AAAA,QACF,cAAc;AAAA,QACd,WAAW;AAAA,QACX,QAAQ;AAAA,QAER,KAAK;AAAA,UACH,cAAc,cAAa,aAAQ,UAAR,mBAAe,UAAU,IAAI;AAAA,UACxD,eAAe;AAAA,QAAA;AAAA,MACjB;AAAA,IACF;AAAA;AAEJ;AAEA,MAAM,gBAAgB,CAAC,EAAE,SAAS,oBAAoC;AACpE,SACEF,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,IAAAC,kCAAAA,IAAC,cAAW,MAAK,MAAK,YAAY,UAAU,IAAI,KAAK,UAAA,UAAA,CAErD;AAAA,IACAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAS;AAAA,QACT,YAAY;AAAA,QACZ,mBAAkB;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,uBAAsB;AAAA,QACtB,UAAU;AAAA,QACV,mBAAmB;AAAA,MAAA;AAAA,IAAA;AAAA,EACrB,GACF;AAEJ;AC/DA,MAAM,kBAAkByB,SAAO,GAAG,EAAE,CAAC,EAAE,aAAa;AAAA,EAClD,UAAU;AAAA,EACV,SAAS;AAAA,EACT,YAAY;AAAA;AAAA,EAEZ,cAAc,MAAM,QAAQ,CAAC;AAAA,EAC7B,SAAS,MAAM,QAAQ,GAAG;AAAA,EAC1B,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,iBAAiB,MAAM,QAAQ,OAAO;AAAA,EACtC,QAAQ;AAAA,EACR,aAAa,MAAM,QAAQ,KAAK,GAAG;AAAA,EACnC,cAAc;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAEZ,EAAE;AAGF,MAAM,oBAAoBA,SAAO,GAAG,EAAE,CAAC,EAAE,aAAa;AAAA,EACpD,UAAU;AAAA;AAAA;AAAA,EAGV,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAAA,EAChD,cAAc,MAAM,QAAQ,GAAG;AAAA,EAC/B,YAAY;AAAA,EACZ,KAAI;AAAA,EACJ,QAAQ;AAAA,EACR,QAAQ;AACV,EAAE;AAGF,MAAM,cAAcA,SAAO,UAAU,EAAE,CAAC,EAAE,OAAO,cAAc;AAAA,EAC7D,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS,MAAM,QAAQ,GAAG,GAAG;AAAA,EAC7B,cAAc,MAAM,QAAQ,GAAG;AAAA,EAC/B,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,OAAO,SAAS,MAAM,QAAQ,QAAQ,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,EACnE,0BAA0B;AAAA,IACxB,OAAO,SAAS,MAAM,QAAQ,QAAQ,OAAO,MAAM,QAAQ,KAAK,GAAG;AAAA,EAAA;AAAA,EAErE,cAAc;AAAA,IACZ,QAAQ;AAAA,EAAA;AAEZ,EAAE;AAGF,MAAM,qBAAqB,CAAC;AAAA,EAC1B,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB;AAAA,EACA,WAAW;AAAA,EACX,KAAK,CAAA;AAAA,EACL,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,cAAc;AAErD,QAAM,eAAe,CAAC,aAAa;AACjC,QAAI,SAAU;AACd,eAAW,QAAQ;AACnB,QAAI,UAAU;AACZ,eAAS,UAAU,WAAW,aAAa,SAAS;AAAA,IACtD;AAAA,EACF;AAEA,QAAM,kBAAkB,CAAC,iBAAiB;AACxC,QAAI,SAAU;AACd,UAAM,WAAW;AACjB,iBAAa,QAAQ;AAAA,EACvB;AAEA,SACE3B,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAW,aAAa;AAAA,MACnC;AAAA,MACC,GAAG;AAAA,MAGJ,UAAA;AAAA,QAAAE,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,MAAM,UAAU,QAAQ;AAAA,cACxB,OAAO,UAAU,IAAI;AAAA,YAAA;AAAA,UACvB;AAAA,QAAA;AAAA,QAIFA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ,CAAC;AAAA,YACT,WAAW,WAAW,aAAa;AAAA,YACnC,SAAS,MAAM,gBAAgB,KAAK;AAAA,YACpC,eAAe;AAAA,YACf;AAAA,YAEC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAIHA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,QAAQ;AAAA,YACR,WAAW,WAAW,aAAa;AAAA,YACnC,SAAS,MAAM,gBAAgB,IAAI;AAAA,YACnC,eAAe;AAAA,YACf;AAAA,YAEC,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGN;ACnHA,SAAS,cAAc,OAAe;AAClC,QAAM,EAAE,OAAO,MAAA,IAAU;AACzB,SACIA,kCAAAA,IAAAD,kBAAAA,UAAA,EACI,gDAAC,KAAA,EAAI,WAAU,cACX,UAAAD,kCAAAA,KAAC,KAAA,EAAI,GAAG,GAAG,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,QAAQ,aAAa,cAAc,OAAO,KAAK,GAAG,aAAa,UAAA,GACtH,UAAA;AAAA,IAAAE,kCAAAA,IAAC,KAAA,EAAI,WAAU,uBACX,UAAAA,kCAAAA,IAAC,SAAI,KAAKgD,OAAK,mBAAmB,EAAA,CAEtC;AAAA,IACAhD,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,qBAAqB,UAAA,MAAA,CAAM;AAAA,IACvEA,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,QAAO,OAAM,sBAAsB,UAAA,MAAA,CAAM;AAAA,EAAA,EAAA,CAC1E,GACJ,GACJ;AAER;AChBA,MAAM,kBAAkB,CAAC,EAAE,OAAO,eAAe,WAAW,MAAM,gBAAgB,WAAW;AACzF,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,cAAc,eAAe,IAAI,SAEtC,IAAI;AAKN,QAAM,sBAAsB,CAAC,UAA+C;AACxE,oBAAgB,MAAM,aAAa;AAAA,EACvC;AAEA,QAAM,sBAAsB,MAAM;AAC9B,oBAAgB,IAAI;AAAA,EACxB;AAUA,SACIA,kCAAAA,IAAC,OAAA,EACG,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,gBACX,UAAA;AAAA,IAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAQ,UAAU,OAAO,wBAC1C,UAAA,MAAA,CACL;AAAA,IACAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,qBAEV,UAAA;AAAA,MAAA;AAAA,MACA,YAAYE,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACV,MAAK;AAAA,UACL,OAAO,gBAAgB,EAAE,sDAAsD,IAAI,EAAE,gDAAgD;AAAA,UACrI,WAAW,GAAG,gBAAgB,aAAa,6BACvC;AAAA,UACJ,MACIA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,KAAK,gBAAgB,OAAO,OAAO,WAAW,OAAO;AAAA,cACrD,KAAK,EAAE,aAAa;AAAA,YAAA;AAAA,UAAA;AAAA,UAG5B,SAAS,MAAM,iBAAiB,IAAI;AAAA,UACpC,QAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,MAIR,wDAAkB,OAAA,EACd,UAAA;AAAA,QAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAM;AAAA,YACN,MAAK;AAAA,YACL,SAAS;AAAA,YACT,UAAAA,kCAAAA,IAAC,SAAI,KAAK,OAAO,MAAM,KAAK,EAAE,yCAAyC,EAAA,CAAG;AAAA,UAAA;AAAA,QAAA;AAAA,QAE9EA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,UAAU;AAAA,YACV,MAAM,QAAQ,YAAY;AAAA,YAC1B,SAAS;AAAA,YACT,WAAU;AAAA,YACV,gDAAC,UAAA,EAAS,SAAS,qBAAsB,UAAA,EAAE,eAAe,EAAA,CAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAChE,EAAA,CACJ;AAAA,IAAA,EAAA,CAER;AAAA,EAAA,EAAA,CACJ,EAAA,CACJ;AAER;AC9CA,MAAM,2BAAoE,CAAC;AAAA,EACzE;AAAA,EACA,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA,eAAe;AAAA,EACf,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,mBAAmB;AACrB,MAAM;AACJ,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAC7D,QAAM,EAAC,gBAAA,IAAiB,YAAA;AACtB,QAAM,QAAM,QAAQ,OAAI,mDAAiB,eAAY,OAAM,CAAC,eAAe,CAAC;AAE5E,QAAM,kBAAkB,MAAM;AAC5B,QAAI,gBAAgB,OAAO,WAAW,aAAa;AACjD,YAAM,SAAS,aAAa,QAAQ,UAAU;AAC9C,aAAO,SAAS,KAAK,MAAM,MAAM,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,YAAY,aAAa,IAAI,SAAkB,eAAe;AAErE,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAS,KAAK;AAG1D,YAAU,MAAM;AACd,QAAG,CAAC,YAAY;AACd,wBAAkB,KAAK;AACtB;AAAA,IACH;AACA,UAAM,QAAQ,WAAW,MAAM;AAC7B,wBAAkB,IAAI;AAAA,IACxB,GAAG,GAAG;AAEN,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,eAAe,MAAM;AACzB,UAAM,WAAW,CAAC;AAClB,UAAM,cAAc,WAAW,mBAAmB;AAClD,kBAAc,QAAQ;AAGtB,QAAI,gBAAgB,OAAO,WAAW,aAAa;AACjD,mBAAa,QAAQ,YAAY,KAAK,UAAU,QAAQ,CAAC;AAAA,IAC3D;AAGA,yCAAW,UAAU;AAAA,EACvB;AAEA,QAAM,kBAAkB,aAAa,mBAAmB;AAGxD,MAAI,YAAY,cAAc;AAC5B,WACEF,kCAAAA,KAAAC,4BAAA,EAEG,UAAA;AAAA,MAAA,oBACCC,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,IAAI;AAAA,YACF,UAAU;AAAA,YACV,KAAK;AAAA,YACL,CAAC,QAAQ,SAAS,OAAO,GAAG;AAAA,YAC5B,QAAQ,MAAM,OAAO;AAAA,YACrB,SAAS,MAAM,QAAQ,WAAW;AAAA,YAClC,QAAQ,aAAa,MAAM,QAAQ,OAAO;AAAA,YAC1C,cAAc;AAAA,YACd,WAAW;AAAA,cACT,SAAS,MAAM,QAAQ,OAAO;AAAA,YAAA;AAAA,UAChC;AAAA,UAEF,cAAY;AAAA,UAEZ,gDAAC,aAAA,CAAA,CAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAKjBA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAO;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,UACT,IAAI,CAACiD,YAAW;AAAA,YACd,sBAAsB;AAAA,cACpB,OAAO;AAAA,cACP,CAACA,OAAM,YAAY,GAAG,IAAI,CAAC,GAAG;AAAA,gBAC5B,UAAU;AAAA,gBACV,WAAW;AAAA,cAAA;AAAA,cAEb,CAACA,OAAM,YAAY,GAAG,IAAI,CAAC,GAAG;AAAA,gBAC5B,UAAU;AAAA,gBACV,WAAW;AAAA,cAAA;AAAA,cAEb,CAACA,OAAM,YAAY,GAAG,IAAI,CAAC,GAAG;AAAA,gBAC5B,UAAU;AAAA,gBACV,WAAW;AAAA,cAAA;AAAA,YACb;AAAA,UACF;AAAA,UAGF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GACF;AAAA,EAEJ;AAGA,SACEnD,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,UAAU;AAAA,QACV,YAAY,MAAM,YAAY,OAAO,CAAC,cAAc,WAAW,GAAG;AAAA,UAChE,QAAQ,MAAM,YAAY,OAAO;AAAA,UACjC,UAAU,MAAM,YAAY,SAAS;AAAA,QAAA,CACtC;AAAA,QACD,UAAU;AAAA;AAAA,QACV,WAAW;AAAA;AAAA,QAEX,SAAS,oBAAoB,IAAI,UAAU;AAAA,QAC3C,UAAU,oBAAoB,IAAI,IAAI;AAAA,MAAA;AAAA,MAExC;AAAA,MAGE,UAAA;AAAA,QAAA,oBAAoB,CAAC,cACrBE,kCAAAA,IAAC,WAAQ,OAAM,kBAAiB,WAAU,QACxC,UAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,IAAI;AAAA,cACF,UAAU;AAAA,cACV,KAAK;AAAA,cACL,CAAC,QAAQ,SAAS,OAAO,GAAG;AAAA,cAC5B,OAAM;AAAA,cACN,QAAQ,MAAM,OAAO;AAAA,cACrB,SAAS,MAAM,QAAQ,WAAW;AAAA,cAClC,QAAQ,aAAa,MAAM,QAAQ,OAAO;AAAA,cAC1C,cAAc;AAAA,cACd,WAAW;AAAA,gBACT,SAAS,MAAM,QAAQ,OAAO;AAAA,cAAA;AAAA,YAChC;AAAA,YAEF,cAAW;AAAA,YAEV,WAAC,aAAaA,sCAAC,aAAA,CAAA,CAAY,0CAAM,cAAA,CAAA,CAAa;AAAA,UAAA;AAAA,QAAA,GAEnD;AAAA,QAIA,kBAAkB,KAAK,kBACvBF,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,IAAI;AAAA,cACF,QAAQ;AAAA,cACR,OAAO;AAAA,cACP,UAAU;AAAA,cACV,SAAS;AAAA,cACT,eAAe;AAAA,cACf,SAAS,MAAM,QAAQ,WAAW;AAAA,cAClC,YAAY,aAAa,MAAM,QAAQ,OAAO;AAAA,cAC9C,cAAc;AAAA,cACd,UAAU;AAAA,YAAA;AAAA,YAIX,UAAA;AAAA,cAAA,oBAAoB,cACnBE,kCAAAA,IAAC,SAAA,EAAQ,OAAM,iBAAgB,WAAU,QACvC,UAAAA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,SAAS;AAAA,kBACT,MAAK;AAAA,kBACL,IAAI;AAAA,oBACF,UAAU;AAAA,oBACV,KAAK;AAAA,oBACL,CAAC,QAAQ,UAAU,MAAM,GAAG;AAAA,oBAC5B,QAAQ;AAAA,oBACR,SAAS,MAAM,QAAQ,WAAW;AAAA,oBAClC,QAAQ,aAAa,MAAM,QAAQ,OAAO;AAAA,oBAC1C,cAAc;AAAA,oBACd,WAAW;AAAA,sBACT,SAAS;AAAA,oBAAA;AAAA,oBAEX,WAAW;AAAA,kBAAA;AAAA,kBAGb,gDAAC,OAAA,EAAM,IAAI,EAAE,UAAU,KAAG,CAAG;AAAA,gBAAA;AAAA,cAAA,GAEjC;AAAA,cAGFA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,kBACJ,aAAY;AAAA,kBACZ,IAAI;AAAA,oBACF,QAAQ;AAAA,oBACR,+BAA+B;AAAA,sBAC7B,QAAQ;AAAA,sBACR,OAAO;AAAA,oBAAA;AAAA,oBAET,OAAO;AAAA,kBAAA;AAAA,kBAGT,UAAAA,kCAAAA,IAAC,OAAI,IAAI;AAAA,oBACP,OAAO;AAAA,oBACP,QAAQ;AAAA,oBACR,UAAU;AAAA,oBACV,UAAU;AAAA;AAAA,kBAAA,GAGT,SAAA,CACH;AAAA,gBAAA;AAAA,cAAA;AAAA,cAID,CAAC,cACAA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,IAAI;AAAA,oBACF,SAAS;AAAA,oBACT,eAAe;AAAA,oBACf,YAAY;AAAA,oBACZ,gBAAgB;AAAA,oBAChB,QAAQ;AAAA,oBACR,OAAO;AAAA,oBACP,OAAO,MAAM,QAAQ,KAAK;AAAA,oBAC1B,QAAQ;AAAA,kBAAA;AAAA,kBAEV,SAAS;AAAA,kBAET,UAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,IAAI;AAAA,wBACF,aAAa;AAAA,wBACb,iBAAiB;AAAA,wBACjB,UAAU;AAAA,wBACV,YAAY;AAAA,wBACZ,eAAe;AAAA,sBAAA;AAAA,sBAElB,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAED;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;AC3PO,MAAM,uBAA4D,CAAC;AAAA,EACxE;AAAA,EACA,mBAAmB,CAAA;AAAA,EACnB;AAAA,EACA,eAAe,CAAA;AAAA,EACf,cAAc;AAAA,EACd,yBAAyB;AAAA,EACzB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,iBAAiB,CAAA;AAAA,EACjB;AAAA,EACA,oBAAoB;AAAA,EACpB;AAAA,EACA;AAAA,EACA,aAAa;AACf,MAAM;AACJ,QAAM,QAAQ,SAAA;AACd,QAAM,WAAW,cAAc,MAAM,YAAY,KAAK,IAAI,CAAC;AAE3D,QAAM,kBAAkB,YAAY,MAAM;AACxC,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,SAAS,aAAa,QAAQ,UAAU;AAC9C,aAAO,SAAS,KAAK,MAAM,MAAM,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACT,GAAG,CAAC,wBAAwB,UAAU,CAAC;AAGvC,QAAM,kBAAkB,QAAQ,MAAM;AACpC,WAAQ,YAAY,CAAC,oBAAqB,cAAc,yBACpD,cAAc,sBACd,cAAc;AAAA,EACpB,GAAG,CAAC,UAAU,iBAAiB,aAAa,wBAAwB,qBAAqB,oBAAoB,CAAC;AAE9G,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAiB,eAAe;AAG9E,QAAM,sBAAsB,YAAY,CAAC,YAAqB,oBAA4B;AACxF,QAAG,UAAU;AACX,yBAAmB,WAAW;AAC9B;AAAA,IACF;AACA,UAAM,qBAAqB,KAAK,IAAI,GAAG,KAAK,IAAI,cAAc,iBAAiB,WAAW,CAAC;AAE3F,uBAAmB,kBAAkB;AAGrC,qDAAiB,oBAAoB,iBAAiB;AAAA,EACxD,GAAG,CAAC,UAAU,aAAa,cAAc,CAAC;AAG1C,QAAM,mBAAmB,QAAQ,MAAM;AACrC,QAAI,CAAC,kBAAmB,QAAO,CAAA;AAE/B,UAAM,WAAW,sBAAsB,MAAM,YAAY,SAAS;AAClE,UAAM,SAAS,oBAAoB,MAAM,YAAY,OAAO;AAE5D,WAAO;AAAA,MACL,YAAY,MAAM,YAAY,OAAO,CAAC,cAAc,WAAW,GAAG;AAAA,QAChE;AAAA,QACA;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,EAEL,GAAG,CAAC,mBAAmB,OAAO,oBAAoB,gBAAgB,CAAC;AAGnE,QAAM,qBAAoD;AAAA,IACxD,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,WAAW;AAAA,IACX,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,IACV;AAAA,EAAA;AAGF,SACEF,kCAAAA,KAAC,MAAA,EAAK,WAAS,MAAE,GAAG,gBAClB,UAAA;AAAA,IAAAE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,GAAG;AAAA,UACH,GAAG,iBAAiB;AAAA,QAAA;AAAA,QAErB,GAAG;AAAA,QAEH;AAAA,MAAA;AAAA,IAAA;AAAA,IAGHA,sCAAC,0BAAA,EAA2B,GAAG,mBAAA,CAAoB;AAAA,EAAA,GACrD;AAEJ;AA4BO,MAAM,+BAA4E,CAAC;AAAA,EACxF,oBAAoB,CAAA;AAAA,EACpB,aAAa;AAAA,EACb,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB;AAAA,EACA,GAAG;AACL,MAAM;;AACJ,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA8D,CAAA,CAAE;AAG1G,QAAM,mBAAmB,QAAQ,MAAM;AACrC,WAAO,OAAO,OAAO,aAAa,EAAE,OAAO,CAAC,OAAO,UAAU,QAAQ,MAAM,MAAM,CAAC;AAAA,EACpF,GAAG,CAAC,aAAa,CAAC;AAGlB,QAAM,8BAA8B,YAAY,CAC9C,WACA,YACA,oBACG;AACH,qBAAiB,CAAA,SAAQ;;AACvB,YAAM,YAAY;AAAA,QAChB,GAAG;AAAA,QACH,CAAC,SAAS,GAAG,EAAE,MAAM,iBAAiB,UAAU,WAAA;AAAA,MAAW;AAG7D,YAAM,eAAe,OAAO,OAAO,SAAS,EAAE,OAAO,CAAC,OAAO,UAAU,QAAQ,MAAM,MAAM,CAAC;AAC5F,YAAM,cAAc,KAAK;AAAA,QACvB;AAAA,QACA,KAAK,IAAI,UAAU,cAAe,cAAc,UAAU,WAAY;AAAA,MAAA;AAGxE,OAAAoC,MAAA,UAAU,mBAAV,gBAAAA,IAAA,gBAA2B,aAAa,cAAc;AAEtD,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,WAAW,kBAAkB,CAAC;AAGlC,MAAI,kBAAkB,SAAS,GAAG;AAChC,UAAM,WAAW,KAAK;AAAA,MACpB;AAAA,OACC,UAAU,eAAe,MAAM;AAAA,IAAA;AAGlC,kDACG,MAAA,EAAK,WAAS,MAAE,GAAG,UAAU,gBAC5B,UAAA;AAAA,MAAApC,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,YACF,YAAY,UAAU,oBACpB,OAAO,UAAU,sBAAsB,GAAG,MAAM,UAAU,oBAAoB,aAAa,KAC3F;AAAA,YACF,IAAG,eAAU,qBAAV,mBAA4B;AAAA,UAAA;AAAA,UAEhC,GAAG,UAAU;AAAA,UAEb,UAAA,UAAU;AAAA,QAAA;AAAA,MAAA;AAAA,MAGZ,kBAAkB,IAAI,CAAC,YACtBA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UAEE,GAAG,QAAQ;AAAA,UACZ,UAAU,CAAC,YAAY,SACrB,4BAA4B,QAAQ,IAAI,YAAY,IAAI;AAAA,UAGzD,UAAA,QAAQ;AAAA,QAAA;AAAA,QANJ,QAAQ;AAAA,MAAA,CAQhB;AAAA,IAAA,GACH;AAAA,EAEJ;AAGA,SAAOA,sCAAC,sBAAA,EAAsB,GAAG,UAAA,CAAW;AAC9C;AAGO,MAAM,mBAAmB,CAC9B,cAAsB,IACtB,yBAAkC,MAClC,eAAuB,GACvB,gBAAwB,MACrB;AACH,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,sBAAsB;AACnE,QAAM,CAAC,aAAa,cAAc,IAAI;AAAA,IACpC,yBAAyB,eAAe;AAAA,EAAA;AAE1C,QAAM,CAAC,UAAU,WAAW,IAAI;AAAA,IAC9B,eAAe,yBAAyB,eAAe;AAAA,EAAA;AAGzD,QAAM,gBAAgB,YAAY,MAAM;AACtC,UAAM,cAAc,CAAC;AACrB,UAAM,iBAAiB,cAAc,eAAe;AACpD,UAAM,cAAc,cAAc;AAElC,kBAAc,WAAW;AACzB,mBAAe,cAAc;AAC7B,gBAAY,WAAW;AAAA,EACzB,GAAG,CAAC,YAAY,cAAc,eAAe,WAAW,CAAC;AAEzD,QAAM,kBAAkB,YAAY,CAAC,aAAsB;AACzD,UAAM,iBAAiB,WAAW,eAAe;AACjD,UAAM,cAAc,cAAc;AAElC,kBAAc,QAAQ;AACtB,mBAAe,cAAc;AAC7B,gBAAY,WAAW;AAAA,EACzB,GAAG,CAAC,cAAc,eAAe,WAAW,CAAC;AAE7C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAGO,MAAM,wBAAwB,CACnC,WACA,eAAuB,MACvB,iBAAyB,GACzB,iBAAyB,MACtB;AACH,QAAM,mBAAmB,KAAK,MAAM,YAAY,YAAY;AAC5D,QAAM,mBAAmB,YAAY;AAErC,QAAM,cAAc,KAAK,IAAI,gBAAgB,gBAAgB;AAC7D,QAAM,cAAc,KAAK,IAAI,gBAAgB,KAAK,IAAI,kBAAkB,YAAY,WAAW,CAAC;AAEhG,SAAO;AAAA,IACL,aAAa,KAAK,IAAI,aAAa,YAAY,WAAW;AAAA,IAC1D;AAAA,IACA,WAAW,cAAc;AAAA,EAAA;AAE7B;AClSO,MAAM,eAAe,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU,CAAA;AAAA,EACV,GAAG;AACJ,MAOM;AACL,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,gBAAgB,QAAQ,SAC3B,CAAC,GAAG,OAAO,IACX;AAAA,IACA;AAAA,MACC,OAAO,EAAE,eAAe;AAAA,MACxB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,IAAI;AAAA,QACH,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,IAED,GAAI,mBACD;AAAA,MACA;AAAA,QACC,OAAO,EAAE,aAAa;AAAA,QACtB,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACR,IAEA,CAAA;AAAA,EAAC;AAEP,SACCF,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAgB;AAAA,MAChB,oBAAiB;AAAA,MACjB,WAAS;AAAA,MACR,GAAG;AAAA,MACJ,UAAA;AAAA,QAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,IAAG;AAAA,YACH,WAAU;AAAA,YACV,UAAA;AAAA,cAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC3C,UAAA,EAAE,KAAK,EAAA,CACT;AAAA,cACAA,kCAAAA,IAAC,cAAW,SAAS,SACpB,gDAACkD,aAAA,EAAM,UAAS,SAAQ,EAAA,CACzB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEDlD,sCAAC,iBAAe,UAAS;AAAA,8CACxB,eAAA,EACC,UAAA,cAAc,IAAI,CAAC,QAAQ,UAC3BA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,IAAI;AAAA,cACH,GAAG,OAAO;AAAA,YAAA;AAAA,YAGX,SAAS,OAAO;AAAA,YAChB,SAAS,OAAO;AAAA,YAChB,OAAO,OAAO;AAAA,YACb,UAAA,OAAO;AAAA,UAAA;AAAA,UAJH;AAAA,QAAA,CAMN,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGH;ACvDA,SAAS,kBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AACZ,GAA8B;AAC5B,QAAM,SAAS,UAAA;AACf,QAAMmD,YAAW,YAAA;AACjB,QAAM,WAAW,YAAA;AAEjB,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmB,IAAI;AACnD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAE3C,YAAU,MAAM;AACd,UAAM,aAAa,YAAY;AAC7B,iBAAW,IAAI;AAGf,YAAM,WAAW,YAAY,QAAQA,WAAU,OAAO;AAEtD,UAAI,CAAC,UAAU;AAEb,iBAAS,aAAa;AACtB;AAAA,MACF;AAEA,UAAI;AAEF,cAAM,OAAO,MAAM,YAAY,QAAQ;AACvC,kBAAU,IAAI;AAAA,MAChB,SAAS,OAAO;AACd,gBAAQ,MAAM,0BAA0B,KAAK;AAE7C,iBAAS,aAAa;AAAA,MACxB,UAAA;AACE,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAEA,eAAA;AAAA,EACF,GAAG,CAAC,aAAa,QAAQA,WAAU,UAAU,eAAe,OAAO,CAAC;AAEpE,MAAI,SAAS;AACX,iDAAQ,WAAA,EAAU;AAAA,EACpB;AAEA,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,SAAOnD,kCAAAA,IAAAD,kBAAAA,UAAA,EAAG,UAAA,SAAS,MAAM,GAAE;AAC7B;ACrEA,MAAM,aAAa,CAAC,UAA0B;;AAC5C,QAAM,EAAE,MAAM,UAAU,gBAAgB,eAAe;AACvD,QAAM,QAAQqD,WAAA;AACd,QAAM,QAAgB;AACtB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAiB,KAAK;AAE9C,QAAM,qBAAoB,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AAC3D,QAAM,uBAAsB,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AAC7D,QAAM,kBAAiB,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AACxD,QAAM,wBAAuB,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AAC9D,QAAM,0BAAyB,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AAChE,QAAM,cAAa,0CAAO,YAAP,mBAAgB,UAAhB,mBAAuB,UAAU;AAEpD,QAAM,uBAAuB,CAAC,gBAAsB;AAClD,QAAI,gBAAgB;AAClB,YAAM,YAAY,MAAM,UAAU,CAACC,UAASA,MAAK,OAAO,YAAY,EAAE;AAEtE,YAAM,eAAe,CAAC,GAAG,KAAK;AAC9B,mBAAa,SAAS,IAAI;AAE1B,cAAQ,YAAY;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,mBAAmB,CAAC,gBAAsB;AAC9C,QAAI,YAAY;AACd,YAAM,YAAY,MAAM,UAAU,CAACA,UAASA,MAAK,OAAO,YAAY,EAAE;AAEtE,YAAM,eAAe,CAAC,GAAG,KAAK;AAC9B,mBAAa,SAAS,IAAI;AAE1B,cAAQ,YAAY;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,gBAAsB;AACjD;AAAA,MAAQ,CAAC,cACP,UAAU;AAAA,QAAI,CAACA,UACbA,MAAK,OAAO,YAAY,KAAK,cAAcA;AAAAA,MAAA;AAAA,IAC7C;AAAA,EAEJ;AAEA,SACErD,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,MACP,UAAU,SAAS;AAAA,MACnB,eAAe,WAAW,UAAU;AAAA,MACpC,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,UAAS;AAAA,MACT,YAAW;AAAA,MACX,kBAAkB,iBAAiB,uBAAuB;AAAA,MAC1D,cAAc,aAAa,mBAAmB;AAAA,MAC9C,kBAAkB;AAAA,MAClB,0BAA0B;AAAA,MAC1B,oBAAoB;AAAA,MACpB,4BAA4B;AAAA,MAC5B,0BAA0B;AAAA,MAC1B,kCAAkC;AAAA,MAClC;AAAA,MACA,gCAAgC;AAAA,MAChC;AAAA,MACA,8BAA8B;AAAA,MAC9B;AAAA,MACA,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAGvB;ACrEA,MAAM,eAAe,CAAC,UAA6B;AACjD,QAAM,EAAE,UAAU,IAAI,aAAa,qBAAqB,OAAOA,sCAAC,OAAA,EAAI,KAAKgD,OAAK,gBAAA,CAAiB,GAAI,UAAU,GAAG,SAAS;AACzH,SACElD,kCAAAA,KAAC,KAAA,EAAI,WAAU,YAAY,GAAG,MAC3B,UAAA;AAAA,IAAA;AAAA,IACDE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,OAAM;AAAA,QACN,WAAU;AAAA,QAET,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHA,sCAAC,SAAK,SAAA,CAAS;AAAA,EAAA,GACjB;AAEJ;AClCA,MAAM,SAAS,CAAC,UAAe;AAC7B,QAAM,EAAE,UAAU;AAElB,SACEF,kCAAAA,KAAC,OAAA,EAAI,WAAU,UACb,UAAA;AAAA,IAAAE,kCAAAA,IAAC,MAAA,EAAG,WAAU,iBAAA,CAAiB;AAAA,IAC9B;AAAA,IACDA,kCAAAA,IAAC,MAAA,EAAG,WAAU,iBAAA,CAAiB;AAAA,EAAA,GACjC;AAEJ;ACoBA,MAAMsD,kBAAgB,CAAC,EAAE,SAAS,yBAAyB,MAAM,gBAAgB,WAAW,SAAS,KAAK,eAAe,SAAS,GAAG,WAA2B;AAC9J,SACExD,uCAAC,SAAI,WACF,UAAA;AAAA,IAAA,mCAAS,IAAI,CAAC,QACbE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WACE,IAAI,QACA,IAAI,QACJ,YAAY,2BAAK,QAAQ;AAAA,QAG/B,SAAS,IAAI,UAAU,IAAI,UAAU;AAAA,QACrC,WAAW,IAAI,OAAO,IAAI,OAAO;AAAA,QACjC,SAAS,IAAI;AAAA,QAEZ,cAAI,SAAS;AAAA,MAAA;AAAA,MALT,IAAI;AAAA,IAAA;AAAA,IAQZ,0BACCA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,UACZ,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,uBAAuB,WAAW,CAAA;AAAA,QAC1C,GAAI,iBAAiB,UAAU,EAAE,WAAW,uBAAuB,KAAA,IAAS,EAAE,SAAS,uBAAuB,KAAA;AAAA,QAC/G,yBAAyB;AAAA,QACzB,sBAAsB;AAAA,QACtB,SAAS;AAAA,QACT,kBAAkB;AAAA,UAChB,SAAS;AAAA,QAAA;AAAA,QAEX,yBAAyB;AAAA,UACvB,OAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,GAAG,uBAAuB;AAAA,UAAA;AAAA,QAC5B;AAAA,QAEF;AAAA,QACC,GAAG;AAAA,QAEH,UAAA,uBAAuB;AAAA,MAAA;AAAA,IAAA,EAC1B,CACF;AAAA,EAAA,GAEJ;AAEJ;ACsBA,MAAM,cACN;AAAA,EAEE,4BAA4B;AAAA,IAC1B,cAAc;AAAA,MACZ,QAAQ;AAAA,IAAA;AAAA,IAEV,oBAAoB;AAAA,MAClB,QAAQ;AAAA,IAAA;AAAA,IAGV,0BAA0B;AAAA,MACxB,QAAQ;AAAA,IAAA;AAAA,EACV;AAGJ;AACA,MAAM,2BAA2B,CAAC,UAA8B;AAC9D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,UAAU,CAAA;AAAA,IACV;AAAA,IACA,cAAc;AAAA,IACd,aAAa,CAAA;AAAA,IACb,qBAAqB,CAAA;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,CAAA;AAAA,IACV,cAAc;AAAA,IACd,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA;AAAA;AAAA,IAGlB,eAAe;AAAA,IACf;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,iBAAiB,CAAA;AAAA,IACjB;AAAA,IACA,qBAAqB,CAAA;AAAA,IACrB,uBAAuB,CAAA;AAAA;AAAA,IAEvB,iBAAiB;AAAA;AAAA,IAEjB,yBAAyB,CAAA;AAAA,EAAC,IACxB;AAIJ,QAAM,wBAAwB;AAAA;AAAA,IAE5B,GAAI,iBAAiB,CAAC,EAAE,OAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IAC3C;AAAA,MACE,OAAO;AAAA,IAAA;AAAA,IAET;AAAA,MACE,OAAO;AAAA,IAAA;AAAA,EACT;AAGF,QAAM,gBAAgB;AAAA,IACpB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,cAAa,WAAW,SAAS,IAAI;AAAA,MAC5D,cAAc;AAAA,IAAA;AAAA,IAEhB;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,oBAAmB,WAAW,eAAe,IAAI;AAAA,IAAA;AAAA,IAE1E;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,WAAU,WAAW,MAAM,IAAI;AAAA,MACtD,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,eAAc,WAAW,UAAU,IAAI;AAAA,MAC9D,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAGZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,UAAS,WAAW,KAAK,IAAI;AAAA,MACpD,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,iBAAgB,WAAW,YAAY,IAAI;AAAA,MAClE,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,cAAa,WAAW,SAAS,IAAI;AAAA,MAC5D,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,gBAAe,WAAW,WAAW,IAAI;AAAA,MAChE,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,gBAAe,WAAW,WAAW,IAAI;AAAA,MAChE,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,IAEZ;AAAA,MACE,KAAK;AAAA,MACL,OAAO;AAAA,MACP,aAAa;AAAA,MACb,SAAS;AAAA,MACT,WAAU,yCAAa,kBAAiB,WAAW,aAAa,IAAI;AAAA,MACpE,cAAc;AAAA,MACd,UAAU;AAAA,IAAA;AAAA,EACZ;AAGF,QAAM,gBAAgB,QAAQ,MAAM;AAClC,WAAO,CAAC,GAAG,eAAe,GAAG,kBAAkB;AAAA,EACjD,GAAG,CAAA,CAAE;AACL,QAAM,aACN;AAAA,IACE,QAAQ;AAAA,IACR,iBAAiB;AAAA,MACf,aAAa;AAAA,IAAA;AAAA,IAEf,6BAA6B;AAAA,MAC3B,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,IAET,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA,IAEV,qBAAqB;AAAA,MACnB,OAAO;AAAA,IAAA;AAAA,EACT;AASF,QAAM,yBAAyB,CAAC,SAAkC;AAChE,QAAI,CAAC,mBAAoB;AACzB,QAAI,gBAAgB;AAClB,yBAAmB,IAAI;AAAA,IACzB,OAAO;AAEL,YAAM,EAAE,YAAY,UAAU,YAAY,GAAG,SAAS;AACtD,yBAAmB,IAA+B;AAAA,IACpD;AAAA,EACF;AAEA,QAAM,eAAe,CAAC;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,EAAA,MACF;AACT,QAAI,CAAC,WAAW,GAAG,EAAG,QAAO;AAE7B,WACEA,kCAAAA,IAAC,OAAA,EAAI,WAAU,iBACb,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,GAAG,GAAG;AAAA,QACf,mBAAmB;AAAA,QACnB,OAAO,mCAAU;AAAA,QACjB,UAAU,CAAC,MAAM,uBAAuB,EAAE,CAAC,QAAQ,GAAG,EAAE,OAAO,OAAkC;AAAA,QACjG;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QAEf;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,KAZgC,GAcpC;AAAA,EAEJ;AAGA,QAAM,kBAAkB,MACtBF,kCAAAA,KAAAC,kBAAAA,UAAA,EACG,UAAA;AAAA,IAAA,cAAc,IAAI,YAAY;AAAA,IAE9B,uBAAuB,IAAI,CAAC,EAAE,KAAK,UAAA,MAClCC,kCAAAA,IAACS,eAAM,UAAN,EAA0B,UAAA,UAAA,GAAN,GAAgB,CACtC;AAAA,EAAA,GACH;AAQF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgB,CAAA,CAAE;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAA6B,OAAO;AACtE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAC/C,QAAM,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC,IAAI,KAAK,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,EAAA;AAGhE,QAAM,kBAAkB,QAAQ,MAAM;AACpC,WAAO,CAAC,GAAG,uBAAuB,GAAG,oBAAoB;AAAA,EAC3D,GAAG,CAAA,CAAE;AACL,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAmB,eAAe;AAE5E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,CAAC;AAC5C,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAyB;AAAA,IACrE,WAAW,IAAI,KAAK,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,IACzE,SAAS,IAAI,KAAK,OAAM,mCAAS,aAAY,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,IACrE,KAAK;AAAA,EAAA,CACN;AACD,QAAM,YAAY,OAA8B,IAAI;AACpD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,IAC1C;AAAA,EAAA;AAGF,QAAM,gBAAgB,OAAuB,IAAI;AACjD,QAAM,oBAAoB,OAAuB,IAAI;AAErD,QAAM,wBAAwB,MAAM;AAClC,cAAU,UAAU;AACpB,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,mBAAmB,CAAC,UAA8B;AAEtD,QAAI,CAAC,eAAgB;AACrB,iBAAa,KAAK;AAClB,QAAI,UAAU,UAAU;AACtB,gBAAU,UAAU,cAAc;AAClC,cAAQ,IAAI;AAAA,IACd,OAAO;AACL,YAAM,OAAO8C,2BAAuB;AAAA,QAClC,OAAO,MAAM,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,IAAI;AAAA,MAAA,CACL;AACD,6BAAuB;AAAA,QACrB,aAAY,6BAAM,QAAO,6BAAM,OAAO;AAAA,QACtC,WAAU,6BAAM,MAAK,6BAAM,KAAK;AAAA,MAAA,CACjC;AACD,4BAAA;AAAA,IACF;AAAA,EACF;AAGA,QAAM,cAAc,CAAC,UAAiB;AACpC,QACE,UAAU,WACV,UAAU,QAAQ,SAAS,MAAM,MAAqB,GACtD;AACA;AAAA,IACF;AAEA,0BAAA;AAAA,EACF;AAEA,QAAM,UAAU;AAAA,IACd;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,OAAO;AAAA,MAC1B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,YAAY;AAAA,MAC/B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,cAAc;AAAA,MACjC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,eAAe;AAAA,MAClC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,gBAAgB;AAAA,MACnC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,kBAAkB;AAAA,MACrC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,eAAe;AAAA,MAClC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,YAAY,CAAC,UAAe;AAChC,WAAO,cAAc,KAAK,CAAA,UAAQ,6BAAM,WAAS,+BAAO,MAAK;AAAA,EAC/D;AAEA,QAAM,2BAA2B,MAAM;AACrC,UAAM,kBAAkB;AAAA,MACtB,YAAY,MAAM,gBAAgB,SAAS,EAAE,OAAO,YAAY;AAAA,MAChE,UAAU,MAAM,gBAAgB,OAAO,EAAE,OAAO,YAAY;AAAA,IAAA;AAE9D,UAAM,aAAa;AAAA,MACjB,YAAY,MAAM,UAAU,EAAE,OAAO,YAAY;AAAA,IAAA;AAInD,2BAAuB;AAAA,MACrB,GAAI,cAAc,kBAAkB;AAAA,IAAA,CACrC;AACD,0BAAA;AAAA,EACF;AACA,QAAM,oBAAoB,MAAM;AAC9B,sBAAkB,IAAI;AAAA,EACxB;AACA,QAAM,qBAAqB,CAAC,UAAe;AACzC,QAAI,cAAc,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,KAAK,GAAG;AAC3D,uBAAiB,cAAc,OAAO,CAAC,UAAS,6BAAM,UAAS,MAAM,KAAK,CAAC;AAC3E;AAAA,IACF;AACA,qBAAiB,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,EAC5C;AACA,WAAS,WAAW,KAAK;AACvB,WAAO,cAAc,KAAK,CAAA,UAAQ,6BAAM,UAAS,GAAG;AAAA,EACtD;AACA,QAAM,qBAAqB,MAAM;AAC/B,WACEvD,kCAAAA;AAAAA,MAACwD;AAAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,MAAM,QAAQ,cAAc;AAAA,QAC5B,SAAS;AAAA,QAIR,UAAA,iDAAgB,IAAI,CAAC,SACpB1D,kCAAAA,KAAC,UAAA,EAAS,SAAS,MAAM,mBAAmB,IAAI,GAAc,OAAO,6BAAM,OACzE,UAAA;AAAA,UAAAE,kCAAAA,IAAC8C,YAAA,EAAS,SAAS,UAAU,IAAI,EAAA,CAAG;AAAA,UACpC9C,kCAAAA,IAAC,YAAA,EAAW,IAAI,EAAE,YAAY,OAAA,GAAU,OAAM,qBAAoB,MAAK,MAAM,UAAA,6BAAM,KAAA,CAAK;AAAA,QAAA,EAAA,GAFlC,IAGxD;AAAA,MACD;AAAA,IAAA;AAAA,EAIP;AACA,YAAU,MAAM;AACd;AAAA,MACE,IAAI,KAAK,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,IAAA;AAAA,EAElE,GAAG,CAAC,mCAAS,UAAU,CAAC;AAExB,YAAU,MAAM;AACd,uBAAmB;AAAA,MACjB,GAAG;AAAA,MACH,WAAW,IAAI;AAAA,QACb,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY;AAAA,MAAA;AAAA,MAEtD,SAAS,IAAI,KAAK,OAAM,mCAAS,aAAY,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,IAAA,CACtE;AAAA,EAEH,GAAG,CAAC,mCAAS,UAAU,mCAAS,UAAU,CAAC;AAE3C,YAAU,MAAM;AACd,QAAI,MAAM;AACR,UAAI,aAAa;AACf,2BAAmB;AAAA,UACjB,GAAG;AAAA,UACH,WAAW,IAAI;AAAA,YACb,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY;AAAA,UAAA;AAAA,UAEtD,SAAS,IAAI;AAAA,YACX,OAAM,mCAAS,aAAY,EAAE,EAAE,OAAO,YAAY;AAAA,UAAA;AAAA,QACpD,CACD;AAAA,MACH,OAAO;AACL;AAAA,UACE,IAAI,KAAK,OAAM,mCAAS,eAAc,EAAE,EAAE,OAAO,YAAY,CAAC;AAAA,QAAA;AAAA,MAElE;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,MAAM,WAAW,CAAC;AAUtB,YAAU,MAAM;AACd,iBAAa,eAAe,kBAAkB,CAAC;AAAA,EAEjD,GAAG,CAAC,kBAAkB,CAAC;AAEvB,gDACG,OAAA,EACC,UAAA;AAAA,IAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,4BACZ,UAAA;AAAA,MAAA,mBAAmBA,kCAAAA,KAAC,OAAA,EAAI,WAAU,yCAChC,UAAA;AAAA,QAAA,oDACE,OAAA,EAAI,OAAO,EAAE,QAAQ,OACpB,UAAAE,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS;AAAA,YACT,SAAS;AAAA,YACT,yBAAyB;AAAA,YAExB,UAAA;AAAA,UAAA;AAAA,QAAA,EACH,CACF,IAEAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA,MAAA,CACH;AAAA,QAED;AAAA,UACC,EAAE,OAAO,UAAU,OAAO,UAAU,EAAA;AAAA,UACpC,EAAE,OAAO,UAAU,OAAO,UAAU,EAAA;AAAA,QAAE,EAErC,IAAI,CAAC,QAAQ,GAAG,EAChB,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ,EACtC,IAAI,CAAC,SACJA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,OAAO,6BAAM;AAAA,YACb,QAAQ;AAAA,YACR,SAAS,MAAM,+CAAgB,KAAK;AAAA,UAAK;AAAA,UAHpC,6BAAM;AAAA,QAAA,CAKd;AAAA,MAAA,GAEL;AAAA,MACC,gBACCA,kCAAAA,IAAC,OAAA,EAAI,WAAU,2CACb,gDAAC,QAAA,EAAO,SAAS,gBAAkB,UAAA,WAAA,CAAW,EAAA,CAChD;AAAA,MAEFA,kCAAAA;AAAAA,QAACsD;AAAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,WAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,cAAa;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,iBAAiBtD,kCAAAA,IAAC,KAAA,EAChB,UAAA,cAAA,CACH;AAAA,IAAA,GAEF;AAAA,IACAA,kCAAAA,IAAC,SAAA,EAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,aAAa,WAAA,EAAW,CAAG;AAAA,KAEvD,6BAAM,UACLA,kCAAAA,IAAC,OAAA,EACC,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ,CAAA;AAAA,QACd;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,GAEJ,IACE;AAAA,IACJF,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,KAAK;AAAA,UACL,UAAU;AAAA,UACV,IAAI;AAAA,QAAA;AAAA,QAGN,UAAA;AAAA,UAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,2CAGZ,UAAA;AAAA,YAAA,kBAAkB,WAAW,MAAM,KAAK,eACvCE,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,MAAA,GAClC,UAAAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,KAAK;AAAA,gBACL,SAAS,MAAM;AACb,sBAAI,CAAC,MAAM;AACT,8BAAU,UAAU,kBAAkB;AACtC,4BAAQ,IAAI;AAAA,kBACd,OAAO;AACL,0CAAA;AAAA,kBACF;AAAA,gBACF;AAAA,gBAEA,UAAA;AAAA,kBAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAO,GAAG,MAAM,mCAAS,UAAU,EAAE,OAAO,YAAY,CAAC,MAAM,MAAM,mCAAS,QAAQ,EAAE,OAAO,YAAY,CAAC;AAAA,sBAE5G,UAAA;AAAA,wBAAAE,sCAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,UAAA,eAEtC;AAAA,wBACAF,kCAAAA;AAAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,WAAU;AAAA,4BACV,MAAK;AAAA,4BAEJ,UAAA;AAAA,8BAAA,MAAM,mCAAS,UAAU,EAAE,OAAO,YAAY;AAAA,8BAAE;AAAA,8BAAG;AAAA,8BACnD,MAAM,mCAAS,QAAQ,EAAE,OAAO,YAAY;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAC/C;AAAA,oBAAA;AAAA,kBAAA;AAAA,wDAED2D,aAAA,CAAA,CAAsB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,GAE3B;AAAA,YAGD,kBAAkB,WAAW,MAAM,MAAK,mCAAS,eAAc,CAAC,eAC/DzD,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,SAClC,UAAAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,KAAK;AAAA,gBACL,SAAS,MAAM;AACb,sBAAI,CAAC,MAAM;AACT,8BAAU,UAAU,kBAAkB;AACtC,4BAAQ,IAAI;AAAA,kBACd,OAAO;AACL,0CAAA;AAAA,kBACF;AAAA,gBACF;AAAA,gBAEA,UAAA;AAAA,kBAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAU;AAAA,sBACV,OAAO,GAAG,MAAM,mCAAS,UAAU,EAAE,OAAO,YAAY,CAAC;AAAA,sBAEzD,UAAA;AAAA,wBAAAE,sCAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,UAAA,SAEtC;AAAA,wBACAA,kCAAAA;AAAAA,0BAAC;AAAA,0BAAA;AAAA,4BACC,WAAU;AAAA,4BACV,MAAK;AAAA,4BAEJ,UAAA,MAAM,mCAAS,UAAU,EAAE,OAAO,YAAY;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACjD;AAAA,oBAAA;AAAA,kBAAA;AAAA,wDAEDyD,aAAA,CAAA,CAAsB;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,GAE3B;AAAA,YAED,gBAAA;AAAA,UAAgB,GACnB;AAAA,UAIC,uBAAuB,kBAAkB3D,uCAAC,OAAA,EAAI,WAAU,0CAAyC,UAAA;AAAA,YAAA;AAAA,YAEhGA,uCAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,cAAAC,kCAAAA;AAAAA,gBAACsD;AAAAA,gBAAA;AAAA,kBACC,QAAQ;AAAA,kBACR,WAAU;AAAA,kBACV,wBAAwB;AAAA,oBACtB,MAAMtD,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,QAAQ,WAAW;AAAA,oBAC1C,UACEF,kCAAAA,KAAAC,4BAAA,EACG,UAAA;AAAA,sBAAA,MAAM,SAAS;AAAA,4DACf0D,aAAA,CAAA,CAAsB;AAAA,oBAAA,GACzB;AAAA,oBAEF;AAAA,kBAAA;AAAA,kBAEF;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEFzD,kCAAAA,IAAC,OAAA,EAAI,KAAK,cAAA,CAAe;AAAA,YAAA,GAC3B;AAAA,YAAG;AAAA,UAAA,GAEL;AAAA,UAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,YAAAE,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI,CAAC,EAAE,eAAe;AAAA,kBACpB,QAAQ;AAAA,kBACR,aAAa;AAAA,kBACb,cAAc;AAAA,kBACd,OAAO,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,kBAC3B,WAAW;AAAA,oBACT,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,kBAAA;AAAA,gBAC/B;AAAA,gBAEF,SAAQ;AAAA,gBACR,WAAWA,kCAAAA,IAAC0D,QAAA,EAAW,UAAS,QAAA,CAAQ;AAAA,gBACxC,SAAS,CAAC,UAAU,kBAAkB,MAAM,aAAa;AAAA,gBAC1D,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGA,gBAAgB1D,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,aAAY,YAAW,IAAI,EAAE,WAAW,OAAA,EAAO,CAAG;AAAA,YACpF,mBAAA;AAAA,YACA,gBACCA,kCAAAA,IAAAD,kBAAAA,UAAA,EACE,UAAAD,uCAAC,KAAA,EAAI,WAAU,qDACb,UAAA;AAAA,cAAAA,uCAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,YAAW,UAAA;AAAA,gBAAA;AAAA,gBAAQ;AAAA,gBAAM;AAAA,gBAAK;AAAA,cAAA,GAAW;AAAA,cACrFA,uCAAC,aAAA,EAAY,SAAQ,YAAW,kBAAgB,MAAC,IAAI,CAAC,EAAE,eAAe;AAAA,gBACrE,qBAAqB;AAAA,kBACnB,aAAa,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,kBACjC,WAAW;AAAA,oBACT,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,kBAAA;AAAA,gBAC/B;AAAA,gBAEF,iCAAiC;AAAA,kBAC/B,qBAAqB;AAAA,kBACrB,wBAAwB;AAAA,gBAAA;AAAA,gBAE1B,gCAAgC;AAAA,kBAC9B,sBAAsB;AAAA,kBACtB,yBAAyB;AAAA,gBAAA;AAAA,cAC3B,IAEA,UAAA;AAAA,gBAAAE,sCAAC2D,UAAA,EAAU,SAAS,MAAM;AACxB,2BAAS,SAAS,aAAa,QAAQ,QAAQ,CAAC;AAChD,2EAAqB;AAAA,gBACvB,GACE,UAAA3D,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,QAAQ,GAClC;AAAA,gBACAA,sCAAC2D,UAAA,EAAU,SAAS,MAAM;AACxB,2BAAS,SAAS,IAAI,QAAQ,IAAI,CAAC;AACnC,uEAAmB;AAAA,gBACrB,GACE,UAAA3D,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,UAAU,EAAA,CACpC;AAAA,cAAA,EAAA,CACF;AAAA,YAAA,EAAA,CACF,EAAA,CACF;AAAA,YAEFA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,aAAY;AAAA,gBACZ,cAAc,CAAC,QAAQ,6CAAe;AAAA,gBACtC,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,YAAY;AAAA,kBACZ,QAAQ;AAAA,gBAAA;AAAA,cACV;AAAA,YAAA;AAAA,UACF,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFA,kCAAAA,IAAC,SAAA,EAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,aAAa,WAAA,EAAW,CAAG;AAAA,IAExDA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,QAAQ;AAAA,QAAA;AAAA,QAEV;AAAA,QACA,UAAU,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,YAAU;AAAA,QACV,eAAa;AAAA,QAEZ,UAAA,CAAC,EAAE,iBAAiB,UAAA,MACnBA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,iBACE,cAAc,WAAW,eAAe;AAAA,YAAA;AAAA,YAG5C,UAAAA,kCAAAA,IAAC,OAAA,EACC,UAAAA,kCAAAA,IAAC,mBAAA,EAAkB,aAAa,aAC9B,UAAAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA;AAAA,kBAAAE,kCAAAA,IAAC,SACE,UAAA,cACCA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,oBAAoB;AAAA,sBACpB,UAAU,CAAC,SAAS,mBAAmB,KAAK,SAAS;AAAA,sBACrD,2BAA2B;AAAA,sBAC3B,QAAQ,CAAC,eAAe;AAAA,sBACxB;AAAA,oBAAQ;AAAA,kBAAA,IAGVA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,UAAU,CAAC,SAAS,cAAc,IAAI;AAAA,sBACtC,MAAM;AAAA,sBACN;AAAA,oBAAQ;AAAA,kBAAA,GAGd;AAAA,wDACC,KAAA,EAAI,IAAI,EAAE,SAAS,mBAClB,UAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI,EAAE,OAAO,cAAA;AAAA,sBACb,SAAS;AAAA,sBACV,UAAA;AAAA,oBAAA;AAAA,kBAAA,EAED,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,GAEJ,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,GAEF;AAEJ;AC32BA,MAAM,mBAAgC,sBAAM,cAAc,EAAE;AAC5D,IAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,mBAAiB,cAAc;AACjC;ACPA,MAAMW,cAAY,CAAC,aAAa,eAAe,cAAc,0BAA0B,qBAAqB,wBAAwB,GAClI,aAAa,CAAC,aAAa,SAAS,WAAW,GAC/C,aAAa,CAAC,WAAW;AAmBZ,SAAS,QAOxB,MAAM,YAAY;AAChB,QAAM;AAAA,IACF;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN,IAAQ,YACJ,qBAAqB,8BAA8B,YAAYA,WAAS;AACrE,QAAC;AAAA,IACF,WAAW;AAAA,IACX,QAAQ;AAAA,MACN,CAAC,IAAI,GAAG;AAAA,IAChB;AAAA,IACM,YAAY;AAAA,MACV,CAAC,IAAI,GAAG;AAAA,IAChB;AAAA,EACA,IAAQ;AACI,gCAA8B,wBAAwB,UAAU;AAC1E,QAAM,cAAc,MAAM,IAAI,KAAK;AAInC,QAAM,0BAA0B,sBAAsB,UAAU,IAAI,GAAG,UAAU;AACjF,QAAM,kBAAkB,eAAeI,WAAS;AAAA,IAC5C;AAAA,EACN,GAAO,oBAAoB;AAAA,IACrB,wBAAkD;AAAA,IAClD,mBAAmB;AAAA,EACzB,CAAK,CAAC,GACF;AAAA,IACE,OAAO;AAAA,MACL,WAAW;AAAA,IACnB;AAAA,IACM;AAAA,EACN,IAAQ,iBACJ,cAAc,8BAA8B,gBAAgB,OAAO,UAAU;AAC/E,QAAM,MAAM,WAAW,aAAa,2BAA2B,OAAO,SAAS,wBAAwB,KAAK,WAAW,GAAG;AAC1H,QAAM,iBAAiB,oBAAoB,kBAAkB,WAAW,IAAI,CAAA;AAC5E,QAAM,kBAAkBA,WAAS,IAAI,YAAY,cAAc;AAC/D,QAAM,gBAAmE;AACzE,QAAM,QAAQ,iBAAiB,aAAaA,WAAS,CAAA,GAAI,SAAS,QAAuF,CAAC,MAAM,IAAI,KAAK,wBAAwB,aAAa,iBAAiB;AAAA,IAC7N,IAAI;AAAA,EACR,GAAK;AAAA,IACD;AAAA,EACJ,CAAG,GAAG,eAAe;AACnB,SAAO,KAAK,cAAc,EAAE,QAAQ,cAAY;AAC9C,WAAO,MAAM,QAAQ;AAAA,EACvB,CAAC;AACD,SAAO,CAAC,aAAa,KAAK;AAC5B;ACjFO,SAAS,yBAAyB,MAAM;AAC7C,SAAO,qBAAqB,gBAAgB,IAAI;AAClD;AACA,MAAM,mBAAmB,uBAAuB,gBAAgB,CAAC,QAAQ,WAAW,YAAY,YAAY,WAAW,QAAQ,CAAC;ACDhI,MAAMJ,cAAY,CAAC,YAAY,aAAa,mBAAmB,YAAY,kBAAkB,YAAY,YAAY,UAAU,SAAS,aAAa,uBAAuB,iBAAiB;AAiB7L,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,CAAC,UAAU,WAAW,YAAY,YAAY,YAAY,YAAY,CAAC,kBAAkB,SAAS;AAAA,IACjH,QAAQ,CAAC,QAAQ;AAAA,EACrB;AACE,SAAO,eAAe,OAAO,0BAA0B,OAAO;AAChE;AACA,MAAM,gBAAgB,OAAO4C,SAAO;AAAA,EAClC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAO3C,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAAC;AAAA,MACN,CAAC,MAAM,iBAAiB,MAAM,EAAE,GAAGA,QAAO;AAAA,IAChD,GAAOA,QAAO,MAAM,CAAC,WAAW,UAAUA,QAAO,SAAS,CAAC,WAAW,kBAAkBA,QAAO,OAAO;AAAA,EACpG;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AACF,MAAM;AACJ,QAAM,aAAa;AAAA,IACjB,UAAU,MAAM,YAAY,SAAS;AAAA,EACzC;AACE,SAAO;AAAA,IACL,UAAU;AAAA,IACV,YAAY,MAAM,YAAY,OAAO,CAAC,QAAQ,GAAG,UAAU;AAAA,IAC3D,gBAAgB;AAAA;AAAA,IAEhB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,MAAM;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,kBAAkB,MAAM,QAAQ,OAAO,QAAQ;AAAA,MAC/C,YAAY,MAAM,YAAY,OAAO,CAAC,WAAW,kBAAkB,GAAG,UAAU;AAAA,IACtF;AAAA,IACI,mBAAmB;AAAA,MACjB,aAAa;AAAA,QACX,SAAS;AAAA,MACjB;AAAA,IACA;AAAA,IACI,CAAC,KAAK,iBAAiB,QAAQ,EAAE,GAAG;AAAA,MAClC,aAAa;AAAA,QACX,SAAS;AAAA,MACjB;AAAA,MACM,mBAAmB;AAAA,QACjB,WAAW;AAAA,MACnB;AAAA,MACM,kBAAkB;AAAA,QAChB,cAAc;AAAA,MACtB;AAAA,MACM,SAAS;AAAA,QACP,aAAa;AAAA,UACX,SAAS;AAAA,QACnB;AAAA,MACA;AAAA,IACA;AAAA,IACI,CAAC,KAAK,iBAAiB,QAAQ,EAAE,GAAG;AAAA,MAClC,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,IAC5D;AAAA,EACA;AACA,GAAG,CAAC;AAAA,EACF;AACF,OAAO;AAAA,EACL,UAAU,CAAC;AAAA,IACT,OAAO,WAAS,CAAC,MAAM;AAAA,IACvB,OAAO;AAAA,MACL,cAAc;AAAA,MACd,mBAAmB;AAAA,QACjB,sBAAsB,MAAM,QAAQ,OAAO,MAAM;AAAA,QACjD,uBAAuB,MAAM,QAAQ,OAAO,MAAM;AAAA,MAC1D;AAAA,MACM,kBAAkB;AAAA,QAChB,yBAAyB,MAAM,QAAQ,OAAO,MAAM;AAAA,QACpD,0BAA0B,MAAM,QAAQ,OAAO,MAAM;AAAA;AAAA,QAErD,mCAAmC;AAAA,UACjC,wBAAwB;AAAA,UACxB,yBAAyB;AAAA,QACnC;AAAA,MACA;AAAA,IACA;AAAA,EACA,GAAK;AAAA,IACD,OAAO,WAAS,CAAC,MAAM;AAAA,IACvB,OAAO;AAAA,MACL,CAAC,KAAK,iBAAiB,QAAQ,EAAE,GAAG;AAAA,QAClC,QAAQ;AAAA,MAChB;AAAA,IACA;AAAA,EACA,CAAG;AACH,EAAE;AACF,MAAM,YAAyB,sBAAM,WAAW,SAASW,WAAU,SAAS,KAAK;AAC/E,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF,UAAU;AAAA,IACV;AAAA,IACA,kBAAkB;AAAA,IAClB,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,QAAQ,CAAA;AAAA,IACR,YAAY,CAAA;AAAA,IACZ,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,EACvB,IAAQ,OACJ,QAAQ,8BAA8B,OAAOjB,WAAS;AACxD,QAAM,CAAC,UAAU,gBAAgB,IAAI,cAAc;AAAA,IACjD,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,EACX,CAAG;AACD,QAAM,eAAe,MAAM,YAAY,WAAS;AAC9C,qBAAiB,CAAC,QAAQ;AAC1B,QAAI,UAAU;AACZ,eAAS,OAAO,CAAC,QAAQ;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,UAAU,UAAU,gBAAgB,CAAC;AACzC,QAAM,CAAC,SAAS,GAAG,QAAQ,IAAI,MAAM,SAAS,QAAQ,YAAY;AAClE,QAAM,eAAe,MAAM,QAAQ,OAAO;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACZ,IAAM,CAAC,UAAU,UAAU,gBAAgB,YAAY,CAAC;AACtD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,QAAM,0BAA0BD,WAAS;AAAA,IACvC,YAAY;AAAA,EAChB,GAAK,KAAK;AACR,QAAM,8BAA8BA,WAAS;AAAA,IAC3C,YAAY;AAAA,EAChB,GAAK,SAAS;AACZ,QAAM,CAAC,gBAAgB,eAAe,IAAI,QAAQ,cAAc;AAAA,IAC9D,aAAa8C;AAAAA,IACb,wBAAwB;AAAA,MACtB,OAAO;AAAA,MACP,WAAW;AAAA,IACjB;AAAA,IACI;AAAA,EACJ,CAAG;AACD,SAAoBhD,kCAAAA,KAAM,eAAeE,WAAS;AAAA,IAChD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAK,OAAO;AAAA,IACR,UAAU,CAAcD,kCAAAA,IAAK,iBAAiB,UAAU;AAAA,MACtD,OAAO;AAAA,MACP,UAAU;AAAA,IAChB,CAAK,GAAgBA,kCAAAA,IAAK,gBAAgBC,WAAS;AAAA,MAC7C,IAAI;AAAA,MACJ,SAAS;AAAA,IACf,GAAO,iBAAiB;AAAA,MAClB,UAAuBD,kCAAAA,IAAK,OAAO;AAAA,QACjC,mBAAmB,QAAQ,MAAM;AAAA,QACjC,IAAI,QAAQ,MAAM,eAAe;AAAA,QACjC,MAAM;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB;AAAA,MACR,CAAO;AAAA,IACP,CAAK,CAAC,CAAC;AAAA,EACP,CAAG,CAAC;AACJ,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,UAAU,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnF,UAAU,eAAe,UAAU,KAAK,YAAY,WAAS;AAC3D,UAAM,UAAU,MAAM,SAAS,QAAQ,MAAM,QAAQ,EAAE,CAAC;AACxD,QAAIgD,eAAAA,WAAW,OAAO,GAAG;AACvB,aAAO,IAAI,MAAM,+FAAoG;AAAA,IACvH;AACA,QAAI,CAAe,sBAAM,eAAe,OAAO,GAAG;AAChD,aAAO,IAAI,MAAM,mEAAmE;AAAA,IACtF;AACA,WAAO;AAAA,EACT,CAAC;AAAA;AAAA;AAAA;AAAA,EAID,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,iBAAiB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAK3B,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,gBAAgB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1B,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOpB,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,WAAW,UAAU,MAAM;AAAA,IACzB,YAAY,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA,EACtE,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,OAAO,UAAU,MAAM;AAAA,IACrB,YAAY,UAAU;AAAA,EAC1B,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAKD,QAAQ,UAAU;AAAA;AAAA;AAAA;AAAA,EAIlB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtJ,qBAAqB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM/B,iBAAiB,UAAU;AAC7B,IAAI;ACpSG,SAAS,gCAAgC,MAAM;AACpD,SAAO,qBAAqB,uBAAuB,IAAI;AACzD;AACA,MAAM,0BAA0B,uBAAuB,uBAAuB,CAAC,QAAQ,YAAY,gBAAgB,YAAY,WAAW,kBAAkB,WAAW,mBAAmB,CAAC;ACD3L,MAAMnD,cAAY,CAAC,YAAY,aAAa,cAAc,yBAAyB,SAAS;AAY5F,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,YAAY,YAAY,YAAY,YAAY,CAAC,kBAAkB,SAAS;AAAA,IAC3F,cAAc,CAAC,cAAc;AAAA,IAC7B,SAAS,CAAC,WAAW,YAAY,YAAY,CAAC,kBAAkB,gBAAgB;AAAA,IAChF,mBAAmB,CAAC,qBAAqB,YAAY,UAAU;AAAA,EACnE;AACE,SAAO,eAAe,OAAO,iCAAiC,OAAO;AACvE;AACA,MAAM,uBAAuB,OAAO+C,cAAY;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAO9C,YAAWA,QAAO;AAC/C,CAAC,EAAE,CAAC;AAAA,EACF;AACF,MAAM;AACJ,QAAM,aAAa;AAAA,IACjB,UAAU,MAAM,YAAY,SAAS;AAAA,EACzC;AACE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,WAAW;AAAA,IACX,SAAS,MAAM,QAAQ,GAAG,CAAC;AAAA,IAC3B,YAAY,MAAM,YAAY,OAAO,CAAC,cAAc,kBAAkB,GAAG,UAAU;AAAA,IACnF,CAAC,KAAK,wBAAwB,YAAY,EAAE,GAAG;AAAA,MAC7C,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,IAC5D;AAAA,IACI,CAAC,KAAK,wBAAwB,QAAQ,EAAE,GAAG;AAAA,MACzC,UAAU,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,IACpD;AAAA,IACI,CAAC,gBAAgB,wBAAwB,QAAQ,GAAG,GAAG;AAAA,MACrD,QAAQ;AAAA,IACd;AAAA,IACI,UAAU,CAAC;AAAA,MACT,OAAO,WAAS,CAAC,MAAM;AAAA,MACvB,OAAO;AAAA,QACL,CAAC,KAAK,wBAAwB,QAAQ,EAAE,GAAG;AAAA,UACzC,WAAW;AAAA,QACrB;AAAA,MACA;AAAA,IACA,CAAK;AAAA,EACL;AACA,CAAC;AACD,MAAM,0BAA0B,OAAO,OAAO;AAAA,EAC5C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOA,YAAWA,QAAO;AAC/C,CAAC,EAAE,CAAC;AAAA,EACF;AACF,OAAO;AAAA,EACL,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,UAAU,CAAC;AAAA,IACT,OAAO,WAAS,CAAC,MAAM;AAAA,IACvB,OAAO;AAAA,MACL,YAAY,MAAM,YAAY,OAAO,CAAC,QAAQ,GAAG;AAAA,QAC/C,UAAU,MAAM,YAAY,SAAS;AAAA,MAC7C,CAAO;AAAA,MACD,CAAC,KAAK,wBAAwB,QAAQ,EAAE,GAAG;AAAA,QACzC,QAAQ;AAAA,MAChB;AAAA,IACA;AAAA,EACA,CAAG;AACH,EAAE;AACF,MAAM,oCAAoC,OAAO,OAAO;AAAA,EACtD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOA,YAAWA,QAAO;AAC/C,CAAC,EAAE,CAAC;AAAA,EACF;AACF,OAAO;AAAA,EACL,SAAS;AAAA,EACT,QAAQ,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,EAC5C,WAAW;AAAA,EACX,YAAY,MAAM,YAAY,OAAO,aAAa;AAAA,IAChD,UAAU,MAAM,YAAY,SAAS;AAAA,EACzC,CAAG;AAAA,EACD,CAAC,KAAK,wBAAwB,QAAQ,EAAE,GAAG;AAAA,IACzC,WAAW;AAAA,EACf;AACA,EAAE;AACF,MAAM,mBAAgC,sBAAM,WAAW,SAAS+C,kBAAiB,SAAS,KAAK;AAC7F,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOrD,WAAS;AACxD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM,MAAM,WAAW,gBAAgB;AACrC,QAAM,eAAe,WAAS;AAC5B,QAAI,QAAQ;AACV,aAAO,KAAK;AAAA,IACd;AACA,QAAI,SAAS;AACX,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACA,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,SAAoBH,kCAAAA,KAAM,sBAAsBE,WAAS;AAAA,IACvD,aAAa;AAAA,IACb,eAAe;AAAA,IACf;AAAA,IACA,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC,uBAAuB,KAAK,QAAQ,cAAc,qBAAqB;AAAA,IACvE,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACJ,GAAK,OAAO;AAAA,IACR,UAAU,CAAcD,kCAAAA,IAAK,yBAAyB;AAAA,MACpD,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA;AAAA,IACN,CAAK,GAAG,cAA2BA,kCAAAA,IAAK,mCAAmC;AAAA,MACrE,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,UAAU;AAAA,IAChB,CAAK,CAAC;AAAA,EACN,CAAG,CAAC;AACJ,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,iBAAiB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1F,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,YAAY,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStB,uBAAuB,UAAU;AAAA;AAAA;AAAA;AAAA,EAIjC,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;ACpMG,SAAS,gCAAgC,MAAM;AACpD,SAAO,qBAAqB,uBAAuB,IAAI;AACzD;AACgC,uBAAuB,uBAAuB,CAAC,MAAM,CAAC;ACDtF,MAAMH,cAAY,CAAC,WAAW;AAS9B,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,MAAM;AAAA,EACjB;AACE,SAAO,eAAe,OAAO,iCAAiC,OAAO;AACvE;AACA,MAAM,uBAAuB,OAAO,OAAO;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAWA,QAAO;AAC/C,CAAC,EAAE,CAAC;AAAA,EACF;AACF,OAAO;AAAA,EACL,SAAS,MAAM,QAAQ,GAAG,GAAG,CAAC;AAChC,EAAE;AACF,MAAM,mBAAgC,sBAAM,WAAW,SAASgD,kBAAiB,SAAS,KAAK;AAC7F,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAOtD,WAAS;AACxD,QAAM,aAAa;AACnB,QAAM,UAAUK,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,sBAAsBC,WAAS;AAAA,IACtD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,iBAAiB,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1F,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;;AClEJ,IAAImD,2BAAyBC;AAC7B,OAAO,eAAe,oBAAS,cAAc;AAAA,EAC3C,OAAO;AACT,CAAC;AACD,IAAAC,cAAA,mBAAA,UAAkB;AAClB,IAAIC,mBAAiBH,yBAAuBI,sBAAgC;AAC5E,IAAIC,gBAAcC;AACHJ,cAAA,mBAAA,cAAsBC,iBAAe,6BAA2BE,cAAY,KAAK,QAAQ;AAAA,EACtG,GAAG;AACL,CAAC,GAAG,oBAAoB;ACZxB,IAAI,eAAe,QAAQ,IAAI,aAAa;AAC5C,SAAS,QAAQ,WAAW,SAAS;AACnC,MAAI,CAAC,cAAc;AACjB,QAAI,WAAW;AACb;AAAA,IACF;AAEA,QAAI,OAAO,cAAc;AAEzB,QAAI,OAAO,YAAY,aAAa;AAClC,cAAQ,KAAK,IAAI;AAAA,IACnB;AAEA,QAAI;AACF,YAAM,MAAM,IAAI;AAAA,IAClB,SAAS,GAAG;AAAA,IAAC;AAAA,EACf;AACF;ACbA,SAAS,kBAAkB,QAAQ,OAAO;AACxC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,QAAI,aAAa,MAAM,CAAC;AACxB,eAAW,aAAa,WAAW,cAAc;AACjD,eAAW,eAAe;AAC1B,QAAI,WAAW,WAAY,YAAW,WAAW;AACjD,WAAO,eAAe,QAAQ,WAAW,KAAK,UAAU;AAAA,EAC1D;AACF;AAEA,SAAS,aAAa,aAAa,YAAY,aAAa;AAC1D,MAAI,WAAY,mBAAkB,YAAY,WAAW,UAAU;AAEnE,SAAO;AACT;AAEA,SAAS,WAAW;AAClB,aAAW,OAAO,UAAU,SAAU,QAAQ;AAC5C,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,UAAI,SAAS,UAAU,CAAC;AAExB,eAAS,OAAO,QAAQ;AACtB,YAAI,OAAO,UAAU,eAAe,KAAK,QAAQ,GAAG,GAAG;AACrD,iBAAO,GAAG,IAAI,OAAO,GAAG;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,SAAS,MAAM,MAAM,SAAS;AACvC;AAEA,SAAS,eAAe,UAAU,YAAY;AAC5C,WAAS,YAAY,OAAO,OAAO,WAAW,SAAS;AACvD,WAAS,UAAU,cAAc;AAEjC,kBAAgB,UAAU,UAAU;AACtC;AAEA,SAAS,gBAAgB1E,IAAG,GAAG;AAC7B,oBAAkB,OAAO,kBAAkB,SAAS4E,iBAAgB5E,IAAG6E,IAAG;AACxE,IAAA7E,GAAE,YAAY6E;AACd,WAAO7E;AAAA,EACT;AAEA,SAAO,gBAAgBA,IAAG,CAAC;AAC7B;AAiBA,SAAS,4BAA4BA,IAAG,QAAQ;AAC9C,MAAI,CAACA,GAAG;AACR,MAAI,OAAOA,OAAM,SAAU,QAAO,kBAAkBA,IAAG,MAAM;AAC7D,MAAI,IAAI,OAAO,UAAU,SAAS,KAAKA,EAAC,EAAE,MAAM,GAAG,EAAE;AACrD,MAAI,MAAM,YAAYA,GAAE,YAAa,KAAIA,GAAE,YAAY;AACvD,MAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAKA,EAAC;AACnD,MAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkBA,IAAG,MAAM;AACjH;AAEA,SAAS,kBAAkB,KAAK,KAAK;AACnC,MAAI,OAAO,QAAQ,MAAM,IAAI,OAAQ,OAAM,IAAI;AAE/C,WAAS,IAAI,GAAG,OAAO,IAAI,MAAM,GAAG,GAAG,IAAI,KAAK,IAAK,MAAK,CAAC,IAAI,IAAI,CAAC;AAEpE,SAAO;AACT;AAEA,SAAS,gCAAgCA,IAAG,gBAAgB;AAC1D,MAAI,KAAK,OAAO,WAAW,eAAeA,GAAE,OAAO,QAAQ,KAAKA,GAAE,YAAY;AAC9E,MAAI,GAAI,SAAQ,KAAK,GAAG,KAAKA,EAAC,GAAG,KAAK,KAAK,EAAE;AAE7C,MAAI,MAAM,QAAQA,EAAC,MAAM,KAAK,4BAA4BA,EAAC,MAAM,gBAAqD;AACpH,QAAI,GAAI,CAAAA,KAAI;AACZ,QAAI,IAAI;AACR,WAAO,WAAY;AACjB,UAAI,KAAKA,GAAE,OAAQ,QAAO;AAAA,QACxB,MAAM;AAAA,MACd;AACM,aAAO;AAAA,QACL,MAAM;AAAA,QACN,OAAOA,GAAE,GAAG;AAAA,MACpB;AAAA,IACI;AAAA,EACF;AAEA,QAAM,IAAI,UAAU,uIAAuI;AAC7J;AAQA,SAAS,YAAY,aAAa;AAChC,MAAI,kBAAkB,OAAO,IAAI;AAIjC,WAAS,OAAO,SAAS;AACvB,QAAI,CAAC,WAAW,YAAY,gBAAgB,SAAS;AACnD;AAAA,IACF;AAEA,oBAAgB,UAAU;AAC1B,gBAAY,OAAO;AAAA,EACrB;AAEA,SAAO;AACT;AASA,SAAS,gBAAgB,cAAc;AACrC,MAAI,QAAQ,OAAO,YAAY;AAC/B,SAAO,QAAQ,WAAY;AACzB,aAAS,IAAI,QAAQ;AACnB,UAAI,OAAO,WAAW,YAAY;AAChC,cAAM,UAAU,OAAO,MAAM,OAAO;AAAA,MACtC,OAAO;AACL,cAAM,UAAU;AAAA,MAClB;AAAA,IACF;AAEA,aAAS,MAAM;AACb,aAAO,MAAM;AAAA,IACf;AAEA,WAAO,CAAC,KAAK,GAAG;AAAA,EAClB,GAAG,CAAA,CAAE;AACP;AAMA,SAAS,wBAAwB;AAC/B,MAAI,gBAAgB,OAAO,EAAE;AAC7B,SAAO,QAAQ,WAAY;AACzB,aAAS,wBAAwB;AAC/B,aAAO,cAAc,QAAQ,SAAS;AAAA,IACxC;AAEA,aAAS,8BAA8B;AACrC,eAAS,YAAY,gCAAgC,cAAc,OAAO,GAAG,OAAO,EAAE,QAAQ,UAAS,GAAI,QAAO;AAChH,YAAI,cAAc,MAAM;AACxB,oBAAW;AAAA,MACb;AAEA,oBAAc,UAAU,CAAA;AAAA,IAC1B;AAEA,aAAS,qBAAqB,cAAc;AAC1C,oBAAc,QAAQ,KAAK,YAAY;AAAA,IACzC;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAAA,EACE,GAAG,CAAA,CAAE;AACP;AAKA,IAAI,4BAA4B,OAAO,WAAW,cAAc,kBAAkB;AAMlF,SAAS,aAAa,cAAc,SAAS;AAC3C,MAAI,YAAY,OAAO,YAAY;AAEnC,MAAI,CAAC,SAAS;AACZ,cAAU,UAAU;AACpB,WAAO;AAAA,EACT;AAEA,YAAU,UAAU;AACpB,SAAO;AACT;AAiGA,SAAS,cAAc,OAAO;AAC5B,SAAO,WAAW,MAAM,QAAQ,MAAM,EAAE,CAAC;AAC3C;AAKA,SAAS,MAAM,OAAO,KAAK,KAAK;AAC9B,SAAO,QAAQ,MAAM,MAAM,QAAQ,MAAM,MAAM;AACjD;AAKA,SAAS,MAAM,OAAO;AACpB,SAAO,UAAU,QAAQ,UAAU,SAAY,QAAQ;AACzD;AAMA,SAAS,YAAY;AACnB,WAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACvF,SAAK,IAAI,IAAI,UAAU,IAAI;AAAA,EAC7B;AAEA,SAAO,SAAU,SAAS;AACxB,aAAS,YAAY,gCAAgC,IAAI,GAAG,OAAO,EAAE,QAAQ,UAAS,GAAI,QAAO;AAC/F,UAAI,MAAM,MAAM;AAEhB,UAAI,CAAC,KAAK;AACR;AAAA,MACF;AAEA,UAAI,OAAO,QAAQ,YAAY;AAC7B,YAAI,OAAO;AAAA,MACb,OAAO;AACL,YAAI,UAAU;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACF;AAMA,SAAS,kBAAkB,aAAa,UAAU;AAChD,MAAI,OAAO,gBAAgB,aAAa;AACtC,WAAO;AAAA,EACT;AAEA,SAAO,YAAY,YAAY;AACjC;AAMA,SAAS,qBAAqB,SAAS,aAAa;AAClD,MAAI,SAAS,CAAA;AAEb,MAAI,CAAC,WAAW,CAAC,eAAe,YAAY,SAAS,MAAM;AACzD,WAAO;AAAA,EACT;AAEA,MAAI,wBAAwB,YAAY,iBAAiB,OAAO,GAC5D,WAAW,sBAAsB,UACjC,YAAY,sBAAsB,WAClC,YAAY,sBAAsB;AAEtC,MAAI,CAAC,UAAU,WAAW,SAAS,EAAE,KAAK,SAAU,MAAM;AACxD,WAAO,CAAC,QAAQ,QAAQ,EAAE,SAAS,IAAI;AAAA,EACzC,CAAC,GAAG;AACF,WAAO,KAAK,OAAO;AAAA,EACrB;AAEA,SAAO,CAAA,EAAG,OAAO,QAAQ,qBAAqB,QAAQ,eAAe,WAAW,CAAC;AACnF;AAEA,SAAS,qBAAqB,SAAS;AACrC,SAAO,0DAA0D,UAAU,+FAA+F,UAAU,yJAA2J,UAAU;AAC3V;AAmBA,SAAS,iBAAiB,MAAM;AAC9B,MAAI,UAAU,KAAK,SACf,WAAW,KAAK,UAChB,cAAc,KAAK,aACnB,yBAAyB,KAAK,wBAC9B,oBAAoB,KAAK,mBACzB,gBAAgB,KAAK;AAEzB,MAAI8E,kBAAiB,kBAAkB,aAAa,sBAAsB;AAE1E,YAAU,WAAY;AACpB,YAAQ,IAAI,aAAa,eAAe,QAAQA,iBAAgB,kNAAkN,IAAI;AAAA,EACxR,GAAG,CAACA,eAAc,CAAC;AAEnB,MAAI,WAAW,OAAO,IAAI;AAE1B,MAAI,mBAAmB,QAAQ,aAAa;AAG5C,MAAI,mBAAmB,gBAAgB;AAAA,IACrC,kBAAkB,CAAA;AAAA,IAClB,SAAS;AAAA,IACT,OAAO;AAAA,EACX,CAAG,GACG,MAAM,iBAAiB,CAAC,GACxB,MAAM,iBAAiB,CAAC;AAG5B,MAAI,wBAAwB,sBAAqB,GAC7C,wBAAwB,sBAAsB,uBAC9C,uBAAuB,sBAAsB,sBAC7C,8BAA8B,sBAAsB;AAIxD,MAAI,eAAe,YAAY,SAASC,gBAAe;AACrD,QAAI,OAAO,IAAG,GACV,QAAQ,KAAK,OACb,UAAU,KAAK,SACf,mBAAmB,KAAK;AAE5B,QAAI,yBAAyB,iBAAiB,CAAC;AAE/C,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,qBAAqB,OAAO,CAAC;AAAA,IAC/C;AAGA,QAAI,CAAC,WAAW,CAAC,kBAAkB;AACjC,YAAM,IAAI,MAAM,qBAAqB,SAAS,CAAC;AAAA,IACjD;AAEA,QAAI,gBAAgB;AAAA,MAClB,KAAK;AAAA,MACL,MAAM;AAAA,IACZ;AAEI,QAAI,wBAAwB;AAC1B,UAAI,aAAa,uBAAuB,YACpC,YAAY,uBAAuB;AACvC,sBAAgB;AAAA,QACd,KAAK;AAAA,QACL,MAAM;AAAA,MACd;AAAA,IACI,OAAO;AACL,UAAI,UAAU,YAAY,SACtB,UAAU,YAAY;AAC1B,sBAAgB;AAAA,QACd,KAAK;AAAA,QACL,MAAM;AAAA,MACd;AAAA,IACI;AAEA,QAAI,gBAAgB;AAAA,MAClB,MAAM;AAAA,MACN,KAAK;AAAA,IACX;AAEI,QAAI,wBAAwB;AAC1B,UAAI,yBAAyB,YAAY,iBAAiB,sBAAsB,GAC5E,kBAAkB,uBAAuB,iBACzC,iBAAiB,uBAAuB;AAE5C,sBAAgB;AAAA,QACd,MAAM,cAAc,eAAe,KAAK;AAAA,QACxC,KAAK,cAAc,cAAc,KAAK;AAAA,MAC9C;AAAA,IACI;AAEA,aAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,SAAS;AAAA,IACtB,GAAO,eAAe,aAAa;AAAA,EACjC,GAAG,CAAC,KAAK,UAAU,aAAa,UAAU,gBAAgB,CAAC;AAG3D,MAAI,oBAAoB,YAAY,SAASC,qBAAoB;AAC/D,QAAI,QAAQ,IAAG,GACX,UAAU,MAAM,SAChB,QAAQ,MAAM,OACd,mBAAmB,MAAM;AAE7B,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,qBAAqB,OAAO,CAAC;AAAA,IAC/C;AAEA,QAAI,CAAC,WAAW,CAAC,kBAAkB;AAEjC,YAAM,IAAI,MAAM,qBAAqB,SAAS,CAAC;AAAA,IACjD;AAEA,QAAIF,iBAAgB;AAClB,UAAI,qBAAqB;AAEzB,UAAI,mBAAmB,SAASG,oBAAmB;AACjD,YAAI,CAAC,oBAAoB;AACvB,+BAAqB;AACrB;AAAA,QACF;AAEA,qBAAY;AAAA,MACd;AAEA,UAAI,WAAW,IAAIH,gBAAe,gBAAgB;AAElD,eAAS,KAAK,GAAG,OAAO,CAAC,SAAS,OAAO,SAAS,IAAI,GAAG,KAAK,KAAK,QAAQ,MAAM;AAC/E,YAAI,UAAU,KAAK,EAAE;AACrB,YAAI,QAAS,UAAS,QAAQ,OAAO;AAAA,MACvC;AAEA,2BAAqB,WAAY;AAC/B,iBAAS,MAAM,GAAG,QAAQ,CAAC,SAAS,OAAO,SAAS,IAAI,GAAG,MAAM,MAAM,QAAQ,OAAO;AACpF,cAAI,WAAW,MAAM,GAAG;AACxB,cAAI,SAAU,UAAS,UAAU,QAAQ;AAAA,QAC3C;AAEA,iBAAS,WAAU;AAAA,MACrB,CAAC;AAAA,IACH;AAEA,QAAI,0BAA0B,CAAC,WAAW,EAAE,OAAO,gBAAgB;AAEnE,QAAI,QAAQ,SAASI,SAAQ;AAC3B,UAAIC,WAAU,MAAM;AACpB,MAAAA,SAAQ,iBAAiB,UAAU,YAAY;AAC/C,2BAAqB,WAAY;AAC/B,eAAOA,SAAQ,oBAAoB,UAAU,YAAY;AAAA,MAC3D,CAAC;AAAA,IACH;AAEA,aAAS,YAAY,gCAAgC,uBAAuB,GAAG,OAAO,EAAE,QAAQ,UAAS,GAAI,QAAO;AAClH,YAAK;AAAA,IACP;AAAA,EACF,GAAG,CAAC,KAAK,sBAAsB,cAAc,aAAaL,iBAAgB,gBAAgB,CAAC;AAG3F,MAAI,yCAAyC,YAAY,SAAU,UAAU,MAAM;AACjF,QAAI,WAAW,YAAY,aAAa,MAAM;AAC5C,kCAA2B;AAC3B,wBAAiB;AACjB,mBAAY;AAAA,IACd;AAAA,EACF,GAAG,CAAC,6BAA6B,mBAAmB,cAAc,OAAO,CAAC;AAE1E,MAAI,WAAW,YAAY,YAAY,SAAU,OAAO;AACtD,QAAI,QAAQ,IAAG,GACX,gBAAgB,MAAM;AAG1B,QAAI,SAAU,OAAO;AACnB,aAAO,SAAS,CAAA,GAAI,OAAO;AAAA,QACzB;AAAA,MACR,CAAO;AAAA,IACH,CAAC;AAED,2CAAuC,eAAe,KAAK;AAAA,EAC7D,GAAG,CAAC,KAAK,KAAK,sCAAsC,CAAC,CAAC;AACtD,MAAI,sBAAsB,YAAY,SAAS,uBAAuB,SAAS;AAC7E,QAAI,mBAAmB,qBAAqB,SAAS,WAAW;AAChE,QAAI,yBAAyB,iBAAiB,CAAC;AAE/C,QAAI,wBAAwB;AAE1B,UAAI,WAAW,YAAY,iBAAiB,sBAAsB,EAAE;AACpE,UAAI,0CAA0C,CAAC,YAAY,YAAY,OAAO,EAAE,SAAS,QAAQ,KAAK;AAEtG,UAAI,CAAC,yCAAyC;AAC5C,+BAAuB,MAAM,WAAW;AAAA,MAC1C;AAEA,cAAQ,IAAI,aAAa,eAAe,QAAQ,yCAAyC,oQAAqQ,WAAW,2KAA8K,IAAI;AAAA,IAC7hB;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,iBAAiB,CAAC;AAGnC,MAAI,aAAa,YAAY,YAAY,SAAU,SAAS;AAE1D,QAAI,mBAAmB,oBAAoB,OAAO;AAElD,QAAI,QAAQ,IAAG,GACX,kBAAkB,MAAM;AAG5B,QAAI,SAAU,OAAO;AACnB,aAAO,SAAS,CAAA,GAAI,OAAO;AAAA,QACzB;AAAA,QACA;AAAA,MACR,CAAO;AAAA,IACH,CAAC;AAED,2CAAuC,iBAAiB,OAAO;AAAA,EACjE,GAAG,CAAC,KAAK,KAAK,wCAAwC,mBAAmB,CAAC,CAAC;AAG3E,MAAI,sBAAsB,iBAAiB,OAAO,SAAS,cAAc,aAAa,OAAO,SAAS,cAAc,UAAS;AAC7H,4BAA0B,WAAY;AACpC,QAAI,CAAC,qBAAqB;AACxB;AAAA,IACF;AAEA,QAAI,SAAU,OAAO;AACnB,aAAO,SAAS,CAAA,GAAI,OAAO;AAAA,QACzB,kBAAkB,oBAAoB,mBAAmB;AAAA,MACjE,CAAO;AAAA,IACH,CAAC;AAAA,EACH,GAAG,CAAC,qBAAqB,KAAK,mBAAmB,CAAC;AAClD,4BAA0B,WAAY;AACpC,QAAI,SAAS;AAEX,UAAI,CAAC,sBAAqB,GAAI;AAC5B,0BAAiB;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,WAAY;AACjB,UAAI,sBAAqB,GAAI;AAC3B,oCAA2B;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,SAAS,uBAAuB,mBAAmB,2BAA2B,CAAC;AAEnF,4BAA0B,WAAY;AACpC,QAAI,SAAS;AAEX,mBAAY;AAAA,IACd;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,wBAAwB,IAAG,EAAG,iBAAiB,CAAC,KAAK;AAAA,EACzD;AACA;AAEA,IAAI,eAA4B,8BAAc,CAAA,CAAE;AAKhD,SAAS,cAAc,MAAM;AAC3B,MAAI,WAAW,KAAK,UAChB,gBAAgB,KAAK;AAGzB,MAAI,iBAAiB,YAAY,SAAS,SAAS,cAAc;AAC/D,kBAAc,QAAQ,IAAI,YAAY;AACtC,WAAO,WAAY;AACjB,aAAO,cAAc,QAAQ,OAAO,YAAY;AAAA,IAClD;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAClB,SAAO,cAAc,aAAa,UAAU;AAAA,IAC1C,OAAO;AAAA,EACX,GAAK,QAAQ;AACb;AAGA,SAAS,kCAAkC,eAAe,OAAO;AAC/D,WAAS,YAAY,gCAAgC,aAAa,GAAG,OAAO,EAAE,QAAQ,UAAS,GAAI,QAAO;AACxG,QAAI,gCAAgC,MAAM,MAAM;AAEhD,QAAI,CAAC,8BAA8B,KAAK,GAAG;AACzC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAiBA,SAAS,SAAS,OAAO;AACvB,MAAI,SAAS,MAAM,QACf,iBAAiB,MAAM,gBACvB,gBAAgB,MAAM;AAG1B,MAAI,UAAU,OAAO,IAAI;AACzB,MAAI,QAAQ,OAAO,IAAI;AAEvB,MAAI,gBAAgB,OAAO,oBAAI,IAAG,CAAE;AAGpC,MAAI,qBAAqB,WAAW,YAAY;AAGhD,MAAI,gCAAgC,YAAY,SAASM,+BAA8B,OAAO;AAC5F,QAAI,SAAS,MAAM;AACnB,QAAI,mBAAmB,QAAQ,WAAW,QAAQ,QAAQ,SAAS,MAAM;AACzE,QAAI,iBAAiB,MAAM,WAAW,MAAM,QAAQ,SAAS,MAAM;AACnE,QAAI,iCAAiC,kCAAkC,cAAc,SAAS,KAAK;AAGnG,QAAI,kBAAkB,gCAAgC;AACpD,oBAAc,QAAQ,QAAQ,SAAU,OAAO;AAC7C,YAAI,aAAa,MAAM;AACvB,eAAO,WAAU;AAAA,MACnB,CAAC;AAAA,IACH;AAEA,WAAO,CAAC,oBAAoB,CAAC,kBAAkB;AAAA,EACjD,GAAG,CAAC,SAAS,OAAO,aAAa,CAAC;AAElC,YAAU,WAAY;AACpB,QAAI,OAAO,uBAAuB,YAAY;AAC5C;AAAA,IACF;AAIA,WAAO,mBAAmB;AAAA,MACxB;AAAA,MACA,YAAY,SAAS,aAAa;AAChC,gBAAQ,IAAI,aAAa,eAAe,QAAQ,eAAe,mKAAmK,IAAI;AAEtO,YAAI,eAAe;AACjB,wBAAa;AAAA,QACf;AAAA,MACF;AAAA,IACN,CAAK;AAAA,EACH,GAAG,CAAC,oBAAoB,+BAA+B,eAAe,aAAa,CAAC;AAEpF,YAAU,WAAY;AACpB,QAAI,UAAU,OAAO,uBAAuB;AAC5C,QAAI,kBAAkB,CAAC,UAAU,CAAC,kBAAkB;AAEpD,QAAI,iBAAiB;AACnB;AAAA,IACF;AAEA,aAAS,YAAY,OAAO;AAC1B,UAAI,8BAA8B,KAAK,GAAG;AACxC,uBAAc;AAAA,MAChB;AAAA,IACF;AAEA,aAAS,iBAAiB,SAAS,aAAa,IAAI;AACpD,WAAO,WAAY;AACjB,aAAO,SAAS,oBAAoB,SAAS,aAAa,IAAI;AAAA,IAChE;AAAA,EACF,GAAG,CAAC,QAAQ,gBAAgB,+BAA+B,kBAAkB,CAAC;AAE9E,YAAU,WAAY;AACpB,QAAI,CAAC,QAAQ;AACX,oBAAc,QAAQ,QAAQ,SAAU,OAAO;AAC7C,YAAI,aAAa,MAAM;AACvB,eAAO,WAAU;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AACX,SAAO;AAAA,IACL,yBAAyB;AAAA,MACvB;AAAA,MACA;AAAA,IACN;AAAA,IACI;AAAA,EACJ;AACA;AAEA,IAAI,kBAAkB,CAAC,gBAAgB,cAAc,iBAAiB,aAAa,cAAc,WAAW,YAAY,eAAe,cAAc,aAAa,gBAAgB,eAAe,QAAQ;AAEzM,IAAI,YAAY;AAAA,EACd,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAEA,IAAI,WAAwB,2BAAY;AACtC,WAASC,UAAS,MAAM,UAAU,cAAc,UAAU,kBAAkB,SAAS,iBAAiB,UAAU,QAC9G;AACA,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,kBAAkB;AACvB,SAAK,WAAW;AAChB,SAAK,SAAS;AACd,SAAK,OAAO;AACZ,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,WAAW;AAChB,SAAK,mBAAmB;AACxB,SAAK,UAAU;AACf,SAAK,kBAAkB;AACvB,SAAK,WAAW;AAChB,SAAK,SAAS;AAAA,EAChB;AAEA,MAAI,SAASA,UAAS;AAEtB,SAAO,SAAS,SAAS,OAAO,OAAO;AACrC,WAAO,SAAS,KAAK,SAAS,IAAI;AAAA,EACpC;AAEA,SAAO,sBAAsB,SAAS,oBAAoB,MAAM;AAC9D,WAAO,KAAK,iBAAiB,KAAK;AAAA,EACpC;AAEA,SAAOA;AACT,EAAC;AAED,SAAS,WAAW,MAAM,WAAW;AACnC,MAAI,cAAc,QAAQ;AACxB,gBAAY;AAAA,EACd;AAEA,MAAI,eAAe,CAAC,QAAQ,OAAO,EAAE,SAAS,IAAI;AAClD,SAAO,IAAI,SAAS,MAAM,YAAY,WAAW,UAAU,IAAI,GAAG,KAAK,IAAI,MAAM,cAAc,eAAe,UAAU,UAAU,eAAe,WAAW,SAAS,eAAe,SAAS,OAAO,eAAe,QAAQ,QAAQ,SAAS,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,IAAI,CAAC;AAC3R;AAEA,IAAI,YAAY;AAAA,EACd,KAAkB,2BAAW,KAAK;AAAA,EAClC,QAAqB,2BAAW,QAAQ;AAAA,EACxC,MAAmB,2BAAW,MAAM;AAAA,EACpC,OAAoB,2BAAW,OAAO;AACxC;AACA,IAAI,OAAoB,yBAAS,CAAA,GAAI,WAAW;AAAA,EAC9C,QAAqB,2BAAW,QAAQ;AAC1C,CAAC;AAED,IAAI,QAAQ,CAAC,OAAO,QAAQ,UAAU,OAAO;AAM7C,IAAI,gBAA6B,2BAAY;AAC3C,WAASC,eAAc,SAAS;AAC9B,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,WAAO,OAAO,OAAO,MAAM,OAAO;AAAA,EACpC;AAQA,EAAAA,eAAc,qBAAqB,SAAS,mBAAmB,eAAe;AAC5E,QAAI,QAAQ,cAAc,CAAC,GACvB,OAAO,cAAc,MAAM,CAAC;AAEhC,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM,4DAA4D;AAAA,IAC9E;AAEA,QAAI,SAAS,OAAO,YAAY,MAAM,IAAI,SAAUC,OAAM;AACxD,aAAO,CAACA,OAAM,MAAMA,KAAI,CAAC;AAAA,IAC3B,CAAC,CAAC;AAEF,aAAS,YAAY,gCAAgC,IAAI,GAAG,OAAO,EAAE,QAAQ,UAAS,GAAI,QAAO;AAC/F,UAAI,eAAe,MAAM;AAEzB,eAAS,aAAa,gCAAgC,KAAK,GAAG,QAAQ,EAAE,SAAS,WAAU,GAAI,QAAO;AACpG,YAAI,OAAO,OAAO;AAClB,eAAO,IAAI,IAAI,KAAK,IAAI,OAAO,IAAI,GAAG,aAAa,IAAI,CAAC;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,IAAID,eAAc,MAAM;AAAA,EACjC;AAOA,eAAaA,gBAAe,CAAC;AAAA,IAC3B,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,UAAI,QAAQ;AAEZ,aAAO,MAAM,MAAM,SAAU,MAAM;AACjC,eAAO,MAAM,IAAI,KAAK;AAAA,MACxB,CAAC;AAAA,IACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,UAAI,SAAS;AAEb,aAAO,OAAO,YAAY,MAAM,OAAO,SAAU,MAAM;AACrD,eAAO,OAAO,IAAI,IAAI;AAAA,MACxB,CAAC,EAAE,IAAI,SAAU,MAAM;AACrB,eAAO,CAAC,MAAM,OAAO,IAAI,CAAC;AAAA,MAC5B,CAAC,CAAC;AAAA,IACJ;AAAA,EACJ,CAAG,CAAC;AAEF,SAAOA;AACT,EAAC;AAOD,SAAS,sBAAsB;AAC7B,WAAS,OAAO,UAAU,QAAQ,iBAAiB,IAAI,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,MAAM,QAAQ;AACjG,mBAAe,IAAI,IAAI,UAAU,IAAI;AAAA,EACvC;AAEA,SAAO,eAAe,OAAO,SAAU,KAAK,eAAe;AACzD,WAAO,OAAO,gBAAgB,cAAc,aAAa,IAAI;AAAA,EAC/D,GAAG,CAAC;AACN;AAEA,SAAS,eAAe,MAAM;AAC5B,MAAI,MAAM,KAAK,KACX,OAAO,KAAK,MACZ,QAAQ,KAAK,OACb,SAAS,KAAK,QACd,QAAQ,KAAK,OACb,SAAS,KAAK;AAClB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA;AACA,IAAI,QAAQ;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AACV;AAMA,IAAI,SAAsB,2BAAY;AAKpC,EAAAE,QAAO,SAAS,SAAS,OAAO,QAAQ;AACtC,WAAO,IAAIA,QAAO,MAAM;AAAA,EAC1B;AAQA,EAAAA,QAAO,cAAc,SAAS,YAAY,SAAS,SAAS;AAC1D,QAAI,YAAY,QAAQ;AACtB,gBAAU,CAAA;AAAA,IACZ;AAEA,QAAI,WAAW,SACX,wBAAwB,SAAS,eACjC,gBAAgB,0BAA0B,SAAS,OAAO,uBAC1D,uBAAuB,SAAS,aAChC,cAAc,yBAAyB,SAAS,SAAS,sBACzD,wBAAwB,SAAS,gBACjC,iBAAiB,0BAA0B,SAAS,OAAO;AAC/D,QAAI,QAAQ,eAAe,QAAQ,sBAAqB,CAAE;AAC1D,QAAI,SAAS,IAAIA,QAAO,KAAK;AAE7B,QAAI,CAAC,eAAe;AAClB,UAAI,wBAAwB,YAAY,iBAAiB,OAAO,GAC5D,QAAQ,sBAAsB,OAC9B,SAAS,sBAAsB,QAC/B,YAAY,sBAAsB,WAClC,aAAa,sBAAsB,YACnC,cAAc,sBAAsB,aACpC,YAAY,sBAAsB,WAClC,eAAe,sBAAsB,cACrC,cAAc,sBAAsB,aACpC,eAAe,sBAAsB,cACrC,aAAa,sBAAsB,YACnC,gBAAgB,sBAAsB;AAE1C,UAAI,WAAW,cAAc,eAAe,cAAc,KAAK,IAAI,oBAAoB,OAAO,YAAY,aAAa,aAAa,YAAY;AAChJ,UAAI,YAAY,cAAc,eAAe,cAAc,MAAM,IAAI,oBAAoB,QAAQ,WAAW,cAAc,YAAY,aAAa;AACnJ,eAAS,IAAIA,QAAO,SAAS,CAAA,GAAI,QAAQ;AAAA,QACvC,OAAO;AAAA,QACP,QAAQ;AAAA,MAChB,CAAO,CAAC;AAAA,IACJ;AAEA,QAAI,CAAC,gBAAgB;AACnB,UAAI,iBAAiB,OAAO,QAAQ,QAAQ;AAC5C,UAAI,kBAAkB,OAAO,SAAS,QAAQ;AAC9C,aAAO,OAAO,UAAU;AAAA,QACtB,OAAO;AAAA,QACP,QAAQ;AAAA,MAChB,CAAO;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAMA,EAAAA,QAAO,QAAQ,SAAS,QAAQ;AAC9B,WAAO,IAAIA,QAAM;AAAA,EACnB;AAOA,EAAAA,QAAO,aAAa,SAAS,WAAW,aAAa;AACnD,QAAI;AAEJ,QAAI,oBAAoB,wBAAwB,eAAe,OAAO,SAAS,YAAY,SAAS,qBAAqB,OAAO,wBAAwB,eAAe,OAAO,SAAS,YAAY,SAAS;AAE5M,QAAI,QAAQ,oBAAoB,OAAO,mBAAmB,CAAA,GACtD,oBAAoB,MAAM,aAC1B,QAAQ,sBAAsB,SAAS,IAAI,mBAC3C,qBAAqB,MAAM,cAC3B,SAAS,uBAAuB,SAAS,IAAI;AAEjD,WAAO,IAAIA,QAAO;AAAA,MAChB;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,IACd,CAAK;AAAA,EACH;AAEA,WAASA,QAAO,QAAQ;AACtB,QAAI,WAAW,QAAQ;AACrB,eAAS,CAAA;AAAA,IACX;AAEA,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,WAAO,OAAO,OAAO,MAAM,OAAO,MAAM;AAAA,EAC1C;AAMA,MAAI,SAASA,QAAO;AAKpB,SAAO,WAAW,SAAS,WAAW;AACpC,WAAO,eAAe,IAAI;AAAA,EAC5B;AAEA,SAAO,QAAQ,SAAS,MAAM,wBAAwB;AACpD,QAAI,UAAU,KAAK,SAAQ;AAC3B,WAAO,IAAIA,QAAO,SAAS,CAAA,GAAI,SAAS,OAAO,2BAA2B,aAAa,uBAAuB,OAAO,IAAI,sBAAsB,CAAC;AAAA,EAClJ;AAOA,SAAO,YAAY,SAAS,UAAU,QAAQ;AAC5C,QAAI,SAAS,KAAK,SAAQ;AAC1B,QAAI,UAAU,OAAO,QAAQ,MAAM;AAEnC,aAAS,KAAK,GAAG,WAAW,SAAS,KAAK,SAAS,QAAQ,MAAM;AAC/D,UAAI,cAAc,SAAS,EAAE,GACzB,OAAO,YAAY,CAAC,GACpB,QAAQ,YAAY,CAAC;AAEzB,UAAI,QAAQ,WAAW;AAErB,YAAI,YAAY,UAAU,IAAI;AAE9B,eAAO,IAAI,KAAK,UAAU,OAAO,KAAK;AAEtC,eAAO,UAAU,eAAe,UAAU,QAAQ,KAAK;AAAA,MACzD,OAAO;AAEL,eAAO,IAAI,KAAK,SAAS;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,IAAIA,QAAO,MAAM;AAAA,EAC1B;AAQA,SAAO,YAAY,SAAS,UAAU,OAAO;AAC3C,WAAO,IAAI,cAAc;AAAA,MACvB,KAAK,MAAM,MAAM,KAAK;AAAA,MACtB,QAAQ,KAAK,SAAS,MAAM;AAAA,MAC5B,MAAM,MAAM,OAAO,KAAK;AAAA,MACxB,OAAO,KAAK,QAAQ,MAAM;AAAA,IAChC,CAAK;AAAA,EACH;AAOA,SAAO,WAAW,SAAS,SAAS,QAAQ;AAC1C,QAAI,SAAS,KAAK,SAAQ;AAC1B,QAAI,aAAa,OAAO,OAAO,SAAS;AAExC,aAAS,MAAM,GAAG,cAAc,YAAY,MAAM,YAAY,QAAQ,OAAO;AAC3E,UAAI,YAAY,YAAY,GAAG;AAC/B,aAAO,UAAU,IAAI,IAAI,OAAO,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,IACnE;AAEA,WAAO,IAAIA,QAAO,MAAM;AAAA,EAC1B;AAEA,eAAaA,SAAQ,CAAC;AAAA,IACpB,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,QAAQ,KAAK;AAAA,IAC3B;AAAA,EACJ,CAAG,CAAC;AAEF,SAAOA;AACT,EAAC;AAMD,IAAI,YAAyB,2BAAY;AACvC,WAASC,WAAU,SAAS,WAAW,eAAe,iBAAiB,SAAS;AAC9E,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,iBAAiB;AACtB,SAAK,qBAAqB;AAC1B,SAAK,0BAA0B;AAC/B,SAAK,UAAU;AACf,SAAK,YAAY;AACjB,SAAK,UAAU;AACf,SAAK,kBAAkB,eAAe,eAAe;AAAA,EACvD;AAQA,MAAI,SAASA,WAAU;AAEvB,SAAO,oBAAoB,SAAS,kBAAkB,eAAe,iBAAiB;AAEpF,QAAI,CAAC,iBAAiB;AACpB,WAAK,iBAAiB;AACtB;AAAA,IACF;AAGA,QAAI;AAAA;AAAA;AAAA,MAEJ,OAAO,oBAAoB,aAAa,gBAAgB,KAAK,QAAQ,IAAI,IAAI;AAAA;AAE7E,SAAK,iBAAiB,cAAc,MAAM;AAAA,MACxC,OAAO,SAAS,CAAA,GAAI,cAAc,OAAO,UAAU;AAAA,IACzD,CAAK;AAAA,EACH;AAUA,SAAO,iBAAiB,SAAS,eAAe,iBAAiB;AAC/D,QAAI,oBAAoB,QAAQ;AAC9B,wBAAkB;AAAA,IACpB;AAGA,QAAI,KAAK,sBAAsB,oBAAoB,GAAG;AACpD,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,UAAU,KAAK,SACf,YAAY,KAAK,WACjB,iBAAiB,KAAK;AAC1B,QAAI,UAAU,eAAe,SACzB,QAAQ,eAAe,OACvB,QAAQ,eAAe;AAC3B,QAAI,eAAe,QAAQ,cACvB,kBAAkB,QAAQ,iBAC1B,mBAAmB,QAAQ,kBAC3B,OAAO,QAAQ,MACf,WAAW,QAAQ;AACvB,QAAI,SAAS,OAAO;AAQpB,WAAO,SAAS,IAAI,IAAI,QAAQ,IAAI,IAAI,QAAQ,OAAO,KAAK,QAAQ,OAAO;AAE3E,WAAO,IAAI,IAAI,OAAO,SAAS,IAAI,IAAI,QAAQ,OAAO,MAAM,QAAQ,QAAQ,CAAC;AAG7E,QAAI,kBAAkB,KAAK,QAAQ,QAAQ;AAE3C,QAAI,WAAW,QAAQ,eAAe,KAAK,MAAM,gBAAgB,IAAI,MAAM,gBAAgB,KAAK;AAEhG,QAAI,WAAW,QAAQ,eAAe,KAAK,QAAQ,gBAAgB,IAAI,MAAM,gBAAgB,KAAK;AAElG,QAAI,CAAC,UAAU,QAAQ;AAErB,kBAAY,MAAM,gBAAgB;AAClC,kBAAY,MAAM,gBAAgB;AAAA,IACpC;AAEA,QAAI,UAAU,UAAU;AACtB,UAAI,aAAa,eAAe,UAAU,MAAM,UAAU,MAAM;AAChE,UAAI,aAAa,eAAe,UAAU,SAAS,UAAU,OAAO;AAMpE,aAAO,SAAS,IAAI,MAAM,QAAQ,SAAS,IAAI,QAAQ,gBAAgB,IAAI,IAAI,MAAM,gBAAgB,IAAI,IAAI,iBAAiB,UAAU,QAAQ;AAEhJ,aAAO,SAAS,IAAI,OAAO,SAAS,IAAI,MAAM,gBAAgB;AAAA,IAChE,OAAO;AACL,UAAI,MAAM;AACV,UAAI,eAAe,QAAQ,IAAI,IAAI;AAInC,UAAI,oBAAoB,eAAe,WAAW,WAAW,eAAe,eAAe,WAAW,WAAW,eAAe;AAMhI,aAAO,IAAI,IAAI,IAAI,MAAM,eAAe,kBAAkB,mBAAmB,UAAU,QAAQ;AAE/F,aAAO,IAAI,SAAS,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,UAAU,OAAO,MAAM,gBAAgB,CAAC;AAAA,IACzF;AAGA,WAAO,QAAQ,OAAO,QAAQ,OAAO;AACrC,WAAO,SAAS,OAAO,SAAS,OAAO;AAEvC,QAAI,cAAc,OAAO,OAAO,MAAM;AAEtC,QAAI,oBAAoB,GAAG;AACzB,WAAK,qBAAqB;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AAUA,SAAO,0BAA0B,SAAS,0BAA0B;AAClE,QAAI,YAAY,KAAK,QAAQ;AAC7B,WAAO,KAAK,eAAc,EAAG,SAAS,SAAU,MAAM,OAAO;AAC3D,aAAO,SAAS,KAAK,OAAO,SAAS;AAAA,IACvC,CAAC,EAAE,MAAM,SAAU,MAAM;AACvB,UAAI,QAAQ,KAAK,OACb,SAAS,KAAK;AAClB,aAAO;AAAA,QACL,OAAO,QAAQ,YAAY;AAAA,QAC3B,QAAQ,SAAS,YAAY;AAAA,MACrC;AAAA,IACI,CAAC;AAAA,EACH;AAOA,SAAO,sBAAsB,SAAS,oBAAoB,aAAa;AACrE,QAAI,KAAK,2BAA2B,CAAC,aAAa;AAChD,aAAO,KAAK;AAAA,IACd;AAEA,QAAI,gBAAgB,KAAK,eAAe,MAAM;AAAA,MAC5C,OAAO,eAAe,KAAK,wBAAuB;AAAA,IACxD,CAAK;AACD,QAAI,UAAU,cAAc,mBAAmB,cAAc,8BAA8B;AAE3F,QAAI,CAAC,aAAa;AAChB,WAAK,0BAA0B;AAAA,IACjC;AAEA,WAAO;AAAA,EACT;AAEA,eAAaA,YAAW,CAAC;AAAA,IACvB,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,QAAQ,OAAO,OAAO,KAAK,UAAU,SAAS,WAAW,WAAW,CAAC,UAAU,OAAO,EAAE,SAAS,KAAK,UAAU,IAAI,IAAI,QAAQ;AAAA,IAC9I;AAAA,EACJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,UAAI,eAAe,KAAK,UAAU;AAClC,UAAI,uBAAuB,KAAK,gBAC5B,wBAAwB,qBAAqB,uBAC7C,yBAAyB,qBAAqB;AAClD,aAAO,gBAAgB,yBAAyB,CAAC,gBAAgB;AAAA,IACnE;AAAA;AAAA;AAAA;AAAA,EAKJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,oBAAmB,EAAG;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,EAKJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,UAAI,cAAc,KAAK,eAAc;AACrC,UAAI,mBAAmB,KAAK,oBAAoB,WAAW;AAC3D,UAAI,YAAY,iBAAiB;AAEjC,eAAS,QAAQ,WAAW;AAE1B,kBAAU,IAAI,IAAI,CAAC,UAAU,IAAI;AAAA,MACnC;AAEA,aAAO,YAAY,UAAU,SAAS,EAAE;AAAA,IAC1C;AAAA;AAAA;AAAA;AAAA,EAKJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,UAAI,uBACA,wBACA,QAAQ;AAKZ,UAAI,mBAAmB,KAAK,oBAAmB;AAE/C,UAAI,SAAS,yBAAyB,yBAAyB,OAAO,QAAQ,iBAAiB,aAAa,EAAE,IAAI,SAAU,OAAO;AACjI,YAAI,OAAO,MAAM,CAAC,GACd,QAAQ,MAAM,CAAC;AACnB,eAAO,CAAC,UAAU,IAAI,GAAG,KAAK;AAAA,MAChC,CAAC,EAAE,OAAO,SAAU,OAAO;AACzB,YAAI,OAAO,MAAM,CAAC;AAClB,eAAO,MAAM,QAAQ,oBAAoB,IAAI;AAAA,MAC/C,CAAC,EAAE,KAAK,SAAU,OAAO,OAAO;AAC9B,YAAI,IAAI,MAAM,CAAC;AACf,YAAI,IAAI,MAAM,CAAC;AACf,eAAO,IAAI;AAAA,MACb,CAAC,MAAM,OAAO,SAAS,uBAAuB,CAAC,MAAM,OAAO,wBAAwB,CAAA,GAChF,mBAAmB,MAAM,CAAC;AAE9B,aAAO,oBAAoB;AAAA,IAC7B;AAAA,EACJ,CAAG,CAAC;AAEF,SAAOA;AACT,EAAC;AACD,IAAI,kBAA+B,yBAAU,YAAY;AACvD,iBAAeC,kBAAiB,UAAU;AAE1C,WAASA,mBAAkB;AACzB,WAAO,WAAW,MAAM,MAAM,SAAS,KAAK;AAAA,EAC9C;AAEA,MAAI,UAAUA,iBAAgB;AAE9B,UAAQ,iBAAiB,SAAS,iBAAiB;AACjD,QAAI,wBAAwB,KAAK,gBAC7B,UAAU,sBAAsB,SAChC,QAAQ,sBAAsB;AAClC,QAAI,SAAS,OAAO,MAAK;AACzB,WAAO,MAAM,QAAQ,MAAM,QAAQ,SAAS,IAAI,MAAM,SAAS;AAC/D,WAAO,SAAS,OAAO,MAAM,MAAM;AACnC,WAAO,OAAO,QAAQ,OAAO,QAAQ,QAAQ,IAAI,MAAM,QAAQ;AAC/D,WAAO,QAAQ,OAAO,OAAO,MAAM;AACnC,WAAO,QAAQ,OAAO,QAAQ,OAAO;AACrC,WAAO,SAAS,OAAO,SAAS,OAAO;AACvC,WAAO;AAAA,EACT;AAEA,SAAOA;AACT,EAAE,SAAS;AAEX,SAAS,8CAA8C,gBAAgB,WAAW,aAAa;AAC7F,MAAI,QAAQ,eAAe,OACvB,UAAU,eAAe,SACzB,QAAQ,eAAe;AAC3B,MAAI,eAAe,UAAU,QAAQ;AAErC,MAAI,OAAO,CAAC,UAAU,QAAQ,eAAe,CAAC,QAAQ,OAAO,IAAI,CAAC,OAAO,QAAQ,GAC7E,QAAQ,KAAK,CAAC,GACd,QAAQ,KAAK,CAAC;AAElB,MAAI,UAAU,MAAM,KAAK,IAAI,MAAM,YAAY,IAAI,IAAI,QAAQ,KAAK,IAAI,MAAM,YAAY,IAAI,IAAI;AAClG,MAAI,UAAU,MAAM,KAAK,IAAI,MAAM,YAAY,IAAI,IAAI,QAAQ,KAAK,IAAI,MAAM,YAAY,IAAI,IAAI;AAClG,UAAQ,UAAU,IAAI,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC,UAAU;AAClE;AAEA,IAAI,aAAa;AAAA,EACf,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,QAAQ;AACV;AACA,SAAS,cAAc,gBAAgB,WAAW,aAAa;AAC7D,MAAI;AAEJ,MAAI,UAAU,QAAQ,UAAU;AAC9B,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,eAAe,OACvB,UAAU,eAAe,SACzB,QAAQ,eAAe;AAC3B,MAAI,eAAe,UAAU,QAAQ;AACrC,MAAI,kBAAkB,QAAQ,YAAY,IAAI,MAAM,YAAY;AAChE,MAAI,MAAM,cAAc,MAAM,YAAY,IAAI;AAC9C,MAAI,MAAM,MAAM,YAAY,IAAI,MAAM,YAAY,IAAI,IAAI;AAC1D,MAAI,iBAAiB,8CAA8C,gBAAgB,WAAW,WAAW;AACzG,MAAI,cAAc,UAAU,QAAQ;AACpC,MAAI,gBAAgB,UAAU,QAAQ;AACtC,MAAI,iBAAiB,kBAAkB,MAAM,YAAY,IAAI,IAAI,iBAAiB,QAAQ,aAAa,IAAI,QAAQ,YAAY,IAAI,IAAI,MAAM,aAAa;AAC1J,SAAO,SAAS,CAAA,GAAI,aAAa,YAAY,CAAA,GAAI,UAAU,WAAW,IAAI,QAAQ,UAAU,aAAa,IAAI,MAAM,gBAAgB,KAAK,GAAG,GAAG,UAAS;AACzJ;AAMA,IAAI,aAA0B,2BAAY;AACxC,WAASC,YAAW,YAAY,QAAQ,gBAAgB;AACtD,SAAK,aAAa;AAClB,SAAK,SAAS;AACd,SAAK,iBAAiB;AACtB,SAAK,aAAa;AAClB,SAAK,SAAS;AACd,SAAK,iBAAiB;AAAA,EACxB;AAMA,EAAAA,YAAW,4BAA4B,SAAS,0BAA0B,MAAM;AAC9E,QAAI,cAAc,KAAK,MAAM,GAAG,GAC5B,IAAI,YAAY,CAAC,GACjB,IAAI,YAAY,CAAC;AAErB,QAAI,UAAU,UAAU,CAAC;AACzB,QAAI;AAEJ,QAAI,MAAM,UAAU;AAClB,kBAAY,KAAK;AAAA,IACnB,WAAW,QAAQ,cAAc;AAC/B,kBAAY,MAAM,UAAU,KAAK,MAAM,KAAK;AAAA,IAC9C,OAAO;AACL,kBAAY,MAAM,UAAU,KAAK,OAAO,KAAK;AAAA,IAC/C;AAEA,WAAO,CAAC,SAAS,SAAS;AAAA,EAC5B;AAQA,EAAAA,YAAW,SAAS,SAAS,OAAO,gBAAgB,QAAQ;AAE1D,QAAI,UAAU;AAAA,MACZ,OAAO,OAAO;AAAA,MACd,WAAW,OAAO;AAAA,MAClB,SAAS,OAAO;AAAA,IACtB;AAGI,aAAS,oBAAoB,mBAAmB;AAC9C,UAAI,sBAAsB,QAAQ;AAChC,4BAAoB,OAAO;AAAA,MAC7B;AAEA,UAAI,wBAAwBA,YAAW,0BAA0B,iBAAiB,GAC9E,UAAU,sBAAsB,CAAC,GACjC,YAAY,sBAAsB,CAAC;AAEvC,UAAI,gBAAgB,UAAU,QAAQ,eAAe,OAAO,UAAU,OAAO,OAAO;AAEpF,UAAI,kBAAkB,CAAC,QAAQ,gBAAgB,eAAe,yBAAyB,QAAQ,gBAAgB,eAAe;AAE9H,eAAS,cAAcC,UAASC,YAAW;AACzC,eAAO,IAAI,UAAUD,UAASC,YAAW,gBAAgB,OAAO,iBAAiB,OAAO;AAAA,MAC1F;AAGA,UAAI,OAAO,CAAA;AACX,WAAK,CAAC,IAAI,cAAc,SAAS,SAAS;AAC1C,WAAK,CAAC,IAAI,cAAc,SAAS,UAAU,WAAW,gBAAgB,KAAK,MAAM;AACjF,WAAK,CAAC,IAAI,cAAc,SAAS,MAAM,UAAU,SAAS,WAAW,cAAc,WAAW,UAAU,UAAU,IAAI,CAAC;AACvH,WAAK,CAAC,IAAI,cAAc,eAAe,kBAAkB,UAAU,KAAK,QAAQ,SAAS,IAAI,CAAC;AAC9F,WAAK,CAAC,IAAI,cAAc,eAAe,KAAK,MAAM;AAClD,WAAK,CAAC,IAAI,cAAc,eAAe,kBAAkB,KAAK,QAAQ,SAAS,IAAI,IAAI,OAAO;AAC9F,WAAK,CAAC,IAAI,cAAc,UAAU,cAAc,SAAS,IAAI,GAAG,kBAAkB,UAAU,KAAK,QAAQ,SAAS,IAAI,CAAC;AACvH,WAAK,CAAC,IAAI,cAAc,UAAU,cAAc,SAAS,IAAI,GAAG,KAAK,MAAM;AAC3E,WAAK,CAAC,IAAI,cAAc,UAAU,cAAc,SAAS,IAAI,GAAG,kBAAkB,KAAK,QAAQ,SAAS,IAAI,IAAI,OAAO;AACvH,WAAK,CAAC,IAAI,cAAc,UAAU,QAAQ,SAAS,IAAI,GAAG,SAAS;AACnE,WAAK,EAAE,IAAI,cAAc,UAAU,QAAQ,SAAS,IAAI,GAAG,UAAU,WAAW,gBAAgB,KAAK,MAAM;AAC3G,WAAK,EAAE,IAAI,cAAc,UAAU,QAAQ,SAAS,IAAI,GAAG,MAAM,UAAU,SAAS,WAAW,cAAc,WAAW,UAAU,UAAU,IAAI,CAAC;AAEjJ,aAAO,KAAK,OAAO,SAAU,WAAW;AACtC,eAAO,UAAU,SAAS,OAAO,aAAa,OAAO,mBAAmB,SAAS,UAAU,IAAI;AAAA,MACjG,CAAC;AACD,aAAO;AAAA,IACT;AAGA,QAAI,OAAO,cAAc,UAAU;AACjC,aAAO,IAAIF,YAAW,CAAC,IAAI,gBAAgB,KAAK,QAAQ,KAAK,QAAQ,gBAAgB,OAAO,iBAAiB,OAAO,CAAC,EAAE,OAAO,oBAAoB,OAAO,UAAU,MAAM,OAAO,OAAO,CAAC,GAAG,QAAQ,cAAc;AAAA,IACnN;AAEA,WAAO,IAAIA,YAAW,uBAAuB,QAAQ,cAAc;AAAA,EACrE;AAEA,MAAI,SAASA,YAAW;AAExB,SAAO,yBAAyB,SAAS,uBAAuB,MAAM;AACpE,WAAO,KAAK,WAAW,OAAO,SAAU,WAAW;AACjD,aAAO,UAAU,YAAY;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,SAAO,6BAA6B,SAAS,6BAA6B;AACxE,WAAO,KAAK,WAAW,KAAK,SAAU,WAAW;AAC/C,aAAO,UAAU;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,SAAO,qCAAqC,SAAS,qCAAqC;AACxF,QAAI,wBAAwB,KAAK,WAAW,IAAI,SAAU,WAAW;AACnE,aAAO;AAAA,QACL;AAAA,QACA,SAAS,UAAU;AAAA,MAC3B;AAAA,IACI,CAAC,EAED,KAAK,SAAU,GAAG,GAAG;AACnB,aAAO,EAAE,UAAU,EAAE;AAAA,IACvB,CAAC,GACG,8BAA8B,sBAAsB,CAAC,EAAE;AAE3D,WAAO;AAAA,EACT;AAEA,SAAO,wBAAwB,SAAS,wBAAwB;AAC9D,QAAI,CAAC,KAAK,OAAO,MAAM;AACrB,aAAO,KAAK,WAAW,CAAC;AAAA,IAC1B;AAEA,WAAO,KAAK,gCAAgC,KAAK,mCAAkC;AAAA,EACrF;AAaA,SAAO,qBAAqB,SAAS,mBAAmB,WAAW;AACjE,QAAI,eAAe,KAAK,QACpB,OAAO,aAAa,MACpB,OAAO,aAAa;AAExB,QAAI,CAAC,QAAQ,QAAQ,qBAAqB,iBAAiB;AACzD,aAAO;AAAA,IACT;AAIA,QAAI,uBAAuB,KAAK,uBAAuB,UAAU,OAAO;AACxE,QAAI,qCAAqC,qBAAqB,QAAQ,SAAS,MAAM;AAErF,QAAI,sCAAsC,UAAU,eAAe;AACjE,aAAO;AAAA,IACT;AAEA,QAAI,+BAA+B,qBAAqB,KAAK,SAAUG,YAAW;AAChF,aAAO,CAACA,WAAU;AAAA,IACpB,CAAC;AAED,QAAI,CAAC,8BAA8B;AACjC,aAAO;AAAA,IACT;AAEA,QAAI,sBAAsB,6BAA6B;AAEvD,QAAI,CAAC,qBAAqB;AACxB,aAAO;AAAA,IACT;AAEA,QAAI,mBAAmB,UAAU;AAEjC,QAAI,YAAY,UAAU;AAC1B,QAAI;AAEJ,QAAI,UAAU,mBAAmB,iCAAiC,WAAW;AAC3E,eAAS,oBAAoB,SAAS,KAAK;AAAA,IAC7C,OAAO;AACL,eAAS,cAAc,KAAK,QAAQ,CAAC,KAAK,KAAK,KAAK,MAAM,EAAE,SAAS,SAAS,KAAK,oBAAoB,SAAS,KAAK;AAAA,IACvH;AAIA,QAAI,kBAAkB,iBAAiB,oBAAoB,IAAI;AAC/D,WAAO,kBAAkB;AAAA,EAC3B;AAEA,SAAO,YAAY,SAAS,UAAU,aAAa,WAAW,eAAe,eAAe;AAC1F,QAAI,iBAAiB;AAAA,MACnB,YAAY;AAAA,IAClB;AACI,QAAI,QAAQ,cAAc,KAAK,eAAe,MAAM;AAAA,MAClD,OAAO;AAAA,IACb,CAAK,GAAG,WAAW,KAAK,OAAO,WAAW;AACtC,QAAI,QAAQ,KAAK,OAAO,oBAAoB,SAAS,CAAA,GAAI,gBAAgB;AAAA,MACvE,UAAU;AAAA,MACV,KAAK,YAAY;AAAA,MACjB,MAAM,YAAY;AAAA,IACxB,CAAK,IAAI,SAAS,CAAA,GAAI,gBAAgB;AAAA,MAChC,UAAU;AAAA,MACV,KAAK,YAAY,MAAM,KAAK,eAAe,OAAO,MAAM,cAAc,MAAM,cAAc;AAAA,MAC1F,MAAM,YAAY,OAAO,KAAK,eAAe,OAAO,OAAO,cAAc,OAAO,cAAc;AAAA,IACpG,CAAK;AACD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACN;AAAA,EACE;AAEA,SAAO,oBAAoB,SAAS,kBAAkB,aAAa;AACjE,QAAI,UAAU,KAAK,OAAO,oBAAoB,KAAK,eAAe,UAAU;AAC5E,QAAI,mBAAmB,cAAc,mBAAmB,KAAK,eAAe,0BAA0B,SAAS,IAAI,CAAC;AACpH,QAAI,UAAU,OAAO,QAAQ,iBAAiB,aAAa;AAC3D,QAAI,sBAAsB,QAAQ,KAAK,SAAU,MAAM;AACrD,UAAI,OAAO,KAAK,CAAC,GACb,QAAQ,KAAK,CAAC;AAClB,UAAI,OAAO,UAAU,IAAI;AACzB,aAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ;AAAA,IACxC,CAAC;AAED,QAAI,qBAAqB;AACvB,aAAO;AAAA,IACT;AAEA,QAAI,CAAC,iBAAiB,qBAAqB;AACzC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAEA,SAAO,SAAS,SAAS,OAAO,eAAe,eAAe;AAC5D,QAAI,oBAAoB,KAAK,sBAAqB;AAClD,QAAI,kBAAkB,KAAK,mBAAmB,iBAAiB;AAC/D,QAAI,cAAc,kBAAkB,eAAe,eAAe;AAClE,QAAI1E,UAAS,KAAK,UAAU,aAAa,mBAAmB,eAAe,aAAa;AACxF,QAAI,YAAY,kBAAkB,QAAQ;AAC1C,WAAO;AAAA,MACL,QAAQA;AAAA,MACR;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA,gBAAgB,KAAK,kBAAkB,WAAW;AAAA,IACxD;AAAA,EACE;AAEA,SAAOuE;AACT,EAAC;AAED,IAAI,iBAA8B,2BAAY;AAC5C,WAASI,gBAAe,gBAAgB,mBAAmB;AACzD,SAAK,oBAAoB;AACzB,SAAK,UAAU;AACf,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,SAAS;AACd,SAAK,SAAS;AACd,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AACzB,WAAO,OAAO,MAAM,cAAc;AAAA,EACpC;AAEA,EAAAA,gBAAe,SAAS,SAAS,OAAO,aAAa,OAAO,SAAS,QAAQ,OAAO,kBAAkB,mBAAmB,kBAAkB;AACzI,QAAIC,UAAS,OAAO,WAAW,WAAW;AAC1C,WAAO,IAAID,gBAAe;AAAA,MACxB,OAAO,OAAO,YAAY,OAAO;AAAA,QAC/B;AAAA,QACA,eAAe;AAAA,MACvB,CAAO;AAAA,MACD,SAAS,mBAAmB,OAAO,OAAO,eAAe,iBAAgB,CAAE,CAAC,IAAI,OAAO,YAAY,OAAO;AAAA,MAC1G,OAAO,QAAQ,OAAO,YAAY,KAAK,IAAI,OAAO,MAAK;AAAA,MACvD,QAAQ,SAAS,OAAO,YAAY,MAAM,IAAIC;AAAA,MAC9C,QAAQA;AAAA,MACR,kBAAkB,CAACA,OAAM,EAAE,OAAO,iBAAiB,IAAI,SAAU,WAAW;AAC1E,eAAO,OAAO,YAAY,WAAW;AAAA,UACnC,gBAAgB;AAAA,QAC1B,CAAS;AAAA,MACH,CAAC,CAAC;AAAA,IACR,GAAO,iBAAiB;AAAA,EACtB;AAEA,MAAI,SAASD,gBAAe;AAE5B,SAAO,QAAQ,SAAS,MAAM,gBAAgB;AAC5C,WAAO,IAAIA,gBAAe,SAAS,CAAA,GAAI,MAAM,cAAc,GAAG,KAAK,iBAAiB;AAAA,EACtF;AAEA,SAAO,4BAA4B,SAAS,0BAA0B,SAAS,eAAe;AAC5F,QAAI,kBAAkB,QAAQ;AAC5B,sBAAgB;AAAA,IAClB;AAEA,QAAI,mBAAmB,KAAK,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,MAAM,IAAI,KAAK;AACvF,WAAO,iBAAiB,IAAI,SAAU,iBAAiB;AACrD,aAAO,gBAAgB,UAAU,OAAO;AAAA,IAC1C,CAAC;AAAA,EACH;AAEA,eAAaA,iBAAgB,CAAC;AAAA,IAC5B,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,0BAA0B,KAAK,KAAK;AAAA,IAClD;AAAA,EACJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,QAAQ,QAAQ,KAAK,MAAM;AAAA,IACzC;AAAA,EACJ,GAAK;AAAA,IACD,KAAK;AAAA,IACL,KAAK,SAAS,MAAM;AAClB,aAAO,KAAK,QAAQ,SAAS,KAAK,MAAM;AAAA,IAC1C;AAAA,EACJ,CAAG,CAAC;AAEF,SAAOA;AACT,EAAC;AAED,IAAI,mBAAmB;AAkBvB,IAAI,kBAAkB;AAAA,EACpB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,MAAM;AAAA,EACN,WAAW;AAEb;AACA,SAAS,SAAS,MAAM;AACtB,MAAI;AAEJ,MAAI,cAAc,KAAK,QACnB,SAAS,gBAAgB,SAAS,QAAQ,aAC1C,wBAAwB,KAAK,mBAC7B,oBAAoB,0BAA0B,SAAS,gBAAgB,oBAAoB,uBAC3F,mBAAmB,KAAK,aACxB,cAAc,qBAAqB,SAAS,OAAO,WAAW,cAAc,SAAS,SAAY,kBACjG,yBAAyB,KAAK,gBAC9B,iBAAiB,KAAK,WACtB,YAAY,mBAAmB,SAAS,gBAAgB,YAAY,gBACpE,wBAAwB,KAAK,oBAC7B,qBAAqB,0BAA0B,SAAS,gBAAgB,qBAAqB,uBAC7F,eAAe,KAAK,SACpB,UAAU,iBAAiB,SAAS,gBAAgB,UAAU,cAC9D,eAAe,KAAK,SACpB,UAAU,iBAAiB,SAAS,gBAAgB,UAAU,cAC9D,YAAY,KAAK,MACjB,OAAO,cAAc,SAAS,gBAAgB,OAAO,WACrD,YAAY,KAAK,MACjB,OAAO,cAAc,SAAS,gBAAgB,OAAO,WACrD,qBAAqB,KAAK,eAC1B,gBAAgB,uBAAuB,SAAS,gBAAgB,gBAAgB,oBAChF,uBAAuB,KAAK,iBAC5B,kBAAkB,yBAAyB,SAAS,gBAAgB,kBAAkB,sBACtF,mBAAmB,KAAK,aACxB,cAAc,qBAAqB,SAAS,gBAAgB,cAAc,kBAC1E,iBAAiB,KAAK,WACtB,YAAY,mBAAmB,SAAS,gBAAgB,YAAY,gBACpE,uBAAuB,KAAK,iBAC5B,kBAAkB,yBAAyB,SAAS,OAAO,sBAC3D,cAAc,KAAK,aACnB,iBAAiB,KAAK,gBACtB,gBAAgB,KAAK,eACrB,gBAAgB,KAAK;AAGzB,MAAI,YAAY,SAAS,WAAY;AACnC,WAAO;AAAA,MACL,WAAW,cAAc,WAAW,WAAW,WAAW,0BAA0B,SAAS,EAAE,CAAC,EAAE;AAAA,MAClG,QAAQ;AAAA,QACN,OAAO;AAAA,UACL,UAAU,oBAAoB,UAAU;AAAA,UACxC,KAAK;AAAA,UACL,MAAM;AAAA,QAChB;AAAA,QACQ,OAAO;AAAA,UACL,UAAU;AAAA,UACV,KAAK;AAAA,UACL,MAAM;AAAA,QAChB;AAAA,MACA;AAAA,IACA;AAAA,EACE,CAAC,GACG,QAAQ,UAAU,CAAC,GACnB,WAAW,UAAU,CAAC;AAE1B,MAAI,mBAAmB,OAAO,IAAI;AAGlC,MAAI,YAAY,aAAa,OAAO,MAAM;AAE1C,MAAI,qBAAqB,OAAO;AAAA,IAC9B,WAAW;AAAA,EACf,CAAG;AACD,YAAU,WAAY;AACpB,WAAO,WAAY;AAEjB,yBAAmB,QAAQ,YAAY;AAAA,IACzC;AAAA,EACF,GAAG,CAAA,CAAE;AAIL,MAAI,oBAAoB,YAAY,SAASE,mBAAkB,OAAO,eAAe,eAAe;AAClG,QAAI,QAAQ,MAAM,OACd,QAAQ,MAAM,OACd,mBAAmB,MAAM,kBACzB,UAAU,MAAM;AACpB,QAAI,SAAS,iBAAiB,CAAC;AAC/B,QAAI,iBAAiB,eAAe,OAAO,aAAa,OAAO,SAAS,QAAQ,OAAO,kBAAkB,mBAAmB,iBAAiB,OAAO,SAAS,cAAc,SAAS;AACpL,QAAI,SAAS;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACN;AAEI,QAAI,wBAAwB,WAAW,OAAO,gBAAgB,MAAM,EAAE,OAAO,eAAe,aAAa,GACrG,iBAAiB,sBAAsB,gBACvC,YAAY,sBAAsB,WAClC7E,UAAS,sBAAsB;AAEnC,QAAI,WAAW;AAAA,MACb;AAAA,MACA,QAAQA;AAAA,IACd;AAEI,QAAI,CAAC,UAAU,WAAW,eAAe,UAAU,SAAS,QAAQ,GAAG;AACrE,gBAAU,UAAU;AAQpB,yBAAmB,QAAQ,YAAY;AACvC,UAAI,QAAQ;AAAA,QACV,WAAW;AAAA,MACnB;AACM,yBAAmB,UAAU;AAC7B,cAAQ,UAAU,KAAK,WAAY;AACjC,YAAI,CAAC,MAAM,WAAW;AACpB,mBAAS,QAAQ;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,MAAM,cAAc,KAAK,MAAM,WAAW,GAAG;AAC/C,kBAAY,cAAc;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,aAAa,MAAM,iBAAiB,aAAa,iBAAiB,aAAa,mBAAmB,WAAW,oBAAoB,SAAS,SAAS,MAAM,eAAe,WAAW,aAAa,CAAC;AAErM,MAAI,oBAAoB,iBAAiB;AAAA,IACvC;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EACJ,CAAG,GACG,aAAa,kBAAkB,YAC/B,WAAW,kBAAkB,UAC7B,WAAW,kBAAkB,UAC7B,yBAAyB,kBAAkB;AAE/C,MAAI,YAAY,SAAS;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG,GACG,0BAA0B,UAAU,yBACpC,gBAAgB,UAAU;AAE9B,MAAI,QAAQ;AAAA,IACV,cAAc,QAAQ,aAAa,IAAI,CAAA,IACrC;AAAA,MACA,KAAK,UAAU,YAAY,wBAAwB,SAAS,gBAAgB;AAAA,IAClF;AAAA,IACI,YAAY;AAAA,MACV,KAAK,UAAU,UAAU,wBAAwB,KAAK;AAAA,MACtD,OAAO,MAAM,OAAO;AAAA,IAC1B;AAAA,IACI,YAAY;AAAA,MACV,KAAK;AAAA,MACL,OAAO,MAAM,OAAO;AAAA,MACpB,WAAW,MAAM;AAAA,IACvB;AAAA,IACI,WAAW,MAAM;AAAA,IACjB,eAAe,SAAS,gBAAgB,cAAc,UAAS,KAAM,wBAAwB,iBAAiB,YAAY,OAAO,SAAS,sBAAsB,sBAAqB,IAAK;AAAA,IAC1L,aAAa,SAAS,YAAY,UAAU;AAC1C,aAAO,OAAO,aAAa,cAAc,aAAa,cAAc,eAAe;AAAA,QACjF;AAAA,QACA;AAAA,MACR,CAAO,GAAG,qBAAqB,CAAC,yBAAyB,oBAAoB,SAAS,IAAI,sBAAsB,IAAI;AAAA,IAChH;AAAA,EACJ;AACE,SAAO;AACT;AAEA,SAAS,eAAe,UAAU,MAAM;AACtC,MAAI,SAAS,cAAc,KAAK,WAAW;AACzC,WAAO;AAAA,EACT;AAEA,MAAI,aAAa,CAAC,YAAY,OAAO,QAAQ,SAAS,QAAQ;AAE9D,WAAS,KAAK,GAAG,cAAc,YAAY,KAAK,YAAY,QAAQ,MAAM;AACxE,QAAI,OAAO,YAAY,EAAE;AAEzB,QAAI,SAAS,OAAO,MAAM,IAAI,MAAM,KAAK,OAAO,MAAM,IAAI,KAAK,SAAS,OAAO,MAAM,IAAI,MAAM,KAAK,OAAO,MAAM,IAAI,GAAG;AACtH,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAI,uBAAuB;AAE3B,SAAS,oBAAoB,WAAW;AACtC,MAAI;AAEJ,MAAI,OAAO,cAAc,YAAY;AACnC,cAAU,UAAS;AAEnB,QAAI,CAAC,WAAW,EAAE,mBAAmB,cAAc;AACjD,YAAM,IAAI,MAAM,oGAAoG;AAAA,IACtH;AAAA,EACF,WAAW,qBAAqB,aAAa;AAC3C,cAAU;AAAA,EACZ,WAAW,OAAO,cAAc,UAAU;AACxC,cAAU,SAAS,eAAe,SAAS;AAE3C,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,gDAAgD,YAAY,iEAAiE;AAAA,IAC/I;AAAA,EACF,WAAW,4BAA4B,aAAa;AAClD,WAAO;AAAA,EACT,OAAO;AACL,cAAU,SAAS,eAAe,oBAAoB;AAEtD,QAAI,CAAC,SAAS;AACZ,gBAAU,SAAS,cAAc,KAAK;AACtC,cAAQ,KAAK;AACb,cAAQ,MAAM,UAAU;AACxB,eAAS,KAAK,YAAY,OAAO;AAAA,IACnC;AAAA,EACF;AAEA,SAAO;AACT;AAiGA,IAAI;AAAA,CAEH,SAAU8E,SAAQ;AACjB,EAAAA,QAAOA,QAAO,UAAU,IAAI,CAAC,IAAI;AACjC,EAAAA,QAAOA,QAAO,SAAS,IAAI,CAAC,IAAI;AAChC,EAAAA,QAAOA,QAAO,MAAM,IAAI,CAAC,IAAI;AAC/B,GAAG,WAAW,SAAS,CAAA,EAAG;AC5oEnB,MAAM,OAAO,CAAC,UAAe;AAClC,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAACC,UAAS,UAAU,IAAI,SAAS,MAAM,MAAM;AACnD,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,MAAM,SAAS;AAChD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAA;AAChC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,IAAI;AAEvD,QAAM,gBAAgB,YAAY,MAAM,cAAc,KAAK,GAAG,CAAA,CAAE;AAChE,QAAM,YAAY,cAAA;AAElB,QAAM,iBAAiB;AAAA,IACrB,CAAC,QAAa,YAAiB;AAC7B,iBAAW,CAAC,gBAAqB;AAC/B,cAAM,QAAQA,SAAQ,UAAU,CAAC,OAAY,GAAG,UAAU,OAAO,KAAK;AACtE,cAAM,WAAW,CAAC,GAAG,WAAW;AAChC,iBAAS,OAAO,OAAO,GAAG;AAAA,UACxB,GAAG,YAAY,KAAK;AAAA,UACpB,OAAO;AAAA,QAAA,CACR;AACD,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAACA,QAAO;AAAA,EAAA;AAGV,QAAM,aAAa;AAAA,IACjB,CAAC,CAAC,KAAK,GAAG,MAAsB;AAG9B,YAAM,UAAU,KAAK,GAAG;AACxB,YAAM,IAAI,QAAQA,SAAQ,GAAG,EAAE,EAAE;AAEjC,YAAM,EAAE,SAAA,IAAaA,SAAQ,GAAG;AAEhC,UAAI,aAAa,UAAU;AACzB,eAAO;AAAA,UACL,cAAc;AAAA,UACd,MAAM,aAAa;AAAA,UACnB,MAAM;AAAA,UACN,aAAa,EAAE,SAAA;AAAA,QAAS;AAAA,MAE5B,WAAW,aAAa,SAAS;AAC/B,eAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,MAAM,CAAC,CAAC;AAAA,UACR,cAAc;AAAA,UACd,UAAU;AAAA,QAAA;AAAA,MAEd,WAAW,aAAa,UAAU;AAChC,eAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,MAAM,CAAC,OAAO,IAAI;AAAA,UAClB,cAAc;AAAA,QAAA;AAAA,MAElB,WAAW,aAAa,kBAAkB;AACxC,eAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,cAAc;AAAA,UACd,UAAU;AAAA,UACV,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,eAAe,CAAC,QAAQ,UAAU,MAAM;AAAA,YACxC,OAAO;AAAA,UAAA;AAAA,QACT;AAAA,MAEJ,WAAW,aAAa,cAAc;AACpC,eAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,cAAc;AAAA,UACd,UAAU;AAAA,UACV,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,0BAAU,KAAA;AAAA,YACV,cAAa,oBAAI,KAAA,GAAO,YAAA;AAAA,YACxB,QAAQ;AAAA,UAAA;AAAA,QACV;AAAA,MAEJ,OAAO;AACL,eAAO;AAAA,UACL,MAAM,aAAa;AAAA,UACnB,cAAc;AAAA,UACd,UAAU;AAAA,UACV,aAAa;AAAA,UACb,MAAM;AAAA,QAAA;AAAA,MAEV;AAAA,IACF;AAAA,IACA,CAAC,MAAMA,QAAO;AAAA,EAAA;AAGhB,QAAM,eAAe;AAAA,IACnB,CAAC,MAAW,aAAkB;AAC5B,UAAI,SAAS,SAAS,aAAa,MAAM;AAEvC;AAAA,MACF;AAEA,YAAM,CAAC,KAAK,GAAG,IAAI;AACnB,YAAM,MAAMA,SAAQ,GAAG,EAAE;AACzB,WAAK,GAAG,EAAE,GAAG,IAAI,SAAS;AAE1B,cAAQ,IAAI;AAAA,IACd;AAAA,IACA,CAAC,MAAMA,QAAO;AAAA,EAAA;AAGhB,QAAM,iBAAiB,CAAC,SAAc;AACpC,YAAQ,IAAI,IAAI;AAAA,EAClB;AAEA,QAAM,gBAAgB,YAAY,MAAM;AACtC,UAAM,YAAiB,CAAA;AACvB,YAAQ,IAAI,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC;AACnC,eAAW,CAAC,GAAG,KAAK,OAAO,QAAQ,KAAK,CAAC,CAAC,GAAG;AAC3C,gBAAU,GAAG,IAAI;AAAA,IACnB;AACA,YAAQ,CAAC,GAAG,MAAM,SAAS,CAAC;AAAA,EAC9B,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,kBAAkB,YAAY,MAAM;AACxC,YAAQ,IAAI,gBAAgB;AAAA,EAC9B,GAAG,CAAA,CAAE;AAEL,QAAM,iBAAiB,MAAM;AAC3B,QAAI,eAAe;AACjB,kBAAY,MAAS;AACrB,uBAAiB,CAAC,OAAO,CAAC,EAAE;AAAA,IAC9B;AACA,qBAAiB,CAAC,OAAO,CAAC,EAAE;AAAA,EAC9B;AAEA,QAAM,EAAE,aAAa,WAAA,IAAe,SAAS;AAAA,IAC3C,QAAQ,aAAa;AAAA,IACrB,eAAe;AAAA,IACf;AAAA,IACA,SAAS;AAAA,MACP,WAAW,OAAO;AAAA,QAChB,UAAS,qCAAU,OAAO,MAAK,OAAM,qCAAU,OAAO,WAAU;AAAA,QAChE,SAAQ,qCAAU,OAAO,WAAU;AAAA,QACnC,OAAM,qCAAU,OAAO,MAAK;AAAA,QAC5B,SAAQ,qCAAU,OAAO,MAAK,OAAM,qCAAU,OAAO,UAAS;AAAA,QAC9D,MAAK,qCAAU,OAAO,MAAK;AAAA,QAC3B,QAAO,qCAAU,OAAO,UAAS;AAAA,MAAA;AAAA,IACnC;AAAA,IAEF,WAAW;AAAA,IACX,MAAM;AAAA,EAAA,CACP;AAED,QAAM,oBAAoB,YAAY,CAAC,KAAU,WAAgB;AAC/D,qBAAiB,CAAC,OAAO,CAAC,EAAE;AAC5B,gBAAY,EAAE,KAAK,QAAQ;AAAA,EAC7B,GAAG,CAAA,CAAE;AAEL,QAAM,WAAW,YAAY,MAAM;AACjC,UAAM,UAAU,KAAK,IAAI,CAAC,QAAa;AACrC,aAAO,EAAE,GAAG,KAAK,KAAK,GAAA;AAAA,IACxB,CAAC;AACD,YAAQ,OAAO;AAEf,eAAW;AAAA,MACT,GAAGA;AAAA,MACH;AAAA,QACE,OAAO;AAAA,QACP,IAAI;AAAA,QACJ,SAAS;AAAA,MAAA;AAAA,IACX,CACD;AAAA,EACH,GAAG,CAAC,MAAMA,QAAO,CAAC;AAElB,QAAM,aAAa,YAAY,CAAC,YAAiB,aAAkB;AACjE,eAAW,CAAC,QAAa;AACvB,YAAM,UAAU,CAAC,GAAG,GAAG;AACvB,YAAM,CAAC,MAAM,IAAI,QAAQ,OAAO,YAAY,CAAC;AAC7C,cAAQ,OAAO,UAAU,GAAG,MAAM;AAClC,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAA,CAAE;AAEL,gDACG,WAAA,EACC,UAAA;AAAA,IAAAhG,kCAAAA,IAAC,oBAAiB,YAAYA,kCAAAA,IAACiG,aAAA,EAAe,GAC5C,gDAAC9E,cAAA,EACC,UAAAnB,kCAAAA;AAAAA,MAACkG;AAAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,OAAM;AAAA,QACN,4CAAOC,aAAA,EAAuB;AAAA,QAC9B,OAAM;AAAA,MAAA;AAAA,IAAA,GAEV,EAAA,CACF;AAAA,0CACC,kBAAA,EAAiB;AAAA,IAIlBnG,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ,gBAAgB;AAAA,QAChB,SAAAgG;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,mBAAmB,CAAC3D,IAAG,MAAM,EAAE,eAAA;AAAA,QAC/B,MAAM,KAAK;AAAA,QACX,YAAY;AAAA,QACZ;AAAA,QACA,sBAAsB;AAAA,QACtB;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,CAAC,GAAG,MAAM,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE;AAAA,QAE3D,eAAe;AAAA,QACf,oBAAoB;AAAA;AAAA,UAElB,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,MAAM;AAAA;AAAA,QAAA;AAAA,QAGR,eAAe;AAAA,QACf,eAAe;AAAA,QACf,gBAAgB,CAAC,MAAM,IAAI;AAAA,QAE3B,aAAa,CAAC,MAAM;AAClB,YAAE,QAAQ,cAAc,iBAAiB;AAAA,QAC3C;AAAA,QACA,cACErC,kCAAAA,IAAC,OAAA,EAAI,WAAU,UACb,UAAAA,kCAAAA,IAAC,UAAA,EAAO,SAAS,MAAM,SAAA,GAAY,UAAA,IAAA,CAAC,GACtC;AAAA,QAEF,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN,QAAQ;AAAA,QAAA;AAAA,QAEV;AAAA,MAAA;AAAA,IAAA;AAAA,IAEFA,kCAAAA,IAAC,OAAA,EAAI,IAAG,SAAA,CAAS;AAAA,IAChB,aAAa,UACZ;AAAA,MACEA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,OAAO;AAAA,YACL,GAAG,WAAW;AAAA,YACd,OAAO;AAAA,YACP,SAAS;AAAA,YACT,cAAc;AAAA,YACd,iBAAiB;AAAA,YACjB,QAAQ;AAAA,UAAA;AAAA,UAGV,iDAAC,MAAA,EACC,UAAA;AAAA,YAAAA,kCAAAA,IAAC,QAAG,UAAA,WAAA,CAAQ;AAAA,YACZA,kCAAAA,IAAC,QAAG,UAAA,WAAA,CAAQ;AAAA,YACZA,kCAAAA,IAAC,QAAG,UAAA,WAAA,CAAQ;AAAA,UAAA,EAAA,CACd;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF,GACJ;AAEJ;AC9PA,MAAM,mBAAgD,CAAC;AAAA;AAAA,EAEtD;AAAA,EACA;AAAA;AAAA,EAEA;AAAA;AAAA,EAEA;AAAA,EACA,kBAAAuC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;;AAEL,QAAM,CAAC,YAAY,aAAa,IAAI,SAAA;AACpC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAc,KAAK;AACxD,QAAM,eAAa,OAAO,IAAI;AAEjC,QAAM,WAAW,IACf,YAAA,EACA,IAAI,CAAC6D,SAAaA,KAAI,OAAO,SAAS,EACtC;AAAA,IACA,CAACA,UACAA,6BAAK,mBAAkB,WAAaA,6BAAK,mBAAkB;AAAA,EAAA;AAG9D,QAAM,cAAc,IAAI;AACxB,QAAM,oBAAkB,YAAO,cAAP,mBAAkB,mBAAkB,CAAA;AAG5D,MAAI,eAAe;AACnB,MAAI,mDAAiB,SAAS;AAC7B,QAAI,OAAO,gBAAgB,YAAY,YAAY;AAClD,qBAAe,QAAQ,mDAAiB,QAAQ,KAAK,IAAI,aAAa;AAAA,IACvE,OAAO;AACN,qBAAe,QAAQ,gBAAgB,OAAO;AAAA,IAC/C;AAAA,EACD;AAEA,QAAM,qBAAqB,YAAY,OAAOC,MAAK,WAAW;AAE7D,QAAI;AACH,UAAI,OAAO,gBAAgB,kBAAkB,YAAY;AACxD,cAAM,SAAS,MAAM,gBAAgB,cAAcA,MAAK,MAAM;AAC9D,qBAAa,UAAU;AACvB,eAAO;AAAA,MACR,OAAO;AACN,qBAAa,UAAU,mDAAiB;AAAA,MACzC;AAAA,IACD,SAAS,OAAO;AACf,aAAO;AAAA,IACR;AAAA,EAED,GAAG,CAAC,iBAAiB,KAAK,IAAI,YAAY,CAAC;AAG3C,YAAU,MAAI;AACb,uBAAmB,KAAK,IAAI,YAAY;AAAA,EACzC,GAAE,CAAC,oBAAmB,KAAI,IAAI,YAAY,CAAC;AAE3C,QAAM,WAAW,mDAAiB;AAClC,MAAI,eAAoB;AAExB,MAAI,gBAAgB,aAAY,mDAAiB,cAAa;AAC7D,mBAAe,WAAWhE,IAAE,IAAI,IAAI,UAAU,UAAU,CAAA,CAAE,IAAI,CAAA;AAAA,EAC/D,OAAO;AACN,mBAAe,WACZA,IAAE,IAAI,IAAI,UAAU,UAAU,IAAI,SAAS,OAAO,EAAE,CAAC,IACrD,IAAI,SAAS,OAAO,EAAE;AAGzB,QAAI,gBAAgB,aAAa,OAAO,iBAAiB,YAAY,OAAO,iBAAiB,cAAa,2BAAK,oBAAmB;AACjI,YAAM,iBAAiB,IAAI,kBAAkB;AAAA,QAAK,CAAC,WAClD,OAAO,UAAU,gBAAgB,OAAO,OAAO,gBAAgB,OAAO,SAAS,gBAAgB,OAAO,OAAO,EAAE,MAAM,OAAO,YAAY;AAAA,MAAA;AAEzI,UAAI,gBAAgB;AACnB,uBAAe;AAAA,MAChB;AAAA,IACD;AAAA,EACD;AAGA,QAAM,WAAW,OAAO,UAAe;AACtC,QAAI;AAEH,YAAME,kBAAiB;AAAA,QACtB,OAAO;AAAA,QACP;AAAA,UACC,CAAC,OAAO,EAAE,GAAG;AAAA,QAAA;AAAA,QAEd;AAAA,UACC,YAAY;AAAA,QAAA;AAAA,MACb;AAGA,YAAM,KAAU,CAAA;AAChB,iBAAW,KAAK,QAAQ;AACvB,YAAI,KAAK,OAAO,IAAI;AACnB,aAAG,CAAC,IAAI,OAAO,CAAC;AAAA,QACjB;AAAA,MACD;AACA,0BAAoB,EAAE;AAAA,IAExB,SAAS,KAAK;AACb,UAAI,eAAe+D,IAAI,iBAAiB;AACvC,cAAM,IAA4B,CAAA;AAClC,YAAI,MAAM,QAAQ,CAAC,UAAU;AAC5B,cAAI,MAAM,MAAM;AACf,cAAE,MAAM,IAAI,IAAI,MAAM;AAAA,UACvB;AAAA,QACD,CAAC;AACD,cAAM,KAAK,EAAE,GAAG,QAAQ,GAAG,EAAA;AAC3B,4BAAoB,EAAE;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAKA,QAAM,WAAW,OAAO,GAAQ,MAAa,iBAAqB;AACjE,UAAM,OAAO;AACb,QAAI;AACJ,YAAQ,MAAA;AAAA,MACP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,gBAAQ;AAER;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJ,gBAAQ,EAAE,OAAO;AAEjB;AAAA,MACD,KAAK;AACJ,gBAAQ,EAAE,OAAO;AAEjB;AAAA,MACD;AACC,gBAAQ,EAAE,OAAO;AACjB;AAAA,IAAA;AAEF,kBAAc,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO;AAEnD,QAAI,kBAAkB;AACrB,YAAM,IAAI,MAAM,iBAAiB,GAAG,MAAM,KAAK,KAAK,IAAI;AACxD,UAAI,GAAG;AACN,YAAI,eAAe,EAAE,GAAG,IAAI,cAAc,GAAG,EAAA;AAC7C,sBAAc,EAAE,GAAG,YAAY,GAAG,GAAG;AAAA,MACtC;AAAA,IACD;AACA,kBAAc,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,OAAO;AACnD,QAAI,eAAe,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,GAAG,MAAA;AACvD,mBAAe,IAAI,IAAI,OAAO,IAAI,KAAK;AAEvC,UAAM,SAAS,KAAK;AAAA,EACrB;AAEA,YAAU,MAAM;AACf,kBAAc,EAAE,GAAG,YAAY,GAAG,IAAI,cAAc;AAAA,EAErD,GAAG,CAAC,IAAI,YAAY,CAAC;AAErB,YAAU,MAAM;AACf,QAAI,CAAC,cAAc;AAClB,YAAM,aAAa,OAAO,KAAK,IAAI,gBAAgB,CAAA,CAAE;AACrD,YAAM,UAAe,CAAA;AAErB,UAAI,YAAA,EAAc,QAAQ,CAAC,SAAS;;AACnC,cACClE,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,YACzCmE,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,MACxC;AACD,gBAAM,EAAE,aAAa,UAAAC,UAAAA,MACpBC,MAAA,KAAK,OAAO,cAAZ,gBAAAA,IAAuB,mBAAkB,CAAA;AAC1C,cAAI,WAAW,SAAS,KAAK,OAAO,EAAE,GAAG;AACxC,kBAAM,KAAKpE,IAAE,IAAI,IAAI,UAAUmE,SAAQ;AACvC,gBAAI,gBAAgB,YAAY,aAAa;AAC5C,sBAAQ,KAAK,OAAO,EAAE,IAAI,KACvB,MAAM,QAAQ,EAAE,IACf,KACA,CAAC,EAAE,IACJ,CAAA;AAAA,YACJ,WAAW,gBAAgB,UAAU,gBAAgB,eAAe,gBAAgB,QAAQ;AAC3F,sBAAQ,KAAK,OAAO,EAAE,IAAI,KACvB,MAAM,EAAE,EAAE,QAAA,IACT,MAAM,EAAE,IACR,SACD,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC,EAAE,QAAA,IACnC,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC,IAClC;AAAA,YACL,OAAO;AACN,sBAAQ,KAAK,OAAO,EAAE,IAAInE,IAAE;AAAA,gBAC3B,IAAI;AAAA,gBACJmE;AAAAA,gBACA,IAAI,SAAS,KAAK,OAAO,EAAE;AAAA,cAAA;AAAA,YAE7B;AAAA,UACD;AAAA,QACD;AAAA,MACD,CAAC;AAED,UAAI,eAAe;AACnB,oBAAc,OAAO;AACrB,sBAAgB,IAAI;AAAA,IACrB;AAAA,EACD,GAAG,CAAC,KAAK,aAAa,YAAY,CAAC;AACnC,SACC1G,kCAAAA,KAAAC,4BAAA,EACG,UAAA;AAAA,KAAA,CAAC,eAAe,gBAAgB,aACjCC,kCAAAA;AAAAA,MAAC0G;AAAAA,MAAA;AAAA,QACA;AAAA,QAGA,UAAU,CAAC,MAAM,SAAS,GAAG,WAAW;AAAA,QACxC,OAAO,yCAAa,OAAO;AAAA,QAC3B,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QACjD,MAAM,eAAe;AAAA,QACrB,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,cAAa,mDAAiB,gBAAe;AAAA,QAC7C,OAAM,mDAAiB,eAAc;AAAA,QACrC,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGX,gBAAgB,YAChB5G,uCAAC,KAAA,EAAI,SAAQ,QAAO,eAAc,UAAS,OAAM,QAChD,UAAA;AAAA,MAAAE,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAM,mDAAiB,eAAc;AAAA,UACrC;AAAA,UACA,cAAa,mDAAiB,gBAAe;AAAA,UAC7C,mBAAmB,UAAU,IAAI,MAAM;AAAA,UACvC,UAAU,CAAC,GAAGqG,SAAQ,SAAS,GAAG,UAAUA,IAAG;AAAA,UAC/C,SAAS,mDAAiB;AAAA,UAC1B,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,UACjD,SAAS,2BAAK;AAAA,UACd,eAAe,aAAa;AAAA,UAC5B,WAAW,mDAAiB;AAAA,UAC5B,UAAU,mDAAiB;AAAA,UAC3B,UAAU,mDAAiB;AAAA,UAC3B,YAAY,gBAAgB;AAAA,UAC5B,aAAY,mDAAiB,eAAc,EAAC,mDAAiB;AAAA,UAC7D,UAAU,mDAAiB;AAAA,UAC3B,QACC,mDAAiB,eACd,MAAM,QAAQ,yCAAa,OAAO,GAAG,IACpC,yCAAa,OAAO,MACpB,CAAA,IACD,yCAAa,OAAO;AAAA,UAExB,iBAAiB,CAACA,SAAM,gBAAgB,mDAAiB,YAAWA,IAAG;AAAA,QAAA;AAAA,MAAA;AAAA,OAGvE,iCAAS,OAAO,QAChBrG,kCAAAA,IAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,UAChBA,kCAAAA;AAAAA,MAACU;AAAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC;AAAA,QACA,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,QACnC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,OACC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,EAAE,QAAA,IAChC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,IACjC;AAAA,QAEJ,UAAU;AAAA,QACV,SAAS,mDAAiB;AAAA,QAC1B,SAAS,mDAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAG3B,gBAAgB,eAChBV,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC;AAAA,QACA,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,QACnC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,OACC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,EAAE,QAAA,IAChC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,IACjC;AAAA,QAEJ,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGX,gBAAgB,UAChBA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC,OAAM;AAAA,QACN,OACC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,EAAE,QAAA,IAChC,MAAM,IAAI,aAAa,OAAO,EAAE,CAAC,IACjC;AAAA,QAEJ,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,QACnC,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,cAAa,mDAAiB,gBAAe;AAAA,QAC7C,UAAU;AAAA,QACV,cAAc,mDAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,KAG/B,gBAAgB,UAAU,gBAAgB,mDAC1C,KAAA,EAAI,SAAQ,QAAO,eAAc,UACjC,UAAA;AAAA,MAAAA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAM,mDAAiB,eAAc;AAAA,UACrC,cAAc;AAAA,UACd,UAAS;AAAA,UACT,OAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU,CAAC,MAAM,SAAS,GAAG,MAAM;AAAA,UACnC,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,UACpC,UAAU,QAAQ,iCAAQ,WAAW;AAAA,UACrC,OAAO,IAAI,aAAa,OAAO,EAAE;AAAA,QAAA;AAAA,MAAA;AAAA,OAEjC,iCAAS,OAAO,QAChBA,kCAAAA,IAAC,YAAA,EAAW,OAAM,mBAAkB,MAAK,MACvC,UAAA,iCAAS,OAAO,IAAE,CACpB;AAAA,IAAA,GAEF;AAAA,IAEA,gBAAgB,WAChBA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC,eAAe;AAAA,QACf,UAAU,CAAC,MAAM,SAAS,GAAG,OAAO;AAAA,QACpC,gBAAgB;AAAA,UACf,aAAW,0CAAW,OAAX,mBAAe,iBAAgB,OAAO;AAAA,QAAA;AAAA,QAElD,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,QAAO,SAAI,iBAAJ,mBAAmB,OAAO;AAAA,QACjC,UAAU;AAAA,QACV,iBAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGlB,gBAAgB,cAChBA,kCAAAA;AAAAA,MAAC8C;AAAAA,MAAA;AAAA,QACA,OAAM,mDAAiB,eAAc;AAAA,QACrC,gBAAgB,QAAQ,YAAY;AAAA,QAEpC,UAAU,CAAC,MAAM,SAAS,GAAG,UAAU;AAAA,QACvC,QAAO,iCAAS,OAAO,OAAM,OAAO;AAAA,QACpC,YAAY,iCAAS,OAAO;AAAA,QAC5B,QAAQ,mDAAiB;AAAA,QACzB,cACC,mDAAiB,iBAAe,mDAAiB;AAAA,QAElD,QAAO,SAAI,iBAAJ,mBAAmB,OAAO;AAAA,QACjC,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACX,GAEF;AAEF;AC9OA,MAAM,eAAerB,SAAO,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,IAC7D,sBAAsB;AAAA,MACrB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA;AAAA,IASZ,sBAAsB;AAAA,MACrB,kBAAiB,aAAQ,UAAR,mBAAe,UAAU;AAAA,IAAG;AAAA,IAE9C,2BAA2B;AAAA,MAC1B,WAAW;AAAA,IAAA;AAAA,IAGZ,kBAAkB;AAAA,MACjB,WAAW;AAAA,IAAA;AAAA,IAGZ,2BAA2B;AAAA,MAC1B,kBAAkB;AAAA,QACjB,kBAAiB,wCAAS,UAAT,mBAAgB,QAAQ;AAAA,QACzC,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,IAED,qBAAqB;AAAA,MACpB,kBAAkB;AAAA,QACjB,iBAAiB,IAAG,wCAAS,UAAT,mBAAgB,QAAQ,IAAI;AAAA,QAChD,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,IAED,8BAA8B;AAAA,MAC7B,OAAO,IAAG,wCAAS,UAAT,mBAAgB,QAAQ,IAAI;AAAA,MACtC,SAAS;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,MAAA;AAAA,IACR;AAAA,EAEF;AAAA,CAAE;AAIF,MAAM,wBAAwBhB,eAAM,KAAK,CAAC;AAAA,EACzC,mBAAmB;AAAA,EACnB;AAAA,EACA,SAAAuF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B,CAAA;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB,iBAAiB,CAAA;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,kCAAkC;AAAA,EAClC,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,uBAAuB,MAAM;AAAA,EAAE;AAAA,EAC/B,cAAc,CAAA;AAAA,EACd,iBAAiB;AAAA,EACjB;AAAA,EACA,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,GAAG;AACJ,MAA8B;AAC7B,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,EAAE,WAAW,MAAM,gBAAgB,YAAY,MAAA,IAAU,SAAA;AAC/D,QAAM,aAAa,YAAuB,KAAK;AAC/C,QAAM,EAAE,WAAW;AACnB,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,CAAA,CAAE;AACjC,QAAM,CAAC,cAAc,eAAe,IAAI,SAASA,QAAO;AACxD,QAAM,CAAC,UAAU,WAAW,IAAI,SAA6B,IAAI;AACjE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,CAAC,aAAa,cAAc,IAAI,SAA6B,IAAI;AACvE,QAAM,iBAAiB,aAAa,OAAO,CAAC,WAAgB,OAAO,OAAO;AAC1E,QAAM,gBAAgB,aAAa,OAAO,CAAC,WAAgB,CAAC,OAAO,OAAO;AAC1E,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,aAAa;AACpE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAwB,IAAI;AAClE,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAc,CAAA,CAAE;AAChE,QAAM,CAACzD,mBAAkB,mBAAmB,IAAI,SAAc,CAAA,CAAE;AAChE,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAkB,KAAK;AAC/D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AACjE,QAAM,CAAC,aAAa,cAAc,IAAI,SAAc,IAAI;AACxD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAgC,CAAA,CAAE;AAC1E,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAA2B,CAAA,CAAE;AAC3D,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,KAAK;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAgC,WAAW,YAAY;AAC/F,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAoC;AAAA,IACnF,mBAAmB,CAAA;AAAA,IACnB,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,aAAa;AAAA,IACb,WAAW;AAAA,EAAA,CACX;AACD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAiB,CAAC;AAE9D,QAAM,WAAW,YAAA;AACjB,QAAM,gBAAgB,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AAEpD,MAAI,kBAAkB;AACtB,UAAQ,eAAA;AAAA,IACP,KAAK;AACJ,wBAAkB,mBAAmB;AACrC;AAAA,IACD,KAAK;AACJ,wBAAkB,kBAAkB;AACpC;AAAA,IACD,KAAK;AAEJ,wBAAkB,sBAAsB;AACxC;AAAA,IACD,KAAK;AACJ,wBAAkB,iBAAiB;AACnC;AAAA,IACD,KAAK;AACJ,wBAAkB,YAAY;AAC9B;AAAA,IACD,KAAK;AACJ,wBAAkB,cAAc;AAChC;AAAA,IACD,KAAK;AACJ,wBAAkB,eAAe;AACjC;AAAA,IACD,KAAK;AACJ,wBAAkB,iBAAiB;AACnC;AAAA,EAAA;AAEF,QAAM,OAAO,cAAc,aAAa,GAAG,eAAe;AAC1D,QAAM,oBAAoB,CAAC,WAAgB;;AAC1C,YAAQ,OAAO,aAAA;AAAA,MACd,KAAK;AACJ,iBAAO,sCAAQ,mBAAR,mBAAwB,eAAc+D,IAAI,MAAA,IAAUA,IAAI,OAAA;AAAA,MAEhE,KAAK;AACJ,eAAOA,IAAI,SAAS,SAAA,EAAW,UAAU,CAAC,OAAO,kBAAmB,kBAAkB,KAAK,OAAO,KAAM;AAAA,MAEzG,KAAK;AACJ,eAAOA,IACL,SACA;AAAA,UACA;AAAA,UACA,EAAE,oBAAoB,MAAM,SAAS,0BAAA;AAAA,QAA0B;AAAA,MAGlE;AACC,eAAOA,IAAI,OAAA;AAAA,IAAO;AAAA,EAErB;AAEA,QAAM,oBAAoB,CACzB,QACA,YACA,WACI;;AACJ,QAAI,MAAM;AAEV,YAAQ,WAAW,MAAA;AAAA,MAKlB,KAAK;AACJ,YAAI,WAAW,OAAO;AACrB,gBAAM,IAAI,SAAS,WAAW,MAAM,EAAE,UAAU,WAAW,MAAM;AAGjE,cAAI,EAAC,iCAAQ,iBAAe,iCAAQ,iBAAgB,QAAQ;AAC3D,kBAAM,IAAI;AAAA,cACT;AAAA,cACA;AAAA,cACA,CAAC,UACA,OAAO,UAAU,WACd,MAAM,KAAA,EAAO,SAAS,IACtB;AAAA,YAAA;AAAA,UAEN;AAAA,QACD,YAAW,sCAAQ,mBAAR,mBAAwB,aAAa;AAC/C,gBAAM,IAAI,IAAI,GAAG,WAAW,MAAM;AAAA,QACnC;AACA;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,YAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,SAAS,IAAI;AAC3C;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,QAAQ,WAAW,MAAM;AACnC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,OAAO,WAAW,SAAS,IAAI;AACzC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,UAAU,WAAW,MAAM;AACrC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,MAAM,WAAW,QAAQ,WAAW,MAAM;AACpD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,QAAQ,WAAW,MAAM;AACvD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,QAAQ,WAAW,KAAK;AAClC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,UAAU,WAAW,EAAE;AACjC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,MAAM,WAAW,KAAK;AAChC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,KAAK,WAAW,KAAK;AAC/B;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI,KAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,UAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,UAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,MAAM,WAAW,MAAM;AACjC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,MAAM;AAC/B;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,KAAK,WAAW,MAAM;AAChC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,OAAO,WAAW,OAAO,WAAW,MAAM;AACpD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,QAAQ,WAAW,OAAO,WAAW,MAAM;AACrD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI;AAAA,UACT,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE;AAAA,UACjC,WAAW;AAAA,QAAA;AAEZ;AAAA,MAED,KAAK;AACJ,cAAM,IAAI;AAAA,UACT,IAAI,OAAO,GAAG,WAAW,KAAK,GAAG;AAAA,UACjC,WAAW;AAAA,QAAA;AAEZ;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,OAAO,WAAW,MAAM;AACtD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,OAAO,WAAW,MAAM;AACtD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,MAAM;AACpC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAS,WAAW,MAAM;AACpC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,QAAQ,WAAW,MAAM;AACnC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,MAAM,WAAW,UAAU,OAAO;AAC5C;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,SAAA;AACV;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,OAAA;AACV;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,QAAQ,WAAW,QAAQ;AACrC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,GAAG,WAAW,MAAM;AAC9B;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,IAAI,WAAW,OAAO,WAAW,MAAM;AACjD;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI,MAAM,WAAW,MAAM;AACjC;AAAA,MAED,KAAK;AACJ,cAAM,IAAI,UAAU,WAAW,SAAS,MAAM,WAAW,MAAM;AAC/D;AAAA,MAMD,KAAK;AACJ,cAAM,IAAI;AAAA,UACT,WAAW,QAAQ;AAAA,UACnB,WAAW;AAAA,UACX,WAAW;AAAA,QAAA;AAEZ;AAAA,MAMD,KAAK;AACJ,eAAO,IAAI,KAAK,WAAW,UAAU;AAAA,UACpC,IAAI,CAAC,QACJ,OAAO,WAAW,OAAO,aACtB,WAAW,GAAG,GAAG,IACjB,MAAM,QAAQ,WAAW,MAAM,IAC9B,WAAW,OAAO,SAAS,GAAG,IAC9B,QAAQ,WAAW;AAAA,UAExB,MAAM,CAAC;;AACN,qBAAAlE,MAAA,yCAAY,oBAAZ,gBAAAA,IAA6B;AAAA,cAC5B,CAAC,KAAU,MACV,kBAAkB,KAAK,GAAG,MAAM;AAAA,cACjC;AAAA,kBACI;AAAA;AAAA,UAEN,WAAW,CAAC;;AACX,qBAAAA,MAAA,yCAAY,yBAAZ,gBAAAA,IAAkC;AAAA,cACjC,CAAC,KAAU,MACV,kBAAkB,KAAK,GAAG,MAAM;AAAA,cACjC;AAAA,kBACI;AAAA;AAAA,QAAA,CACN;AAAA,IAGD;AAGF,WAAO;AAAA,EACR;AAIA,QAAM,2BAA2B,CAAC4D,cAAmB;AACpD,WAAOA,UAAQ,OAAO,CAAC,KAAU,QAAa;;AAC7C,YAAM,eAAc,gCAAK,mBAAL,mBAAqB;AAEzC,UAAI,EAAC,2CAAa,QAAQ,QAAO;AAEjC,YAAM,aAAa,kBAAkB,GAAG;AAExC,UAAI,IAAI,WAAW,IAAI,YAAY;AAAA,QAClC,CAAC,QAAa,eACb,kBAAkB,QAAQ,YAAY,GAAG;AAAA,QAC1C;AAAA,MAAA;AAGD,aAAO;AAAA,IACR,GAAG,CAAA,CAAE;AAAA,EACN;AAGA,YAAU,MAAM;AACf,oBAAgBA,QAAO;AAEvB,UAAM,SAAc,yBAAyBA,QAAO;AACpD,wBAAoBM,IAAI,OAAA,EAAS,MAAM,MAAM,CAAC;AAAA,EAE/C,GAAG,CAACN,QAAO,CAAC;AAEZ,YAAU,MAAM;AACf,QAAI,EAAC,qDAAkB,mBAAkB;AACxC,qBAAe,EAAE,cAAc,EAAE,GAAG,WAAW,cAAc,GAAG,aAAA,GAAgB;AAChF,mEAAuB;AAAA,IACxB;AAAA,EAED,GAAG,CAAC,qDAAkB,kBAAkB,YAAY,CAAC;AAErD,QAAM,oBAAoB,CAAC,UAAe;AACzC,gBAAY,MAAM,aAAa;AAAA,EAChC;AAEA,QAAM,oBAAoB,MAAM;AAC/B,gBAAY,IAAI;AAAA,EACjB;AAEA,QAAM,sBAAsB,CAAC,WAAgB;AAC5C,UAAM,iBAAiB,aAAa,IAAI,CAAC,SAAc;AAAA,MACtD,GAAG;AAAA,MACH,SAAS,IAAI,gBAAgB,OAAO,cAAc,QAAQ,IAAI;AAAA,IAAA,EAC7D;AACF,oBAAgB,cAAc;AAC9B,6DAAqB,KAAK,MAAM,KAAK,UAAU,cAAc,CAAC;AAC9D,uBAAmB,CAAC,GAAG,iBAAiB,MAAM,CAAC;AAC/C,gBAAY,IAAI;AAAA,EACjB;AAEA,QAAM,uBAAuB,MAAM;AAClC,iBAAa,IAAI;AAAA,EAClB;AAEA,QAAM,wBAAwB,MAAM;AACnC,iBAAa,KAAK;AAAA,EACnB;AAEA,QAAM,kBAAkB,CAAC,WAAgB;AACxC,UAAM,iBAAiB,aAAa,IAAI,CAAC,SAAc;AAAA,MACtD,GAAG;AAAA,MACH,SAAS,IAAI,gBAAgB,OAAO,cAAc,OAAO,IAAI;AAAA,IAAA,EAC5D;AACF,6DAAqB,KAAK,MAAM,KAAK,UAAU,cAAc,CAAC;AAC9D,oBAAgB,cAAc;AAE9B,UAAM,yBAAyB,gBAAgB;AAAA,MAC9C,CAAC,WAAgB,OAAO,gBAAgB,OAAO;AAAA,IAAA;AAEhD,uBAAmB,sBAAsB;AACzC,gBAAY,IAAI;AAChB,iBAAa,KAAK;AAAA,EACnB;AAEA,QAAM,oBAAoB,CAAC,gBAAwB;AAClD,UAAM,kBAAkB,cAAc;AAAA,MAAO,CAAC,WAC7C,OAAO,OAAO,cAAc,SAAS,YAAY,YAAA,CAAa;AAAA,IAAA;AAE/D,uBAAmB,eAAe;AAAA,EACnC;AAEA,QAAM,wBAAwB,MAAM;AACnC,aAAS,MAAM,EAAE,OAAO,SAAA,CAAU;AAClC,gBAAY,IAAI;AAChB,iBAAa,KAAK;AAAA,EACnB;AAaA,QAAM,qBAAqB,CAAC,OAAY,SAAc;AACrD,WAAO,IAAI;AACX,mBAAe,MAAM,aAAa;AAAA,EACnC;AAEA,QAAM,qBAAqB,MAAM;AAChC,mBAAe,IAAI;AAAA,EACpB;AAEA,QAAM,cAAc,YAAY,CAAC,QAAa,UAAiB;AAC9D,UAAM,IAAS,CAAA;AACf,QAAI,iCAAS,oBAAoB;AAChC,aAAO,OAAO,iBAAiB;AAAA,IAChC;AACA,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,OAAO;AACnC,YAAM,MAAM,OAAO,EAAE;AACrB,YAAM,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE;AAElD,UAAI,KAAK;AACR,YAAI,eAAe,MAAM;AACxB,YAAE,EAAE,IAAI,IAAI;AAAA,QACb,WAAW,SAAQ,6BAAM,gBAAe,QAAQ;AAC/C,YAAE,EAAE,IAAI,MAAM,GAAG,EAAE,QAAO,6BAAM,eAAc,YAAY;AAAA,QAC3D,WAAW,SAAQ,6BAAM,gBAAe,YAAY,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAG5F,YAAE,EAAE,IAAI,IAAI,QAAQ,IAAI,SAAS,IAAI,gBAAgB,IAAI,SAAS,IAAI,SAAS,IAAI,MAAM;AAAA,QAC1F,WAAW,SAAQ,6BAAM,gBAAe,YAAY,OAAO,QAAQ,UAAU;AAE5E,YAAE,EAAE,IAAI;AAAA,QACT,OAAO;AACN,YAAE,EAAE,IAAI;AAAA,QACT;AAAA,MACD,OAAO;AACN,UAAE,EAAE,IAAI;AAAA,MACT;AAAA,IACD,CAAC;AAED,WAAO;AAAA,EACR,GAAG,CAAA,CAAE;AAEL,QAAM,kBAAkB,YAAY;AACnC,qBAAiB,IAAI;AACrB,QAAI,aAAa;AAChB,aAAM,2CAAc;AACpB,qBAAe,IAAI;AAAA,IACpB;AACA,qBAAiB,KAAK;AAAA,EACvB;AAEA,QAAM,gBAAgB,YAAY,CAAC,mBAAwB;;AAC1D,YAAO,sDAAgB,gBAAhB,mBAA6B,KAAK,CAAC,eAAoB,WAAW,SAAS;AAAA,EACnF,GAAG,CAAA,CAAE;AACL,YAAU,MAAM;AACf,UAAM,eAAe,CAAA;AAErB,QAAI,CAAC,aAAa,eAAe,QAAQ;AACxC,WAAK,QAAQ,CAACK,SAAQ;AACrB,YAAI,eAAe,SAASA,KAAI,EAAE,GAAG;AACpC,uBAAaA,KAAI,EAAE,IAAI;AAAA,QACxB;AAAA,MACD,CAAC;AACD,sBAAgB,YAAY;AAC5B,mBAAa,IAAI;AAAA,IAClB;AAAA,EAGD,GAAG,CAAC,MAAM,cAAc,CAAC;AAEzB,YAAU,MAAM;AACf,QAAI,2BAA2B,UAAU;AACxC,YAAM,eAAe,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AACxD,sBAAgB,aAAa,CAAC,KAAK,IAAI;AAAA,IACxC;AAAA,EAED,GAAG,CAAC,OAAO,CAAC;AAGZ,QAAM,oBAAoB,MAAM;AAC/B,oBAAgB,CAAA,CAAE;AAClB,uBAAmB,KAAK;AAAA,EACzB;AACA,QAAM,eAAe,CAAC,SAAiB;AACtC,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,UAAM,MAAM,OAAO,WAAW,IAAI;AAClC,QAAI,CAAC,IAAK,QAAO;AACjB,WAAO,IAAI,YAAY,IAAI,EAAE,QAAQ;AAAA,EACtC;AAcA,QAAM,0BAA0B,CAAC,QAChC,IAAI,MAAM,OAA+B,CAAC,KAAK,EAAE,MAAAM,OAAM,QAAA,MAAc;AACpE,QAAIA,MAAM,KAAIA,KAAI,IAAI;AACtB,WAAO;AAAA,EACR,GAAG,CAAA,CAAE;AAIN,QAAM,gBAAgB;AAAA,IACrB,OAAO,EAAE,KAAAN,MAAK,QAAQ,OAAAO,OAAAA,GAAwB,SAAiC;AAC9E,YAAM,aAAa,SAAS;AAC5B,YAAM,kBAAkB,aAAa,kBAAkB;AAEvD,UAAI;AACH,cAAMrE,kBAAiB,SAAS,QAAQ,EAAE,YAAY,OAAO;AAE7D,4BAAoB,CAAA,CAAE;AACtB,wBAAgB,IAAI;AACpB,2BAAmB,KAAK;AAExB,cAAM,QAAQ8D,KAAI,cAAc,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS;AAC7DA,aAAI,eAAe,YAAY,QAAQ,KAAK;AAE5C,cAAM,OAAO,EAAE,KAAAA,MAAK,QAAQ,OAAAO,OAAAA;AAE5B,YAAI,YAAY;AACf,iBAAM,uCAAY,MAAM;AACxBA,iBAAM,cAAc,IAAI;AAAA,QACzB,OAAO;AACN,iBAAM,2CAAc;AACpBA,iBAAM,eAAe,IAAI;AAAA,QAC1B;AAAA,MACD,SAAS,KAAK;AACb,YAAI,eAAeN,IAAI,iBAAiB;AACvC,8BAAoB,wBAAwB,GAAG,CAAC;AAAA,QACjD,OAAO;AACN;AAAA,YACC,eAAe,QAAQ,IAAI,UAAU;AAAA,YACrC,EAAE,SAAS,QAAA;AAAA,UAAQ;AAAA,QAErB;AAAA,MACD,UAAA;AACC,wBAAgB,KAAK;AAAA,MACtB;AAAA,IACD;AAAA,IACA,CAAC/D,mBAAkB,WAAW,aAAa,WAAW;AAAA,EAAA;AAGvD,QAAM,WAAW,YAAY,OAAO,WAAgB;AACnD,QAAI;AACH,YAAMA,kBAAiB,SAAS,QAAQ,EAAE,YAAY,OAAO;AAC7D,0BAAoB,CAAA,CAAE;AACtB,aAAO;AAAA,IACR,SAAS,KAAK;AACb,aAAO;AAAA,IACR;AAAA,EACD,GAAG,CAACA,iBAAgB,CAAC;AAErB,QAAM,YAAY,OAAkC,EAAE;AAGtD,QAAM,iBAAiB;AAAA,IACtB,CAAC,OAAe,UAAkB,UAAmB;AACpD,gBAAU,QAAQ,KAAK,IAAI;AAAA,QAC1B,GAAI,UAAU,QAAQ,KAAK,KAAK,CAAA;AAAA,QAChC,CAAC,QAAQ,GAAG;AAAA,MAAA;AAAA,IAEd;AAAA,IACA,CAAA;AAAA,EAAC;AAGF,QAAM,WAAW,YAAY,CAAC,UAAkB;AAC/C,WAAO,UAAU,QAAQ,KAAK;AAAA,EAC/B,GAAG,CAAA,CAAE;AAGL,QAAM,eAAe;AAAA,IACpB,CAAC8D,UAAoC;AAAA;AAAA,MAEpC,GAAIA,KAAI;AAAA;AAAA,MAER,GAAIA,KAAI;AAAA;AAAA,MAER,GAAI,UAAU,QAAQA,KAAI,EAAE,KAAK,CAAA;AAAA,IAAC;AAAA,IAEnC,CAAA;AAAA,EAAC;AAIF,QAAM,iBAAiB;AAAA,IACtB,OAAOO,WAAoC;AAC1C,YAAM,aAAaA,OAAM,SAAA,EAAW;AACpC,YAAM,cAAcA,OAAM,SAAA,EAAW;AACrC,UAAI,CAAC,WAAY;AACjB,YAAM,SAAS,aAAa,UAAU;AACtC,YAAM,UAAU,MAAM,SAAS,MAAM;AACrC,UAAI,CAAC,SAAS;AAEb,cAAM,cAAc,EAAE,KAAK,YAAY,QAAQ,OAAAA,OAAAA,GAAS,MAAM;AAC9D;AAAA,MACD;AACA,YAAM,cAAc,EAAE,KAAK,YAAY,QAAQ,OAAAA,OAAAA,GAAS,MAAM;AAC9D,eAAS,WAAW,EAAE;AACtB,UAAI,CAAC,eAAe,iBAAiB;AACpC,2BAAmB,KAAK;AACxB,mBAAW,MAAMA,OAAM,eAAe,IAAI,GAAG,GAAG;AAAA,MACjD,OAAO;AACN,2BAAmB,KAAK;AAAA,MACzB;AAAA,IACD;AAAA,IACA,CAAC,cAAc,eAAe,UAAU,UAAU,eAAe;AAAA,EAAA;AAGlE,QAAM,kBAAkB;AAAA,IACvB,OAAOA,WAAoC;AAC1C,YAAM,cAAcA,OAAM,SAAA,EAAW;AACrC,UAAI,CAAC,YAAa;AAClB,YAAM,SAAS,aAAa,WAAW;AACvC,UAAI,iCAAS,oBAAoB;AAChC,eAAO,OAAO,iBAAiB;AAAA,MAChC;AACA,YAAM,UAAU,MAAM,SAAS,MAAM;AACrC,YAAM,cAAc,EAAE,KAAK,aAAa,QAAQ,OAAAA,OAAAA,GAAS,QAAQ;AACjE,UAAI,CAAC,QAAS;AACd,UAAI,SAAS;AACZ,2BAAmB,KAAK;AACxB,iBAAS,gBAAgB;AACzB,mBAAW,MAAMA,OAAM,eAAe,IAAI,GAAG,GAAG;AAAA,MACjD;AAAA,IACD;AAAA,IACA,CAAC,cAAc,UAAU,QAAQ;AAAA,EAAA;AAGlC,QAAM,QAAQ,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMnC,eAAe;AAAA,MACd,SAAS;AAAA;AAAA,MACT,MAAM;AAAA;AAAA,IAAA;AAAA,IAEP,SAAS;AAAA,MACR,GAAG,eAAe,IAAI,CAAC,MAAW;AACb,qBAAa,EAAE,UAAU,EAAE;AAC1B,aAAK;AAAA,UACzB,GAAG,KAAK,IAAI,CAAAP,SAAO,aAAa,OAAOA,KAAI,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;AAAA,QAAA;AAGlE,eAAO;AAAA,UACN,GAAG;AAAA,UACH,GAAI,oBAAoB,QACrB;AAAA,YACD,MAAM,CAAC,EAAE,MAAM,KAAAA,MAAK,OAAAO,QAAO,aAAa;AACvC,qBACC5G,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,KAAK;AAAA,kBACL,KAAKqG;AAAAA,kBACL,OAAOO;AAAAA,kBACP,UAAU,CAAC,MAAM,QAAQ,IAAI,QAAQ,CAAC;AAAA,kBACtC,QAAQ;AAAA,kBACR,kBAAArE;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,iBAAiB,CAAC,MAAM8D,SAAQ,mDAAkB,MAAMA;AAAAA,kBACxD;AAAA,gBAAA;AAAA,cAAA;AAAA,YAGH;AAAA,UAAA,IAEC,CAAA;AAAA,UACH,QACCvG,kCAAAA,KAAC,KAAA,EAAI,SAAQ,QAAO,YAAW,UAC7B,UAAA;AAAA,YAAA,EAAE;AAAA,aACF,uBAAG,aAAY,cAAc,uBAAG,cAAc,KAC9CE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,mBAAkB,UAAA,IAAA,CAE9C;AAAA,UAAA,GAEF;AAAA,UAED,sBAAsB,EAAE,OAAO;AAAA;AAAA;AAAA;AAAA,UAI/B,MAAM;AAAA;AAAA,UAEN,SAAS;AAAA,QAAA;AAAA,MAEX,CAAC;AAAA,MACD,GAAI,CAAC,6BACF;AAAA,QACD;AAAA,UACC,IAAI;AAAA,UACJ,eAAe;AAAA,UACf,OAAM,qEAA0B,UAAS,IAAI,KAAK;AAAA,UAClD,QACCA,kCAAAA,IAAC,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAE,GAAG,KAAK,WAAW,EAAE,iBAAiB,gBAAc,GAAK,SAAS,mBAChG,UAAAA,sCAAC,OAAA,EAAI,KAAK,OAAO,OAAO,WAAW,KAAI,aAAA,CAAa,EAAA,CACrD;AAAA,UAED,sBAAsB;AAAA,UACtB,SAAS;AAAA,UACT,uBAAuB;AAAA,YACtB,WAAW;AAAA,UAAA;AAAA,UAEZ,uBAAuB;AAAA,YACtB,WAAW;AAAA,YACX,IAAI;AAAA,cACH,YAAY;AAAA,YAAA;AAAA,UACb;AAAA,UAED,MAAM,CAAC,WACN,qEAA0B,UACzB,yBAAyB,IAAI,CAAC,SAAS;AACtC,kBAAM,eAAe;AAAA,cACpB,GAAG,KAAK;AAAA,cACR,SAAS,MAAM,KAAK,MAAM,QAAQ,KAAK;AAAA,YAAA;AAExC,mBAAO,aAAa,MAAM,YAAY;AAAA,UACvC,CAAC,IACE,CAAC,mCACJA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS,CAAC,MAAM,mBAAmB,GAAG,MAAM,IAAI,QAAQ;AAAA,cAAG,UAAU,EAAC,+CAAe,WAAU,EAAC,+DAAuB;AAAA,cACvH,gDAAC,OAAA,EAAI,KAAK,OAAO,MAAM,KAAI,YAAA,CAAY;AAAA,YAAA;AAAA,UAAA;AAAA,QACxC;AAAA,MAEH,IAEC,CAAA;AAAA,IAAC;AAAA,IAEL,MAAM;AAAA,IACN,oBAAoB;AAAA,MACnB,IAAI;AAAA,QACH,aAAa;AAAA;AAAA,MAAA;AAAA,IACd;AAAA,IAED,kBAAkB;AAAA,IAClB,kBAAkB,OAAO,SAAS;AACjC,YAAM,cAAc,MAAM,MAAM;AAAA,IACjC;AAAA,IACA,mBAAmB,OAAO,SAAS;AAClC,YAAM,cAAc,MAAM,QAAQ;AAAA,IACnC;AAAA,IACA,qBAAqB,MAAM,kBAAA;AAAA,IAC3B,oBAAoB,MAAM;AACzB,yBAAmB,KAAK;AAAA,IACzB;AAAA,IACA,kBAAiB,iCAAQ,WAAU,kBAAkB;AAAA,IAErD,yBAAyB;AAAA,MACxB,mBAAmB;AAAA;AAAA,QAGlB,QACCA,kCAAAA,IAAC,YAAA,EAAW,SAAS,mBAAmB,MAAK,SAC5C,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,WAAW,KAAI,cAAa,GACrD;AAAA,QAED,uBAAuB,CAAC,EAAE,KAAAqG,MAAK,OAAAO,aAAY;;AAC1C,gBAAMC,mBAAgBD,YAAM,SAAA,EAAW,gBAAjBA,mBAA8B,QAAOP,KAAI;AAC/D,gBAAMS,kBAAeF,YAAM,SAAA,EAAW,eAAjBA,mBAA6B,QAAOP,KAAI;AAC7D,iBAAO;AAAA,YACN,IAAI;AAAA,cACH,kBAAkB;AAAA,gBACjB,KAAK;AAAA,cAAA;AAAA,cAEN,iBAAiB;AAAA,cACjB,YAAY;AAAA;AAAA,cAEZ,GAAK,mBAAmBS,iBAAgBD,kBACrC;AAAA,gBACD,sDAAsD;AAAA,kBACrD,SAAS;AAAA,gBAAA;AAAA;AAAA,gBAGV,gCAAgC;AAAA,kBAC/B,SAAS;AAAA,gBAAA;AAAA,gBAEV,2BAA2B;AAAA,kBAC1B,SAAS;AAAA,gBAAA;AAAA;AAAA,gBAGV,wCAAwC;AAAA,kBACvC,SAAS;AAAA,gBAAA;AAAA,gBAEV,8CAA8C;AAAA,kBAC7C,SAAS;AAAA,gBAAA;AAAA,cACV,IAEC,CAAA;AAAA,YAAC;AAAA,UACL;AAAA,QAEF;AAAA,MAAA;AAAA,MAED,kBAAkB;AAAA,QACjB,MAAM;AAAA;AAAA,MAAA;AAAA,MAEP,kBAAkB;AAAA,QACjB,MAAM;AAAA;AAAA,MAAA;AAAA,IACP;AAAA,IAED,kBAAkB,CAAC,EAAE,KAAAR,MAAK,OAAAO,aACzB5G,kCAAAA,IAAAD,kBAAAA,UAAA,EACE,WAAA,6BAAM,uFAEJ,WAAAsG,6BAAK,aACLrG,kCAAAA,IAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAC/B,yBAAe,EAAC,qDAAmBqG,KAAI,oDACtCU,WAAA,EAAQ,OAAM,UACd,UAAA/G,kCAAAA,IAAC,YAAA,EAAW,UAAU,iBAAiB,SAAS,MAAM,eAAeqG,IAAG,GAAG,MAAK,SAAQ,WAAU,cACjG,UAAArG,kCAAAA,IAAC,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,yBAAuB,CAAG,EAAA,CAChE,GACD,EAAA,CAEF,EAAA,CAEF,IAEAA,kCAAAA,IAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAC/B,UAAA,eAAe,EAAC,qDAAmBqG,KAAI,cACvCrG,kCAAAA,IAAC+G,WAAA,EAAQ,OAAM,UACd,UAAA/G,kCAAAA,IAAC,cAAW,UAAU,iBAAiB,SAAS,MAAM,eAAeqG,IAAG,GAAG,WAAU,cACpF,gDAAC,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,OAAO,yBAAuB,CAAG,EAAA,CAChE,GACD,EAAA,CAEF,EAAA,CAEF;AAAA,IAGD,GAAI,QAAQ,eAAe,KAAK;AAAA,MAC/B,kCAAkC,CAAC,EAAE,OAAAO,aACpC5G,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,SAAQ;AAAA,UACR,iDAAYgH,aAAA,EAAI;AAAA,UAChB,WAAU;AAAA,UACV,UAAU;AAAA,UACV,SAAS,MAAM;AACdJ,mBAAM,eAAe,IAAI;AACzB,+BAAmB,IAAI;AAAA,UACxB;AAAA,UACC,YAAE,YAAY;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,IAGF,sBAAsB;AAAA,IACtB,sBAAsB;AAAA,IACtB,oBAAoB,sBAAsB;AAAA,IAC1C,eAAe,CAACP,SAAQ,yBAAyB,WAAW,cAAcA,IAAG,IAAI,iBAAiB;AAAA,IAClG,iBAAiB,mBAAmB;AAAA,IACpC,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,qBAAqB,uBAAuB;AAAA,IAC5C,sBAAsB,wBAAwB;AAAA,IAC9C,oBAAoB;AAAA,IACpB,sBAAsB;AAAA;AAAA,IAEtB,OAAO;AAAA;AAAA;AAAA;AAAA,MAIN;AAAA,MACA,eAAe,EAAE,MAAM,CAAC,WAAW,iBAAiB,EAAA;AAAA,MACpD,UAAU,iBAAiB;AAAA,MAC3B,kBAAkB;AAAA,MAClB;AAAA,MACA,GAAG;AAAA,MACH,SAAS,MAAM,QAAQ,iCAAQ,OAAO,IAAI,iCAAQ,UACjD,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAA;AAAA,MACpC;AAAA,IAAA;AAAA,IAGD,UAAU,CAACA,SAAQA,6BAAK;AAAA;AAAA,IAExB,sBAAsB,CAAC,EAAE,KAAAA,MAAK,OAAAO,aAAY;;AACzC,YAAM,iBACLA,kBAAM,SAAA,MAANA,mBAAkB,eAAlBA,mBAA8B,SAC9BA,kBAAM,SAAA,MAANA,mBAAkB,gBAAlBA,mBAA+B,OAC/B;AACqBA,0BAAM,SAAA,MAANA,mBAAkB,gBAAlBA,mBAA+B,OAAM;AAC3D,YAAM,aAAa,SAAQP,kCAAK,aAALA,mBAAe,SAAS;AACxB,uBAAiBA,KAAI;AAEhD,aAAO;AAAA,QACN,SAAS,MAAM;AACd,yBAAeA,KAAI,EAAE;AAAA,QAGtB;AAAA,QACA,IAAI;AAAA,UACH,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAMR,iBAAiB,CAAC,eACd,aAAa,oBAAoB,YAClC;AAAA,UACH,WAAW;AAAA,YACV,iBAAiB,eACb,iBAAiBA,KAAI,KAAK,gBAAgB,YAC1C,aAAa,oBAAoB;AAAA,UAAA;AAAA,UAEtC,oBAAoB;AAAA,YACnB,iBAAiB;AAAA;AAAA,UAAA;AAAA,QAClB;AAAA,MACD;AAAA,IAEF;AAAA,IACA,qBAAqB,CAAC,aAAkB;AACvC,UAAI,2CAA2C,QAAQ;AAAA,IACxD;AAAA,IACA,sBAAsB;AAAA,IACtB,0BAA0B;AAAA,IAE1B,yBAAyB,MACxBvG,kCAAAA,KAAC,KAAA,EAAI,WAAU,WACd,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,aAAa;AAAA,MACrCA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAE1C,UAAA,EAAE,eAAe,EAAA,CACnB;AAAA,IAAA,GACD;AAAA;AAAA,IAID;AAAA,IACA,uBAAuB;AAAA,IACvB,oBAAoB;AAAA,MACnB,OAAO;AAAA,MACP,MAAM;AAAA;AAAA,MACN,OAAO;AAAA;AAAA,MACP,iBAAiB;AAAA;AAAA,MACjB,eAAe;AAAA,IAAA;AAAA,IAGhB,uBAAuB,CAAC,EAAE,KAAAqG,MAAK,cAAc;AAAA,MAC5C,YAAY;AAAA,QACX,kBAAkB;AAAA,MAAA;AAAA,MAEnB,QAAQ,CAAC,MAAM;AACd,mBAAW,EAAE,OAAO,OAAO,QAAQA,KAAI,EAAE;AAAA,MAC1C;AAAA;AAAA;AAAA;AAAA,MAIA,SAAS;AAAA,MACT,IAAI,CAAC,EAAE,cAAQ;;AAAO;AAAA,UACrB,4BAA4B;AAAA,YAC3B,cAAc;AAAA,cACb,aAAa,IAAG,aAAQ,UAAR,mBAAe,QAAQ,IAAI;AAAA;AAAA,YAAA;AAAA,UAE5C;AAAA,QACD;AAAA;AAAA,IACD;AAAA;AAAA,IAID,0BAA0B;AAAA,MACzB,IAAI;AAAA,QACH,OAAO;AAAA,MAAA;AAAA,IACR;AAAA;AAAA,IAID,uBAAuB;AAAA,MACtB,IAAI;AAAA,QACH,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,gCAAgC;AAAA,UAC/B,QAAQ;AAAA,QAAA;AAAA,QAET,uCAAuC;AAAA,UACtC,OAAO;AAAA,UACP,gBAAgB;AAAA,QAAA;AAAA,QAEjB,mBAAmB;AAAA,UAClB,iBAAiB;AAAA,QAAA;AAAA,QAElB,6CAA6C;AAAA,UAC5C,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,SAAS;AAAA,QAAA;AAAA,MACV;AAAA,IACD;AAAA;AAAA,IAID,mBAAmB;AAAA,MAClB,IAAI;AAAA,QACH,QAAQ;AAAA,MAAA;AAAA,IACT;AAAA,IAED,mBAAmB;AAAA,MAClB,IAAI;AAAA,QACH,QAAQ;AAAA,MAAA;AAAA,IACT;AAAA,IAED,uBAAuB,CAAC,EAAE,MAAM,QAAQ,OAAAO,QAAO,KAAAP,YAAW;AAAA,MACzD,IAAI;AAAA,QACH,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,mBAAmB;AAAA,UAClB,iBAAiB;AAAA,QAAA;AAAA,QAElB,WAAW;AAAA,UACV,iBAAiB;AAAA;AAAA,QAAA;AAAA,QAElB,YAAY;AAAA,MAAA;AAAA,MAEb,SAAS,CAAC,MAAwB;;AACjC,cAAM,SAAS,EAAE;AAIjB,cAAM,YAAY,OAAO,QAAQ,oBAAoB;AAErD,cAAM,gBAAgB,aAAa,CAAC,UAAU,cAAc,aAAa;AAEzE,YAAI,CAAC,cAAe;AAEpB,cAAM,YAAY,OAAO;AACzB,cAAM,oBAAoB,UAAU,sBAAsB;AAE1D,YAAI,CAAC,mBAAmB;AACvB;AAAA,QACD;AAEA,cAAM,iBAAeO,kBAAM,SAAA,MAANA,mBAAkB,eAAlBA,mBAA8B,SAAMA,kBAAM,SAAA,MAANA,mBAAkB,gBAAlBA,mBAA+B,OAAM;AAC9F,cAAM,qBAAqB,iBAAiBP,KAAI;AAGhD,YAAI,gBAAgB,iBAAiBA,KAAI,IAAI;AAC5C;AAAA,QACD;AAGA,YAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,cAAc;AAC7DO,iBAAM,cAAcP,IAAG;AACvB,6BAAmB,IAAI;AAAA,QACxB;AAAA,MACD;AAAA,MACA,SAAS,CAAC,MAA2B;;AACpC,cAAM,kBACLO,YAAM,SAAA,EAAW,gBAAjBA,mBAA8B,OAAM;AAGrC,YAAI,EAAE,QAAQ,UAAU;AACvB,cAAI,kBAAkBP,KAAI,IAAI;AAC7B,qBAAS,gBAAgB;AACzBO,mBAAM,eAAe,IAAI;AAAA,UAC1B,OAAO;AACN,kBAAM,aAAaA,OAAM,SAAA,EAAW;AACpC,gBAAI,YAAY;AACf,4BAAc,EAAE,KAAK,YAAY,QAAQ,WAAW,UAAU,OAAAA,OAAAA,GAAS,MAAM;AAC7E,uBAAS,WAAW,EAAE;AAAA,YACvB;AAAA,UACD;AACA,6BAAmB,KAAK;AACxB,8BAAoB,CAAA,CAAE;AACtB,YAAE,eAAA;AACF,YAAE,gBAAA;AACF;AAAA,QACD;AAGA,YAAI,EAAE,QAAQ,SAAS;AAGtB,qBAAW,MAAM;AAChB,kBAAM,qBAAqBA,OAAM,SAAA,EAAW;AAC5C,kBAAM,oBAAoBA,OAAM,SAAA,EAAW;AAE3C,gBAAI,oBAAoB;AACvB,8BAAgBA,MAAK;AAAA,YACtB;AAEA,gBAAI,mBAAmB;AACtB,6BAAeA,MAAK;AAAA,YACrB;AAAA,UACD,GAAG,CAAC;AAAA,QACL;AAAA,MACD;AAAA,IAAA;AAAA;AAAA,IAID,wBAAwB;AAAA,MACvB,IAAI;AAAA,QACH,OAAO;AAAA,QACP,iBAAiB;AAAA,UAChB,OAAO;AAAA,UACP,WAAW;AAAA,YACV,OAAO;AAAA,UAAA;AAAA,QACR;AAAA,QAED,kBAAkB;AAAA,UACjB,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,MAED,4CAAO,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,mDAAcK,gBAAA,EAAa,IAAI,EAAE,OAAO,IAAI,QAAQ,KAAG,CAAG;AAAA,IAAA;AAAA,IAE3D,2BAA2B;AAAA,MAC1B,IAAI;AAAA,QACH,OAAO;AAAA,QACP,iBAAiB;AAAA,UAChB,OAAO;AAAA,UACP,WAAW;AAAA,YACV,OAAO;AAAA,UAAA;AAAA,QACR;AAAA,QAED,kBAAkB;AAAA,UACjB,OAAO;AAAA,QAAA;AAAA,MACR;AAAA,MAED,4CAAO,gBAAA,EAAe,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA,GAAM;AAAA,MACrD,mDAAcA,gBAAA,EAAa,IAAI,EAAE,OAAO,IAAI,QAAQ,KAAG,CAAG;AAAA,IAAA;AAAA,IAE3D,uBAAuB;AAAA,MACtB,IAAI;AAAA,QACH,WAAW;AAAA,QACX,kBAAkB;AAAA,UACjB,aAAa;AAAA,QAAA;AAAA,MACd;AAAA,IACD;AAAA,IAGD,YAAY;AAAA,IACZ,OAAO;AAAA,MACN,gBAAgB,MAAMjH,kCAAAA,IAAC,gBAAA,EAAe,UAAS,SAAA,CAAS;AAAA,MACxD,UAAU,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MAC/C,mBAAmB,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MACxD,iBAAiB,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MACtD,gBAAgB,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MACrD,gBAAgB,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MACrD,aAAa,MAAMA,kCAAAA,IAAC,aAAA,EAAY,UAAS,SAAA,CAAS;AAAA,MAClD,YAAY,CAAC,UACZA,kCAAAA,IAACkD,SAAA,EAAM,UAAS,SAAS,GAAG,OAAO,OAAM,uBAAA,CAAuB;AAAA,IAAA;AAAA,IAIlE,GAAG;AAAA,EAAA,CACH;AAED,YAAU,MAAM;;AACf,QAAI,oBAAoB;AACvB,WAAI,oCAAO,0BAAP,mBAA8B,MAAM;AACvC,8DAAmB,oCAAO,0BAAP,mBAA8B;AAAA,MAClD;AAAA,IACD;AAAA,EAGD,GAAG,CAAC,kBAAkB,CAAC;AAEvB,YAAU,MAAM;AACf,QAAI,aAAa;AAChB,UAAI,6BAAM,iBAAiB;AAC1B,cAAM,oBAA2B,CAAA;AACjC,cAAM,YAAY,MAAM,SAAA,EAAW;AACnC,cAAM,eAAe,CAACgE,OAAM,YAAY,OAAO;AAC9CA,gBAAK,QAAQ,CAACb,MAAU,UAAkB;;AACzC,kBAAM,SAAS,YAAY,GAAG,SAAS,IAAI,KAAK,KAAK,GAAGA,KAAI,EAAE;AAC9D,gBAAI,UAAU,MAAM,GAAG;AACtB,gCAAkB,KAAKA,IAAG;AAAA,YAC3B;AAGA,iBAAIA,UAAI,YAAJA,mBAAa,QAAQ;AACxB,2BAAaA,KAAI,SAAS,MAAM;AAAA,YACjC;AAAA,UACD,CAAC;AAAA,QACF;AAEA,qBAAa,MAAM,YAAA,EAAc,IAAI;AACrC,oBAAY,mBAAmB,YAAY;AAAA,MAC5C,OAAO;AACN,oBAAY,MAAM,sBAAsB,MAAM,YAAY;AAAA,MAC3D;AAAA,IAED;AAAA,EAED,GAAG,CAAC,cAAc,KAAK,CAAC;AAaxB,YAAU,MAAM;AACf,QAAI,YAAY;AACf,qCAAO;AAAA,IACR;AAAA,EACD,GAAG,CAAC,YAAY,KAAK,CAAC;AAGtB,QAAM,wBAAwB,OAAO,KAAK;AAC1C,YAAU,MAAM;AACf,QACC,sBACA,CAAC,sBAAsB,YACvB,6BAAM,UAAS,GACd;AAED,YAAM,YAAY,MAAM,YAAA,EAAc;AACtC,YAAM,WAAW,UAAU,CAAC;AAC5B,UAAI,UAAU;AACb,8BAAsB,UAAU;AAGhC,YAAI,CAAC,SAAS,gBAAgB,OAAO,KAAK,SAAS,YAAY,EAAE,WAAW,GAAG;AAC9E,mBAAS,eAAe,EAAE,GAAG,SAAS,SAAA;AAAA,QACvC;AACA,cAAM,cAAc,QAAQ;AAC5B,2BAAmB,IAAI;AAAA,MACxB;AAAA,IACD;AAAA,EAED,GAAG,CAAC,oBAAoB,MAAM,KAAK,CAAC;AAGpC,YAAU,MAAM;AACf,QAAI,CAAC,MAAO;AAEZ,QAAI;AACJ,QAAI;AACJ,QAAI,oBAAoB;AACxB,QAAI,wBAAwB;AAG5B,UAAM,kBAAkB,CAAC,MAAkB;AAC1C,YAAM,SAAS,EAAE;AACjB,YAAM,oBAAoB,OAAO;AAAA,QAChC;AAAA,MAAA;AAOD,UAAI,mBAAmB;AACtB,gCAAwB;AACxB,4BAAoB,KAAK,IAAA;AAEzB,YAAI,WAAW;AACd,uBAAa,SAAS;AAAA,QACvB;AAEA,YAAI,mBAAmB;AACtB,uBAAa,iBAAiB;AAAA,QAC/B;AACA,4BAAoB,WAAW,MAAM;AACpC,kCAAwB;AAAA,QACzB,GAAG,GAAG;AAAA,MACP;AAAA,IACD;AAGA,UAAM,cAAc,CAAC,MAAkB;;AACtC,YAAM,cAAa,WAAM,SAAA,MAAN,mBAAkB;AACrC,YAAM,eAAc,WAAM,SAAA,MAAN,mBAAkB;AACtC,UAAI,CAAC,cAAc,CAAC,YAAa;AAEjC,YAAM,SAAS,EAAE;AACjB,YAAM,MAAM,KAAK,IAAA;AAGjB,UAAI,yBAA0B,MAAM,oBAAqB,KAAK;AAC7D;AAAA,MACD;AAIA,YAAM,gBAAgB,OAAO,QAAQ,mBAAmB;AAGxD,UAAI,CAAC,eAAe;AAEnB,YAAI,WAAW;AACd,uBAAa,SAAS;AAAA,QACvB;AAGA,oBAAY,WAAW,YAAY;;AAClC,gBAAM,qBAAoBjE,MAAA,MAAM,SAAA,MAAN,gBAAAA,IAAkB;AAC5C,gBAAM,sBAAqBmE,MAAA,MAAM,SAAA,MAAN,gBAAAA,IAAkB;AAC7C,cAAI,sBAAuB;AAC3B,cAAI,oBAAoB;AACvB,kBAAM,SAAS,aAAa,kBAAkB;AAC9C,kBAAM,cAAc,EAAE,KAAK,oBAAoB,QAAQ,MAAA,GAAS,QAAQ;AACxE,qBAAS,gBAAgB;AACzB,+BAAmB,KAAK;AACxB;AAAA,UACD;AACA,cAAI,mBAAmB;AACtB,kBAAM,SAAS,aAAa,iBAAiB;AAC7C,kBAAM,cAAc,EAAE,KAAK,mBAAmB,QAAQ,MAAA,GAAS,MAAM;AACrE,qBAAS,kBAAkB,EAAE;AAC7B,+BAAmB,KAAK;AAAA,UACzB;AAAA,QACD,GAAG,GAAG;AAAA,MACP;AAAA,IACD;AAGA,aAAS,iBAAiB,aAAa,iBAAiB,IAAI;AAC5D,aAAS,iBAAiB,SAAS,aAAa,IAAI;AAEpD,WAAO,MAAM;AACZ,eAAS,oBAAoB,aAAa,iBAAiB,IAAI;AAC/D,eAAS,oBAAoB,SAAS,aAAa,IAAI;AACvD,UAAI,mBAAmB;AACtB,qBAAa,iBAAiB;AAAA,MAC/B;AACA,UAAI,WAAW;AACd,qBAAa,SAAS;AAAA,MACvB;AAAA,IACD;AAAA,EACD,GAAG,CAAC,OAAO,eAAe,cAAc,QAAQ,CAAC;AACjD,SACCzG,kCAAAA,KAAC,cAAA,EAAa,WAAU,iCACvB,UAAA;AAAA,IAAAE,sCAAC,sBAAmB,OAAc;AAAA,IAElCA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA;AAAA,QACA,MAAM,QAAQ,QAAQ;AAAA,QACtB,SAAS;AAAA,QACT,WAAU;AAAA,QACT,UAAA,mDACC,OAAA,EACA,UAAA;AAAA,UAAAF,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,SAAS;AAAA,cACT,WAAU;AAAA,cACV,UAAA;AAAA,gBAAAE,sCAAC,cAAA,EAAa,WAAU,YACvB,UAAAA,sCAACmH,eAAgB,GAClB;AAAA,sDACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,EAAA,CAC5B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAEDnH,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9EA,kCAAAA,IAAC,OAAA,EAAI,WAAU,sBACd,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,aAAa;AAAA,cACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,YAAA;AAAA,UAAA,GAE1C;AAAA,UACAA,kCAAAA,IAAC,OAAA,EAAI,WAAU,uBACd,UAAAA,kCAAAA,IAAC,YAAA,EAAW,SAAQ,SAAQ,OAAM,kBAChC,UAAA,EAAE,4BAA4B,GAChC,GACD;AAAA,UACC,gBAAgB,IAAI,CAAC,WACrBA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEA,SAAS,MAAM,gBAAgB,MAAM;AAAA,cACrC,gDAAC,YAAA,EAAW,OAAM,wBAAuB,MAAK,MAC5C,iBAAO,OAAA,CACT;AAAA,YAAA;AAAA,YAJK,OAAO;AAAA,UAAA,CAMb;AAAA,UACDA,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAE7E,wBAAwBF,kCAAAA,KAAC,UAAA,EAAS,SAAS,uBAAuB,WAAU,iBAC3E,UAAA;AAAA,YAAAE,kCAAAA,IAAC,cAAA,EAAa,WAAU,YACvB,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,kDACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,6BAA6B,EAAA,CACjC;AAAA,UAAA,EAAA,CACD;AAAA,QAAA,EAAA,CAEF,IAEAF,kCAAAA,KAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,UAAA,eAAe,IAAI,CAAC,WACpBD,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEA,SAAS,MAAM,oBAAoB,MAAM;AAAA,cACzC,WAAU;AAAA,cACV,UAAA;AAAA,gBAAAE,kCAAAA,IAAC,cAAA,EAAa,WAAU,YACvB,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,UAAU,KAAI,WAAA,CAAW,GAClD;AAAA,gBACAA,kCAAAA,IAAC,cAAA,EAAa,WAAU,SAAS,iBAAO,QAAO;AAAA,gBAC/CA,kCAAAA,IAAC,cAAA,EAAa,WAAU,YACvB,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,EAAA,CACjD;AAAA,cAAA;AAAA,YAAA;AAAA,YATK,OAAO;AAAA,UAAA,CAWb;AAAA,UACDA,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,UAC9EF,kCAAAA,KAAC,UAAA,EAAS,SAAS,sBAAsB,WAAU,iBAClD,UAAA;AAAA,YAAAE,kCAAAA,IAAC,cAAA,EAAa,WAAU,YACvB,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS,KAAI,WAAA,CAAW,GACjD;AAAA,kDACC,cAAA,EAAa,WAAU,SACtB,UAAA,EAAE,wBAAwB,GAC5B;AAAA,YACAA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAQ;AAAA,gBACR,OAAM;AAAA,gBACN,WAAU;AAAA,gBACV,gDAACoH,aAAA,EAAiB,IAAI,EAAE,UAAU,uBAAqB,CAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UAC3D,EAAA,CACD;AAAA,QAAA,EAAA,CACD;AAAA,MAAA;AAAA,IAAA;AAAA,IAIFtH,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,UAAU;AAAA,QACV,MAAM,QAAQ,WAAW;AAAA,QACzB,SAAS;AAAA,QACR,UAAA;AAAA,UAAA,+CAAe,IAAI,CAAC,WAAgB;;AACpC,gBACE,OAAO,UAAU,YAChB,2BAAK,kBAAiB,SAAQ,2BAAK,kBAAiB,MACrD,OAAO,UAAU,gBAChB,2BAAK,kBAAiB,SACtB,2BAAK,kBAAiB,OACtB,gCAAK,UAAL,mBAAY,kBAAiB,UAC7B,gCAAK,UAAL,mBAAY,kBAAiB,GAC9B;AAGF,mBACCA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAS,YAAY;AACpB,wBAAM,OAAO,aAAa,GAAG;AAC7B,iCAAe,IAAI;AAAA,gBACpB;AAAA,gBACA,UACC,OAAO,OAAO,aAAa,aACxB,OAAO,SAAS,GAAG,IACnB,QAAQ,OAAO,QAAQ;AAAA,gBAE3B,IAAI,EAAE,YAAY,UAAU,KAAK,IAAA;AAAA,gBAEhC,UAAA;AAAA,kBAAA,iCAAQ;AAAA,kBACTE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,UAAA,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,GAAG,IAAI,OAAO,MAAA,CAClE;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAGH;AAAA,WACC,+DAAuB,UAAS,KAChCF,kCAAAA,KAAAC,kBAAAA,UAAA,EACC,UAAA;AAAA,YAAAC,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,IAAI,EAAE,IAAI,sBAAsB,IAAI,qBAAA,EAAqB,CAAG;AAAA,kDAC7E,OAAA,EAAI,WAAU,qCACb,UAAA,+DAAuB,IAAI,CAAC,WAC5BA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,SAAS,MAAM;AACd,yBAAO,aAAa,GAAG;AACvB,iCAAe,IAAI;AAAA,gBACpB;AAAA,gBACA,WAAU;AAAA,gBACV,UACC,OAAO,OAAO,aAAa,aACxB,OAAO,SAAS,GAAG,IACnB,QAAQ,OAAO,QAAQ;AAAA,gBAE3B,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,UAAA,OAAO,OAAO,UAAU,aAAa,OAAO,MAAM,GAAG,IAAI,OAAO,MAAA,CAClE;AAAA,cAAA;AAAA,YAAA,GAED,CACF;AAAA,UAAA,EAAA,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM,QAAQ,WAAW;AAAA,QACzB,SAAS,MAAM,eAAe,IAAI;AAAA,QAClC,WAAW,MAAM,gBAAA;AAAA,QACjB,OAAM;AAAA,QACN,aAAa;AAAA,QACb,SAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACV,GACD;AAEF,CAAC;ACpxDM,MAAM,YAAY,CAAC,UAAsB;AAC9C,QAAM,EAAE,YAAY;AACpB,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,OAAO;AAC9D,QAAM,CAAC,UAAU,WAAW,IAAIS,eAAM,SAA6B,IAAI;AACvE,QAAM,OAAO,QAAQ,QAAQ;AAE7B,QAAM,cAAc,CAAC,UAA+C;AAClE,gBAAY,MAAM,aAAa;AAAA,EACjC;AAEA,QAAM,cAAc,MAAM;AACxB,gBAAY,IAAI;AAAA,EAClB;AAEA,QAAM,oBAAoB,CAAC,gBAAwB;AACjD,UAAM,iBAAiB,YAAY,YAAA;AACnC,UAAM,WAAW,QAAQ,OAAO,CAAC,WAAmB;AAClD,aACE,OAAO,KAAK,YAAA,EAAc,SAAS,cAAc,KACjD,OAAO,KAAK,cAAc,SAAS,cAAc;AAAA,IAErD,CAAC;AACD,uBAAmB,QAAQ;AAAA,EAC7B;AAEA,QAAM,oBAAoB,MAAM;AAC9B,UAAM,UAAU;AAAA,EAClB;AAEA,SACET,kCAAAA,IAAC,OAAA,EAAI,WAAU,mBACb,iDAAC,aAAA,EACC,UAAA;AAAA,IAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,MAAAE,kCAAAA,IAAC,YAAA,EAAW,WAAU,iBAAgB,UAAA,mBAAe;AAAA,MACrDA,sCAAC,YAAA,EAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,aAChD,UAAAA,kCAAAA,IAAC,SAAI,KAAK,OAAO,MAAM,KAAI,aAAY,GACzC;AAAA,MACAA,kCAAAA,IAACwD,QAAA,EAAK,UAAoB,MAAY,SAAS,aAC7C,UAAAxD,kCAAAA,IAACqH,YAAA,EAAS,SAAS,aAAa,UAAA,OAAA,CAAI,EAAA,CACtC;AAAA,IAAA,GACF;AAAA,IACArH,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,aAAY;AAAA,QACZ,cAAc,CAAC,MAAM;AACnB,4BAAkB,CAAC;AAAA,QACrB;AAAA,QACA,cAAc;AAAA,MAAA;AAAA,IAAA;AAAA,IAEf,gBAAgB,IAAI,CAAC,WACpBF,kCAAAA,KAAC,OAAA,EAAoB,WAAU,cAC7B,UAAA;AAAA,MAAAE,kCAAAA,IAAC,YAAA,EAAW,WAAU,SAAS,UAAA,OAAO,MAAK;AAAA,MAC3CA,kCAAAA,IAAC,YAAA,EAAW,WAAU,eAAe,iBAAO,KAAA,CAAK;AAAA,IAAA,KAFzC,OAAO,EAGjB,CACD;AAAA,IAEDF,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBAAgB,SAAS,mBACtC,UAAA;AAAA,MAAAE,kCAAAA,IAACE,aAAA,EAAQ;AAAA,MACTF,kCAAAA,IAAC,cAAW,UAAA,uBAAA,CAAoB;AAAA,IAAA,EAAA,CAClC;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACjDA,MAAMsH,sBAAoB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAkB;AAEjB,QAAM,QAA8B,CAAA;AACpC,MAAI,CAAC,UAAU;AACd,UAAM;AAAA,4CACJ,UAAA,EAAS,UAAQ,MAAC,OAAM,IACxB,UAAAtH,sCAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC3B,UAAAA,kCAAAA,IAAC,MAAA,EAAI,UAAA,aAAY,GAClB,EAAA,CACD;AAAA,IAAA;AAAA,EAEF;AACA,qCAAS,QAAQ,CAAC,WAAW;AAE5B,UAAM;AAAA,MACLA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAO,OAAO;AAAA,UAEd,UAAU,QAAQ,OAAO,QAAQ;AAAA,UACjC,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,UAAAF,kCAAAA,KAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,YAAA,YAAY,mBACZE,kCAAAA;AAAAA,cAAC8C;AAAAA,cAAA;AAAA,gBACA,SAAST,IAAE,KAAK,QAAQ,OAAO,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA,kDAGrC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,iBAAO,MAAA,CACT;AAAA,UAAA,EAAA,CACD;AAAA,QAAA;AAAA,QAZK,OAAO;AAAA,MAAA;AAAA,IAab;AAED,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACtD,aAAO,QAAQ,QAAQ,CAAC,QAAQ;AAC/B,cAAM;AAAA,UACLrC,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACA,OAAO,IAAI;AAAA,cACX,UAAU,QAAQ,IAAI,QAAQ;AAAA,cAC9B,IAAI,EAAE,IAAI,EAAA;AAAA,cAEV,UAAAF,kCAAAA,KAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,gBAAA,YAAY,mBACZE,kCAAAA;AAAAA,kBAAC8C;AAAAA,kBAAA;AAAA,oBACA,SAAS,QAAQ,WAAU,iCAAQ,QAAQ,IAAI,UAAS,EAAE;AAAA,kBAAA;AAAA,gBAAA;AAAA,sDAG3D,YAAA,EAAW,MAAK,MAAK,OAAM,wBAC1B,cAAI,MAAA,CACN;AAAA,cAAA,EAAA,CACD;AAAA,YAAA;AAAA,YAVK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK;AAAA,UAAA;AAAA,QAWlC;AAAA,MAEF,CAAC;AAAA,IACF;AAAA,EACD;AACA,MAAI,MAAM,eAAe;AACxB,UAAM;AAAA,6CACJ,KAAA,EACA,UAAA;AAAA,QAAA9C,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,KAAA,CAAC;AAAA,QAClBF,kCAAAA,KAAC,YAAS,IAAI,EAAE,KAAK,EAAA,GAAK,SAAS,MAAM,eACxC,UAAA;AAAA,UAAAE,kCAAAA,IAAC,KAAA,EAAI,UAAS,QAAA,CAAQ;AAAA,UACtBF,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,UAAA;AAAA,YAAA;AAAA,YACtC,MAAM;AAAA,UAAA,EAAA,CACnB;AAAA,QAAA,EAAA,CACD;AAAA,MAAA,EAAA,CACD;AAAA,IAAA;AAAA,EAEF;AAEA,SAAO;AACR;AAEA,MAAM2C,kBAAgB,CAAC;AAAA,EACtB;AAAA,EACA;AACD,MAGM;AACL,QAAM,eAAe,KAAK;AAAA,IACzB,CAAC;;AACA,uDAAS,KAAK,CAAC,WAAA;;AAAiB,kBAAAL,MAAA,OAAO,UAAP,gBAAAA,IAAc,SAAM,YAAO,UAAP,mBAAc,SAAQ,OAAO,aAAY,6CAAc,QAAM,6CAAc,SAAQ;AAAA,aAAvI,mBAAuJ,UACvJ;AAAA;AAAA,EAAA;AAEF,SACCtC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,UAAU,IAAI,KAAK,UAAS,WAAA;AAAA,MACtE,UAAA;AAAA,QAAA,aAAa,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAAA,QAClC,KAAK,SAAS;AAAA,QAEd;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIJ;AAEA,MAAM,cAAc,CAAC,UAAe;;AACnC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAA,CAAE;AACzC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,MAAM,gBAAgB,MAAM,UAAU,MAAM,iBAAiB,CAAA,IAAK,GAAG;AAExH,QAAM,iBAAiB,CAAC,kBAAyB;AAChD,WAAO,+CAAe,OAAO,CAAC,WAAW;AAAA,EAC1C;AAEA,QAAM,mBAAmB,YAAY,MAAM;AAC1C,eAAW,MAAM,OAAO;AAAA,EACzB,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,YAAU,MAAM;AACf,qBAAA;AAAA,EACD,GAAG,CAAC,gBAAgB,CAAC;AAErB,QAAM,eAAe,CAAC,GAAQ,UAAU;;AACjC,QAAI,SAAQsC,MAAA,uBAAG,WAAH,gBAAAA,IAAW;AAC3B,QAAG,MAAM,gBAAgB;AACxB,YAAM,UAAS,oCAAO,UAAP,mBAAc;AAC7B,YAAM,KAAK,cAAc,KAAK,QAAK,uBAAG,UAAQ,iCAAQ,KAAI;AAC1D,UAAG,IAAG;AACL,gBAAQ,cAAc,OAAO,CAAA,OAAK,uBAAG,UAAQ,iCAAQ,KAAI;AAAA,MAC1D;AACA,cAAQ,+BAAO,OAAO;AAAA,IACvB;AACA,qBAAiB,KAAK;AACtB,QAAI,MAAM,UAAU;AACnB,YAAM,SAAS,KAAK;AAAA,IACrB;AAAA,EACH;AAEA,YAAU,MAAM;AACf,qBAAiB,MAAM,gBAAgB,MAAM,UAAU,MAAM,iBAAiB,KAAK,GAAG;AAAA,EACvF,GAAG,CAAC,MAAM,cAAc,MAAM,OAAO,MAAM,cAAc,CAAC;AAEzD,QAAM,EAAE,EAAA,IAAM,eAAA;AAEf,SACCtC,kCAAAA,KAAAC,4BAAA,EACC,UAAA;AAAA,IAAAC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,WAAS;AAAA,QACT,aAAa,MAAM;AAAA,QACnB,OAAO,MAAM;AAAA,QACb,OAAO;AAAA,QACP,cAAc,MAAM,iBAAiB,MAAM,iBAAiB,CAAA,IAAK;AAAA,QACjE,UAAU,MAAM;AAAA,QAChB,MAAM,MAAM,QAAQ;AAAA,QACpB,UAAU,QAAQ,+BAAO,cAAc;AAAA,QACvC,UAAU,QAAQ,+BAAO,QAAQ;AAAA,QACjC,SAAQ;AAAA,QAER,IAAK,QAAQ,+BAAO,cAAc,MAAK,+CAAe,UAAU,EAAE,uBAAuB,EAAE,SAAS,oBAAoB,UAAU,QAAA,MAAa,EAAE,UAAU,QAAA;AAAA,QAC3J,WACC,MAAM,oBAAkB,oBAAe,aAAa,MAA5B,mBAA+B,UACpD,gBACA;AAAA,QAEJ,OACE,EAAC,+BAAO,mBAAkB,CAAC,MAAM,WAC/BA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,cACEA,kCAAAA,IAAC,gBAAA,EAAe,UAAS,OACtB,gBAAM,SACLA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,SAAS,MAAM,MAAM,SAAS,IAAI;AAAA,gBAClC,MAAK;AAAA,gBACL,IAAI,EAAE,IAAI,IAAA;AAAA,gBACV,MAAK;AAAA,gBACL,gDAAC,OAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,cAAA;AAAA,YAAA,EACnC,CAEJ;AAAA,UAAA;AAAA,QAAA,IAGF;AAAA,QAEN,aAAa,CAAC,aAAA;;qFAEX,UAAA,MAAM,QAAQ,QAAQ,IACtBA,kCAAAA;AAAAA,YAAC6C;AAAAA,YAAA;AAAA,cACA,eAAe,MAAM;AAAA,cACrB,MAAM,eAAe,QAAQ;AAAA,cAC7B,aAAa,MAAM;AAAA,cACnB,UAAU,+BAAO;AAAA,cACjB,UAAU,MAAM;AAAA,cAChB,WAAW;AAAA,gBACV,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,QAAQ;AAAA;AAAA,kBAER,0BAA0B;AAAA,oBACxB,OAAO;AAAA,oBACP,YAAY;AAAA,kBAAA;AAAA,kBAEd,yBAAyB;AAAA,oBACxB,OAAO;AAAA,oBACP,WAAU;AAAA,sBACT,OAAO;AAAA,oBAAA;AAAA,kBACR;AAAA,gBACD;AAAA,cACF;AAAA,YACF;AAAA,UAAA,MAGAT,MAAA,mCAAS;AAAA,YACR,CAAC,WAAA;;AACC,wBAAAA,MAAA,OAAO,UAAP,gBAAAA,IAAc,SAAM,YAAO,UAAP,mBAAc,SAAQ,OAAO,aAAY,qCAAU,QAAM,qCAAU,SAAQ;AAAA;AAAA,gBAFlG,gBAAAA,IAGG,UACH,YACA,MAAM,YAAA,CAER;AAAA;AAAA,QAED,mBAAmB,GAAG,EAAE,eAAe,CAAC,IAAI,MAAM,KAAK;AAAA,QACvD,cAAc,MAAM;AAAA,QACpB,aAAa,MAAM,eAAe;AAAA,QAClC,UAAU;AAAA,QACV,SAAS,+BAAO;AAAA,QACf,UAAAkF,oBAAkB;AAAA,UAClB;AAAA,UACA,UAAU,QAAQ,MAAM,cAAc;AAAA,UACtC,aAAa,MAAM;AAAA,UACnB,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,OAAO;AAAA,QAAA,CACP;AAAA,MAAA;AAAA,IAAA;AAAA,IAED,MAAM,kBAAkB,MAAM,QAAQ,aAAa,KACnDtH,kCAAAA,IAACyC,iBAAA,EAAc,MAAM,eAAe,QAAA,CAAkB;AAAA,EAAA,GAExD;AAEF;AAEA,YAAY,YAAY;AAAA,EACvB,MAAM,UAAU,OAAO;AAAA,EACvB,aAAa,UAAU,OAAO;AAAA,EAC9B,OAAO,UAAU,OAAO;AAAA,EACxB,MAAM,UAAU;AAAA,EAChB,SAAS,UAAU;AAAA,IAClB,UAAU,MAAM;AAAA,MACf,OAAO,UAAU;AAAA,MACjB,OAAO,UAAU;AAAA,IAAA,CACjB;AAAA,EAAA,EACA;AAAA,EACF,cAAc,UAAU;AAAA,EACxB,gBAAgB,UAAU;AAAA,EAC1B,IAAI,UAAU;AAAA,EACd,UAAU,UAAU;AAAA,EACpB,gBAAgB,UAAU;AAAA,EAC1B,UAAU,UAAU;AAAA,EACpB,UAAU,UAAU;AAAA,EACpB,cAAc,UAAU;AAAA,EACxB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,eAAe,UAAU;AAAA,EACzB,YAAY,UAAU;AAAA,EACtB,eAAe,UAAU;AAAA,EACzB,UAAU,UAAU;AACrB;ACvPA,MAAM,iBAAgD,CAAC;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,YAAY;AAAA,EACZ;AACF,MAAM;AACJ,QAAM,cAAc,eAAA;AAGpB,QAAM,gBAAgB,QAAQ,MAAM;AAClC,QAAI,CAAC,aAAa;AAChB,aAAO;AAAA,IACT;AAGA,QAAI,uBAAuB;AACzB,aAAO,sBAAsB,WAAW;AAAA,IAC1C;AAGA,QAAI,oBAAoB;AACtB,YAAM,EAAE,aAAa,UAAU,WAAW,UAAU;AAEpD,YAAM,UAAU,SAAS,IAAI,CAAC,EAAE,QAAQ,KAAK,QAAQ,UAAU;AAC7D,cAAM,cAAcJ,IAAE,IAAI,aAAa,KAAK,CAAA,CAAE;AAC9C,eAAO,YAAY,GAAG,KAAK;AAAA,MAC7B,CAAC;AAED,aAAO,aAAa,QAChB,QAAQ,MAAM,OAAO,IACrB,QAAQ,KAAK,OAAO;AAAA,IAC1B;AAGA,QAAI,aAAa;AACf,YAAM,EAAE,SAAS,QAAQ,KAAK,WAAW,SAAS;AAElD,YAAM,UAAU,QAAQ,IAAI,CAAA,QAAO;AACjC,cAAM,cAAcA,IAAE,IAAI,aAAa,KAAK,CAAA,CAAE;AAC9C,eAAO,YAAY,GAAG,KAAK;AAAA,MAC7B,CAAC;AAED,aAAO,aAAa,QAChB,QAAQ,MAAM,OAAO,IACrB,QAAQ,KAAK,OAAO;AAAA,IAC1B;AAGA,QAAI,UAAU,QAAQ;AACpB,YAAM,cAAcA,IAAE,IAAI,aAAa,QAAQ,CAAA,CAAE;AACjD,aAAO,YAAY,MAAM,KAAK;AAAA,IAChC;AAGA,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,QAAQ,QAAQ,aAAa,oBAAoB,qBAAqB,CAAC;AAGxF,QAAM,iBAAiB,MACrBvC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI;AAAA,QACF,SAAS;AAAA,QACT,eAAe;AAAA,QACf,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,KAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAW;AAAA;AAAA,QACX,KAAK;AAAA,QACL,WAAW;AAAA,QACX,GAAG;AAAA,MAAA;AAAA,MAGL,UAAA;AAAA,QAAAE,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,IAAI,EAAE,UAAU,EAAE,IAAI,QAAQ,IAAI,SAAO;AAAA,YAC1C,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGDA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,QAOVA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACR,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGDA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,OAAM;AAAA,YACN,QAAO;AAAA,YACP,IAAI,EAAE,IAAI,GAAG,UAAU,QAAA;AAAA,YACxB,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA;AAAA,EAAA;AAKJ,MAAI,CAAC,eAAe,OAAO,KAAK,WAAW,EAAE,WAAW,GAAG;AACzD,WAAO;AAAA,EACT;AAGA,MAAI,eAAe;AACjB,+EAAU,UAAS;AAAA,EACrB;AAEA,SAAO,kDAAa,gBAAA,CAAA,CAAe,0CAAM,UAAA,EAAS,IAAI,YAAY,SAAO,KAAA,CAAC;AAC5E;AAKO,MAAM,yBAAyB;AAAA;AAAA,EAEpC,QAAQ,CAAC,QAAgB,YAA8B;AAAA,IACrD;AAAA,IACA;AAAA,EAAA;AAAA;AAAA,EAIF,aAAa,CACX,SACA,QACA,WAAyB,UACrB;AAAA,IACJ,aAAa,EAAE,SAAS,QAAQ,SAAA;AAAA,EAAS;AAAA;AAAA,EAI3C,SAAS,CACP,aACA,WAAyB,WACrB;AAAA,IACJ,oBAAoB,EAAE,aAAa,SAAA;AAAA,EAAS;AAAA;AAAA,EAI9C,QAAQ,CAAC,aAA4C;AAAA,IACnD,uBAAuB;AAAA,EAAA;AAE3B;AClLA,MAAM,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,MAAM,gBAAgB,WAAW,SAAS,UAA0B;AAC7H,SACEF,uCAAC,SAAI,WACF,UAAA;AAAA,IAAA,mCAAS,IAAI,CAAC,QACbE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WACE,IAAI,QACA,IAAI,QACJ,YAAY,2BAAK,QAAQ;AAAA,QAG/B,SAAS,IAAI,UAAU,IAAI,UAAU;AAAA,QACrC,WAAW,IAAI,OAAO,IAAI,OAAO;AAAA,QACjC,UAAU,QAAQ,IAAI,QAAQ;AAAA,QAC9B,SAAS,IAAI;AAAA,QAEZ,cAAI,SAAS;AAAA,MAAA;AAAA,MANT,IAAI;AAAA,IAAA;AAAA,IASZ,0BACCA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,UACZ,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAS,uBAAuB,WAAW,CAAA;AAAA,QAC3C,WAAW,uBAAuB;AAAA,QAClC,yBAAyB;AAAA,QACzB,sBAAsB;AAAA,QACtB,SAAS;AAAA,QACT,kBAAkB;AAAA,UAChB,SAAS;AAAA,UACT,IAAI,CAAC,EAAC,eAAc;AAAA,YAClB,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,aAAa,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,cACjC,cAAc;AAAA,cACd,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,IAAI;AAAA,cACJ,OAAO,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,cAC3B,UAAU;AAAA,gBACR,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,cAAA;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,QAEF,yBAAyB;AAAA,UACvB,OAAO;AAAA,YACL,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,GAAG,uBAAuB;AAAA,UAAA;AAAA,QAC5B;AAAA,QAEF;AAAA,QAEC,UAAA,uBAAuB;AAAA,MAAA;AAAA,IAAA,EAC1B,CACF;AAAA,EAAA,GAEJ;AAEJ;ACNA,MAAM,kBAAkB,CAAC,UAA8B;;AACrD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,UAAU,CAAA;AAAA,IACV;AAAA,IACA,cAAc;AAAA,IACd,aAAa,CAAA;AAAA,IACb,qBAAqB,CAAA;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACtB;AAAA;AAAA,IAEA,UAAU,CAAA;AAAA,IACV,cAAc;AAAA;AAAA,IAEd,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,aAAa;AAAA,IACb,aAAa,CAAA;AAAA,IACb;AAAA;AAAA,IAEA,yBAAyB,CAAA;AAAA,EAAC,IACxB;AAEJ,QAAM,gBAAe,yCAAY,eAAc;AAC/C,QAAM,cAAa,yCAAY,aAAY;AAC3C,QAAM,eAAc,yCAAY,eAAc;AAI9C,QAAM,WAAW,eAAA;AACjB,QAAMuH,eACN;AAAA,IAEE,2BAA2B;AAAA,MACzB,cAAc;AAAA,QACZ,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,cAAc;AAAA,MAAA;AAAA,MAEhB,yBAAyB;AAAA,QACvB,SAAS;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASX,SAAS;AAAA,MACT,KAAK;AAAA,MACL,OAAO;AAAA;AAAA,MAEP,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,QAAQ;AAAA,IAAA;AAAA,EAEV;AAEF,QAAM,aACN;AAAA,IACE,QAAQ;AAAA,IACR,iBAAiB;AAAA,MACf,aAAa;AAAA,IAAA;AAAA,IAEf,6BAA6B;AAAA;AAAA,MAE3B,UAAU;AAAA,MACV,OAAO;AAAA,IAAA;AAAA,IAET,sCAAsC;AAAA,MACpC,QAAQ;AAAA,IAAA;AAAA,IAEV,qBAAqB;AAAA,MACnB,OAAO;AAAA,IAAA;AAAA,EACT;AAKF,QAAM,kBAAkB;AAAA;AAAA;AAAA,IAGtB,GAAI,iBAAiB,CAAC,EAAE,OAAO,OAAA,CAAQ,IAAI,CAAA;AAAA,IAC3C;AAAA,MACE,OAAO;AAAA,IAAA;AAAA,EACT;AAEF,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAmB,eAAe;AAC5E,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAiB,CAAC;AAW5C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI;AAAA,IAC1C;AAAA,EAAA;AAGF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAgB,CAAA,CAAE;AACpD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAA;AAClC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAC/C,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAA6B,IAAI;AAC7E,QAAM,CAAC,YAAY,aAAa,IAAI;AAAA,IAClC,MAAM,mCAAU,YAAY,EAAE,QAAA,IAC1B,MAAM,mCAAU,YAAY,EAAE,OAAA,wBAC1B,KAAA;AAAA,EAAK;AAEf,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAyB;AAAA,IACrE,WAAW,MAAM,mCAAU,aAAa,EAAE,QAAA,IACtC,MAAM,mCAAU,aAAa,EAAE,OAAA,wBAC3B,KAAA;AAAA,IACR,SAAS,MAAM,mCAAU,WAAW,EAAE,QAAA,IAClC,MAAM,mCAAU,WAAW,EAAE,OAAA,wBACzB,KAAA;AAAA,IACR,KAAK;AAAA,EAAA,CACN;AAED,QAAM,YAAY,OAA8B,IAAI;AACpD,QAAM,gBAAgB,OAAuB,IAAI;AACjD,QAAM,oBAAoB,OAAuB,IAAI;AAErD,QAAM,wBAAwB,MAAM;AAClC,cAAU,UAAU;AACpB,YAAQ,KAAK;AAAA,EACf;AAOA,QAAM,yBAAyB,CAAC,SAAc;AAC5C,QAAI,CAAC,mBAAoB;AAEzB,QAAI,gBAAgB,EAAE,GAAG,KAAA;AAGzB,QAAI,KAAK,eAAe,YAAY,MAAK,yCAAY,aAAY;AAC/D,oBAAc,WAAW,UAAU,IAAI,KAAK;AAC5C,UAAI,WAAW,eAAe,aAAc,QAAO,cAAc;AAAA,IACnE;AACA,QAAI,KAAK,eAAe,UAAU,MAAK,yCAAY,WAAU;AAC3D,oBAAc,WAAW,QAAQ,IAAI,KAAK;AAC1C,UAAI,WAAW,aAAa,WAAY,QAAO,cAAc;AAAA,IAC/D;AACA,QAAI,KAAK,eAAe,YAAY,MAAK,yCAAY,aAAY;AAC/D,oBAAc,WAAW,UAAU,IAAI,KAAK;AAC5C,UAAI,WAAW,eAAe,aAAc,QAAO,cAAc;AAAA,IACnE;AAEA,QAAI,gBAAgB;AAClB,yBAAmB,aAAa;AAAA,IAClC,OAAO;AAEL,YAAM,cAAc;AAAA,QAClB;AAAA,QAAc;AAAA,QAAY;AAAA,QAC1B,yCAAY;AAAA,QAAY,yCAAY;AAAA,QAAU,yCAAY;AAAA,MAAA,EAC1D,OAAO,OAAO;AAEhB,YAAM,OAAO,EAAE,GAAG,cAAA;AAClB,kBAAY,QAAQ,CAAA,QAAO,OAAO,KAAK,GAAG,CAAC;AAE3C,yBAAmB,IAAI;AAAA,IACzB;AAAA,EACF;AAEA,QAAM,mBAAmB,OAAO,UAA8B;AAE5D,QAAI,CAAC,eAAgB;AACrB,iBAAa,KAAK;AAClB,QAAI,UAAU,UAAU;AACtB,gBAAU,UAAU,cAAc;AAClC,cAAQ,IAAI;AAAA,IACd,OAAO;AACL,YAAM,OAAO,MAAM,uBAAuB;AAAA,QACxC,OAAO,MAAM,KAAK;AAAA,QAClB,MAAM;AAAA,QACN,IAAI;AAAA,MAAA,CACL;AACD,6BAAuB;AAAA,QACrB,aAAY,6BAAM,QAAO,6BAAM,OAAO;AAAA,QACtC,WAAU,6BAAM,MAAK,6BAAM,KAAK;AAAA,MAAA,CACjC;AACD,4BAAA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,cAAc,CAAC,UAAiB;AACpC,QACE,UAAU,WACV,UAAU,QAAQ,SAAS,MAAM,MAAqB,GACtD;AACA;AAAA,IACF;AAEA,0BAAA;AAAA,EACF;AACA,QAAM,qBAAqB,CAAC,UAAe;AACzC,QAAI,cAAc,KAAK,CAAC,SAAS,KAAK,SAAS,MAAM,KAAK,GAAG;AAC3D,uBAAiB,cAAc,OAAO,CAAC,UAAS,6BAAM,UAAS,MAAM,KAAK,CAAC;AAC3E,YAAM,YAAY,MAAM,SAAS,MAAM;AACvC,YAAM,YAAW,yCAAa,eAAc;AAC5C,6BAAuB,EAAE,CAAC,QAAQ,GAAG,MAAM,WAAW,CAAA,IAAK,MAAM;AACjE;AAAA,IACF;AACA,qBAAiB,CAAC,GAAG,eAAe,KAAK,CAAC;AAAA,EAC5C;AAGA,QAAM,iBAAgB,iDAAgB,IAAI,CAAC,YAAiB;AAAA,IAC1D,KAAK,OAAO,SAAS,OAAO;AAAA,IAC5B,OAAO,OAAO,QAAQ,OAAO,SAAS,UAAU,OAAO,SAAS,OAAO,GAAG;AAAA,IAC1E,aAAa,OAAO,eAAe,OAAO,QAAQ,OAAO;AAAA,IACzD,SAAS,OAAO,UAAU,SAAa,OAAO,WAAW,OAAO,SAAS,OAAO;AAAA,IAChF,WAAU,yCAAa,OAAO,SAAS,OAAO,SAAQ,OAAO,SAAS,OAAO;AAAA,IAC7E,cAAc,OAAO,gBAAgB;AAAA,IACrC,UAAU,OAAO,YAAY;AAAA,IAC7B,SAAS,OAAO,WAAW;AAAA,EAAA,QACtB,CAAA;AAEP,QAAM,UAAU;AAAA,IACd;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,OAAO;AAAA,MAC1B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,YAAY;AAAA,MAC/B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,cAAc;AAAA,MACjC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,WAAW;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,eAAe;AAAA,MAClC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,gBAAgB;AAAA,MACnC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,kBAAkB;AAAA,MACrC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,eAAe;AAAA,MAClC;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AACd,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IAAA;AAAA,EACF;AAGF,QAAM,YAAY,CAAC,UAAe;AAChC,WAAO,cAAc,KAAK,CAAA,UAAQ,6BAAM,WAAS,+BAAO,MAAK;AAAA,EAC/D;AAEA,QAAM,2BAA2B,MAAM;AACrC,UAAM,kBAAkB;AAAA,MACtB,YAAY,MAAM,gBAAgB,SAAS,EAAE,OAAO,YAAY;AAAA,MAChE,UAAU,MAAM,gBAAgB,OAAO,EAAE,OAAO,YAAY;AAAA,IAAA;AAE9D,UAAMC,cAAa;AAAA,MACjB,YAAY,MAAM,UAAU,EAAE,OAAO,YAAY;AAAA,IAAA;AAInD,2BAAuB;AAAA,MACrB,GAAI,cAAc,kBAAkBA;AAAAA,IAAA,CACrC;AACD,0BAAA;AAAA,EACF;AACA,WAAS,WAAW,KAAK;AACvB,WAAO,cAAc,KAAK,CAAA,UAAQ,6BAAM,UAAS,GAAG;AAAA,EACtD;AAEA,QAAM,qBAAqB,CAACC,aAAiB;AAC3C,UAAM,YAAY,MAAMA,qCAAU,aAAa,EAAE,QAAA,IAAY,MAAMA,SAAQ,YAAY,CAAC,EAAE,OAAA,wBAAe,KAAA;AACzG,UAAM,UAAU,MAAMA,qCAAU,WAAW,EAAE,QAAA,IAAY,MAAMA,SAAQ,UAAU,CAAC,EAAE,OAAA,wBAAe,KAAA;AACnG,WAAO,EAAE,WAAW,QAAA;AAAA,EACtB;AAEA,YAAU,MAAM;AACd,QAAI,mCAAU,cAAc;AAC1B;AAAA,QACE,MAAM,mCAAU,YAAY,EAAE,QAAA,IAC1B,MAAM,mCAAU,YAAY,EAAE,OAAA,wBAC1B,KAAA;AAAA,MAAK;AAAA,IAEjB;AAAA,EACF,GAAG,CAAC,mCAAU,cAAc,WAAW,CAAC;AAExC,YAAU,MAAM;AACd,uBAAmB;AAAA,MACjB,GAAG;AAAA,MACH,GAAG,mBAAmB,OAAO;AAAA,IAAA,CAC9B;AAAA,EAEH,GAAG,CAAC,mCAAU,aAAa,mCAAU,aAAa,CAAC;AAEnD,YAAU,MAAM;AACd,QAAI,MAAM;AACR,UAAI,aAAa;AACf,2BAAmB;AAAA,UACjB,GAAG;AAAA,UACH,GAAG,mBAAmB,OAAO;AAAA,QAAA,CAC9B;AAAA,MACH,OAAO;AACL;AAAA,UACE,MAAM,mCAAU,YAAY,EAAE,QAAA,IAC1B,MAAM,mCAAU,YAAY,EAAE,OAAA,wBAC1B,KAAA;AAAA,QAAK;AAAA,MAEjB;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,MAAM,WAAW,CAAC;AAEtB,YAAU,MAAM;AACd,aAAS,gBAAgB;AAAA,EAE3B,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,iBAAa,eAAe,kBAAkB,CAAC;AAAA,EAEjD,GAAG,CAAA,CAAE;AACL,YAAU,MAAM;AACd,qBAAiB,UAAU;AAAA,EAE7B,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,qBAAqB,MAAM;AAC/B,WACEzH,kCAAAA;AAAAA,MAACwD;AAAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,MAAM,QAAQ,cAAc;AAAA,QAC5B,SAAS;AAAA,QAIR,UAAA,iDAAgB,IAAI,CAAC,SACpB1D,kCAAAA,KAAC,UAAA,EAAS,SAAS,MAAM,mBAAmB,IAAI,GAAc,OAAO,6BAAM,OACzE,UAAA;AAAA,UAAAE,kCAAAA,IAAC8C,YAAA,EAAS,SAAS,UAAU,IAAI,EAAA,CAAG;AAAA,UACpC9C,kCAAAA,IAAC,YAAA,EAAW,IAAI,EAAE,YAAY,OAAA,GAAU,OAAM,qBAAoB,MAAK,MAAM,UAAA,EAAE,6BAAM,IAAI,EAAA,CAAE;AAAA,QAAA,EAAA,GAFrC,IAGxD;AAAA,MACD;AAAA,IAAA;AAAA,EAIP;AAEA,QAAM,eAAe,CAAC;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,SAAA0H;AAAAA,IACA,OAAO;AAAA,IACP,mBAAmB;AAAA,EAAA,MACV;AACT,QAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAM,QAAO;AAEtC,UAAM,cAAa,yCAAY,YAAW;AAC1C,UAAM,YAAY,mCAAU;AAC5B,UAAM,aAAa,MAAM,QAAQ,SAAS,IAAI,UAAU,SAAS,IAAI,CAAC,CAAC;AAEvE,QAAI,oBAAoB;AACxB,QAAI,CAAC,cAAc,eAAe,YAAY,WAAW,EAAE,SAAS,OAAO,KAAK,YAAY;AAC1F,0BAAoB;AAAA,QAClB,GAAI,OAAO,iBAAiB,WAAW,eAAe,CAAA;AAAA,QACtD,kBAAkB,aAAc,MAAM,QAAQ,SAAS,IAAI,UAAU,KAAK,GAAG,IAAI,YAAa;AAAA,MAAA;AAAA,IAElG;AAEA;AAAA;AAAA,MAEE1H,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,GAAG,GAAG;AAAA,UACf,mBAAmB;AAAA,UACnB,OAAO,mCAAU;AAAA,UACjB,UAAU,CAAC,MAAM,uBAAuB,EAAE,CAAC,QAAQ,GAAG,EAAE,OAAO,OAAO;AAAA,UACtE;AAAA,UACA;AAAA,UACA,YAAY,CAAC,WAAW,CAAC,CAAC0H;AAAAA,UAC1B,SAASA;AAAAA,UACT;AAAA,UACA;AAAA,UACA,eAAe;AAAA,UAEf,aAAAH;AAAA,UACA;AAAA,QAAA;AAAA,MAAA;AAAA;AAAA,EAIN;AACA,QAAM,kBAAkB,MACtBzH,kCAAAA,KAAAC,kBAAAA,UAAA,EACG,UAAA;AAAA,IAAA,cAAc,IAAI,YAAY;AAAA,IAC9B,uBAAuB,IAAI,CAAC,EAAE,KAAK,UAAA,MAClCC,kCAAAA,IAACS,eAAM,UAAN,EAA0B,UAAA,UAAA,GAAN,GAAgB,CACtC;AAAA,EAAA,GACH;AAEF,QAAM,oBAAoB,MAAM;AAC9B,sBAAkB,IAAI;AAAA,EACxB;AAEA,QAAM,kBAAkBA,eAAM,KAAK,MAAM;;AACvC,UAAMkH,eAAc,MAAM,kBAAkB,IAAI;AAChD,WACE3H,kCAAAA;AAAAA,MAACwD;AAAAA,MAAA;AAAA,QACC,MAAM,QAAQ,cAAc;AAAA,QAC5B,UAAU;AAAA,QACV,SAASmE;AAAAA,QACT,cAAc;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,QAAA;AAAA,QAEd,iBAAiB;AAAA,UACf,UAAU;AAAA,UACV,YAAY;AAAA,QAAA;AAAA,QAGb,WAAAvF,MAAA,iEAAwB,YAAxB,gBAAAA,IAAiC,IAAI,CAAC,QAAQ,UAC7CpC,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM;AACb,qBAAO,SAAA;AACP,gCAAkB,IAAI;AAAA,YACxB;AAAA,YAEA,iDAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAO,WAAW,UAAA;AAAA,cAAA;AAAA,cAAE,OAAO;AAAA,YAAA,EAAA,CAAM;AAAA,UAAA;AAAA,UANlE;AAAA,QAAA;AAAA,MAQR;AAAA,IAAA;AAAA,EAGP,CAAC;AAED,gDACG,OAAA,EACC,UAAA;AAAA,IAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,mBACb,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,gCACZ,UAAA,cACCA,kCAAAA,IAAC,SAAI,OAAO,EAAE,QAAQ,IAAA,GACpB,UAAAA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS;AAAA,UACT,SAAS;AAAA,UACT,yBAAyB;AAAA,UAExB,UAAA;AAAA,QAAA;AAAA,MAAA,EACH,CACF,IAEAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBACzC,UAAA,MAAA,CACH,EAAA,CAEJ;AAAA,MAEC,aACCA,kCAAAA,IAAC,OAAA,EAAI,WAAU,8BACZ,UAAA,WACH;AAAA,MAEFA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAQ;AAAA,UACR,WAAU;AAAA,UACV;AAAA,QAAA;AAAA,MAAA;AAAA,IACF,GACF;AAAA,KACC,6BAAM,UACLA,kCAAAA,IAAC,OAAA,EACC,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ,CAAA;AAAA,QACd;AAAA,QACA;AAAA,QACA,eAAe;AAAA,MAAA;AAAA,IAAA,GAEnB,IACE;AAAA,2CACH,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,gBAAgB,iBAAiB,IAAI,KAAK,YAAY,UAAU,UAAU,QAAQ,KAAK,KACjH,UAAA;AAAA,MAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,kCACZ,UAAA;AAAA,QAAA,gBAAA;AAAA,QAGA,kBAAkB,gBAAgB,mCAAU,gBAC3CE,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,SAClC,UAAAF,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK;AAAA,YACL,SAAS,MAAM;AACb,kBAAI,CAAC,MAAM;AACT,0BAAU,UAAU,kBAAkB;AACtC,wBAAQ,IAAI;AAAA,cACd,OAAO;AACL,sCAAA;AAAA,cACF;AAAA,YACF;AAAA,YAEA,UAAA;AAAA,cAAAA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO,GAAG,MAAM,mCAAU,aAAa,EAAE,OAAO,YAAY,CAAC,MAAM,MAAM,mCAAU,WAAW,EAAE,OAAO,YAAY,CAAC;AAAA,kBAEpH,UAAA;AAAA,oBAAAA,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAC1B,UAAA;AAAA,sBAAA,EAAE,kBAAkB;AAAA,sBAAE;AAAA,oBAAA,GACzB;AAAA,oBACAA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBAEJ,UAAA;AAAA,0BAAA,MAAM,mCAAU,aAAa,EAAE,OAAO,YAAY;AAAA,0BAAE;AAAA,0BAAG;AAAA,0BACvD,MAAM,mCAAU,WAAW,EAAE,OAAO,YAAY;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACnD;AAAA,gBAAA;AAAA,cAAA;AAAA,oDAED2D,aAAA,CAAA,CAAsB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,GAE3B;AAAA,QAGD,kBAAkB,CAAC,eAAe,uBAAuB,CAAC,CAAC,SAAS,WAAW,EAAE,SAAS,SAAS,KAClG3D,kCAAAA,KAAAC,kBAAAA,UAAA,EACG,UAAA;AAAA,WAAA,mDAAiB,oDACf,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,MAAA,GAClC,UAAAC,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,SAAS,YAAA;AAAA,cAElB,UAAAF,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO,GAAG,MAAM,mDAAiB,SAAS,EAAE,OAAO,YAAY,CAAC;AAAA,kBAEhE,UAAA;AAAA,oBAAAA,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAC1B,UAAA;AAAA,sBAAA,EAAE,kBAAkB;AAAA,sBAAE;AAAA,oBAAA,GACzB;AAAA,oBACAE,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBAEJ,UAAA,MAAM,mDAAiB,SAAS,EAAE,OAAO,YAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACxD;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA,GAEJ;AAAA,WAED,mDAAiB,YAChBA,sCAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,MAAA,GAClC,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,SAAS,YAAA;AAAA,cAElB,UAAAF,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO,GAAG,MAAM,mDAAiB,OAAO,EAAE,OAAO,YAAY,CAAC;AAAA,kBAE9D,UAAA;AAAA,oBAAAA,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAC1B,UAAA;AAAA,sBAAA,EAAE,gBAAgB;AAAA,sBAAE;AAAA,oBAAA,GACvB;AAAA,oBACAE,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBAEJ,UAAA,MAAM,mDAAiB,OAAO,EAAE,OAAO,YAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACtD;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA,EACF,CACF;AAAA,QAAA,GAEJ;AAAA,QAID,mBAAkB,mCAAU,iBAAgB,CAAC,eAC5CA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,KAAK,SAClC,UAAAF,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,KAAK;AAAA,YACL,SAAS,MAAM;AACb,kBAAI,CAAC,MAAM;AACT,0BAAU,UAAU,kBAAkB;AACtC,wBAAQ,IAAI;AAAA,cACd,OAAO;AACL,sCAAA;AAAA,cACF;AAAA,YACF;AAAA,YAEA,UAAA;AAAA,cAAAA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO,GAAG,MAAM,mCAAU,YAAY,EAAE,OAAO,YAAY,CAAC;AAAA,kBAE5D,UAAA;AAAA,oBAAAA,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAC1B,UAAA;AAAA,sBAAA,EAAE,aAAa;AAAA,sBAAE;AAAA,oBAAA,GACpB;AAAA,oBACAE,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAU;AAAA,wBACV,MAAK;AAAA,wBAEJ,gBAAM,mCAAU,YAAY,EAAE,OAAO,YAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACpD;AAAA,gBAAA;AAAA,cAAA;AAAA,oDAEDyD,aAAA,CAAA,CAAsB;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA,EACzB,CACF;AAAA,MAAA,GAQJ;AAAA,MACA3D,kCAAAA,KAAC,OAAA,EAAI,WAAU,kBACZ,UAAA;AAAA,UAAA,sEAAwB,YAAxB,mBAAiC,UAAS,KACzCA,kCAAAA,KAAC,KAAA,EACC,UAAA;AAAA,UAAAE,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI,CAAC,EAAE,eAAe;AAAA,gBACpB,QAAQ;AAAA,gBACR,aAAa;AAAA,gBACb,cAAc;AAAA,gBACd,OAAO,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBAC3B,WAAW;AAAA,kBACT,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBAAA;AAAA,cAC/B;AAAA,cAEF,SAAQ;AAAA,cACR,WAAWA,kCAAAA,IAAC4H,QAAA,EAAW,UAAS,QAAA,CAAQ;AAAA,cACxC,SAAS,CAAC,UAAU,kBAAkB,MAAM,aAAa;AAAA,cAExD,YAAE,eAAe;AAAA,YAAA;AAAA,UAAA;AAAA,UAEnB,wDACE,iBAAA,CAAA,CAAgB;AAAA,QAAA,GAErB;AAAA,SAGD,iDAAgB,WACf9H,kCAAAA,KAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,UAAAC,sCAAC,KAAA,EACC,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,IAAI,CAAC,EAAE,eAAe;AAAA,gBACpB,QAAQ;AAAA,gBACR,aAAa;AAAA,gBACb,cAAc;AAAA,gBACd,OAAO,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBAC3B,WAAW;AAAA,kBACT,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBAAA;AAAA,cAC/B;AAAA,cAEF,SAAQ;AAAA,cACR,WAAWA,kCAAAA,IAAC0D,QAAA,EAAW,UAAS,QAAA,CAAQ;AAAA,cACxC,SAAS,CAAC,UAAU,kBAAkB,MAAM,aAAa;AAAA,cAExD,YAAE,eAAe;AAAA,YAAA;AAAA,UAAA,GAEtB;AAAA,UACC,gBAAgB1D,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,aAAY,YAAW,IAAI,EAAE,QAAQ,OAAO,WAAW,SAAO,CAAG;AAAA,QAAA,GACtG;AAAA,QAGD,mBAAA;AAAA,QACA,gBACCF,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,UAAAD,kCAAAA,KAAC,KAAA,EAAI,WAAU,4CACb,UAAA;AAAA,YAAAA,uCAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,YAAW,UAAA;AAAA,cAAA;AAAA,cAAQ;AAAA,cAAM;AAAA,cAAK;AAAA,YAAA,GAAW;AAAA,YACrFA,uCAAC,aAAA,EAAY,SAAQ,YAAW,kBAAgB,MAAC,IAAI,CAAC,EAAE,eAAe;AAAA,cACrE,qBAAqB;AAAA,gBACnB,aAAa,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBACjC,WAAW;AAAA,kBACT,SAAS,GAAG,QAAQ,KAAK,GAAG,CAAC;AAAA,gBAAA;AAAA,cAC/B;AAAA,cAEF,iCAAiC;AAAA,gBAC/B,qBAAqB;AAAA,gBACrB,wBAAwB;AAAA,cAAA;AAAA,cAE1B,gCAAgC;AAAA,gBAC9B,sBAAsB;AAAA,gBACtB,yBAAyB;AAAA,cAAA;AAAA,YAC3B,IAEA,UAAA;AAAA,cAAAE,sCAAC2D,UAAA,EAAU,SAAS,MAAM;AACxB,yBAAS,SAAS,aAAa,QAAQ,QAAQ,CAAC;AAChD,yEAAqB;AAAA,cACvB,GACE,UAAA3D,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,QAAQ,GAClC;AAAA,cACAA,sCAAC2D,UAAA,EAAU,SAAS,MAAM;AACxB,yBAAS,SAAS,IAAI,QAAQ,IAAI,CAAC;AACnC,qEAAmB;AAAA,cACrB,GACE,UAAA3D,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,UAAU,EAAA,CACpC;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,GACF;AAAA,UACC,uBAAuBA,kCAAAA,IAAC,SAAA,EAAQ,UAAQ,MAAC,aAAY,YAAW,IAAI,EAAE,QAAQ,OAAO,WAAW,SAAO,CAAG;AAAA,QAAA,GAC7G;AAAA,QAGD,uBAAuB,kBACtBF,kCAAAA,KAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,IAAA,GACrD,UAAA;AAAA,UAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,YAAW,UAAA,UAAA,CAAO;AAAA,UAC9DA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,QAAQ;AAAA,cACR,WAAU;AAAA,cACV,wBAAwB;AAAA,gBACtB,MAAMA,kCAAAA,IAAC6H,YAAA,EAAa,UAAS,QAAA,CAAQ;AAAA,gBACrC,UACE/H,kCAAAA,KAAAC,4BAAA,EACG,UAAA;AAAA,kBAAA,MAAM,SAAS;AAAA,wDACf0D,aAAA,CAAA,CAAsB;AAAA,gBAAA,GACzB;AAAA,gBAEF;AAAA,cAAA;AAAA,cAEF;AAAA,YAAA;AAAA,UAAA;AAAA,UAEFzD,kCAAAA,IAAC,OAAA,EAAI,KAAK,cAAA,CAAe;AAAA,QAAA,EAAA,CAC3B;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,GACF;AAAA,IASAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,UACF,QAAQ;AAAA,QAAA;AAAA,QAEV;AAAA,QACA,UAAU,UAAU;AAAA,QACpB,MAAM;AAAA,QACN,YAAU;AAAA,QACV,eAAa;AAAA,QAEZ,UAAA,CAAC,EAAE,iBAAiB,UAAA,MACnBA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,iBACE,cAAc,WAAW,eAAe;AAAA,YAAA;AAAA,YAG5C,UAAAA,kCAAAA,IAAC,OAAA,EACC,UAAAA,kCAAAA,IAAC,mBAAA,EAAkB,aAAa,aAC9B,UAAAF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,IAAI;AAAA,kBACF,SAAS;AAAA,kBACT,eAAe;AAAA,kBACf,YAAY;AAAA,gBAAA;AAAA,gBAGd,UAAA;AAAA,kBAAAE,kCAAAA,IAAC,SACE,UAAA,cACCA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,oBAAoB;AAAA,sBACpB,UAAU,CAAC,SAAS,mBAAmB,KAAK,SAAS;AAAA,sBACrD,2BAA2B;AAAA,sBAC3B,QAAQ,CAAC,eAAe;AAAA,sBACxB;AAAA,oBAAQ;AAAA,kBAAA,IAGVA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,UAAU,CAAC,SAAS,cAAc,IAAI;AAAA,sBACtC,MAAM;AAAA,sBACN;AAAA,oBAAQ;AAAA,kBAAA,GAGd;AAAA,wDACC,KAAA,EAAI,IAAI,EAAE,SAAS,mBAClB,UAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,SAAQ;AAAA,sBACR,IAAI,EAAE,OAAO,cAAA;AAAA,sBACb,SAAS;AAAA,sBAER,YAAE,cAAc;AAAA,oBAAA;AAAA,kBAAA,EACnB,CACF;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,GAEJ,EAAA,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ,GACF;AAEJ;ACx5BO,MAAM,sBAAsB,CAAC,UAAe;;AAClD,QAAM,EAAE,QAAQ,SAAS,MAAM,WAAW,UAAU;AACpD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAgB,CAAA,CAAE;AAC5D,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,EAAE,EAAA,IAAM,eAAA;AAEd,QAAM,mBAAmB,YAAY,YAAY;AAChD,QAAI,CAAC,OAAQ;AACb,QAAI;AACH,mBAAa,IAAI;AACjB,YAAM,UAAU,wBAAwB,CAAC,6BAAM,EAAE,CAAC;AAClD,YAAM,mBAAmB,WACtB,MAAM,yBAAyB,OAAO,IACtC,MAAM,6BAA6B,OAAO;AAC7C,uBAAiB,gBAAgB;AAAA,IAClC,SAAS,OAAO;AACf,YAAM,WAAW,gBAAgB,+BAAO,OAAO;AAC/C,sBAAgB,UAAU,EAAE,SAAS,QAAA,CAAS;AAAA,IAC/C,UAAA;AACC,iBAAW,MAAM,aAAa,KAAK,GAAG,GAAG;AAAA,IAC1C;AAAA,EACD,GAAG,CAAC,QAAQ,6BAAM,IAAI,QAAQ,CAAC;AAC/B,YAAU,MAAM;AACf,qBAAA;AAAA,EACD,GAAG,CAAC,gBAAgB,CAAC;AACrB,SACCF,uCAAC,SAAM,MAAM,QAAQ,SAAkB,UAAS,MAAK,WAAS,MAC5D,UAAA;AAAA,IAAA,mDAAc,aAAA,EAAY;AAAA,IAC3BA,kCAAAA,KAAC,aAAA,EAAY,WAAU,+BACtB,UAAA;AAAA,MAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAAS,UAAA,mBAAA,CAEtD;AAAA,MACAA,kCAAAA,IAAC,cAAW,SAAS,SACpB,gDAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CACzB;AAAA,IAAA,GACD;AAAA,IACAA,kCAAAA,IAAC,QAAK,WAAS,MACd,gDAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACd,iDAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,SAAS,GAAG,eAAe,YACtD,UAAA;AAAA,MAAAA,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAAsB,UAAA,OAAA,CAElE;AAAA,MACAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,sBAC1C,WAAA,kCAAM,cAAN,mBAAiB,KAAA,CACnB;AAAA,IAAA,EAAA,CACD,GACD,GACD;AAAA,IAEAA,kCAAAA,IAAC,QAAK,WAAS,MAAC,GAAG,GAAG,SAAS,GAC9B,UAAAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACd,UAAAA,kCAAAA,IAAC,KAAA,EAAI,IAAI,EAAE,YAAY,YACtB,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACA,MAAM,iBAAiB,CAAA;AAAA,QACvB,SAAS,sBAAsB;AAAA,UAC9B,SAAS;AAAA,UACT,gBAAgB;AAAA,UAChB,eAAe;AAAA,UACf,gBAAgB,CAAC,KAAK,mBAAmB,UAAU;;AAClD,oBAAQ,mBAAA;AAAA,cACP,KAAK;AACJ,uBAAO,WAAS,MAAAoC,MAAA,2BAAK,aAAL,gBAAAA,IAAe,cAAf,mBAA0B;AAAA,YAAA;AAAA,UAE7C;AAAA,QAAA,CACA;AAAA,QACD,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,QACrC,YAAY;AAAA,QACZ,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,aAAa,CAAC,gBAAgB;AAAA,QAC9B,oBAAoB;AAAA,QACpB,iCAA+B;AAAA,QAC/B,qBAAqB;AAAA,MAAA;AAAA,IAAA,EACtB,CACD,GACD,EAAA,CACD;AAAA,EAAA,GACD;AAEF;AC9FO,MAAM,UAAU;AAAA,EACtB;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAAA,EAEP;AAAA,IACC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS;AAAA,IACT,MAAM;AAAA,EAAA;AAER;AACO,MAAM,gBAAgB;AAEtB,MAAM,gBAAgB;AAAA,EAC5B,iBAAiB;AAAA,IAChB,eAAe,MAAA;AAAA,IACf,eAAe,MAAA;AAAA,EAAM;AAEvB;AAEO,MAAM,aAAa;AAAA,EACzB,MAAM;AAAA,EACN,UAAU,CAAC,SAAa,2BAAK,gBAAe,2BAAK,WAAW;AAAA,EAC5D,QAAQ;AAAA,EACR,IAAI,CAAC,WAAe,+BAAO,OAAM;AAAA,EACjC,cAAc,CAAC,QAAa,QAAQ,2BAAK,YAAY;AAAA,EACrD,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,CAAC,UAAS,6BAAM,YAAW;AACrC;ACrEO,MAAM,iCAAiC,CAAC,cAAwBI,EAAY,IAAI,OAAA,EAAS,MAAM;AAAA,EACpG,CAAC,aAAa,GAAG,IAAI,OAAA,EAAS,MAAM;AAAA,IAClC,WAAW,YAAY,IAAI,OAAA,EAAS,SAAS,oBAAoB,IAAI,IAAI,OAAA;AAAA,IACzE,MAAM,IAAI,SAAS,SAAS,yBAAyB;AAAA,IACrD,SAAS,IAAI,OAAA;AAAA,IACb,eAAe,IAAI,MAAA,EAChB,SAAS,kBAAkB,EAC3B,KAAK,kBAAkB,8BAA8B,CAAC,UAAU;AAC/D,UAAI,CAAC,MAAO,QAAO;AACnB,YAAM,eAAe,MAAM,KAAK,EAAE,QAAQ,KAAK;AAC/C,YAAM,QAAQ,QAAQ,QAAQ,KAAK;AACnC,aAAO,aAAa,OAAO,KAAK,KAAK,aAAa,QAAQ,KAAK;AAAA,IACjE,CAAC;AAAA,IACH,eAAe,IAAI,MAAA,EAChB,SAAS,kBAAkB,EAC3B,KAAK,kBAAkB,8BAA8B,SAAU,OAAO;AACrE,YAAM,EAAE,kBAAkB,KAAK;AAC/B,UAAI,CAAC,SAAS,CAAC,cAAe,QAAO;AAErC,YAAM,eAAe,MAAM,aAAa,EAAE,QAAQ,KAAK;AACvD,YAAM,QAAQ,QAAQ,QAAQ,KAAK;AAGnC,UAAI,aAAa,QAAQ,KAAK,GAAG;AAC/B,eAAO;AAAA,MACT;AAGA,YAAM,MAAM,MAAA;AACZ,YAAM,eAAe,MAAM,KAAK;AAChC,YAAM,mBAAmB,MAAM,aAAa,EACzC,KAAK,aAAa,KAAA,CAAM,EACxB,OAAO,aAAa,OAAA,CAAQ,EAC5B,OAAO,CAAC;AAEX,aAAO,iBAAiB,QAAQ,GAAG;AAAA,IACrC,CAAC;AAAA,IACH,OAAO,IAAI,MAAA;AAAA,IACX,QAAQ,IAAI,OAAA,EACT,KAAK,mBAAmB,qBAAqB,SAAS,OAAO;AAC5D,YAAM,EAAE,UAAU,KAAK;AACvB,UAAI,EAAC,+BAAO,WAAU,CAAC,OAAO;AAC5B,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT,CAAC;AAAA,IACH,cAAc,IAAI,QAAA;AAAA,IAClB,UAAU,IAAI,SAAS,KAAK,gBAAgB;AAAA,MAC1C,IAAI;AAAA,MACJ,MAAM,CAAC,WAAW,OAAO,SAAS,uBAAuB;AAAA,MACzD,WAAW,CAAC,WAAW,OAAO,SAAA,EAAW,SAAA;AAAA,IAAS,CACnD;AAAA,EAAA,CACF;AACH,CAAC,CAAC;ACxDK,MAAM,oBAAoB;AAAA,EAC7B;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAAA,EAET;AAAA,IACE,OAAO;AAAA,IACP,OAAO;AAAA,EAAA;AAEX;AAEO,MAAM,2BAA2B,OAAM,YAAgB,mCAAmC,OAAO;AAEjG,MAAM,2BAA2B,OAAM,YAAe,4BAA4B,OAAO;AAEzF,MAAM,wBAAsB,OAAM,YAAc;AACrD,MAAG;AACD,UAAM,WAAS,MAAM,2BAA2B,OAAO;AACvD,WAAO;AAAA,EACT,SAAO,OAAM;AACX,YAAQ,IAAI,SAAQ,KAAK;AAAA,EAC3B;AACF;AACO,MAAM,wBAAsB,OAAM,YAAc;AACrD,MAAG;AACD,UAAM,WAAS,MAAM,uBAAuB,OAAO;AACnD,WAAO;AAAA,EACT,SAAO,OAAM;AACX,YAAQ,IAAI,SAAQ,KAAK;AAAA,EAC3B;AACF;AAEO,MAAM,2BAAyB,OAAM,YAAc;AACxD,MAAG;AACD,UAAM,EAAC,OAAK,CAAA,MAAI,MAAM,gCAAgC,OAAO;AAC7D,WAAO;AAAA,EACT,SAAO,OAAM;AACX,YAAQ,IAAI,SAAQ,KAAK;AAAA,EAC3B;AACF;ACVF,MAAM,sBAA0D,CAAC;AAAA,EAC/D;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,SAAS;AACX,MAAM;;AAEJ,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAkB,KAAK;AAGjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,EAAE,YAAA;AAAA,EAAY,IACvB,QAAQ;AAAA,IACV,UAAU,+BAA+B,EAAC,qCAAU,GAAE;AAAA,IACtD,MAAM;AAAA;AAAA,IAEN;AAAA,EAAA,CACD;AAED,QAAM,cAAc,MAAM,GAAG,aAAa,eAAe;AAEzD,QAAM,gBAAgB,QAAQ,MAAM;AAClC,YAAQ,qCAAU,OAAM,SAAU,OAAO;AAAA,EAC3C,GAAG,CAAC,qCAAU,IAAI,MAAM,CAAC;AAEzB,QAAM,mBAAmB,OAAO,SAAS;AACvC,UAAM,UAAU,MAAM,QAAA;AACtB,QAAI,CAAC,QAAS;AACd,UAAM,SAAS,6BAAO;AAEtB,UAAM,gBAAgB;AAAA,MACpB,GAAG;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,eAAe,qBAAqB,OAAO,aAAa;AAAA,MACxD,eAAe,qBAAqB,OAAO,aAAa;AAAA,MACxD,GAAI,aAAY,qCAAU,MACtB,EAAE,IAAI,OAAO,SAAS,EAAE,KAAK,OAC7B,CAAA;AAAA,IAAC;AAEP,wDAAsB;AAEtB,UAAM,iBAAiB,cAAc,YAAY,aAAa;AAC9D,UAAM,WAAU,qCAAU,MAAK,2BAA2B;AAC1D,QAAI;AACF,YAAM,QAAQ;AAAA,QACZ,GAAG;AAAA,QACH,GAAG,SAAA;AAAA,MAAS,CACb;AACD;AACA,sBAAgB,iCAAiC,EAAE;AACnD,uBAAA;AAAA,IAEF,SAAS,OAAO;AACd,YAAM,eAAe,gBAAgB,+BAAO,OAAO;AACnD,sBAAgB,cAAc;AAAA,QAC5B,SAAS;AAAA,MAAA,CACV;AAAA,IACH,UAAA;AACE,uBAAiB,KAAK;AAAA,IACxB;AAAA,EAEF;AAGA,QAAM,mBAAmB,MAAM;AAC7B,YAAA;AACA,eAAW,MAAM;AACf,YAAM;AAAA,QACJ,CAAC,aAAa,GAAG,CAAA;AAAA,MAAC,CACnB;AAAA,IACH,GAAG,GAAG;AAAA,EACR;AAEA,QAAM,oBAAoB,YAAY,YAAY;;AAChD,YAAQ,IAAI,UAAU,MAAM;AAC5B,QAAI,CAAC,UAAU,CAAC,QAAQ;AACtB;AAAA,IACF;AACA,QAAI;AACF,YAAM,EAAE,OAAO,GAAC,IAAM,MAAM,sBAAsB;AAAA,QAChD,GAAG,SAAA;AAAA,QACH,SAAS,eAAe,MAAM;AAAA,MAAA,CAC/B;AACD,eAAS,GAAG,aAAa,eAAc,MAAAJ,MAAA,6BAAM,YAAN,gBAAAA,IAAgB,OAAhB,mBAAoB,EAAE;AAAA,IAC/D,SAAS,OAAO;AACd,cAAQ,IAAI,SAAS,KAAK;AAAA,IAC5B;AAAA,EAEF,GAAG,CAAC,QAAQ,QAAQ,QAAQ,CAAC;AAE7B,YAAU,MAAM;;AAEd,UAAM,QAAO,MAAAA,MAAA,qCAAU,kBAAV,gBAAAA,IAAyB,MAAM,SAA/B,mBAAqC,IAAI;AACtD,QAAI,qCAAU,IAAI;AAChB,YAAM;AAAA,QACJ,CAAC,aAAa,GAAG;AAAA,UACf,GAAG;AAAA,UACH,gBAAe,qCAAU,iBACrB,MAAM,qCAAU,aAAa,IAC7B;AAAA,UACJ,gBACE,6BAAM,YAAW,IACb,MAAA,EACC,IAAI,QAAQ,KAAK,CAAC,CAAC,EACnB,IAAI,UAAU,KAAK,CAAC,CAAC,EACrB,IAAI,UAAU,KAAK,CAAC,CAAC,EACrB,IAAI,eAAe,CAAC,IACrB;AAAA,QAAA;AAAA,MACR,CACD;AAAA,IACH,OAAO;AACL,YAAM,aAAa;AAAA,IACrB;AAAA,EAEF,GAAG,CAAC,QAAQ,qCAAU,IAAI,MAAM,CAAC;AAGjC,QAAM,eAAe,MAAM,GAAG,aAAa,gBAAgB;AAE3D,YAAU,MAAM;AACd,QAAI,cAAc;AAChB,cAAQ,GAAG,aAAa,gBAAgB;AAAA,IAC1C;AAAA,EACF,GAAG,CAAC,cAAc,OAAO,CAAC;AAE1B,QAAM,UAAU,QAAQ,MAAM;AAC5B,WAAO,gBAAgB,MAAM,YAAY,EAAE,QAAQ,KAAK,EAAE,OAAO,MAAA,EAAQ,QAAQ,KAAK,CAAC;AAAA,EACzF,GAAG,CAAC,YAAY,CAAC;AAEjB,YAAU,MAAM;AACd,sBAAA;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAEtB,SACEpC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM;AAAA,MACN;AAAA,MACA,UAAS;AAAA,MACT,WAAS;AAAA,MACR,GAAG;AAAA,MAEJ,iDAAC,QAAA,EAAK,UAAU,aAAa,gBAAgB,GAAG,IAAG,uBAC/C,UAAA;AAAA,QAAA,uDAAmB,aAAA,EAAY;AAAA,QACjCF,kCAAAA,KAAC,aAAA,EAAY,WAAU,8BACrB,UAAA;AAAA,UAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAAU,QAAO,UAC1C,mBAAS,WAAA,CACZ;AAAA,UACAA,kCAAAA,IAAC,cAAW,SAAS,kBACnB,gDAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC1B;AAAA,QAAA,GACF;AAAA,QACAA,kCAAAA,IAAC,eAAA,EACC,UAAAF,kCAAAA,KAAC,MAAA,EAAK,WAAS,MAAC,QAAQ,KAAK,eAAe,GAAG,IAAI,GACjD,UAAA;AAAA,UAAAE,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACb,gDAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,UAAU,QAAQ,qCAAU,EAAE,KAAK;AAAA,cACnC,OAAM;AAAA,cACN,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,aAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,cACR,eAAe;AAAA,gBACb,YAAY;AAAA,gBACZ,wBAAwB;AAAA,cAAA;AAAA,YAC1B;AAAA,UAAA,GAEJ,EAAA,CACF;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAM;AAAA,cACN,MAAK;AAAA,cACL,gBAAgB;AAAA,cAChB,aAAY;AAAA,cACZ,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEZ;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,aAAa;AAAA,cACb,OAAM;AAAA,cACN,MAAK;AAAA,cACL,gBAAgB;AAAA,cAChB,aAAY;AAAA,YAAA;AAAA,UAAA,GAEhB;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa;AAAA,cACb,MAAK;AAAA,cACL,aAAY;AAAA,cACZ,OAAM;AAAA,cACN,gBAAgB;AAAA,cAChB,UAAQ;AAAA,cACR,UAAU,MAAA;AAAA,YAAM;AAAA,UAAA,GAEpB;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa;AAAA,cACb,aAAY;AAAA,cACZ,OAAM;AAAA,cACN,QAAQ;AAAA,cACR,MAAK;AAAA,cACL,gBAAgB;AAAA,cAChB,UAAQ;AAAA,cACR,MAAM;AAAA,gBACJ,WAAW,EAAE,SAAS,EAAA;AAAA,gBACtB,MAAM;AAAA,gBACN,GAAI,aAAW,iBAAY,aAAa,MAAzB,mBAA4B,kBAAiB,EAAE,SAAS,MAAA,EAAM;AAAA,cAAE;AAAA,YACjF;AAAA,UAAA,GAEJ;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC;AAAA,cACA,MAAK;AAAA,cACL,OAAM;AAAA,cACN,UAAQ;AAAA,cACR,gBAAgB;AAAA,cAChB,aAAY;AAAA,cACZ,YAAY,CAAC;AAAA,gBACX,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,SAAS;AAAA,cAAA,CACV;AAAA,YAAA;AAAA,UAAA,GAEL;AAAA,UACAA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,IACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,aAAa;AAAA,cACb,MAAK;AAAA,cACL,OAAM;AAAA,cACN,gBAAgB;AAAA,cAChB,eAAc;AAAA,YAAA;AAAA,UAAA,GAElB;AAAA,UACC,cACCA,kCAAAA,IAAC,MAAA,EAAK,MAAI,MAAC,IAAI,GACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,SAAS,qBAAqB,CAAA;AAAA,cAC9B,MAAK;AAAA,cACL,aAAY;AAAA,cACZ,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,UAAQ;AAAA,YAAA;AAAA,UAAA,GAEZ,IACE;AAAA,QAAA,EAAA,CACN,EAAA,CACF;AAAA,QACAA,kCAAAA,IAAC,iBAAc,WAAU,wCACvB,iDAAC,KAAA,EAAI,SAAQ,QAAO,KAAK,KACvB,UAAA;AAAA,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS;AAAA,cACT,UAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGDA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS,aAAa,gBAAgB;AAAA,cACtC,SACE,gBACEA,kCAAAA,IAAC,kBAAA,EAAiB,MAAM,IAAI,OAAM,WAAU,IAC1C;AAAA,cAEN,UAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAED,EAAA,CACF,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACzTA,MAAM,wBAAwB,CAAC,EAAE,SAAS,cAAc,QAAQ,wBAA2D;AAGzH,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc;AAAA,IAChD,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,EAAA,CACb;AACD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAkB,IAAI;AAClE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AACzD,QAAM,CAAC,mBAAmB,oBAAoB,IAC5C,SAAmC,IAAI;AACzC,UAAQ,IAAI,mDAAmD,iBAAiB;AAEhF,QAAM,CAAC,YAAY,aAAa,IAAI,SAAkB,KAAK;AAC3D,QAAM,CAAC,wBAAwB,yBAAyB,IACtD,SAAmC,IAAI;AAEzC,QAAM,CAAC,WAAW,OAAO,IAAI,SAA8B,CAAA,CAAE;AAC7D,QAAM8H,SAAQ,yCAAY;AAC1B,QAAM,QAAQA,SAAQ,KAAK,MAAK,yCAAY,cAAaA,MAAK,IAAI;AAClE,QAAM,OAAOA,WAAS,yCAAY,UAAS,MAAM;AACjD,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,eAAe,CAAC,UAAqC;AACzD,UAAM,SAAS,+BAAO,MAAM;AAC5B,WAAO,SACL9H,kCAAAA,IAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,UAAU,OAAA,GACjE,UAAA,OAAO,IAAI,CAAC,SACXA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,6CACG,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAO,WAC1C,UAAA,KAAA,CACH;AAAA,MAAA;AAAA,MALG;AAAA,IAAA,CAQR,GACH,IACE;AAAA,EACN;AAEA,QAAM,eAAe;AAAA,IACnB,MACE,sBAAsB;AAAA,MACpB;AAAA,MACA,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,MAAM;AAAA,MACN,eAAe;AAAA,MACf,gBAAgB,CAAC,KAAK,mBAAmB,UAAU;AACjD,gBAAQ,mBAAA;AAAA,UACN,KAAK;AACH,mBAAO,aAAa,KAAK;AAAA,UAE3B;AACE,mBAAO;AAAA,QAAA;AAAA,MAEb;AAAA,IAAA,CACD;AAAA;AAAA,IAEH,CAAC,SAAS,WAAW,CAAC;AAAA,EAAA;AAGxB,QAAM,oBAAoB;AAAA,IACxB,YAAY;AACV,UAAI;AACF,qBAAa,IAAI;AACjB,cAAM,EAAE,OAAO,CAAA,GAAI,YAAY,eAAA,IAAmB,MAAM,sBAAsB;AAAA,UAC5E,GAAG,SAAA;AAAA,UACH;AAAA,UACA,OAAA8H;AAAA,UACA,SAAS,YAAY,MAAM;AAAA,QAAA,CAC5B;AACD,gBAAQ,6BAAM,UAAU;AACxB,sBAAc,WAAS,EAAE,GAAG,MAAM,GAAG,iBAAiB;AAAA,MAExD,SAAS,OAAO;AACd,cAAM,eAAe,gBAAgB,+BAAO,OAAO;AACnD,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,QAAA,CACV;AAAA,MACH,UAAA;AACE,qBAAa,KAAK;AAClB,0BAAkB,KAAK;AAAA,MACzB;AAAA,IAEF;AAAA,IACA,CAACA,QAAO,MAAM,QAAQ,aAAa;AAAA,EAAA;AAGrC,QAAM,6BAA6B,YAAY;AAC7C,QAAI;AACF,UAAI,wBAAwB;AAC1B,sBAAc,IAAI;AAClB,cAAM,yBAAyB;AAAA,UAC7B,GAAG,SAAA;AAAA,UACH,IAAI,uBAAuB;AAAA,QAAA,CAC5B;AACD,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,QAAA,CACV;AACD,0BAAA;AACA,kCAA0B,IAAI;AAAA,MAChC;AAAA,IACF,SAAS,OAAO;AACd,YAAM,eAAe,gBAAgB,+BAAO,OAAO;AACnD,eAAS;AAAA,QACP,MAAM;AAAA,QACN,SAAS;AAAA,MAAA,CACV;AAAA,IACH,UAAA;AACE,oBAAc,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,QAAM,eAAe,YAAY,YAAY;AAC3C,sBAAA;AAAA,EAEF,GAAG,CAAA,CAAE;AAIL,YAAU,MAAM;AACd,sBAAA;AAAA,EACF,GAAG,CAAC,iBAAiB,CAAC;AAItB,QAAM,kBAAkB,MAAM,qBAAqB,IAAI;AACvD,QAAM,wBAAwB,CAAC,UAA4B;AACzD,kBAAc,KAAK;AAAA,EACrB;AAEA,SACEhI,kCAAAA,KAAC,WAAA,EAAQ,WAAU,kBAEjB,UAAA;AAAA,IAAAE,kCAAAA,IAAC,OAAI,GAAG,GAAG,SAAQ,QAAO,YAAW,UAAS,gBAAe,iBAC3D,UAAAA,sCAAC,YAAA,EAAW,MAAK,MAAK,QAAO,QAAO,OAAO,WAAY,iBAAM,EAAA,CAO/D;AAAA,IAEC,uDACE,WAAA,CAAA,CAAU,wEAGR,WAAA,uCAAW,UAAS,IACnBF,kCAAAA,KAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,MAAAC,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM,aAAa,CAAA;AAAA,UACnB,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,aAAa,CAAC,gBAAgB;AAAA,UAC9B,QAAQ,EAAE,UAAA;AAAA,UACV,sBAAsB;AAAA,UACtB,eAAe;AAAA,UACf,YAAY;AAAA,UACZ,oBAAoB;AAAA,UACpB,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,UACrC,0BAA0B;AAAA,YACxBA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS,CAAC,EAAE,UACV,qBAAqB,2BAAK,QAAQ;AAAA,gBAGpC,UAAAA,kCAAAA,IAAC,MAAA,EAAK,UAAS,SAAQ,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAE7CA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAS,CAAC,EAAE,UACV,0BAA0B,2BAAK,QAAQ;AAAA,gBAGzC,UAAAA,kCAAAA,IAAC,OAAA,EAAM,UAAS,SAAQ,WAAU,UAAA,CAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UAC9C;AAAA,QACF;AAAA,MAAA;AAAA,MAEFA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,iBAAiB;AAAA,YACf,GAAG;AAAA,YACH,OAAO,yCAAY;AAAA,UAAA;AAAA,UAErB;AAAA,UACA,UAAS;AAAA,UACT,aAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IACf,EAAA,CACF,IAEAA,kCAAAA,IAAAD,kBAAAA,UAAA,EACG,UAAA,CAAC,UAAU,UACVC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,YAAW;AAAA,QACX,MAAMA,kCAAAA,IAAC,OAAA,EAAI,KAAKgD,OAAK,iBAAiB;AAAA,QAEtC,UAAAhD,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,iDAAY,KAAA,EAAI;AAAA,YAChB,SAAS;AAAA,YACV,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED;AAAA,IAAA,GAGN,EAAA,CAEJ;AAAA,IAGFA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ,KAAK;AAAA,QACnB,MAAM,+BAAO;AAAA,QACb,SAAS,+BAAO;AAAA,QAChB,aAAa,MAAM,SAAS,IAAI;AAAA,QAChC,cAAc,EAAE,YAAY,SAAS,UAAU,SAAA;AAAA,MAAS;AAAA,IAAA;AAAA,IAG1DA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,QAAQ,QAAQ,iBAAiB;AAAA,QACjC,SAAS,MAAM,qBAAqB,IAAI;AAAA,QACxC,UAAU;AAAA,QACV,UAAU;AAAA,QACV;AAAA,MAAA;AAAA,IAAA;AAAA,IAKFA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ,sBAAsB;AAAA,QACpC,SAAS,MAAM,0BAA0B,IAAI;AAAA,QAC7C,WAAW;AAAA,QACX,OAAM;AAAA,QACN,SAAS;AAAA,QACT,aAAa,oDAAoD,iEAAwB,IAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/F,GACF;AAEJ;AC5QA,SAAS,oBAAoB;AAAA,EAC5B;AACD,GAEG;AACF,QAAM,EAAE,cAAA,IAAkB,YAAA;AAE1B,+CACE,KAAA,EACA,UAAAA,kCAAAA;AAAAA,IAAC+H;AAAAA,IAAA;AAAA,MACA,SAAS,MAAM,cAAc,WAAW;AAAA,MACxC,IAAI,EAAE,OAAO,IAAI,QAAQ,GAAA;AAAA,MACzB,UAAA/H,kCAAAA,IAACC,aAAA,EAAU,IAAI,EAAE,OAAO,QAAQ,OAAO,IAAI,QAAQ,GAAA,EAAG,CAAG;AAAA,IAAA;AAAA,EAAA,GAE3D;AAEF;AAEA,MAAM,WAAW,CAAC,UAAiC;AAClD,QAAM,EAAE,UAAU,GAAG,KAAA,IAAS;AAC9B,SACCD,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,QAAQ,CAAC,gBACRA,kCAAAA,IAAC,uBAAoB,YAAA,CAA0B;AAAA,MAEhD,OAAO,EAAE,UAAU,QAAA;AAAA,MAEnB,cAAc,EAAE,UAAU,UAAU,YAAY,QAAA;AAAA,MAC/C,GAAG;AAAA,MACH;AAAA,IAAA;AAAA,EAAA;AAGJ;ACzCA,MAAM,eAAe,MAAM;AACvB,SACIA,kCAAAA,IAAC,WAAA,EACG,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACX,UAAA;AAAA,IAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,gBAAe,UAAA;AAAA,MAAAE,kCAAAA,IAAC,KAAA,EAAE,MAAK,KAAI,UAAA,YAAQ;AAAA,MAAI;AAAA,IAAA,GAAgB;AAAA,IACtEF,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBACX,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,WACX,UAAAA,kCAAAA,IAAC,QAAA,EAAO,WAAU,IAAG,SAAQ,UAAS,UAAA,SAAA,CAAM,GAChD;AAAA,MACAA,kCAAAA,IAAC,OAAA,EAAI,WAAU,gBACX,UAAAA,kCAAAA,IAAC,QAAA,EAAO,WAAU,IAAG,SAAQ,UAAS,UAAA,eAAA,CAAY,GACtD;AAAA,MACAA,kCAAAA,IAAC,OAAA,EAAI,WAAU,UAAS,UAAAA,kCAAAA,IAAC,QAAA,EAAO,WAAU,IAAG,SAAQ,aAAY,UAAA,SAAA,CAAM,EAAA,CAAS;AAAA,IAAA,EAAA,CACpF;AAAA,EAAA,EAAA,CACJ,EAAA,CACJ;AAER;ACUO,MAAM,WAAW,CAAC,UAAoB;AAC3C,QAAM,EAAE,MAAM,gBAAgB,gBAAgB,mBAAmB,iBAAiB,oBAAoB;AACtG,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,CAAC;AACpC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,QAAM,eAAe,CAAC,OAA6B,aAAqB;AACtE,aAAS,QAAQ;AACjB,yBAAqB,kBAAkB,QAAQ;AAC/C,uBAAmB,gBAAA;AAAA,EACrB;AAEA,QAAM,uBAAuB,CAAC,UAAkB;AAC9C,qBAAiB,KAAK;AAAA,EACxB;AAEA,QAAM,qBAAqB,CACzB,OACA,UACG;AACH,sBAAkB,eAAe,OAAO,MAAM,OAAO,KAAK;AAAA,EAC5D;AAEA,YAAU,MAAM;AACd,QAAI,qBAAqB,QAAQ,6BAAM,MAAM,qBAAqB,KAAK;AAAA,EAEzE,GAAG,CAAC,IAAI,CAAC;AAET,+CACG,KAAA,EACC,UAAAF,kCAAAA,KAAC,YAAA,EAAW,OAAO,kBAAkB,OACnC,UAAA;AAAA,IAAAE,sCAAC,KAAA,EACC,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,UAAU;AAAA,QAET,UAAA,KAAK,IAAI,CAAC,QACTA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YAEV,OACE,kBAAkB,kBAAkB,IAAI,YACtCA,kCAAAA;AAAAA,cAAC0G;AAAAA,cAAA;AAAA,gBACC,OAAO,IAAI;AAAA,gBACX,WAAS;AAAA,gBACT,QAAQ,MAAM,iBAAiB,IAAI;AAAA,gBACnC,UAAU,CAAC,MACT,mBAAmB,GAAG,IAAI,SAAS;AAAA,cAAA;AAAA,YAAA,IAGrC,kBACF5G,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,cAAAE,kCAAAA,IAAC,OAAA,EAAK,cAAI,MAAA,CAAM;AAAA,cACf,CAAC,IAAI,cACJA,kCAAAA;AAAAA,gBAACC;AAAAA,gBAAA;AAAA,kBACC,OAAO,EAAE,UAAU,QAAQ,QAAQ,UAAA;AAAA,kBACnC,SAAS,MAAM;AACb,oCAAgB,IAAI,SAAS;AAAA,kBAC/B;AAAA,gBAAA;AAAA,cAAA;AAAA,YACF,EAAA,CAEJ,IAEAH,kCAAAA,KAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,cAAAE,sCAAC,SAAI,KAAK,OAAO,OAAO,IAAI,OAAO,GAAG;AAAA,cACrC,IAAI;AAAA,YAAA,GACP;AAAA,YAGJ,SAAO;AAAA,YACP,eAAe,MAAM,qBAAqB,IAAI,SAAS;AAAA,UAAA;AAAA,UA/BlD,IAAI;AAAA,QAAA,CAiCZ;AAAA,MAAA;AAAA,IAAA,GAEL;AAAA,IACC,KAAK;AAAA,MACJ,CAAC,KAAc,UACb,IAAI,WACFA,kCAAAA,IAAC,UAAA,EAAS,OAAO,OACd,UAAA,UAAU,SAAS,IAAI,QAAA,GADG,IAAI,SAEjC;AAAA,IAAA;AAAA,EAEN,EAAA,CACF,EAAA,CACF;AAEJ;ACrGA,MAAM,WAAW,CAAC,UAAyB;AACzC,QAAM,EAAE,aAAa,UAAU,GAAG,OAAO,YAAY,OAAO,GAAG,KAAA,IAAS;AAExE,QAAM,iBAAiB,OAAOgI,gBAAW,EAAE,CAAC,EAAE,OAAO,EAAE,QAAA,QAAU;;AAAO;AAAA,MACtE,KAAK;AAAA,QACH,SAAS;AAAA,QACT,cAAc;AAAA,QACd,aAAa,SACT,aAAQ,UAAR,mBAAe,MAAM,QACrB,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAC7B,SAAS;AAAA,QACT,QAAO,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAChC,UAAU;AAAA,QACV,kBAAkB;AAAA,UAChB,SAAS;AAAA,QAAA;AAAA,QAEX,WAAW;AAAA,UACT,aAAa,SACT,aAAQ,UAAR,mBAAe,MAAM,QACrB,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAAG;AAAA,QAElC,mBAAmB;AAAA,UACjB,aAAa;AAAA,UACb,aAAa;AAAA,UACb,aAAa,SACT,aAAQ,UAAR,mBAAe,MAAM,QACrB,aAAQ,UAAR,mBAAe,QAAQ;AAAA,QAAG;AAAA,QAEhC,cAAc;AAAA,UACZ,aAAY,aAAQ,UAAR,mBAAe,UAAU;AAAA,QAAG;AAAA,MAC1C;AAAA,IACF;AAAA,GACA;AAEF,SACElI,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,IAAAC,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QAElC,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX;AAAA,QACA;AAAA,QACC,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IAGNA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,OAAO,QAAQ,oBAAoB;AAAA,QAElC,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;AC5DA,MAAM,kBAAkD,CAAC,UAAe;AACtE,QAAM,CAAC,WAAW,YAAY,IAAI,SAAmB,CAAA,CAAE;AACvD,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,CAAC;AAChE,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,CAAC;AAChC,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAS,MAAS;AAClE,QAAM,EAAE,SAAS,OAAO,WAAW,SAAS,sBAAsB;AAElE,YAAU,MAAM;AACd,iBAAa,CAAA,CAAE;AAEf,UAAMiI,cAAa,CAAC,SAAiB;AACnC,UAAI,CAAC,KAAM,QAAO;AAElB,YAAM,CAAC,UAAU,QAAQ,IAAI,KAAK,MAAM,GAAG;AAC3C,YAAM,CAAC,OAAO,OAAO,IAAI,SAAS,MAAM,GAAG,EAAE,IAAI,MAAM;AAEvD,UAAI,iBAAiB;AAErB,UAAI,UAAU;AACZ,YAAI,aAAa,MAAM;AACrB,cAAI,UAAU,IAAI;AAChB,8BAAkB;AAAA,UACpB;AAAA,QACF,WAAW,aAAa,QAAQ,UAAU,IAAI;AAC5C,4BAAkB;AAAA,QACpB;AAAA,MACF;AAEA,YAAM,2BAAW,KAAA;AACjB,WAAK,SAAS,gBAAgB,SAAS,GAAG,CAAC;AAE3C,YAAM,gBAAgB,KAAK,mBAAmB,IAAI;AAAA,QAChD,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MAAA,CACD;AACD,UAAI,qBAAqB;AAEzB,UAAI,KAAK,SAAA,MAAe,GAAG;AACzB,6BAAqB,OAAO,cAAc,MAAM,CAAC;AAAA,MACnD,WAAW,KAAK,SAAA,MAAe,IAAI;AACjC,6BAAqB,OAAO,cAAc,MAAM,CAAC;AAAA,MACnD;AACA,aAAO;AAAA,IACT;AAEA,iBAAa,CAAC,kBAAuB;AACnC,UAAI,aAAa,SAAS;AACxB,cAAM,qBAAqBA,YAAW,SAAS;AAC/C,cAAM,mBAAmBA,YAAW,OAAO;AAC3C,eAAO,CAAC,GAAG,eAAe,oBAAoB,gBAAgB;AAAA,MAChE;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,QAAQ,WAAW,OAAO,CAAC;AAE/B,QAAM,eAAe,CAAC,UAAe;AACnC,UAAM,gBAAqB,MAAM,mBAAmB,IAAI;AAAA,MACtD,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,IAAA,CACD;AAED,QAAI,qBAAqB;AAEzB,QAAI,MAAM,SAAA,MAAe,GAAG;AAC1B,2BAAqB,OAAO,cAAc,MAAM,CAAC;AAAA,IACnD,WAAW,MAAM,SAAA,MAAe,IAAI;AAClC,2BAAqB,OAAO,cAAc,MAAM,CAAC;AAAA,IACnD;AAEA,QAAI,UAAU,SAAS,GAAG;AACxB,mBAAa,CAAC,GAAG,WAAW,kBAAkB,CAAC;AAAA,IACjD,WAAW,QAAQ,GAAG;AACpB,mBAAa,CAAC,kBAAkB;AAC9B,cAAM,mBAAwB,CAAC,GAAG,aAAa;AAC/C,yBAAiB,CAAC,IAAI;AACtB,eAAO;AAAA,MACT,CAAC;AAAA,IACH,WAAW,QAAQ,GAAG;AACpB,mBAAa,CAAC,kBAAkB;AAC9B,cAAM,mBAAwB,CAAC,GAAG,aAAa;AAC/C,yBAAiB,CAAC,IAAI;AACtB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAO,MAAM,CAAC;AAAA,EAChB;AAEA,YAAU,MAAM;AACd,QAAI,QAAQ,GAAG;AACb,aAAO,CAAC;AAAA,IACV;AAGA,QAAI,UAAU,WAAW,GAAG;AAC1B,YAAM,kBAAkB,UAAU,CAAC;AACnC,YAAM,gBAAgB,UAAU,CAAC;AAGjC,YAAM,oBAAoB,mBAAmB,eAAe;AAG5D,YAAM,kBAAkB,mBAAmB,aAAa;AAGxD,UAAI,aAAa,kBAAkB;AACnC,UAAI,aAAa,GAAG;AAClB,sBAAc,KAAK;AAAA,MACrB;AACA,6BAAuB,UAAU;AAAA,IACnC,OAAO;AACL,6BAAuB,CAAC;AAAA,IAC1B;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,CAAC;AAEnB,QAAM,qBAAqB,CAAC,eAAuB;AACjD,UAAM,CAAC,UAAU,YAAY,QAAQ,IAAI,WAAW,MAAM,KAAK;AAC/D,QAAI,QAAQ,SAAS,QAAQ;AAC7B,UAAM,UAAU,SAAS,UAAU;AAEnC,QAAI,YAAY,SAAS,YAAA,MAAkB,QAAQ,UAAU,IAAI;AAC/D,eAAS;AAAA,IACX,WAAW,YAAY,SAAS,kBAAkB,QAAQ,UAAU,IAAI;AACtE,cAAQ;AAAA,IACV;AAEA,WAAO,QAAQ,KAAK;AAAA,EACtB;AAEA,YAAU,MAAM;AACd,sBAAkB;AAAA,MAChB;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH,GAAG,CAAC,qBAAqB,mBAAmB,SAAS,CAAC;AAEtD,QAAM,cAAc,MAAM;AACxB,UAAM,SAAc,qBAAqB,OAAO,SAAY;AAC5D,wBAAoB,MAAM;AAAA,EAC5B;AAEA,QAAM,mBAAmB,CAAC,UAAe;AACvC,iBAAa,CAAA,CAAE;AACf,WAAO,CAAC;AACR,UAAM,gBAAA;AAAA,EACR;AAEA,QAAM,cACJjI,kCAAAA;AAAAA,IAAC0G;AAAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,OACE,UAAU,WAAW,IACjB,GAAG,UAAU,CAAC,CAAC,QACf,UAAU,WAAW,IACnB,GAAG,UAAU,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC,KACjC;AAAA,MAER,YAAY;AAAA,QACV,UAAU;AAAA,QACV,cACE5G,kCAAAA,KAAC,gBAAA,EAAe,UAAS,OACtB,UAAA;AAAA,UAAA,UAAU,SAAS,KAClBE,kCAAAA,IAAC,YAAA,EAAW,SAAS,kBACnB,UAAAA,kCAAAA,IAAC,SAAM,EAAA,CACT;AAAA,gDAED,YAAA,EAAW,SAAS,aACnB,UAAAA,kCAAAA,IAAC,qBAAkB,EAAA,CACrB;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAEJ;AAAA,EAAA;AAIJ,SACEA,kCAAAA,IAAAD,4BAAA,EACE,UAAAD,kCAAAA,KAAC,KAAA,EAAI,WAAU,mBACb,UAAA;AAAA,IAAAE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,UAAU,CAAC,SAAc;AACvB,uBAAa,IAAI,GAAG,YAAA;AAAA,QACtB;AAAA,QACA,gBAAc;AAAA,QACd,oBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,cAAY;AAAA,QACZ;AAAA,QACA,MAAM;AAAA,QACN,OACE,aAAa,UAAU,WAAW,IAC9B,GAAG,UAAU,CAAC,CAAC,MACf,aAAa,UAAU,WAAW,IAChC,GAAG,UAAU,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAC/B;AAAA,MAAA;AAAA,IAAA;AAAA,IAGVA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OACE,UAAU,SAAS,IAAI,EAAE,OAAO,SAAA,IAAa,EAAE,OAAO,WAAA;AAAA,QAGvD,oBAAU,SAAS,KAAKA,kCAAAA,IAAC,OAAA,EAAM,SAAS,iBAAA,CAAkB;AAAA,MAAA;AAAA,IAAA;AAAA,EAC7D,EAAA,CACF,EAAA,CACF;AAEJ;AC9NO,SAAS,8BAA8B,MAAM;AAClD,SAAO,qBAAqB,qBAAqB,IAAI;AACvD;AAC8B,uBAAuB,qBAAqB,CAAC,QAAQ,gBAAgB,kBAAkB,eAAe,iBAAiB,UAAU,SAAS,UAAU,sBAAsB,wBAAwB,OAAO,mBAAmB,qBAAqB,qBAAqB,mBAAmB,cAAc,qBAAqB,YAAY,CAAC;ACDvW,MAAMW,cAAY,CAAC,aAAa,SAAS,SAAS,eAAe,SAAS;AAC1E,IAAI,IAAI,OAAK,GACX,IACA,KACA,KACA,KACA,KACA;AAcF,MAAM,sBAAsB;AAC5B,MAAM,yBAAyB,UAAU,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAenD;AACF,MAAM,yBAAyB,UAAU,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAerD;AACF,MAAM,iBAAiB,UAAU,QAAQ,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAe7C;AACF,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,QAAQ,WAAW,KAAK,CAAC,IAAI,OAAO;AAAA,IACnD,QAAQ,CAAC,UAAU,cAAc,WAAW,KAAK,CAAC,EAAE;AAAA,IACpD,MAAM,CAAC,OAAO,WAAW,WAAW,KAAK,CAAC,KAAK,YAAY,mBAAmB,YAAY,YAAY,qBAAqB,YAAY,iBAAiB,mBAAmB,YAAY,YAAY,YAAY;AAAA,IAC/M,MAAM,CAAC,OAAO,YAAY,YAAY,WAAW,WAAW,KAAK,CAAC,IAAI,YAAY,YAAY,QAAQ,WAAW,KAAK,CAAC,KAAK,YAAY,mBAAmB,YAAY,YAAY,qBAAqB,YAAY,YAAY,YAAY;AAAA,EAChP;AACE,SAAO,eAAe,OAAO,+BAA+B,OAAO;AACrE;AACA,MAAM,gBAAgB,CAAC,OAAO,UAAU;AACtC,MAAI,UAAU,WAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,MAAM;AACd,WAAO,MAAM,KAAK,QAAQ,eAAe,GAAG,KAAK,IAAI;AAAA,EACvD;AACA,SAAO,MAAM,QAAQ,SAAS,UAAUkH,UAAQ,MAAM,QAAQ,KAAK,EAAE,MAAM,IAAI,IAAIC,SAAO,MAAM,QAAQ,KAAK,EAAE,MAAM,GAAG;AAC1H;AACA,MAAM,qBAAqB,OAAO,QAAQ;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOlH,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAMA,QAAO,QAAQ,WAAW,WAAW,KAAK,CAAC,EAAE,GAAGA,QAAO,WAAW,OAAO,CAAC;AAAA,EACjG;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAMF,WAAS;AAAA,EACb,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EAER,gBAAgB;AAAA,IACd,aAAa;AAAA,EACjB;AAAA,EACE,iBAAiB,cAAc,OAAO,WAAW,KAAK;AACxD,GAAG,WAAW,UAAU,aAAa,WAAW,YAAY,YAAY;AAAA,EACtE,iBAAiB;AAAA,EACjB,aAAa;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,SAAS;AAAA,EACb;AACA,GAAG,WAAW,YAAY,YAAY;AAAA,EACpC,iBAAiB;AACnB,GAAG,WAAW,YAAY,WAAW;AAAA,EACnC,WAAW;AACb,CAAC,CAAC;AACF,MAAM,uBAAuB,OAAO,QAAQ;AAAA,EAC1C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOE,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,QAAQA,QAAO,cAAc,WAAW,WAAW,KAAK,CAAC,EAAE,CAAC;AAAA,EAC7E;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAM;AACJ,QAAM,kBAAkB,cAAc,OAAO,WAAW,KAAK;AAC7D,SAAOF,WAAS;AAAA,IACd,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,OAAO;AAAA,EACX,GAAK,WAAW,UAAU,aAAa;AAAA,IACnC,SAAS;AAAA,EACb,GAAK;AAAA,IACD,iBAAiB,mBAAmB,eAAe,QAAQ,eAAe;AAAA,IAC1E,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACxB,CAAG;AACH,GAAG,IAAI,QAAQ,MAAM;AAAA,iBACJ,CAAC;AAAA,MACZ,cAAc,CAAC;AACrB,MAAM,qBAAqB,OAAO,QAAQ;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOE,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,KAAKA,QAAO,WAAW,WAAW,WAAW,KAAK,CAAC,EAAE,IAAI,WAAW,YAAY,mBAAmB,WAAW,YAAY,YAAYA,QAAO,mBAAmB,WAAW,YAAY,iBAAiBA,QAAO,iBAAiB,WAAW,YAAY,YAAYA,QAAO,UAAU;AAAA,EACrS;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAMF,WAAS;AAAA,EACb,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,iBAAiB,WAAW,UAAU,YAAY,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AACrH,GAAG,WAAW,YAAY,iBAAiB;AAAA,EACzC,YAAY,cAAc,mBAAmB;AAC/C,GAAG,WAAW,YAAY,YAAY;AAAA,EACpC,QAAQ;AAAA,EACR,YAAY,cAAc,mBAAmB;AAC/C,CAAC,GAAG,CAAC;AAAA,EACH;AACF,OAAO,WAAW,YAAY,mBAAmB,WAAW,YAAY,YAAY,IAAI,QAAQ,MAAM;AAAA;AAAA,mBAEnF,CAAC;AAAA,QACZ,sBAAsB,CAAC;AAC/B,MAAM,qBAAqB,OAAO,QAAQ;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOE,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,KAAKA,QAAO,WAAW,WAAW,WAAW,KAAK,CAAC,EAAE,IAAI,WAAW,YAAY,mBAAmB,WAAW,YAAY,YAAYA,QAAO,mBAAmB,WAAW,YAAY,YAAYA,QAAO,UAAU;AAAA,EACrO;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAMF,WAAS;AAAA,EACb,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,YAAY;AAAA,EACZ,iBAAiB;AACnB,GAAG,WAAW,YAAY,YAAY;AAAA,EACpC,iBAAiB,WAAW,UAAU,YAAY,kBAAkB,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AACrH,GAAG,WAAW,UAAU,aAAa;AAAA,EACnC,SAAS;AACX,GAAG,WAAW,YAAY,YAAY;AAAA,EACpC,iBAAiB,cAAc,OAAO,WAAW,KAAK;AAAA,EACtD,YAAY,cAAc,mBAAmB;AAC/C,CAAC,GAAG,CAAC;AAAA,EACH;AACF,OAAO,WAAW,YAAY,mBAAmB,WAAW,YAAY,YAAY,IAAI,QAAQ,MAAM;AAAA;AAAA,mBAEnF,CAAC;AAAA,QACZ,sBAAsB,CAAC;AAS/B,MAAM,iBAA8B,sBAAM,WAAW,SAASqH,gBAAe,SAAS,KAAK;AACzF,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EAChB,IAAQ,OACJ,QAAQ,8BAA8B,OAAOzH,WAAS;AACxD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,QAAM,QAAQ,OAAM;AACpB,QAAM,YAAY,CAAA;AAClB,QAAM,eAAe;AAAA,IACnB,MAAM,CAAA;AAAA,IACN,MAAM,CAAA;AAAA,EACV;AACE,MAAI,YAAY,iBAAiB,YAAY,UAAU;AACrD,QAAI,UAAU,QAAW;AACvB,gBAAU,eAAe,IAAI,KAAK,MAAM,KAAK;AAC7C,gBAAU,eAAe,IAAI;AAC7B,gBAAU,eAAe,IAAI;AAC7B,UAAI,YAAY,QAAQ;AACxB,UAAI,OAAO;AACT,oBAAY,CAAC;AAAA,MACf;AACA,mBAAa,KAAK,YAAY,cAAc,SAAS;AAAA,IACvD,WAAW,QAAQ,IAAI,aAAa,cAAc;AAChD,cAAQ,MAAM,wGAA6G;AAAA,IAC7H;AAAA,EACF;AACA,MAAI,YAAY,UAAU;AACxB,QAAI,gBAAgB,QAAW;AAC7B,UAAI,aAAa,eAAe,KAAK;AACrC,UAAI,OAAO;AACT,oBAAY,CAAC;AAAA,MACf;AACA,mBAAa,KAAK,YAAY,cAAc,SAAS;AAAA,IACvD,WAAW,QAAQ,IAAI,aAAa,cAAc;AAChD,cAAQ,MAAM,8FAAmG;AAAA,IACnH;AAAA,EACF;AACA,SAAoBH,kCAAAA,KAAM,oBAAoBE,WAAS;AAAA,IACrD,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA,MAAM;AAAA,EACV,GAAK,WAAW;AAAA,IACZ;AAAA,EACJ,GAAK,OAAO;AAAA,IACR,UAAU,CAAC,YAAY,WAAwBD,kCAAAA,IAAK,sBAAsB;AAAA,MACxE,WAAW,QAAQ;AAAA,MACnB;AAAA,IACN,CAAK,IAAI,MAAmBA,kCAAAA,IAAK,oBAAoB;AAAA,MAC/C,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,OAAO,aAAa;AAAA,IAC1B,CAAK,GAAG,YAAY,gBAAgB,OAAoBA,kCAAAA,IAAK,oBAAoB;AAAA,MAC3E,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,OAAO,aAAa;AAAA,IAC1B,CAAK,CAAC;AAAA,EACN,CAAG,CAAC;AACJ,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,eAAe,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxF,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrB,OAAO,UAAgD,UAAU,CAAC,UAAU,MAAM,CAAC,WAAW,WAAW,WAAW,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,EAIzI,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtJ,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB,aAAa,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvB,SAAS,UAAU,MAAM,CAAC,UAAU,eAAe,iBAAiB,OAAO,CAAC;AAC9E,IAAI;ACvUJ,MAAM,yBAAgE,CAAC;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AAEJ,YAAU,MAAM;AAAA,EAChB,GAAG,CAAC,IAAI,CAAC;AAET,SACEhB,kCAAAA,KAAC,QAAA,EAAO,MAAY,WAAU,oBAAmB,SAC/C,UAAA;AAAA,IAAAA,uCAAC,eAAY,WAAU,iBAAgB,IAAI,EAAC,SAAS,UAAS,UAAA;AAAA,MAAA;AAAA,MAACE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,eAAA,CAElI;AAAA,MACAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,SAC1B,UAAAA,kCAAAA,IAAC,OAAA,EAAM,UAAS,QAAA,CAAQ,EAAA,CAC1B;AAAA,IAAA,GACN;AAAA,IACAA,kCAAAA,IAAC,iBAAc,IAAI,EAAC,WAAW,OAAA,GAC7B,gDAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA,SAAW,4CAA4C,KAAK,KAAM,8CAEpE,EAAA,CACF;AAAA,IACAF,kCAAAA,KAAC,eAAA,EAAc,WAAU,iBACvB,UAAA;AAAA,MAAAE,sCAAC,QAAA,EAAO,WAAU,qBAAoB,SAAS,YAAa,UAAA,aAE5D;AAAA,MACAA,kCAAAA,IAAC,QAAA,EAAO,SAAS,WAAY,UAAA,UAAA,CAE7B;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACVA,MAAM,cAAc,CAAC,OAAe,WAAW,MAAM;AACnD,MAAI,UAAU,EAAG,QAAO;AACxB,QAAM,IAAI;AACV,QAAM,KAAK,WAAW,IAAI,IAAI;AAC9B,QAAM,QAAQ,CAAC,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AACtE,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,SAAO,YAAY,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC;AACzE;AAEA,MAAM,SAAS,CAAC,UAAuB;AACrC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IAEE;AAEJ,QAAM,CAAC,OAAO,QAAQ,IAAI,SAaxB,CAAA,CAAE;AAMJ,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,KAAK;AACpD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAChE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAS,IAAI,iBAAiB;AAC5E,QAAM,YAAY,aAAa,QAAQ,KAAK,mBAAmB;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAA;AACxC,QAAM,CAAC,qBAAqB,sBAAsB,IAAI,SAAS,KAAK;AACpE,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAA;AAClD,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AAEtD,QAAM,EAAE,cAAc,eAAe,aAAA,IAAiB,YAAY;AAAA,IAChE,gBAAgB,CAAC,aAAa;AAC5B,eAAS;AAAA,QACP,GAAG;AAAA,QACH,GAAG,SAAS,IAAI,CAAC,UAAU;AAAA,UACzB;AAAA,UACA,WAAW;AAAA,UACX,kBAAkB;AAAA,UAClB,QAAQ;AAAA,UACR,gBAAgB;AAAA,UAChB,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,UAAU,KAAK;AAAA,UACf,UAAU;AAAA,UACV,SAAS;AAAA,QAAA,EACT;AAAA,MAAA,CACH;AACD,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,aAAa,MAAM;AACjB,oBAAc,IAAI;AAAA,IACpB;AAAA,IACA,aAAa,MAAM;AACjB,oBAAc,KAAK;AAAA,IACrB;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,IACZ;AAAA,IACA,QAAQ,SAAS,oBAAoB,MAAM,IAAI;AAAA,EAAA,CAChD;AAED,QAAM,eAAe,OAAyB,IAAI;AAElD,YAAU,MAAM;AACd,UAAM,cAAc,uDAAmB,IAAI,CAAA,SAAQ,KAAK,OAAO;AAC/D,oBAAgB,WAAW;AAAA,EAC7B,GAAG,CAAC,iBAAiB,CAAC;AAEtB,YAAU,MAAM;AACd,UAAM,qBAAqB,CAAC,UAAe;AACzC,UAAI,aAAa;AACf,cAAM,UACJ;AACF,cAAM,cAAc;AACpB,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,aAAa,SAAS;AACxB,mBAAa,QAAQ,WAAW;AAAA,IAClC;AAEA,WAAO,iBAAiB,gBAAgB,kBAAkB;AAE1D,WAAO,MAAM;AAEX,aAAO,oBAAoB,gBAAgB,kBAAkB;AAAA,IAC/D;AAAA,EACF,GAAG,CAAC,aAAa,QAAQ,CAAC;AAE1B,QAAM,mBAAmB,MAAM;AAC7B,UAAM,kBAAkB;AACxB,QAAI,gBAAgB,mBAAmB,gBAAgB,YAAY;AACjE,aAAO,gBAAgB,WAAW;AAAA,IACpC,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAAS,oBAAoB,OAAe;AAC1C,UAAM,UAAU,MAAM,MAAM,GAAG,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM;AAC1D,UAAM,eAAe,QAAQ,OAAO,CAAC,KAAUqI,UAAiB;AAC9D,UAAIA,KAAI,IAAI,CAAA;AACZ,aAAO;AAAA,IACT,GAAG,CAAA,CAAE;AACL,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,CAAC,SAAc;AACpC,UAAM,WAAW,6BAAM,KAAK,MAAM,KAAK;AACvC,YAAQ,UAAA;AAAA,MACN,KAAK;AACH,eACErI,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,gDAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,YAAA,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MAGxD,KAAK;AACH,eACEA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,gDAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,YAAA,CAAa;AAAA,UAAA;AAAA,QAAA;AAAA,MAGxD,KAAK;AACH,eACEA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,gDAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,QAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAGpD;AACE,eACEA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WACE,oBAAoB,qBAAqB;AAAA,YAE3C,OAAO,EAAE,iBAAiB,UAAA;AAAA,YAE1B,gDAAC,QAAA,EAAO,MAAM,IAAI,KAAK,OAAO,OAAO,QAAA,CAAS;AAAA,UAAA;AAAA,QAAA;AAAA,IAChD;AAAA,EAGR;AAEA,QAAM,WAAW,GAAG,aAAA,EAAe,cAAc;AAEjD,QAAM,gBAAgB,YAAY;AAChC,mBAAe,IAAI;AAEnB,UAAM,aAAa,IAAI,gBAAA;AACvB,uBAAmB,UAAU;AAE7B,UAAM,gBAAgB,MAAM,OAAO,CAAC,SAAc,KAAK,WAAW,UAAU,EAAE;AAC9E,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAI,MAAM,CAAC,EAAE,mBAAmB,OAAO,MAAM,CAAC,EAAE,WAAW,WAAW;AACpE;AAAA,MACF;AAEA,YAAM,OAAO,MAAM,CAAC;AAEpB,YAAM,WAAW,6BAAM;AACvB,UAAI;AACF,YAAI,WAAW,KAAK,OAAO,MAAM;AAC/B,gBAAM,iBAAiB,MAAM,sBAAsB,MAAM,GAAG,UAAU;AACtE,cAAI,gBAAgB;AAClB,uBAAW,MAAM;AAAE,2BAAa,IAAI;AAAA,YAAE,GAAG,GAAI;AAAA,UAC/C;AAAA,QACF,OAAO;AACL,gBAAM,oBAAoB,MAAM,GAAG,YAAY,aAAa;AAAA,QAC9D;AAAA,MACF,SAAS,OAAY;AACnB,iBAAS,CAAC,cAAc;AACtB,gBAAM,eAAe,CAAC,GAAG,SAAS;AAClC,uBAAa,CAAC,IAAI;AAAA,YAChB,GAAG,aAAa,CAAC;AAAA,YACjB,QAAQ;AAAA,YACR,SAAS,MAAM,WAAW;AAAA,UAAA;AAE5B,iBAAO;AAAA,QACT,CAAC;AAAA,MACH,UAAA;AACE,uBAAe,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AAKA,MAAI,YAAY;AAChB,QAAM,sBAAsB,OAC1B,MACA,OACA,YACA,cACG;;AACH,QAAI;AACF,YAAM,SAAS,CAAC,QAAQ,OAAO,OAAO,OAAO,OAAO,QAAQ,gBAAgB,SAAS,KAAK;AAC1F,YAAM,YAAW,6BAAM,cAAY,6BAAM,aAAY;AACrD,YAAM,UAAU,OAAO,KAAK,OAAK,SAAS,SAAS,CAAC,CAAC;AAErD,UAAI,YAAW,6BAAM,cAAY,6BAAM,aAAY,SAAS;AAC1D,eAAO,SAAS;AAAA,UACd,MAAM;AAAA,UACN,SAAS;AAAA,QAAA,CACV;AAAA,MACH;AACA,YAAM,wBAAwB,MAAM;AAAA,QAClC,GAAG,QAAQ,QAAQ,6BAAM,QAAQ,yBAAyB,6BAAM,QAAQ,eAAe,EAAC,6BAAM,UAAS;AAAA,QACvG;AAAA,UACE,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,aAAa,6BAAM;AAAA,YACnB,WAAW;AAAA,UAAA;AAAA,UAEb,QAAQ,WAAW;AAAA,QAAA;AAAA,MACrB;AAEF,YAAM,oBAAoB,MAAM,sBAAsB,KAAA;AACtD,WAAI,uDAAmB,gBAAe,KAAK;AAEzC,iBAAS;AAAA,UACP,MAAM;AAAA,UACN,SAAS,uDAAmB;AAAA,QAAA,CAC7B;AACD;AAAA,MACF;AACA,YAAM,gBAAe,6BAAkB,SAAlB,mBAAwB,kBAAxB,mBAAuC;AAC5D,YAAMmD,aAAW,6BAAkB,SAAlB,mBAAwB,kBAAxB,mBAAuC;AACxD,YAAM,aAAa;AAAA,QACjB,MAAM,6BAAM,KAAK,MAAM,GAAG,6BAAM;AAAA,QAChC,KAAK;AAAA,MAAA;AAEP,YAAM,gBAAgB,KAAK;AAG3B,YAAM,YAAY,OAAO,OAAO,OAAO;AACvC,UAAI,gBAAgB;AAEpB,aAAO,gBAAgB,eAAe;AACpC,cAAM,QAAQ;AACd,cAAM,MAAM,KAAK,IAAI,gBAAgB,WAAW,aAAa;AAG7D,cAAM,MAAM,WAAW,KAAK;AAAA,UAC1B,QAAQ;AAAA,UACR,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG;AAAA,UAChC,SAAS;AAAA,YACP,gBAAgB;AAAA,UAAA;AAAA,QAClB,CACD;AAGD,wBAAgB;AAChB,cAAM,WAAW,KAAK,MAAO,gBAAgB,gBAAiB,GAAG;AAEjE,iBAAS,CAAC,cAAc;AACtB,gBAAM,eAAe,CAAC,GAAG,SAAS;AAClC,uBAAa,KAAK,IAAI;AAAA,YACpB,GAAG,aAAa,KAAK;AAAA,YACrB,kBAAkB;AAAA,YAClB,QAAQ;AAAA,YACR,gBAAgB;AAAA,UAAA;AAElB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,eAAS,CAAC,cAAc;AACtB,cAAM,eAAe,CAAC,GAAG,SAAS;AAClC,qBAAa,KAAK,IAAI;AAAA,UACpB,GAAG,aAAa,KAAK;AAAA,UACrB,QAAQ;AAAA,UACR,UAAAA;AAAA,UACA,SAAS;AAAA,QAAA;AAEX,oBAAY,YAAY;AAExB,YAAI,aAAa,WAAW;AAC1B,mBAAS,YAAY;AACrB,sBAAY;AAAA,QAEd;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,OAAY;AACnB,eAAS,CAAC,cAAc;AACtB,cAAM,eAAe,CAAC,GAAG,SAAS;AAClC,qBAAa,KAAK,IAAI;AAAA,UACpB,GAAG,aAAa,KAAK;AAAA,UACrB,QAAQ;AAAA,UACR,SAAS,MAAM,WAAW;AAAA,QAAA;AAE5B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EAEF;AAEA,QAAM,wBAAwB,OAC5B,MACA,OACA,eACG;;AAEH,QAAI;AACF,YAAM,YACH,iBAAA,KAAsB,MAAM,OAAO,OAAO,IAAI,OAAO,OAClD,IAAI,OAAO,QACV,sBAAsB,MAAM,OAAO;AAC1C,YAAM,QAAQ,KAAK,MAAK,6BAAM,YAAW,QAAQ;AACjD,YAAM,wBAAwB,MAAM;AAAA,QAClC,GAAG,QAAQ,QAAQ,6BAAM,QAAQ,cAAc,KAAK,aAAa,6BAAM,QAAQ,eAAe,EAAC,6BAAM,UAAS;AAAA,QAC9G;AAAA,UACE,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,aAAa,6BAAM;AAAA,YACnB,WAAW;AAAA,UAAA;AAAA,UAEb,QAAQ,WAAW;AAAA,QAAA;AAAA,MACrB;AAEF,YAAM,oBAAoB,MAAM,sBAAsB,KAAA;AAEtD,UAAI,sBAAqB,uDAAmB,iBAAe,uDAAmB,gBAAe,KAAK;AAChG,iBAAS,EAAE,UAAS,uDAAmB,YAAW,yBAAyB,MAAM,SAAS;AAC1F,eAAO;AAAA,MACT;AAEA,YAAM,iBAAgB,uBAAkB,KAAK,kBAAvB,mBAAsC;AAC5D,UAAI,cAAc,SAAS,GAAG;AAC5B,cAAM,WACJ,cAAc,CAAC,EAAE,aAAa,MAAM,kBAAkB,EAAE,CAAC;AAC3D,iBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,gBAAM,UAAU,cAAc,CAAC,EAAE;AACjC,gBAAM,eAAe,cAAc,CAAC,EAAE;AACtC,gBAAM,SAAS,UAAU,KAAK;AAC9B,gBAAM,MAAM,KAAK,IAAI,QAAQ,UAAU,6BAAM,QAAQ;AACrD,gBAAM,aAAa;AAAA,YACjB,OAAM,kCAAM,SAAN,mBAAY,MAAM,OAAO;AAAA,YAC/B,KAAK;AAAA,UAAA;AAEP,gBAAM,MAAM,WAAW,KAAK;AAAA,YAC1B,QAAQ;AAAA,YACR,MAAM,WAAW;AAAA,YACjB,SAAS;AAAA,cACP,gBAAgB;AAAA,YAAA;AAAA,UAClB,CACD;AACD,gBAAM,WAAW,KAAK,OAAQ,IAAI,KAAK,MAAO,KAAK;AACnD,mBAAS,CAAC,cAAc;AACtB,kBAAM,eAAe,CAAC,GAAG,SAAS;AAClC,yBAAa,KAAK,IAAI;AAAA,cACpB,GAAG,aAAa,KAAK;AAAA,cACrB,kBAAkB;AAAA,cAClB,QAAQ;AAAA,cACR,gBAAgB;AAAA,YAAA;AAElB,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,cAAM,uBAAuB,MAAM,MAAM,GAAG,QAAQ,iBAAiB;AAAA,UACnE,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,WAAW;AAAA,UAAA;AAAA,UAEb,MAAM,KAAK,UAAU;AAAA,YACnB,UAAU,6BAAM;AAAA,YAChB;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AACD,cAAM,mBAAmB,MAAM,qBAAqB,KAAA;AACpD,cAAMA,aAAW,0DAAkB,SAAlB,mBAAwB;AACzC,iBAAS,CAAC,cAAc;AACtB,gBAAM,eAAe,CAAC,GAAG,SAAS;AAClC,uBAAa,KAAK,IAAI;AAAA,YACpB,GAAG,aAAa,KAAK;AAAA,YACrB,QAAQ;AAAA,YACR,UAAAA;AAAA,YACA,SAAS;AAAA,UAAA;AAGX,mBAAS,YAAY;AACrB,iBAAO;AAAA,QACT,CAAC;AAAA,MACH,OAAO;AACL,iBAAS,CAAC,cAAc;AACtB,gBAAM,eAAe,CAAC,GAAG,SAAS;AAClC,uBAAa,KAAK,IAAI;AAAA,YACpB,GAAG,aAAa,KAAK;AAAA,YACrB,QAAQ;AAAA,YACR,SAAS;AAAA,UAAA;AAEX,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF,SAAS,OAAY;AACnB,eAAS,CAAC,cAAc;AACtB,cAAM,eAAe,CAAC,GAAG,SAAS;AAClC,qBAAa,KAAK,IAAI;AAAA,UACpB,GAAG,aAAa,KAAK;AAAA,UACrB,QAAQ;AAAA,UACR,SAAS,MAAM,WAAW;AAAA,QAAA;AAE5B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,kBAAkB,MAAM;AAC5B,QAAI,aAAa,SAAS;AAExB,UAAI,MAAM,UAAU;AAClB,qBAAa,QAAQ,aAAa,YAAY,MAAM;AAAA,MACtD,OAAO;AAEL,qBAAa,QAAQ,gBAAgB,UAAU;AAAA,MACjD;AACA,mBAAa,QAAQ,MAAA;AAAA,IACvB;AAAA,EACF;AAGA,QAAM,mBAAmB,CAAC,MAAW;AAEnC,UAAM,gBAAgB,EAAE,OAAO;AAE/B,UAAM,aAAa,MAAM,KAAK,aAAa,EAAE,IAAI,CAAA,SAAQ;AACvD,YAAM,WAAW,KAAK;AACtB,YAAM,uBAAuB,SAAS,UAAU,GAAG,SAAS,YAAY,GAAG,CAAC,KAAK;AACjF,aAAO;AAAA,IACT,CAAC,EAAE,CAAC;AAEJ,yBAAqB,UAAU;AAE/B,2BAAuB,6CAAc,SAAS,WAAW;AACzD,UAAM,WAAW,MAAM,KAAK,aAAa,EAAE,IAAI,CAAC,UAAe;AAAA,MAC7D;AAAA,MACA,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,UAAU,6BAAM;AAAA,MAChB,UAAU,6BAAM;AAAA,MAChB,UAAU,6BAAM;AAAA,MAChB,UAAU;AAAA,MACV,SAAS;AAAA,IAAA,EACT;AACF,aAAS,CAAC,cAAmB,CAAC,GAAG,WAAW,GAAG,QAAQ,CAAC;AACxD,mBAAe,KAAK;AAAA,EAGtB;AAEA,QAAM,aAAa,CAAC,kBAA0B;AAE5C;AAAA,MAAS,CAAC,cACR,UAAU;AAAA,QAAI,CAAC,MAAM,UACnB,UAAU,gBAAgB,EAAE,GAAG,MAAM,QAAQ,eAAe;AAAA,MAAA;AAAA,IAC9D;AAAA,EAGJ;AAIA,QAAM,kBAAkB,CAAC,UAAkB;AACzC;AAAA,MAAS,CAAC,cACR,UAAU;AAAA,QAAI,CAAC,MAAM,MACnB,MAAM,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,cAAc;AAAA,MAAA;AAAA,IAC1D;AAAA,EAEJ;AAEA,QAAM,iBAAiB,MAAM;AAC3B,mBAAe,CAAC,oBAAoB,CAAC,eAAe;AAAA,EACtD;AAEA,QAAM,sBAAsB,MAAM;AAChC,yBAAqB,CAAC,iBAAiB;AACvC,wBAAoB,UAAA,IAAc,QAAA;AAAA,EACpC;AAEA,QAAM,oBAAoB,MAAM;;AAC9B,QAAI,MAAM,SAAS,GAAG;AACpB,UACE;AAAA,QACE;AAAA,MAAA,GAEF;AAEA,wBAAgB,MAAA;AAChB,aAAI,wDAAiB,WAAjB,mBAAyB,SAAS;AACpC,kBAAA;AAAA,QACF;AACA,iBAAS,CAAA,CAAE;AAAA,MACb;AAAA,IACF,OAAO;AACL,cAAA;AAAA,IACF;AAAA,EACF;AACA,YAAU,MAAM;AACd,YAAQ,SAAS,EAAE;AAAA,EACrB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,sBAAsB,MAAM;AAChC,2BAAuB,KAAK;AAAA,EAC9B;AAEA,QAAM,YAAY,YAAY;AAC5B,UAAM,UAAU,GAAG,aAAA,EAAe,cAAc;AAChD,UAAM,SAAS,uDAAmB,OAAO,CAAA,SAAQ,KAAK,UAAU,mBAAmB,GAAG;AACtF,UAAM,UAAU;AAAA,MACd,gBAAgB;AAAA,IAAA;AAElB,UAAMmF,aAAY,aAAa,QAAQ,KAAK,mBAAmB,KAAK;AACpE,YAAQ,SAAS,IAAIA;AACrB,UAAM,MAAM,GAAG,OAAO,sBAAsB,MAAM,IAAI;AAAA,MACpD,QAAQ;AAAA,MACR;AAAA,IAAA,CACD;AAED,wBAAA;AAAA,EACF;AAEA,QAAM,aAAa,MAAM;AACvB,wBAAA;AAAA,EACF;AACA,SACExI,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,IAAAD,kCAAAA,KAAC,QAAA,EAAO,MAAY,SAAkB,WAAU,UAC9C,UAAA;AAAA,MAAAA,kCAAAA,KAAC,aAAA,EAAY,WAAU,gBACrB,UAAA;AAAA,QAAAE,kCAAAA,IAAC+C,OAAA,EAAI,WAAU,iBACb,UAAA/C,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,IAAI;AAAA,YACJ,QAAO;AAAA,YACP,OAAM;AAAA,YAEL,UAAA;AAAA,UAAA;AAAA,QAAA,GAEL;AAAA,+CACC,OAAA,EACC,UAAA;AAAA,UAAAA,kCAAAA,IAAC,cAAW,eAAa,MAAC,SAAS,qBACjC,UAAAA,kCAAAA,IAACuI,eAAW,EAAA,CACd;AAAA,UACAvI,kCAAAA,IAAC,cAAW,eAAa,MAAC,SAAS,mBACjC,UAAAA,kCAAAA,IAACC,eAAU,EAAA,CACb;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,GACF;AAAA,4CACC,SAAA,EAAQ;AAAA,4CACR,eAAA,EAAc,WAAU,mBACtB,UAAA,MAAM,WAAW,IAChBD,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uBAAuB,eAAe,gBAAgB,EAC/D;AAAA,UAEF,UAAAA,kCAAAA,IAAC,SAAK,GAAG,aAAA,GAAgB,WAAU,aAChC,UAAA,CAAC,aACAF,kCAAAA,KAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,YAAAC,kCAAAA,IAAC,SAAA,EAAO,GAAG,cAAA,GAAiB,KAAK,cAAc;AAAA,YAC/CA,kCAAAA,IAAC,KAAA,EAAE,WAAU,gBAAe,UAAA,2CAE5B;AAAA,YAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,cAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBAAgB,SAAS,iBACtC,UAAA;AAAA,gBAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,SAAS;AAAA,gBACjCA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,UAAA,aAAS;AAAA,gBAC/BA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACJ,GAAG,cAAc,EAAE,UAAU,MAAM;AAAA,oBACpC,KAAK;AAAA,oBACL,OAAO,EAAE,SAAS,OAAA;AAAA,oBAClB,UAAU,YAAY;AAEpB,oCAAA;AAAA,oBACF;AAAA,oBACA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,GACF;AAAA,cACAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBAAgB,SAAS,iBACtC,UAAA;AAAA,gBAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,QAAQ;AAAA,gBAChCA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,UAAA,UAAM;AAAA,gBAC5BA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACJ,GAAG,cAAc,EAAE,UAAU,MAAM;AAAA,oBACpC,KAAK;AAAA,oBACL,OAAO,EAAE,SAAS,OAAA;AAAA,oBAClB,UAAU;AAAA,oBACV;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,EAAA,CACF;AAAA,YAAA,EAAA,CACF;AAAA,UAAA,EAAA,CACF,IAEAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,cACb,UAAA;AAAA,YAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,gBAAgB;AAAA,YACxCA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,UAAA,8BAAA,CAEtB;AAAA,UAAA,EAAA,CACF,EAAA,CAEJ;AAAA,QAAA;AAAA,MAAA,0CAGD,OAAA,EAAI,WAAU,kBACb,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,QAAAE,sCAAC,OAAA,EAAI,WAAU,oBACb,UAAAA,sCAAC,SAAI,WAAU,iBACZ,UAAA,MAAM,IAAI,CAAC,MAAW,UAAA;;AACrBF,wDAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,cAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,gBAAA,eAAe,6BAAM,IAAI;AAAA,sDACzB,OAAA,EAAI,WAAU,kBACb,UAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,gBACb,UAAA;AAAA,kBAAAE,sCAAC,OAAA,EAAI,WAAU,iBACZ,WAAA,kCAAM,SAAN,mBAAY,MACf;AAAA,kBACAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,iBACZ,UAAA;AAAA,oBAAA,aAAY,kCAAM,SAAN,mBAAY,IAAI;AAAA,oBAC7BE,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,YACE,6BAAM,YAAW,gBACf,6BAAM,QAAQ,UAAS,IACrB,iBACA;AAAA,wBAGL,UAAA,6BAAM;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACT,EAAA,CACF;AAAA,gBAAA,EAAA,CACF,EAAA,CACF;AAAA,cAAA,GACF;AAAA,oDACC,OAAA,EAAI,WAAU,oBACZ,WAAA,6BAAM,YAAW,aAChBF,kCAAAA,KAAAC,kBAAAA,UAAA,EACE,UAAA;AAAA,gBAAAD,kCAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,kBAAAE,kCAAAA;AAAAA,oBAAC8C;AAAAA,oBAAA;AAAA,sBACC,UAAS,6BAAM,cAAa,QAAQ;AAAA,sBACpC,UAAU,MAAM,gBAAgB,KAAK;AAAA,sBACrC,WAAU,6BAAM,qBAAoB,QAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAE9C9C,kCAAAA,IAAC,OAAA,EAAI,WAAU,iBAAgB,UAAA,SAAA,CAAM;AAAA,gBAAA,GACvC;AAAA,gBACAA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,SAAS,MAAM,WAAW,KAAK;AAAA,oBAE/B,UAAAA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,MAAM;AAAA,wBACN,KAAK,OAAO,OAAO;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACpB;AAAA,gBAAA;AAAA,cACH,EAAA,CACF,0CAEC,YAAA,EAAW,MAAK,MAAK,WAAU,iBAAgB,6BAEhD,EAAA,CAEJ;AAAA,YAAA,MAlDmC,kCAAM,SAAN,mBAAY,IAmDjD;AAAA,kDACC,OAAA,EAAI,WAAU,qBACZ,WAAA,6BAAM,kBAAiB,KACtBA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,SAAQ;AAAA,gBACR,OAAO,6BAAM;AAAA,cAAA;AAAA,YAAA,EACf,CAEJ;AAAA,UAAA,EAAA,GA7DgC,KA8DlC;AAAA,SACD,EAAA,CACH,GACF;AAAA,QACC,YACCF,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,UAAAC,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,OAAO;AAAA,cACP,4CAAO,KAAA,EAAI;AAAA,cACX,SAAS;AAAA,YAAA;AAAA,UAAA;AAAA,UAEXA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACJ,GAAG,cAAc,EAAE,UAAU,MAAM;AAAA,cACpC,KAAK;AAAA,cACL,OAAO,EAAE,SAAS,OAAA;AAAA,cAClB,UAAU;AAAA,cACV;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,EAAA,CACF;AAAA,MAAA,EAAA,CAEJ,GACF,GAEJ;AAAA,4CACC,SAAA,EAAQ;AAAA,MACTF,kCAAAA,KAAC,eAAA,EAAc,WAAU,mBACvB,UAAA;AAAA,QAAAE,sCAAC,QAAA,EAAO,SAAQ,QAAO,SAAS,mBAAmB,UAAA,UAEnD;AAAA,QACAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,SAAS;AAAA,YACT,UAAU,CAAC,MAAM,UAAU;AAAA,YAC5B,UAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAED,EAAA,CACF;AAAA,IAAA,GACF;AAAA,IACC,qBACCF,kCAAAA,KAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,MAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,QAAAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,YAAW,UAAA;AAAA,UAAA;AAAA,UACb,MAAM;AAAA,UAAO;AAAA,UAAM,MAAM,WAAW,IAAI,MAAM;AAAA,QAAA,GAC3D;AAAA,QACAA,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,UAAAE,kCAAAA,IAAC,SAAI,WAAU,OAAM,SAAS,qBAC5B,UAAAA,kCAAAA,IAACuI,eAAW,EAAA,CACd;AAAA,gDACC,OAAA,EAAI,WAAU,OAAM,SAAS,gBAC5B,UAAAvI,kCAAAA,IAAC,OAAA,EAAI,WAAU,aACZ,wBAAcA,sCAAC,iBAAA,CAAA,CAAgB,IAAKA,kCAAAA,IAAC,mBAAA,CAAA,CAAkB,GAC1D,GACF;AAAA,UACAA,kCAAAA,IAAC,SAAI,WAAU,OAAM,SAAS,mBAC5B,UAAAA,kCAAAA,IAAC,SAAM,EAAA,CACT;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,GACF;AAAA,MACAA,kCAAAA,IAAC,OAAA,EAAI,WAAU,YACZ,WAAC,eACA,MAAM,IAAI,CAAC,MAAW;;AACpBF,iDAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,UAAAE,sCAAC,SAAI,WAAU,YAAY,UAAA,eAAe,6BAAM,IAAI,GAAE;AAAA,UACtDF,kCAAAA,KAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,YAAAE,kCAAAA,IAAC,SAAI,WAAU,aACb,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,eAAA,kCAAM,SAAN,mBAAY;AAAA,cACZ;AAAA,YAAA,EAAA,CACH,EAAA,CACF;AAAA,kDACC,OAAA,EAAI,WAAU,eACZ,WAAA,6BAAM,YAAW,aAChBA,kCAAAA,KAAAC,kBAAAA,UAAA,EACG,UAAA;AAAA,cAAA,KAAK,mBAAmB,KACvBD,kCAAAA,KAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,gBAAAE,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,WAAU;AAAA,oBACV,KAAK,OAAO,OAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErBA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,SAAS,MAAM,WAAW,KAAK;AAAA,oBAC/B,KAAK,OAAO,OAAO;AAAA,oBACnB,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX,GACH;AAAA,eAED,6BAAM,kBAAiB,MACtB,6BAAM,kBAAiB,OACrBA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,OAAM;AAAA,kBACN,SAAQ;AAAA,kBACR,OAAO,6BAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,eAGlB,6BAAM,oBAAmB,OACxBF,kCAAAA,KAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,gBAAAE,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,WAAU;AAAA,oBACV,KAAK,OAAO,OAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAErBA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAM;AAAA,oBACN,KAAK,OAAO,OAAO;AAAA,oBACnB,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACX,EAAA,CACH;AAAA,YAAA,EAAA,CAEJ,0CAEC,YAAA,EAAW,MAAK,MAAK,WAAU,iBAAgB,6BAEhD,EAAA,CAEJ;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,OACD,EAAA,CACL;AAAA,IAAA,GACF;AAAA,IAED,uBAAuBA,kCAAAA,IAAC,wBAAA,EAAuB,OAAO,mBAAmB,MAAM,qBAAqB,SAAS,qBAAqB,WAAsB,YAAwB,QAAQ,KAAA,CAAM;AAAA,IAE/LA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAM,QAAQ,KAAK;AAAA,QACnB,MAAM,+BAAO;AAAA,QACb,SAAS,+BAAO;AAAA,QAChB,aAAa,MAAM,SAAS,IAAI;AAAA,QAChC,cAAc,EAAE,YAAY,SAAS,UAAU,SAAA;AAAA,MAAS;AAAA,IAAA;AAAA,EAC1D,GACF;AAEJ;AC/2BO,MAAM,eAAe,CAAC,UAA6B;AACxD,QAAM,EAAE,OAAO,MAAO,kBAAkB,GAAG,SAAS;AACpD,QAAM,EAAE,eAAe,cAAA,IAAkB;AACzC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,aAAa;AACpD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAA,CAAE;AAOnD,QAAM,iBAAiB,CAACwI,QAAe,SAAc,MAAM;AACzD,UAAM,eAAe,QAAQ;AAAA,MAC3B,CAAC,UAAe,gBAAgB,KAAK,KAAK,KAAK,QAAQA;AAAAA,IAAA;AAEzD,UAAM,aAAa,CAAC,GAAG,OAAO;AAE9B,QAAI,iBAAiB,IAAI;AACvB,iBAAW,KAAK,IAAI;AAAA,IACtB,OAAO;AACL,iBAAW,OAAO,cAAc,CAAC;AAAA,IACnC;AAEA,eAAW,UAAU;AACrB,qBAAiB,UAAU;AAAA,EAC7B;AAEA,YAAU,MAAM;AACd,QAAI,eAAe;AACjB,uBAAgB,6BAAM,gBAAe,EAAE;AAAA,IACzC,OAAO;AACL,uBAAgB,6BAAM,UAAS,EAAE;AAAA,IACnC;AAAA,EAEF,GAAG,CAAC,eAAe,IAAI,CAAC;AAExB,SACExI,kCAAAA,IAAC,OAAA,EAAI,WAAU,cAAc,GAAG,MAE9B,UAAAA,kCAAAA,IAACyI,QAAA,EACE,UAAA,iBACC,6CAAc,IAAI,CAAC,SAAc;;AAC/B,UAAM,UAAU,iCAAiC,KAAK,EAAE;AAExD,kDACG,UAAA,EAAuB,IAAI,EAAC,QAAO,UAAA,GAAY,SAAS;AAAA,MACjD,gBAAgB,KAAK,KAAK,KAAK;AAAA,MAC/B;AAAA;AAAA,IAAA,GAEN,UAAA;AAAA,MAAAzI,kCAAAA,IAAC0I,gBAAA,EAAa,IAAI,SAChB,UAAA1I,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,yBAAyB;AAAA,YACvB,QAAQ,GACN,gBACI,6BAAM,OACN,GAAG,6BAAM,UAAU,IAAI,6BAAM,SAAS,EAC5C,UACE,gBACI,KAAK,QAAQ,YACb,kCAAM,eAAN,mBAAkB,IACxB;AAAA,UAAA;AAAA,QACF;AAAA,MAAA,GAEJ;AAAA,MACAA,kCAAAA,IAAC,OAAA,EAAI,WAAU,0BACb,UAAAA,kCAAAA;AAAAA,QAAC8C;AAAAA,QAAA;AAAA,UACC,MAAK;AAAA,UAEL,SAAS,QAAQ;AAAA,YACf,CAAC,UACE,gBAAgB,KAAK,KAAK,KAAK,SAC/B,gBAAgB,KAAK,KAAK,KAAK;AAAA,UAAA;AAAA,UAEpC,YAAY,EAAE,mBAAmB,QAAA;AAAA,QAAQ;AAAA,MAAA,EAC3C,CACF;AAAA,IAAA,EAAA,GA9Ba,KAAK,EA+BpB;AAAA,EAEJ,KACJ,GACF;AAEJ;AC1FA,MAAM,oBAAsD,CAAC;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MACE9C,kCAAAA,IAAAD,kBAAAA,UAAA,EACG,eAAK,SACJC,kCAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAO,GAAG,KAAK,MAAM;AAAA,IACrB,YAAYA,kCAAAA,IAAC,OAAA,EAAM,UAAS,QAAA,CAAQ;AAAA,IACpC;AAAA,IACA,aAAa,CAAC,UAAU,MAAM,gBAAA;AAAA,IAC7B,GAAG;AAAA,EAAA;AACN,0CAEC,YAAA,EAAW,OAAM,WAAU,MAAK,MAC9B,uBACH,GAEJ;ACeF,MAAM,gBAAgB,CAAC;AAAA,EACtB;AAAA,EACA;AACD,MAGM;AACL,QAAM,eAAe,KAAK;AAAA,IACzB,CAAC,iBAAA;;AACA,4BAAQ,KAAK,CAAC,WAAgB,OAAO,UAAU,YAAY,MAA3D,mBAA8D,SAC9D;AAAA;AAAA,EAAA;AAGF,SACCF,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,IAAI,EAAE,SAAS,QAAQ,KAAK,GAAG,YAAY,UAAU,IAAI,IAAA;AAAA,MACxD,UAAA;AAAA,QAAA,aAAa,MAAM,GAAG,EAAE,KAAK,IAAI;AAAA,QACjC,KAAK,SAAS,KACdE,kCAAAA,IAAC,MAAA,EAAK,SAAQ,YAAW,MAAK,UAAS,OAAOA,kCAAAA,IAAC,UAAA,CAAA,CAAS,EAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIhE;AAEA,MAAM,oBAAoB,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACC;AAAA,EACD;AACD,MAAkB;AACjB,QAAM,QAAwB,CAAA;AAC9B,MAAI,CAAC,UAAU;AACd,UAAM;AAAA,MACLA,kCAAAA,IAAC,YAAS,UAAQ,MAAC,OAAM,IACxB,UAAAA,kCAAAA,IAAC,MAAA,EAAI,UAAA,YAAA,CAAY,EAAA,CAClB;AAAA,IAAA;AAAA,EAEF;AAEC,QAAM,qBAAqB,CAAC,aAAqB,iBAA4B;AAC3E,UAAM,cAAc,aAAa,IAAI,CAAC,UAAU,MAAM,KAAK;AAE3D,UAAM,mBAAmB,OAAO,SAAS,WAAW;AACpD,UAAM,gBAAgB,mBAClB,OAAO,OAAO,CAAC,UAAU,UAAU,eAAe,CAAC,YAAY,SAAS,KAAK,CAAC,IAC9E,CAAC,GAAG,QAAQ,aAAa,GAAG,WAAW;AAE3C,aAAS,aAAa;AAAA,EACxB;AAED,UAAQ,QAAQ,CAAC,WAAW;AAC3B,UAAM;AAAA,MACLA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,OAAO,OAAO;AAAA,UACd,YAAW,iCAAQ,WAAU,2BAA2B;AAAA,UACxD,UAAAF,kCAAAA,KAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,YAAA,YAAY;AAAA,YAENE,kCAAAA;AAAAA,cAAC8C;AAAAA,cAAA;AAAA,gBAAS,UAAS,iCAAQ,QAAS,OAAO,UAAU;AAAA,gBACrD,UAAU,MAAM,mBAAmB,OAAO,OAAO,OAAO,WAAW,CAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,kDAG3E,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,iBAAO,KAAA,CACT;AAAA,UAAA,EAAA,CACD;AAAA,QAAA;AAAA,MAAA;AAAA,IACD;AAED,SAAI,iCAAQ,YAAW,MAAM,QAAQ,iCAAQ,OAAO,GAAG;AACtD,aAAO,QAAQ,QAAQ,CAAC,QAAQ;AAC/B,cAAM;AAAA,gDACJ,UAAA,EAAS,OAAO,IAAI,OAAO,IAAI,EAAE,IAAI,EAAA,GACrC,UAAAhD,uCAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,KAC/B,UAAA;AAAA,YAAA,YAAY,yDACXgD,YAAA,EAAS,UAAS,iCAAQ,QAAQ,IAAI,UAAS,GAAA,CAAI;AAAA,kDAEpD,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,cAAI,KAAA,CACN;AAAA,UAAA,EAAA,CACD,EAAA,CACD;AAAA,QAAA;AAAA,MAEF,CAAC;AAAA,IACF;AAAA,EACD,CAAC;AAED,SAAO;AACR;AAEA,MAAM,mBAAgD,CAAC;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE9C,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,MAAM,GAAG,cAAc,IAAI,IAAI;AAAA,MAC/B,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,MAAA,EAAM,MACpCF,kCAAAA,KAAAC,4BAAA,EACE,UAAA;AAAA,QAAAC,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAS;AAAA,YACT;AAAA,YACA,cAAc;AAAA,YACd,UAAU,GAAG,cAAc,IAAI,IAAI;AAAA,YACnC;AAAA,YACA;AAAA,YACA,OAAO,MAAM,UAAU,WAAW,CAAA,IAAK;AAAA,YACvC,cAAa;AAAA,YACb,UAAU,CAAC;;AAAS,mCAAU,aAAE,WAAF,mBAAU,MAAM,OAAO,CAAC,MAAQ,OAAhC,mBAAoC,UAAO,KAAG,CAAC,cAAW,OAAE,WAAF,mBAAU,SAAQ,MAAM,SAAS,EAAE,OAAO,KAAK,IAAE,MAAM,SAAS,EAAE;AAAA;AAAA,YAC1J,UAAU,QAAQ,QAAQ;AAAA,YAC1B;AAAA,YACA,UAAU,QAAQ,QAAQ;AAAA,YAC1B,UAAU,QAAQ,QAAQ;AAAA,YAC1B;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,SAAQ;AAAA,YACR,OAAO,QAAQ,KAAK;AAAA,YACpB,aAAa,CAAC,iFAET,UAAA,MAAM,QAAQ,QAAQ,IACrBA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN;AAAA,gBACA,UAAU;AAAA,cAAA;AAAA,YAAA,IAGZ,YAAY,aAEhB;AAAA,YAGD,UAAA,kBAAkB;AAAA,cACjB;AAAA,cACA,UAAU,QAAQ,QAAQ;AAAA,cAC1B;AAAA,cACA,QAAQ,MAAM;AAAA,cACd,iBAAiB,QAAQ,eAAe;AAAA,cACxC,UAAU,MAAM;AAAA,YAAA,CACjB;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,SACCA,kCAAAA,IAAC,gBAAA,EAAe,OAAK,MAAE,gBAAM,SAAQ;AAAA,QAEtC,YAAY,MAAM,QAAQ,+BAAO,KAAK,KACrCA,sCAAC,eAAA,EAAc,MAAM,MAAM,OAAO,QAAA,CAAkB;AAAA,MAAA,EAAA,CAExD;AAAA,IAAA;AAAA,EAAA;AAIR;ACvNA,MAAM,aAAa,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AACJ,MAIM;AACF,gDACK,KAAA,EAAc,KAAK,GAAG,eAAc,UAAS,SAAQ,QAClD,UAAA;AAAA,IAAAA,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,QAAO,OAAM,wBAAwB,UAAA,MAAA,CAAM;AAAA,IACvE;AAAA,EAAA,EAAA,GAFK,GAGV;AAER;ACDA,MAAM,mBAAqD,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,cAAc,CAAC,gBAAgB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,CAAC,UAAU,YAAY,OAAO;AAAA,EAC9C,QAAA2I;AAAA,EACA,cAAc,CAAA;AAAA,EACd;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,aAAa,CAAA;AAAA,EACb,GAAG;AACP,MAAM;;AACF,QAAM,EAAE,EAAA,IAAM,eAAA;AAGd,QAAM,WAAW,YAAA;AAGjB,QAAM,EAAE,YAAY,eAAA,IAAmB,SAAA;AAEvC,QAAM;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACA,eAAe,CAAC,UAAU,+BAAQ,UAAU;AAGhD,QAAM,EAAE,QAAQ,OAAO,QAAQ,eAAe;AAC9C,QAAMb,SAAQ,WAAW,aAAa;AACtC,QAAM,OAAOA,UAAS,SAAS;AAI/B,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB;AAAA,IAC5D,cAAc;AAAA,IACd,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACf;AAGD,QAAM,QAAQ,KAAK,KAAK,aAAaA,MAAK;AAG1C,QAAM,YAAY,QAAQ,OAAM,yCAAY,UAAS,aAAa,MAAM,CAAC,MAAM,UAAU,CAAC;AAG1F,QAAM,qBAAqB,CAAC,iBAAwB;AAChD,UAAM,iBAAiB,aAAa,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;AAChE,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,iBAAiB;AACnE,+CAAc;AAAA,EAClB;AAGA,QAAM,yBAAyB,CAAC,UAAe;AAC3C,QAAI,WAAW,eAAc,+BAAO,QAAO;AACvC,qBAAe,EAAE,WAAW,MAAM,MAAA,CAAO;AAAA,IAC7C;AACA,0BAAsB,KAAK;AAAA,EAC/B;AAGA,QAAM,qBAAqB,CAAC,WAAmB;AAC3C,mBAAe,EAAE,QAAQ;AACzB,0BAAsB,EAAE,QAAQ,GAAG;AACnC,iDAAe;AAAA,EACnB;AAGA,QAAM,oBAAoB,CAAC,SAAc;AACrC,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,OAAO;AAAA,EAC7D;AAEA,QAAM,sBAAsB,YAAY;AACpC,QAAI,CAAC,aAAa,aAAc;AAEhC,oBAAgB,WAAS,EAAE,GAAG,MAAM,YAAY,OAAO;AAEvD,QAAI;AACA,wBAAkB,MAAM,gBAAgB,aAAa,YAAY,IAAI,MAAM,aAAa,aAAa,YAAY;AACjH,sBAAgB,CAAA,UAAS,EAAE,GAAG,MAAM,cAAc,MAAM,YAAY,QAAQ;AAAA,IAChF,SAAS,OAAO;AACZ,sBAAgB,WAAS,EAAE,GAAG,MAAM,YAAY,QAAQ;AAAA,IAC5D;AAAA,EACJ;AAEA,QAAM,qBAAqB,MAAM;AAC7B,oBAAgB,WAAS,EAAE,GAAG,MAAM,cAAc,OAAO;AAAA,EAC7D;AAGA,QAAM,6BAA6B,QAAQ,MAAM;AAC7C,QAAI,CAAC,sBAAuB,QAAO;AAEnC,WAAO,sBAAsB,IAAI,CAAA,YAAW;AAAA,MACxC,GAAG;AAAA,MACH,cAAc,OAAO,MAAM,YAAA,EAAc,SAAS,QAAQ,IACpD,oBACA,OAAO;AAAA,IAAA,EACf;AAAA,EACN,GAAG,CAAC,qBAAqB,CAAC;AAG1B,QAAM,wBAAwB,CAAC,UAA4B;AACvD,QAAI,WAAW,cAAa,+BAAO,QAAO;AACtC,qBAAe,EAAE,WAAW,MAAM,MAAA,CAAO;AAAA,IAC7C;AACA,aAAS,mBAAmB,KAAK,CAAC;AAAA,EACtC;AAGA,QAAM,eAAe,OAAO,oBAAyB;AACjD,UAAM,WAAgB,MAAM,SAAS,UAAU,OAAO,gBAAgB,EAAE,CAAC,CAAC;AAC1E,cAAU,UAAU,MAAM;AACtB;AAAA,QACI,IAAI,KAAK,KAAK,mDAAiB,EAAE,IAAI,EAAE,oBAAoB,CAAC;AAAA,MAAA;AAEhE,cAAA;AAAA,IACJ,CAAC;AAAA,EACL;AAMA,QAAM,UAAU,YAAY,MAAM;AAC9B,aAAS,YAAY;AAAA,EACzB,GAAG,CAAC,UAAU,UAAU,CAAC;AAGzB,QAAM,UAAUc;AAAAA,KACZ,6CAAc,UAAS,eAAe;AAAA,IACtC,EAAE,MAAM,OAAAd,OAAA;AAAA,IACR;AAAA,IACA;AAAA,IACA,CAAA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAIJ,YAAU,MAAM;AACZ,YAAA;AAAA,EACJ,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;AACZ,WAAO;AAAA,EACX,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;;AACZ,SAAI1F,MAAA,yCAAY,UAAZ,gBAAAA,IAAmB,OAAQ;AAC/B,mBAAe;AAAA,MACX,aAAa,UAAU;AAAA,MACvB,OAAO;AAAA,QACH;AAAA,UACI,OAAO;AAAA,UACP,UAAU;AAAA,QAAA;AAAA,MACd;AAAA,IACJ,CACH;AAAA,EACL,GAAG,CAAC,yCAAY,KAAK,CAAC;AAEtB,SACItC,kCAAAA,KAAC,WAAA,EAAQ,WAAW,qBAAqB,SAAS,IAC9C,UAAA;AAAA,IAAAE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAM,yCAAY,UAAS;AAAA,UACvB;AAAA,YACI,OAAO;AAAA,YACP,UAAU;AAAA,UAAA;AAAA,QACd;AAAA,QAEJ,SAAS,CAAC,UAAU,eAAe,EAAE,OAAO;AAAA,QAC5C,QAAQ,WAAW;AAAA,QACnB,WAAW,CAAC,QAAQ,eAAe,EAAE,aAAa,KAAK;AAAA,QACvD;AAAA,QACA,YAAY,cAAc,WAAW,UAAU;AAAA,QAC/C,cAAc;AAAA,QACd;AAAA,QACA,QAAA2I;AAAA,QACA;AAAA,QACA,aAAa,aAAa;AAAA,QAC1B;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QACR,WAAW;AAAA,QACV,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,IAIR7I,uCAAAC,kBAAAA,UAAA,EACK,UAAA;AAAA,OAAA,yCAAY,iBAAgB,UAAU,SACnCC,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM,aAAa,CAAA;AAAA,UACnB,SAAS;AAAA,UACT;AAAA,UACA,YAAY;AAAA,UACZ,aAAa,CAAC,GAAG,aAAa,GAAG,WAAW,YAAY;AAAA,UACxD,QAAQ,EAAE,WAAW,eAAe,UAAA;AAAA,UACpC,iBAAiB,kBAAkB,CAAC,SAAS;AACzC,2BAAe,EAAE,MAAM;AACvB,4BAAgB,IAAI;AAAA,UACxB,IAAI;AAAA,UACJ,sBAAsB;AAAA,UACtB,eAAe;AAAA,UACf;AAAA,UACA,uBAAuB;AAAA,UACvB,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,sBAAsB,mBAAmB,CAAC,aAAa;AACnD,kBAAM,WAAW,SAAS,MAAM,CAAC;AACjC,2BAAe,EAAE,cAAc,UAAU;AACzC,6BAAiB,QAAQ;AAAA,UAC7B,IAAI;AAAA,UACJ,oBAAoB,qBAAqB,CAACgG,aAAY;AAClD,2BAAe,EAAE,iBAAiBA,UAAS;AAC3C,+BAAmBA,QAAO;AAAA,UAC9B,IAAI;AAAA,QAAA;AAAA,MAAA;AAAA,OAIX,yCAAY,iBAAgB,UAAU,QAAQ,iBAC3ChG,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM;AAAA,UACN;AAAA,UACA,uBAAuB;AAAA,QAAA;AAAA,MAAA;AAAA,MAI9B,EAAC,yCAAY,gBAAe,CAAC,aAC1BA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,SAAS;AAAA,UACT,MAAM,gBAAgBA,kCAAAA,IAAC,OAAA,EAAI,KAAKgD,OAAK,mBAAmB,KAAI,YAAW;AAAA,UAEtE,2BAAiB,mBACdhD,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,SAAQ;AAAA,cACR,iDAAYE,aAAA,EAAQ;AAAA,cACpB,SAAS;AAAA,cAER,aAAG,EAAE,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1C;AAAA,MAAA;AAAA,MAKZF,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG;AAAA,UACA,iBAAiB;AAAA,YACb,GAAG;AAAA,YACH,OAAO,WAAW;AAAA,UAAA;AAAA,UAEtB,uBAAuB;AAAA,UACvB,UAAU;AAAA,UACV;AAAA,QAAA;AAAA,MAAA;AAAA,MAGJA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAM,QAAQ,aAAa,YAAY;AAAA,UACvC,SAAS;AAAA,UACT,WAAW;AAAA,UACX,SAAS,aAAa;AAAA,UACtB,OAAO,eAAe,GAAG,EAAE,eAAe,CAAC,IAAI,KAAK;AAAA,UACpD,aACI,oBACM,kBAAkB,aAAa,YAAY,IAC3C,GAAG,EAAE,kBAAkB,CAAC,IAAI,KAAK,OAAK,kBAAa,iBAAb,mBAA2B,SAAM,kBAAa,iBAAb,mBAA2B,SAAQ,EAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAE1H,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;AC1TO,MAAM,YAAY,CAAC,MAAgB,CAAC,CAAC,EAAE;AAE9C,MAAM,mBAA+B;AAAA,EACnC,EAAE,MAAM,QAAQ,OAAO,UAAA;AAAA,EACvB,EAAE,MAAM,WAAW,OAAO,cAAA;AAC5B;AAEA,MAAM,gBAA4B;AAAA,EAChC,EAAE,MAAM,YAAY,OAAO,WAAA;AAAA,EAC3B,EAAE,MAAM,cAAc,OAAO,cAAA;AAAA,EAC7B,EAAE,MAAM,YAAY,OAAO,YAAA;AAAA,EAC3B,EAAE,MAAM,kBAAkB,OAAO,mBAAA;AAAA,EACjC,EAAE,MAAM,oBAAoB,OAAO,sBAAA;AAAA,EACnC,EAAE,MAAM,kBAAkB,OAAO,oBAAA;AAAA,EACjC,GAAG;AACL;AAEA,MAAM,kBAA8B;AAAA,EAClC,EAAE,MAAM,KAAK,OAAO,WAAA;AAAA,EACpB,EAAE,MAAM,KAAK,OAAO,YAAA;AAAA,EACpB,EAAE,MAAM,MAAM,OAAO,wBAAA;AAAA,EACrB,EAAE,MAAM,KAAK,OAAO,eAAA;AAAA,EACpB,EAAE,MAAM,MAAM,OAAO,2BAAA;AAAA,EACrB,GAAG;AACL;AAEA,MAAM,kBAA8B;AAAA,EAClC,EAAE,MAAM,MAAM,OAAO,KAAA;AAAA,EACrB,EAAE,MAAM,SAAS,OAAO,SAAA;AAAA,EACxB,GAAG;AACL;AAEA,MAAM,gBAA4B;AAAA,EAChC,EAAE,MAAM,KAAK,OAAO,KAAA;AAAA,EACpB,EAAE,MAAM,MAAM,OAAO,SAAA;AAAA,EACrB,EAAE,MAAM,KAAK,OAAO,SAAA;AAAA,EACpB,EAAE,MAAM,MAAM,OAAO,eAAA;AAAA,EACrB,EAAE,MAAM,KAAK,OAAO,QAAA;AAAA,EACpB,EAAE,MAAM,MAAM,OAAO,cAAA;AAAA,EACrB,GAAG;AACL;AAEO,MAAM,SAAkB;AAAA,EAC7B;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAAA,EAEF;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAEhB;AAEO,MAAM,gBAAyB;AAAA,EACpC;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA,EAEd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASd;AAAA,IACE,MAAM;AAAA,IACN,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,YAAY;AAAA,EAAA;AAEhB;AClLA,MAAM6I,WAAS,OAAO,gBAAgB,EAAE,CAAC,EAAE,YAAM;;AAAO;AAAA,IACvD,QAAO,WAAM,YAAN,mBAAe,MAAM,QAAQ;AAAA,EACrC;AAAA,CAAE;AAEF,MAAM,kBAAkB,OAAO,GAAG,EAAE,OAAO;AAAA,EAC1C,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AACN,EAAE;AAEF,MAAM,aAAa,CAAC,UAAiC;AACpD,SACC7I,sCAAC,mBACA,UAAAA,kCAAAA,IAAC6I,UAAA,EAAO,MAAM,IAAK,GAAG,OAAO,EAAA,CAC9B;AAEF;ACvBA,MAAM,SAAS,OAAO,gBAAgB,EAAE,CAAC,EAAC,YAAK;;AAAK;AAAA,IAClD,QAAO,WAAM,YAAN,mBAAe,MAAM,QAAQ;AAAA,EACtC;AAAA,CAAE;AAEF,MAAM,aAAa,CAAC,UAAgC;AACnD,SAAO7I,kCAAAA,IAAC,KAAA,EAAI,UAAS,YAAW,MAAK,OAAM,KAAI,OAC5C,UAAAA,kCAAAA,IAAC,QAAA,EAAO,MAAM,IAAK,GAAG,OAAM,GAC9B;AACF;ACEA,MAAM8I,iBAAe,CAAC,KAAa,QAAgB,cAAsB;AACrE,MAAI,cAAc,aAAa;AAC3B,WAAO,GAAG,GAAG,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,EACzC,WAAW,cAAc,WAAW;AAChC,WAAO,GAAG,UAAU,EAAE,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,EACrE;AACA,SAAO,IAAI,SAAA;AACf;AAEA,MAAM,gBAAgB,CAAC,EAAE,MAAM,SAAS,KAAK,sBAAsB,iBAAiB,WAAW,UAAU,QAAQ,aAAA,MAAgC;AAC7I,QAAM,SAAS,OAA6B,IAAI;AAChD,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,CAAC,gBAAgBC,kBAAiB,IAAI,SAAiB,CAAC;AAC9D,QAAM,CAAC,aAAa,cAAc,IAAI,SAAc,IAAI;AACxD,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,QAAAA,mBAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;;AACZ,QAAI,mBAAmB,EAAG;AAE1B,UAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AACvD,UAAM,QAAQ,iBAAiB,OAAO,OAAO,OAAO;AACpD,UAAM,cAAc,SAAS,OAAO,MAAM,OAAO;AAGjD,OAAG,OAAO,OAAO,OAAO,EAAE,UAAU,GAAG,EAAE,OAAA;AAEzC,UAAM,MAAM,GACP,OAAO,OAAO,OAAO,EACrB,KAAK,SAAS,cAAc,EAC5B,KAAK,UAAU,MAAM,EACrB,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAGhE,UAAM,IAAI,GACL,WAAA,EACA,QAAO,gBAAK,CAAC,MAAN,mBAAS,WAAT,mBAAiB,IAAI,CAAA,MAAK,EAAE,MAAM,EACzC,MAAM,CAAC,GAAG,KAAK,CAAC;AAErB,UAAM,IAAI,GACL,YAAA,EACA,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,CAAA,YAAW,GAAG,IAAI,QAAQ,QAAQ,CAAA,MAAK,EAAE,KAAK,CAAC,CAAE,CAAC,EAC1E,MAAM,CAAC,aAAa,CAAC,CAAC;AAG3B,UAAM,WAAW,KAAK,MAAM,QAAQ,EAAE;AACtC,UAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,MAAM,QAAQ;AAE7C,UAAM,aAAa,IAAI,OAAO,GAAG,EAC5B,KAAK,aAAa,eAAe,WAAW,GAAG,EAC/C,KAAK,KAAK;AAEf,eAAW,UAAU,MAAM,EACtB,KAAK,aAAa,kBAAkB,EACpC,KAAK,SAAS,SAAS,EACvB,MAAM,eAAe,QAAQ;AAGlC,UAAM,QAAQ,IAAI,OAAO,GAAG;AAC5B,UAAM,OAAO,GAAG,EAAE,KAAK,SAAS,SAAS,EAAE,KAAK,aAAa,kBAAkB,EAC1E,KAAK,GAAG,SAAS,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE;AAAA,MAAW,CAAC,MAC9C,uBACM,qBAAqB,CAAC,IACtBD,eAAa,GAAG,UAAU,cAAc;AAAA,IAAA,EAChD,cAAc,CAAC,CAAQ,EACxB,UAAU,MAAM,EAChB,KAAK,oBAAoB,KAAK,EAC9B,KAAK,UAAU,SAAS;AAE7B,eAAW,UAAU,YAAY,EAAE,OAAA;AACnC,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAC7C,eAAW,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAMlD,UAAM,OAAO,CAAC,aAAsB,GAAG,KAAA,EAClC,EAAE,CAAA,MAAK,EAAE,EAAE,KAAK,CAAE,EAClB,EAAE,CAAA,MAAK,EAAE,EAAE,KAAK,CAAC,EACjB,MAAM,WAAW,GAAG,iBAAiB,GAAG,WAAW;AAExD,UAAM,OAAO,GAAG,KAAA,EACX,EAAE,CAAA,MAAK,EAAE,EAAE,KAAK,CAAE,EAClB,GAAG,WAAW,EACd,GAAG,OAAK,EAAE,EAAE,KAAK,CAAC;AAGvB,SAAK,QAAQ,CAAC,SAAS,MAAM;AAIzB,YAAM,WAAW,IAAI,OAAO,MAAM,EAC7B,OAAO,gBAAgB,EACvB,KAAK,MAAM,iBAAiB,CAAC,EAAE,EAC/B,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,IAAI,EACf,KAAK,MAAM,MAAM;AAEtB,eAAS,OAAO,MAAM,EACjB,KAAK,UAAU,IAAI,EACnB,KAAK,cAAc,OAAO,CAAC,CAAC,EAC5B,KAAK,gBAAgB,GAAG;AAE7B,eAAS,OAAO,MAAM,EACjB,KAAK,UAAU,MAAM,EACrB,KAAK,cAAc,OAAO,CAAC,CAAC,EAC5B,KAAK,gBAAgB,GAAG;AAG7B,UAAI,OAAO,MAAM,EACZ,MAAM,QAAQ,MAAM,EACpB,KAAK,QAAQ,sBAAsB,CAAC,GAAG,EACvC,KAAK,KAAK,IAAI;AAGnB,UAAI,OAAO,MAAM,EACZ,MAAM,QAAQ,MAAM,EACpB,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,OAAO,CAAC,CAAC,EACxB,KAAK,gBAAgB,CAAC,EACtB,KAAK,KAAK,KAAK,QAAQ,YAAY,KAAK,CAAC;AAG9C;AACI,4CAAS,eACL,IAAI,UAAU,UAAU,CAAC,EAAE,EACtB,KAAK,QAAQ,MAAM,EACnB,QACA,OAAO,QAAQ,EACf,KAAK,MAAM,CAAA,MAAK,EAAE,EAAE,KAAK,CAAE,EAC3B,KAAK,MAAM,CAAA,MAAK,EAAE,EAAE,KAAK,CAAC,EAC1B,KAAK,KAAK,CAAC,EACX,KAAK,QAAQ,OAAO,CAAC,CAAC,EACtB,KAAK,UAAU,MAAM,EACrB,MAAM,UAAU,SAAS,EACzB,GAAG,aAAa,SAAU,OAAO,GAAG;AACjC,yBAAe;AAAA,YACX,GAAG,GAAG,MAAM,QAAQ,EAAE;AAAA,YACtB,GAAG,GAAG,MAAM,QAAQ,EAAE;AAAA,YACtB,SAAS,GAAG,QAAQ,IAAI,KAAK,EAAE,KAAK;AAAA,UAAA,CACvC;AACD,aAAG,OAAO,IAAI,EAAE,WAAA,EAAa,KAAK,KAAK,CAAC,EAAE,KAAK,QAAQ,SAAS;AAAA,QACpE,CAAC,EACA,GAAG,YAAY,WAAY;AACxB,yBAAe,IAAI;AACnB,aAAG,OAAO,IAAI,EAAE,WAAA,EAAa,KAAK,KAAK,CAAC,EAAE,KAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,QACpE,CAAC;AAAA,MACb;AAAA,IAEJ,CAAC;AAAA,EAEL,GAAG,CAAC,MAAM,gBAAgB,QAAQ,sBAAsB,gBAAgB,UAAU,QAAQ,YAAY,CAAC;AAEvG,SACIhJ,uCAAC,OAAA,EAAI,KAAK,YAAY,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAClD,UAAA;AAAA,IAAAA,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,cACpB,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAgB;AAAA,MAE3C,gBACA;AAAA,IAAA,GAGR;AAAA,IACC,eACGA,kCAAAA,IAAC,KAAA,EAAI,IAAI;AAAA,MACL,UAAU;AAAA,MACV,MAAM,YAAY;AAAA,MAClB,KAAK,YAAY;AAAA,MACjB,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,WAAW;AAAA,MACX,SAAS;AAAA,MACT,KAAK;AAAA,IAAA,GAEL,UAAAA,kCAAAA,IAAC,QAAA,EAAK,OAAO,EAAE,UAAU,QAAQ,QAAQ,OAAO,OAAO,QAAA,GAClD,UAAA,YAAY,SACjB,EAAA,CACJ;AAAA,EAAA,GAER;AAER;ACpNO,SAAS,aAAa,EAAE,SAAS,UAAkB;AACzD,SACCA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,IAAI;AAAA,QACH,SAAS;AAAA,QACT,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAAA;AAAA,MAEd,UAAA,QAAQ,IAAI,CAAC,QAAQ,UACrBF,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,YAAY,QAAQ,SAAS,UAC1C,UAAA;AAAA,QAAAE,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,WAAU;AAAA,YACV,OAAO,EAAE,iBAAiB,OAAO,KAAK,EAAA;AAAA,UAAE;AAAA,QAAA;AAAA,QACzCA,kCAAAA,IAAC,cAAW,MAAK,MAAK,IAAI,EAAE,OAAO,UAAA,GACjC,UAAA,OAAA,CACF;AAAA,MAAA,GACD,CACA;AAAA,IAAA;AAAA,EAAA;AAGJ;ACXA,MAAM8I,iBAAe,CAAC,QAAgB;AACpC,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,SAAO;AACT;AAEA,MAAME,aAAoC,CAAC;AAAA,EACzC;AAAA,EACA,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AACT,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AAEzC,QAAM,WAAW,QAAQ,MAAM;AAC7B,WAAO,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAC7C,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,gBAAgB,QAAQ,MAAM;AAClC,WAAO,WAAW;AAAA,EACpB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,QAAQ,CAAA;AACd,UAAM,WAAW,gBAAgB;AACjC,aAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AACpC,YAAM,KAAK,WAAW,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,YAAU,MAAM;AACd,QAAI,CAAC,OAAO,QAAS;AAErB,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AACvD,UAAM,WAAW,QAAQ,OAAO,OAAO,OAAO;AAC9C,UAAM,YAAY,SAAS,OAAO,MAAM,OAAO;AAE/C,UAAM,YAAY,CAAC,OAAmB,MAAiB;;AACrD,UAAI,YAAY,MAAM,UAAU,OAAO,OAAO;AAC9C,YAAM,YAAY,MAAM,UAAU,OAAO,MAAM;AAC/C,YAAM,gBAAe,mBAAQ,KAAA,MAAR,mBAAgB,4BAAhB,mBAAyC;AAC9D,YAAM,cAAc,eAAe,YAAY,eAAe;AAC9D,UAAI,cAAc,OAAO;AACvB,oBAAY,KAAK;AAAA,UACf,eAAe,YAAY,eAAe,KAAK,YAAY;AAAA,QAAA;AAAA,MAE/D;AAEA,YAAM,OAAO,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK;AACpC,cACG,KAAK,KAAK,SAAS,EACnB,KAAK,KAAK,SAAS,EACnB,MAAM,WAAW,CAAC,EAClB,MAAM,UAAU,KAAK,UAAU,KAAK,KAAK,EAAE;AAE9C,kBAAY,KAAK,IAAI;AAAA,IACvB;AAEA,UAAM,aAAa,MAAM;AACvB,cAAQ,MAAM,WAAW,CAAC;AAAA,IAC5B;AAEA,UAAM,IAAI,GACP,UAAA,EACA,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,EACnB,QAAQ,GAAG;AAEd,UAAM,IAAI,GAAG,YAAA,EAAc,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAE1E,UAAM,QAAQ,IACX,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,QAAI,MAAM;AACR,iBAAW,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AACpC,cACG,OAAO,MAAM,EACb,KAAK,SAAS,aAAa,EAC3B,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,KAAK,MAAM,QAAQ,EACnB,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,WAAW,CAAC;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,UACG,UAAU,MAAM,EAChB,KAAK,IAAI,EACT,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,KAAK,EAEnB,KAAK,KAAK,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC,EAChC,KAAK,KAAK,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC,EAChC,KAAK,SAAS,EAAE,UAAA,CAAW,EAC3B,KAAK,UAAU,CAAC,MAAW,YAAY,EAAE,EAAE,KAAK,CAAC,EACjD,MAAM,QAAQ,SAAS,EACvB,MAAM,WAAW,GAAG,EACpB,GAAG,aAAa,SAAS,EACzB,GAAG,cAAc,UAAU;AAE9B,UAAM,QAAQ,MACX,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,gBAAgB,SAAS,GAAG,EAC9C,KAAK,GAAG,WAAW,CAAC,CAAQ;AAE/B,UAAM,UAAU,YAAY,EAAE,OAAA;AAE9B,UAAM,QAAQ,MACX,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB;AAAA,MACC,GACG,SAAS,CAAC,EACV,WAAW,UAAU,EAErB,WAAW,CAAC,MAAW;AACtB,eAAOF,eAAa,CAAC;AAAA,MACvB,CAAC,EACA,cAAc,CAAC;AAAA,IAAA;AAGtB,UAAM,UAAU,YAAY,EAAE,OAAA;AAE9B,UAAM,UAAU,IACb,OAAO,eAAe,EACtB,KAAK,SAAS,SAAS,EACvB,KAAK,SAAS,GAAG,EACjB,KAAK,UAAU,EAAE,EACjB,MAAM,WAAW,CAAC,EAClB,MAAM,YAAY,UAAU,EAC5B,MAAM,oBAAoB,OAAO,EACjC,MAAM,UAAU,MAAM,EACtB,MAAM,cAAc,6CAA6C,EACjE,MAAM,iBAAiB,UAAU,EACjC,MAAM,WAAW,UAAU,EAC3B,MAAM,aAAa,SAAS;AAE/B,UAAM,cAAc,QACjB,OAAO,WAAW,EAClB,MAAM,aAAa,SAAS,EAC5B,MAAM,SAAS,OAAO;AAAA,EAC3B,GAAG,CAAC,MAAM,QAAQ,OAAO,MAAM,eAAe,UAAU,CAAC;AAEzD,6EAEI,UAAA9I,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAgB,EAAA,CAClD;AAEJ;AC7JA,MAAM8I,iBAAe,CAAC,KAAa,QAAgB,cAAsB;AACrE,MAAI,cAAc,aAAa;AAC3B,WAAO,GAAG,GAAG,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,EACzC,WAAW,cAAc,WAAW;AAChC,WAAO,GAAG,UAAU,EAAE,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,EACrE;AACA,SAAO,IAAI,SAAA;AACf;AAEA,SAAS,SAAS,eAAoB,OAAe;AACjD,gBAAc,KAAK,WAAqB;AACtC,UAAM,OAAO,GAAG,OAAO,IAAI;AAC3B,UAAM,eAAe,KAAK,KAAA;AAE1B,QAAI,aAAa,UAAU,GAAG;AAC5B;AAAA,IACF;AAEA,QAAI,aAAa,SAAS,IAAI;AAC5B,WAAK,KAAK,aAAa,UAAU,GAAG,EAAE,IAAI,KAAK;AAC/C;AAAA,IACF;AAEA,UAAM,QAAQ,aAAa,MAAM,KAAK,EAAE,QAAA;AACxC,QAAI;AACJ,QAAI,OAAiB,CAAA;AACrB,QAAI,aAAa;AACjB,UAAM,aAAa;AACnB,UAAM,IAAI,KAAK,KAAK,GAAG;AACvB,UAAM,KAAK,WAAW,KAAK,KAAK,IAAI,CAAC,KAAK;AAE1C,QAAI,QAAQ,KACT,KAAK,IAAI,EACT,OAAO,OAAO,EACd,KAAK,KAAK,CAAC,EACX,KAAK,KAAK,CAAC,EACX,KAAK,MAAM,GAAG,EAAE,IAAI;AAEvB,WAAQ,OAAO,MAAM,OAAQ;AAC3B,WAAK,KAAK,IAAI;AACd,YAAM,KAAK,KAAK,KAAK,GAAG,CAAC;AACzB,UAAI,MAAM,UAAU,MAAM,OAAQ,sBAAA,IAA0B,OAAO;AACjE,aAAK,IAAA;AACL,cAAM,KAAK,KAAK,KAAK,GAAG,CAAC;AACzB,eAAO,CAAC,IAAI;AACZ,gBAAQ,KACL,OAAO,OAAO,EACd,KAAK,KAAK,CAAC,EACX,KAAK,KAAK,CAAC,EACX,KAAK,MAAM,GAAG,EAAE,aAAa,aAAa,EAAE,IAAI,EAChD,KAAK,IAAI;AAAA,MACd;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEF,MAAM,WAAoC,CAAC;AAAA,EACvC;AAAA,EACA,aAAa;AAAA,EACb,eAAe;AAAA,EACf,SAAS;AAAA,EACT,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB;AAAA,EACA;AACJ,MAAM;AACF,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,CAAC,gBAAgBC,kBAAiB,IAAI,SAAS,YAAY;AAEjE,QAAM,WAAW,QAAQ,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAE5E,QAAM,gBAAgB,QAAQ,MAAM,WAAW,MAAM,CAAC,QAAQ,CAAC;AAE/D,QAAM,aAAa,QAAQ,MAAM;AAC7B,UAAM,QAAQ,CAAA;AACd,UAAM,WAAW,gBAAgB;AACjC,aAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AAClC,YAAM,KAAK,WAAW,CAAC;AAAA,IAC3B;AACA,WAAO;AAAA,EACX,GAAG,CAAC,eAAe,UAAU,CAAC;AAG9B,QAAM,wBAAwB,KAAK,SAAS;AAC5C,QAAM,gBAAgB;AACtB,QAAM,uBAAuB,wBACvB,KAAK,IAAI,KAAK,SAAS,eAAe,cAAc,IACpD;AAIN,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,QAAAA,mBAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AACL,YAAU,MAAM;AACZ,QAAI,mBAAmB,EAAG;AAE1B,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAMnB,UAAM,gBAAgB;AACtB,UAAM,oBAAoB,KAAK,IAAI,IAAI,gBAAgB,EAAE;AAEzD,UAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,kBAAA;AACvD,UAAM,WAAW,uBAAuB,OAAO,OAAO,OAAO;AAC7D,UAAM,YAAY,WAAW,SAAS,OAAO,MAAM,OAAO,SAAS;AAEnE,UAAM,IAAI,GACL,UAAA,EACA,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,EACnB,QAAQ,GAAG;AAEhB,UAAM,IAAI,GAAG,YAAA,EAAc,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;AAG1E,UAAM,QAAQ,IACb,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,WAAS,OAAO,MAAI,SAAO,EAAE,GAAG;AAE/E,QAAI,MAAM;AACN,iBAAW,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AAClC,cACK,OAAO,MAAM,EACb,KAAK,SAAS,aAAa,EAC3B,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,KAAK,MAAM,QAAQ,EACnB,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,MAAM,UAAU,SAAS,EACzB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,WAAW,CAAC;AAAA,MAC3B,CAAC;AAAA,IACL;AAEA,UACK,UAAU,MAAM,EAChB,KAAK,IAAI,EACT,MAAA,EACA,OAAO,MAAM,EACb,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC,EACZ,KAAK,SAAS,KAAK,EACnB,KAAK,KAAK,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC,EAChC,KAAK,KAAK,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC,EAChC,KAAK,SAAS,EAAE,UAAA,CAAW,EAC3B,KAAK,UAAU,CAAC,MAAW,YAAY,EAAE,EAAE,KAAK,CAAC,EACjD,MAAM,QAAQ,CAAC,MAAW,EAAE,KAAK;AAEtC,UAAM,QAAQ,MACT,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,gBAAgB,SAAS,GAAG,EAC9C,KAAK,GAAG,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAQ,EACzC,KAAK,GAAG,WAAW,CAAC,EAAE,YAAY,CAAC,CAAQ;AAGhD,UAAM,UAAU,YAAY,EAAE,OAAA;AAC9B,UAAM,UAAU,YAAY,EAAE,KAAK,UAAS,EAAE;AAG9C,UAAM,kBAAkB;AACxB,UAAM,iBAAiB;AACvB,UAAM,kBAAkB,KAAK,MAAM,kBAAkB,cAAc;AACnE,UAAM,kBAAkB,KAAK,IAAI,YAAY,iBAAiB,CAAC;AAG/D,UAAM,eAAe,CAAA;AACrB,UAAM,kBAAkB,gBAAgB;AACxC,aAAS,IAAI,GAAG,KAAK,iBAAiB,KAAK;AACvC,mBAAa,KAAK,kBAAkB,CAAC;AAAA,IACzC;AAEA,UAAM,QAAQ,MACT,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB;AAAA,MACG,GAAG,SAAS,CAAC,EACR,WAAW,YAAY,EACvB;AAAA,QAAW,CAAC,MACT,uBACM,qBAAqB,CAAC,IACtBD,eAAa,GAAG,UAAU,cAAc;AAAA,MAAA,EAEjD,cAAc,CAAC,EACf,YAAY,CAAC;AAAA;AAAA,IAAA;AAG1B,UAAM,UAAU,YAAY,EAAE,OAAA;AAC9B,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAC7C,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAG7C,UAAM,UAAU,YAAY,EACvB,MAAM,aAAa,MAAM,EACzB,MAAM,QAAQ,MAAM,EACpB,MAAM,eAAe,wDAAwD,EAC7E,MAAM,eAAe,KAAK;AAAA,EAEnC,GAAG,CAAC,MAAM,gBAAgB,QAAQ,MAAM,eAAe,YAAY,UAAU,gBAAgB,sBAAsB,oBAAoB,CAAC;AAExI,SACI9I,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAAI,KAAK;AAAA,MACV,OAAO;AAAA,QACH,OAAO;AAAA,QACP,WAAW,wBAAwB,SAAS;AAAA,QAC5C,WAAW;AAAA,MAAA;AAAA,MAEX,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAO,sBAAsB,QAAgB,SAAS,OAAO,oBAAoB,IAAI,MAAM,GAAA,CAAI;AAAA,IAAA;AAAA,EAAA;AAG7H;ACjOA,MAAM,eAA6C,CAAC;AAAA,EAChD;AAAA,EACA,SAAS;AAAA,EACT,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AAAA,EACjD;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,WAAW;AAAA,EACX;AAAA,EACA;AACJ,MAAM;;AACF,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,qBAAqB,OAAuB,IAAI;AACtD,QAAM,CAAC,SAAS,UAAU,IAAI,SAA8D,IAAI;AAChG,QAAM,CAAC,gBAAgB+I,kBAAiB,IAAI,SAAiB,CAAC;AAC9D,QAAMD,gBAAe,CAAC,QAAgB,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,KAAK,GAAG;AAE5E,QAAM,wBAAwB,KAAK,SAAS,KAAK;AACjD,QAAM,cAAc;AACpB,QAAM,uBAAuB,wBACvB,KAAK,IAAI,KAAK,SAAS,aAAa,cAAc,IAClD;AAEN,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,QAAAC,mBAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACZ,QAAI,mBAAmB,EAAG;AAC1B,UAAM,OAAO,GAAG,IAAI,MAAM,CAAA,MAAK;AAC3B,aAAO,KAAK;AAAA,QACR,GAAG,KAAK,IAAI,SAAO,EAAE,IAAI,KAAK,CAAW;AAAA,QACzC,GAAG,MAAM,IAAI,CAAAE,UAAQ,EAAEA,MAAK,KAAK,CAAW;AAAA,MAAA;AAAA,IAEpD,CAAC,KAAK;AACN,UAAM,OAAO,GAAG,IAAI,MAAM,CAAA,MAAK;AAC3B,aAAO,KAAK;AAAA,QACR,GAAG,KAAK,IAAI,SAAO,EAAE,IAAI,KAAK,CAAW;AAAA,QACzC,GAAG,MAAM,IAAI,CAAAA,UAAQ,EAAEA,MAAK,KAAK,CAAW;AAAA,MAAA;AAAA,IAEpD,CAAC,KAAK;AAEN,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,UAAM,aAAa,uBAAuB,OAAO,OAAO,OAAO;AAC/D,UAAM,cAAc,QAAQ,OAAO,SAAS,OAAO,MAAM,OAAO,SAAS;AAEzE,UAAM,IAAI,GAAG,UAAA,EACR,OAAO,KAAK,IAAI,CAAA,MAAK,EAAE,KAAe,CAAC,EACvC,MAAM,CAAC,GAAG,UAAU,CAAC,EACrB,QAAQ,GAAG;AAEhB,UAAM,IAAI,GAAG,YAAA,EACR,OAAO,CAAC,MAAM,IAAI,CAAC,EACnB,OACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAE3B,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,IAAI,IAAI,OAAO,GAAG,EACnB,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAGhE,UAAM,QAAQ,EAAE,OAAO,GAAG,EACrB,KAAK,GAAG,SAAS,CAAC,EAAE,WAAWH,aAAY,CAAC,EAC5C,KAAK,CAAAI,OAAKA,GAAE,OAAO,SAAS,EAAE,QAAQ;AAC3C,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAG7C,UAAM,QAAQ,EAAE,OAAO,GAAG,EACrB,KAAK,aAAa,eAAe,WAAW,GAAG,EAC/C,KAAK,GAAG,WAAW,CAAC,CAAC,EACrB,UAAU,YAAY,EACtB,KAAK,eAAe,QAAQ;AACjC,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAG7C,QAAI,UAAU;AACV,QAAE,UAAU,YAAY,EACnB,KAAK,EAAE,OAAO,EACd,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,WAAW,EACzB,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,UAAU,EACrB,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,gBAAgB,CAAC;AAAA,IAChC;AAGA,QAAI,MAAM;AACN,QAAE,UAAU,cAAc,EACrB,KAAK,EAAE,OAAO,EACd,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,aAAa,EAC3B,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,UAAU,EACrB,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,gBAAgB,CAAC;AAAA,IAChC;AAGA,SAAK,QAAQ,CAAC,KAAK,MAAM;AACrB,QAAE,UAAU,QAAQ,IAAI,KAAK,EAAE,EAC1B,KAAK,IAAI,EACT,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,WAAW,IAAI,KAAK,EAAE,EACpC,KAAK,KAAK,CAAA,MAAK,EAAE,EAAE,KAAe,KAAK,CAAC,EACxC,KAAK,KAAK,CAAA,MAAK,EAAE,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,EACzD,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC,EACZ,KAAK,SAAS,EAAE,UAAA,IAAc,KAAK,MAAM,EACzC,KAAK,UAAU,CAAA,MAAK;AACjB,eAAO,KAAK,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAAA,MAC1C,CAAC,EACA,KAAK,QAAQ,UAAU,CAAC,CAAC,EACzB,KAAK,aAAa,aAAc,IAAI,EAAE,UAAA,IAAe,KAAK,MAAM,MAAM,EACtE,GAAG,aAAa,SAAU,OAAO,GAAG;;AACjC,cAAM,CAAC,MAAM,IAAI,IAAI,GAAG,QAAQ,OAAO,OAAO,OAAO;AACrD,cAAM,eAAa9G,MAAA,mBAAmB,YAAnB,gBAAAA,IAA4B,eAAc;AAC7D,mBAAW;AAAA,UACP,GAAG,OAAO,OAAO,OAAO;AAAA,UACxB,GAAG,OAAO,OAAO;AAAA,UACjB,SAAS;AAAA,QAAA,CACZ;AAAA,MACL,CAAC,EACA,GAAG,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IAC9C,CAAC;AAGD,UAAM,QAAQ,CAAC6G,OAAM,UAAU;AAC3B,YAAM,gBAAgB,GAAG,KAAA,EACpB,EAAE,CAAA,OAAM,EAAE,EAAE,KAAe,KAAK,KAAK,EAAE,cAAc,CAAC,EACtD,EAAE,CAAA,MAAK,EAAE,EAAEA,MAAK,KAAK,CAAW,CAAC,EACjC,MAAM,GAAG,cAAc;AAE5B,QAAE,OAAO,MAAM,EACV,MAAM,IAAI,EACV,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,WAAW,KAAK,CAAC,EAChC,KAAK,gBAAgB,CAAC,EACtB,KAAK,KAAK,aAAa,EACvB,GAAG,aAAa,SAAU,OAAO;;AAC9B,cAAM,CAAC,IAAI,IAAI,GAAG,QAAQ,OAAO,OAAO,OAAO;AAC/C,cAAM,QAAQ,EAAE,OAAA,EAAS,KAAK,CAACE,WAAU;AACrC,gBAAM,gBAAgB,EAAEA,MAAe,KAAK;AAC5C,iBAAO,QAAQ,iBAAiB,QAAQ,gBAAgB,EAAE,UAAA;AAAA,QAC9D,CAAC;AAED,YAAI,OAAO;AACP,gBAAM,mBAAmB,KAAK,KAAK,CAAA,MAAK,EAAE,UAAU,KAAK;AACzD,cAAI,kBAAkB;AAClB,kBAAM,eAAa/G,MAAA,mBAAmB,YAAnB,gBAAAA,IAA4B,eAAc;AAC7D,uBAAW;AAAA,cACP,GAAG,OAAO,OAAO,OAAO;AAAA,cACxB,GAAG,EAAE,iBAAiB6G,MAAK,KAAK,CAAC,IAAI,OAAO;AAAA,cAC5C,SAAS;AAAA,YAAA,CACZ;AAAA,UACL;AAAA,QACJ;AAAA,MACJ,CAAC,EACA,GAAG,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,IAC9C,CAAC;AAAA,EACL,GAAG,CAAC,MAAM,gBAAgB,sBAAsB,MAAM,QAAQ,QAAQ,MAAM,OAAO,UAAU,WAAW,UAAU,CAAC;AAEnH,+CACK,OAAA,EAAI,KAAK,YAAY,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAClD,UAAAnJ,kCAAAA,KAAC,OAAA,EAAI,OAAO,EAAE,UAAU,cACpB,UAAA;AAAA,IAAAE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAK;AAAA,QACL,OAAO;AAAA,UACH,OAAO;AAAA,UACP,WAAW,wBAAwB,SAAS;AAAA,UAC5C,WAAW;AAAA,QAAA;AAAA,QAGf,UAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,KAAK;AAAA,YACL,OAAO;AAAA,YACP;AAAA,YACA,SAAS,OAAO,oBAAoB,IAAI,MAAM;AAAA,YAC9C,OAAO,EAAE,SAAS,QAAA;AAAA,UAAQ;AAAA,QAAA;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEH,WACGA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,OAAO;AAAA,UACH,UAAU;AAAA,UACV,MAAM,QAAQ;AAAA,UACd,KAAK,QAAQ;AAAA,UACb,eAAe;AAAA,UACf,iBAAiB;AAAA,UACjB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,cAAc;AAAA,UACd,WAAW;AAAA,QAAA;AAAA,QAGf,iDAAC,KAAA,EACG,UAAA;AAAA,UAAAA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,YAAY,WAAW,SAAS,OAAA,GAC1C,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAO,EAAE,YAAY,UAAU,OAAO,SAAS,OAAO,aAAc,WAAA,aAAQ,YAAR,mBAAiB,MAAA,CAAM,EAAA,CACrH;AAAA,UACAF,kCAAAA,KAAC,KAAA,EAAI,IAAI,EAAE,GAAG,KAAK,SAAS,QAAQ,eAAe,UAAU,KAAK,IAAA,GAE7D,UAAA;AAAA,YAAA,KAAK,IAAI,CAAC,KAAK,iDACX,KAAA,EAAyB,IAAI,EAAE,SAAS,QAAQ,KAAK,KAAK,YAAY,YACnE,UAAA;AAAA,cAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,UAAS,OAAO,EAAE,iBAAiB,UAAU,KAAK,EAAA,GAAK;AAAA,cACtEF,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBACvB,UAAA;AAAA,gBAAA,IAAI;AAAA,gBAAM;AAAA,uDAAG,QAAA,EAAK,OAAO,EAAE,YAAY,OAAO,UAAA;AAAA,kBAAA;AAAA,kBAAG,QAAQ,QAAQ,IAAI,KAAK;AAAA,gBAAA,EAAA,CAAE;AAAA,cAAA,EAAA,CACjF;AAAA,YAAA,EAAA,GAJM,OAAO,KAAK,EAKtB,CACH;AAAA,YACA,MAAM,IAAI,CAACmJ,OAAM,UACdnJ,kCAAAA,KAAC,KAAA,EAA0B,IAAI,EAAE,SAAS,QAAQ,KAAK,KAAK,YAAY,YACpE,UAAA;AAAA,cAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,UAAS,OAAO,EAAE,iBAAiB,WAAW,KAAK,EAAA,GAAK;AAAA,cACvEF,kCAAAA,KAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBACvB,UAAA;AAAA,gBAAAmJ,MAAK;AAAA,gBAAM;AAAA,uDAAG,QAAA,EAAK,OAAO,EAAE,YAAY,OAAO,UAAA;AAAA,kBAAA;AAAA,kBAAG,QAAQ,QAAQA,MAAK,KAAK;AAAA,gBAAA,EAAA,CAAE;AAAA,cAAA,EAAA,CACnF;AAAA,YAAA,EAAA,GAJM,QAAQ,KAAK,EAKvB,CACH;AAAA,UAAA,EAAA,CACL;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,EAAA,CAGR,EAAA,CACJ;AAER;ACpQA,MAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAMG,8BAA4B,CAAC,QAAQ;AACzC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO;AAAA,EACT;AACA,QAAMC,UAAQ,2BAAK,MAAM,YAAW;AACpC,SAAOA,SAAQ,OAAOA,OAAM,CAAC,CAAC,IAAI;AACpC;AAEO,MAAMlH,eAAwC,CAAC;AAAA,EACrD;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACP;AAAA,EACD,SAAS;AAAA,EACT,YAAY;AAAA,EACX;AAAA,EACD,QAAS,iBAAiB,aAAa;AAAA,EACtC,SAAS;AAAA,EACT,aAAW,CAAA;AAAA,EACX,aAAW,CAAA;AAEb,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AAEzC,YAAU,MAAM;AACd,QAAI,CAAC,OAAO,QAAS;AAErB,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS;AAEf,UAAM,cAAc,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAClD,UAAM,cAAc,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI,SAAS;AAE3D,UAAM,IAAI,IACP,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,QAAQ,CAAC,KAAK,SAAS,CAAC,GAAG;AAE7D,UAAM,MAAM,GACT,MACA,MAAM,CAAC,MAAiBiH,4BAA0B,EAAE,KAAK,CAAC;AAE7D,UAAM,OAAO,GAAG,IAAA,EAAM,YAAY,WAAW,EAAE,YAAY,WAAW;AAEtE,UAAM,OAAO,EACV,UAAU,MAAM,EAEhB,KAAK,IAAI,IAAI,CAAC,EACd,QACA,OAAO,GAAG,EACV,KAAK,SAAS,KAAK;AAEtB,SACG,OAAO,MAAM,EAEb,KAAK,KAAK,IAAI,EAEd,KAAK,QAAQ,CAAC,GAAc,MAAc;AACzC,aAAO,OAAO,IAAI,OAAO,MAAM;AAAA,IAAC,CAAC;AAWrC,MAAE,OAAO,MAAM,EACZ,KAAK,eAAe,QAAQ,EAC5B,KAAK,aAAa,MAAM,EACxB,KAAK,eAAe,KAAK,EACzB,KAAK,sBAAsB,SAAS,EACpC,KAAK,KAAK;AAAA,EA2Bf,GAAG,CAAC,QAAQ,MAAM,QAAQ,OAAO,KAAK,CAAC;AAEvC,MAAI,CAAC,QAAQ;AACX,WAAOpJ,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAgB;AAAA,EACzD;AAEA,6EAEI,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAW,yBAAyB,SAAS,IAChD,UAAA;AAAA,IAAAE,kCAAAA,IAAC,SACC,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAgB,EAAA,CAClD;AAAA,IACAA,kCAAAA,IAAC,SAAI,WAAU,sBACZ,kBAAQ,KAAK,IAAI,CAAC,GAAc,MAAc;AAC7C,aACEF,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UAEV,OAAO,EAAE,YAAY,kBAAkB,OAAO,CAAC,CAAC,GAAA;AAAA,UAEhD,UAAA;AAAA,YAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,gBACf,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAuB,GAAG,YACnD,UAAA,EAAE,OACL,GACE;AAAA,YACFA,kCAAAA,IAAC,OAAA,EAAI,WAAU,gBACb,UAAAA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,OAAM;AAAA,gBAEN,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,wBAAuB,QAAO,QAAQ,GAAG,YAClE,UAAA,EAAE,MAAA,CACL;AAAA,cAAA;AAAA,YAAA,EACF,CACF;AAAA,UAAA;AAAA,QAAA;AAAA,QAlBK,EAAE;AAAA,MAAA;AAAA,IAqBb,CAAC,EAAA,CACH;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AC3JA,MAAM8I,iBAAe,CAAC,KAAa,wBAAgC,OAAe;AAChF,MAAI,OAAO,KAAW;AACpB,WAAO,GAAG,qBAAqB,KAAK,MAAM,KAAW,QAAQ,CAAC,CAAC;AAAA,EACjE,WAAW,OAAO,KAAS;AACzB,WAAO,GAAG,qBAAqB,KAAK,MAAM,KAAS,QAAQ,CAAC,CAAC;AAAA,EAC/D,WAAW,OAAO,KAAO;AACvB,WAAO,IAAI,MAAM,KAAO,QAAQ,CAAC,CAAC;AAAA,EACpC,OAAO;AACL,WAAO,GAAG,qBAAqB,IAAI,IAAI,QAAQ,CAAC,CAAC;AAAA,EACnD;AACF;AACA,MAAM,4BAA4B,CAAC,QAAQ;AACzC,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO;AAAA,EACT;AACA,QAAMO,UAAQ,2BAAK,MAAM,YAAW;AACpC,SAAOA,SAAQ,OAAOA,OAAM,CAAC,CAAC,IAAI;AACpC;AAEA,MAAM,aAAwC,CAAC;AAAA,EAC7C;AAAA,EACA,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,QAAQ;AACV,MAAM;;AACJ,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,EAAE,KAAA,IAAS,QAAA;AACjB,QAAM,0BAAwB,kCAAM,kBAAN,mBAAqB,WAAU;AAC7D,YAAU,MAAM;AACd,QAAI,CAAC,OAAO,QAAS;AAErB,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS;AAEf,UAAM,cAAc,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI;AAClD,QAAI,cAAc,KAAK,IAAI,OAAO,MAAM,IAAI,IAAI,SAAS;AACzD,QAAI,mBAAmB;AACrB,oBAAc,cAAc;AAAA,IAC9B;AAKA,UAAM,IAAI,IACP,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,QAAQ,CAAC,KAAK,SAAS,CAAC,GAAG;AAC7D,UAAM,MAAM,GACT,IAAA,EACA,MAAM,CAAC,MAAiB,0BAA0B,EAAE,KAAK,CAAC,EAAE,SAAS,CAAC;AAEzE,UAAM,OAAO,GAAG,IAAA,EAAM,YAAY,WAAW,EAAE,YAAY,WAAW;AAEtE,UAAM,OAAO,EACV,UAAU,MAAM,EAChB,KAAK,IAAI,IAAI,CAAC,EACd,QACA,OAAO,GAAG,EACV,KAAK,SAAS,KAAK;AAGtB,SACG,OAAO,MAAM,EACb,KAAK,KAAK,IAAI,EACd,KAAK,QAAQ,CAAC;;AAAiB,cAAAjH,MAAA,uBAAG,SAAH,gBAAAA,IAAS;AAAA,KAAK,EAAE,KAAK,UAAU,MAAM;AACvE,MAAE,OAAO,MAAM,EACZ,KAAK,eAAe,QAAQ,EAC5B,KAAK,aAAa,MAAM,EACxB,KAAK,eAAe,KAAK,EACzB,KAAK,sBAAsB,SAAS,EACpC,KAAK,KAAK;AACb,MAAE,OAAO,MAAM,EACZ,KAAK,eAAe,QAAQ,EAC5B,KAAK,cAAc,MAAM,EACzB,KAAK,aAAa,MAAM,EACxB,KAAK,eAAe,KAAK,EACzB,KAAK,MAAM,KAAK,EAChB,KAAK,SAAS,SAAS,EACvB,KAAK,KAAK;AAAA,EAEf,GAAG,CAAC,MAAM,QAAQ,OAAO,OAAO,uBAAuB,mBAAmB,eAAe,KAAK,CAAC;AAE/F,MAAI,CAAC,QAAQ;AACX,WAAOpC,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAgB;AAAA,EACzD;AAEA,6EAEI,UAAAF,kCAAAA,KAAC,OAAA,EAAI,WAAW,yBAAyB,SAAS,IAChD,UAAA;AAAA,IAAAE,kCAAAA,IAAC,SACC,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAgB,EAAA,CAClD;AAAA,IAGC,gBACCA,kCAAAA,IAAC,eAAA,EAAc,MAAY,IAE3BA,kCAAAA,IAAC,SAAI,WAAU,gBACb,UAAAA,sCAAC,OAAA,EAAI,WAAW,sBAAsB,SAAS,IAC5C,UAAA,KAAK,IAAI,CAAC,MACTF,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QAEV,OAAO,EAAE,YAAY,kBAAkB,EAAE,KAAK,GAAA;AAAA,QAE9C,UAAA;AAAA,UAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,gBAAe,OAAO,EAAE,OAAO,GAAG,EAAE,UAAU,GAAA,GAAO,UAAA,EAAE,OAAM;AAAA,UAC5EA,kCAAAA,IAAC,OAAA,EAAI,WAAU,gBACb,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,OAAO,EAAE;AAAA,cACT,OAAO;AAAA,gBACL,YAAY;AAAA,cAAA;AAAA,cAGb,UAAA8I,eAAa,EAAE,OAAO,qBAAqB;AAAA,YAAA;AAAA,UAAA,EAC9C,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,MAfK,EAAE;AAAA,IAAA,CAiBV,GAEH,EAAA,CACF;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;AClJA,MAAMA,iBAAe,CAAC,KAAa,WAAW;AAC1C,SAAO,GAAG,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,KAAK,GAAG,CAAC;AAC/D;AAEA,MAAM,kBAAkB,CAAC;AAAA,EACrB;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AAAA,EACX,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AAAA,EACjD,OAAO;AACX,MAAwB;;AACpB,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,qBAAqB,OAAuB,IAAI;AACtD,QAAM,CAAC,gBAAgBC,kBAAiB,IAAI,SAAiB,CAAC;AAE9D,QAAM,WAAW,QAAQ,MAAM,KAAK,IAAI,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAA,MAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,SAAS,CAAC;AAE5G,QAAM,wBAAwB,UAAU,SAAS;AACjD,QAAM,gBAAgB;AACtB,QAAM,uBAAuB,wBACvB,KAAK,IAAI,UAAU,SAAS,eAAe,cAAc,IACzD;AAEN,QAAM,EAAE,KAAA,IAAS,QAAA;AACjB,QAAM,0BAAwB,kCAAM,kBAAN,mBAAqB,WAAU;AAE7D,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,QAAAA,mBAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACZ,QAAI,mBAAmB,EAAG;AAE1B,UAAM,aAAa,uBAAuB,OAAO,OAAO,OAAO;AAC/D,UAAM,cAAc,WAAW,SAAS,OAAO,MAAM,OAAO,SAAS;AAErE,OAAG,OAAO,OAAO,OAAO,EAAE,UAAU,GAAG,EAAE,OAAA;AAEzC,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO,EAC/B,KAAK,UAAU,MAAM,EACrB,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,KAAK,WAAW,OAAO,MAAM,SAAO,EAAE,GAAG;AAExF,UAAM,KAAK,GAAG,UAAA,EACT,OAAO,UAAU,IAAI,CAAA,MAAK,EAAE,KAAK,CAAC,EAClC,MAAM,CAAC,GAAG,UAAU,CAAC,EACrB,QAAQ,GAAG;AAEhB,UAAM,KAAK,GAAG,UAAA,EACT,OAAO,CAAC,qBAAqB,eAAe,eAAe,CAAC,EAC5D,MAAM,CAAC,GAAG,GAAG,UAAA,CAAW,CAAC,EACzB,QAAQ,GAAG;AAEhB,UAAM,IAAI,GAAG,YAAA,EACR,OAAO,CAAC,GAAG,GAAG,IAAI,WAAW,CAAA,MAAK,GAAG,IAAI,EAAE,MAAM,CAAA,SAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EACtE,KAAA,EACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAE3B,UAAM,QAAQ,IAAI,OAAO,GAAG,EACvB,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,gBAAgB,WAAW,GAAG,EAChD,KAAK,GAAG,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC;AAE3C,UAAM,QAAQ,IAAI,OAAO,GAAG,EACvB,KAAK,SAAS,QAAQ,EACtB,KAAK,GAAG,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,MAAWD,eAAa,GAAG,qBAAqB,CAAC,CAAC;AAEvG,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAC7C,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAE7C,QAAI,MAAM;AACN,UAAI,UAAU,YAAY,EACrB,KAAK,EAAE,OAAO,EACd,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,WAAW,EACzB,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,UAAU,EACrB,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,gBAAgB,CAAC;AAAA,IAChC;AAEA,UAAM,cAAc,IAAI,UAAU,cAAc,EAC3C,KAAK,SAAS,EACd,MAAA,EACA,OAAO,GAAG,EACV,KAAK,SAAS,aAAa,EAC3B,KAAK,aAAa,CAAA,MAAK,aAAa,GAAG,EAAE,KAAK,CAAC,MAAM;AAE1D,gBAAY,UAAU,MAAM,EACvB,KAAK,CAAA,MAAK,EAAE,IAAI,EAChB,MAAA,EACA,OAAO,MAAM,EACb,KAAK,KAAK,CAAA,MAAK,GAAG,EAAE,IAAI,KAAK,GAAG,UAAA,IAAc,YAAY,CAAC,EAC3D,KAAK,KAAK,CAAA,MAAK,EAAE,EAAE,KAAK,CAAC,EACzB,KAAK,SAAS,QAAQ,EACtB,KAAK,UAAU,CAAA,MAAK,cAAc,EAAE,EAAE,KAAK,CAAC,EAC5C,KAAK,QAAQ,CAAA,MAAK,EAAE,KAAK,EACzB,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC;AAAA,EAErB,GAAG,CAAC,WAAW,UAAU,QAAQ,sBAAsB,gBAAgB,MAAM,QAAQ,uBAAuB,QAAQ,CAAC;AAErH,+CACK,OAAA,EAAI,KAAK,YAAY,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAClD,UAAA9I,sCAAC,OAAA,EAAI,OAAO,EAAE,UAAU,cACpB,UAAAA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAK;AAAA,MACD,OAAO;AAAA,QACH,OAAO;AAAA,QACP,WAAW,wBAAwB,SAAS;AAAA,QAC5C,WAAW;AAAA,MAAA;AAAA,MAGnB,UAAAA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,KAAK;AAAA,UACL,OAAO;AAAA,UACP;AAAA,UACA,SAAS,OAAO,oBAAoB,IAAI,MAAM;AAAA,UAC9C,OAAO,EAAE,SAAS,QAAA;AAAA,QAAQ;AAAA,MAAA;AAAA,IAC9B;AAAA,EAAA,GAER,EAAA,CACJ;AAER;AC/IA,MAAM8I,iBAAe,CAAC,QAAgB;AACpC,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,MAAI,OAAO,IAAK,SAAQ,MAAM,KAAK,QAAQ,CAAC,IAAI;AAChD,SAAO;AACT;AAEA,MAAM,YAAsC,CAAC;AAAA,EAC3C;AAAA,EACA,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS;AACX,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,WAAW,QAAQ,MAAM;AAC7B,WAAO,KAAK,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAC7C,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,gBAAgB,QAAQ,MAAM;AAClC,WAAO,WAAW;AAAA,EACpB,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,aAAa,QAAQ,MAAM;AAC/B,UAAM,QAAQ,CAAA;AACd,UAAM,WAAW,gBAAgB;AACjC,aAAS,IAAI,GAAG,KAAK,YAAY,KAAK;AACpC,YAAM,KAAK,WAAW,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACT,GAAG,CAAC,eAAe,UAAU,CAAC;AAE9B,QAAM,wBAAwB,KAAK,SAAS;AAC5C,QAAM,gBAAgB;AACtB,QAAM,uBAAuB,wBACvB,KAAK,IAAI,KAAK,SAAS,eAAe,KAAK,IAC3C;AACJ,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,0BAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AACP,YAAU,MAAM;AACd,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AACvD,UAAM,WAAW,uBAAuB,OAAO,OAAO,OAAO;AAC7D,UAAM,YAAY,SAAS,OAAO,MAAM,OAAO;AAE/C,UAAM,YAAY,CAAC,OAAY,MAAW;AAExC,YAAM,YAAY,MAAM,UAAU,OAAO,OAAO;AAChD,YAAM,YAAY,MAAM,UAAU,OAAO,MAAM;AAC/C,YAAM,OAAO,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK;AACpC,cACG,KAAK,KAAK,SAAS,EACnB,KAAK,KAAK,SAAS,EACnB,MAAM,WAAW,CAAC,EAClB,MAAM,UAAU,KAAK,UAAU,KAAK,KAAK,EAAE;AAE9C,kBAAY,KAAK,IAAI;AAAA,IACvB;AAEA,UAAM,aAAa,MAAM;AACvB,cAAQ,MAAM,WAAW,CAAC;AAAA,IAC5B;AAEA,UAAM,IAAI,GACP,UAAA,EACA,OAAO,KAAK,IAAI,CAAC,MAAW,EAAE,KAAK,CAAC,EACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,EACnB,QAAQ,GAAG;AAEd,UAAM,IAAI,GACP,YAAA,EACA,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAW,EAAE,KAAK,CAAC,CAAC,EAC7C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,UAAM,QAAQ,IACX,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,UAAM,OAAO,GACV,KAAA,EAEA,EAAE,CAAC,MAAW,EAAE,EAAE,KAAK,IAAI,EAAE,UAAA,IAAc,CAAC,EAC5C,EAAE,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC;AAE3B,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAK,IAAI,EACd,MAAM,QAAQ,MAAM,EACpB,MAAM,UAAU,SAAS,EACzB,MAAM,gBAAgB,CAAC;AAE1B,UACG,UAAU,QAAQ,EAClB,KAAK,IAAI,EACT,MAAA,EACA,OAAO,QAAQ,EACf,KAAK,SAAS,OAAO,EAErB,KAAK,MAAM,CAAC,MAAW,EAAE,EAAE,KAAK,IAAI,EAAE,UAAA,IAAc,CAAC,EACrD,KAAK,MAAM,CAAC,MAAW,EAAE,EAAE,KAAK,CAAC,EACjC,KAAK,KAAK,CAAC,EACX,MAAM,QAAQ,SAAS,EACvB,GAAG,aAAa,SAAS,EACzB,GAAG,cAAc,UAAU;AAE9B,eAAW,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AACpC,YACG,OAAO,MAAM,EACb,KAAK,SAAS,aAAa,EAC3B,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,KAAK,MAAM,KAAK,EAChB,KAAK,MAAM,EAAE,IAAI,CAAC,EAClB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK;AAAA,IACpC,CAAC;AAED,UAAM,QAAQ,MACX,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,gBAAgB,SAAS,GAAG,EAC9C,KAAK,GAAG,WAAW,CAAC,CAAC;AAExB,UAAM,UAAU,YAAY,EAAE,OAAA;AAE9B,UAAM,QAAQ,MACX,OAAO,GAAG,EACV,KAAK,SAAS,QAAQ,EACtB;AAAA,MACC,GACG,SAAS,CAAC,EACV,WAAW,UAAU,EAErB,WAAW,CAAC,MAAW;AACtB,eAAOA,eAAa,CAAC;AAAA,MACvB,CAAC,EACA,cAAc,CAAC;AAAA,MAClB;AAAA,IAAA;AAGJ,UAAM,UAAU,SAAS,EAAE,OAAA;AAC3B,UAAM,UAAU,YAAY,EAAE,OAAA;AAE9B,UAAM,UAAU,IACb,OAAO,eAAe,EACtB,KAAK,SAAS,SAAS,EACvB,KAAK,SAAS,GAAG,EACjB,KAAK,UAAU,EAAE,EACjB,MAAM,WAAW,CAAC,EAClB,MAAM,YAAY,UAAU,EAC5B,MAAM,oBAAoB,OAAO,EACjC,MAAM,UAAU,MAAM,EACtB,MAAM,cAAc,6CAA6C,EACjE,MAAM,iBAAiB,UAAU,EACjC,MAAM,WAAW,UAAU,EAC3B,MAAM,aAAa,SAAS;AAE/B,UAAM,cAAc,QACjB,OAAO,WAAW,EAClB,MAAM,aAAa,SAAS,EAC5B,MAAM,SAAS,OAAO;AAAA,EAC3B,GAAG,CAAC,MAAM,QAAQ,OAAO,eAAe,YAAY,oBAAoB,CAAC;AAEzE,SACE9I,kCAAAA,IAAC,OAAA,EAAI,KAAK,YAAY,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAClD,UAAAA,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,KAAK;AAAA,MACL,OAAO;AAAA,MACP;AAAA,MACA,SAAS,OAAO,oBAAoB,IAAI,MAAM;AAAA,IAAA;AAAA,EAAA,GAEtD;AAEJ;ACnMA,MAAM,mBAA6C,CAAC;AAAA,EAClD;AAAA,EACA,QAAQ;AAAA;AAAA,EACR,SAAS;AAAA;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,eAAe,OAAuB,IAAI;AAChD,QAAM,CAAC,gBAAgB+I,kBAAiB,IAAI,SAAS,CAAC;AAEtD,YAAU,MAAM;AAEd,UAAM,iBAAiB,IAAI,eAAe,MAAM;AAC9C,UAAI,aAAa,SAAS;AACxB,QAAAA,mBAAkB,aAAa,QAAQ,WAAW;AAAA,MACpD;AAAA,IACF,CAAC;AAED,QAAI,aAAa,SAAS;AACxB,qBAAe,QAAQ,aAAa,OAAO;AAC3C,MAAAA,mBAAkB,aAAa,QAAQ,WAAW;AAAA,IACpD;AAEA,WAAO,MAAM,eAAe,WAAA;AAAA,EAC9B,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AACd,QAAI,mBAAmB,EAAG;AAE1B,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAAa;AACtD,UAAM,aAAa,iBAAiB,OAAO,OAAO,OAAO;AACzD,UAAM,cAAc;AAEpB,UAAM,IAAI,GACP,YAAA,EACA,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAC3B,MAAM,CAAC,GAAG,UAAU,CAAC;AAExB,UAAM,IAAI,GACP,YAAA,EACA,OAAO,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAiB,EAAE,KAAK,KAAK,CAAC,CAAC,EACxD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,UAAM,OAAO,GACV,KAAA,EACA,EAAE,CAAC1G,IAAG,MAAM,EAAE,CAAC,CAAC,EAChB,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;AAEtB,UAAM,OAAO,GACV,KAAA,EACA,EAAE,CAACA,IAAG,MAAM,EAAE,CAAC,CAAC,EAChB,GAAG,WAAW,EACd,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC;AAEvB,UAAM,QAAQ,IACX,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAK,IAAI,EACd,MAAM,QAAQ,MAAM,EACpB,MAAM,UAAU,SAAS,EACzB,MAAM,gBAAgB,CAAC;AAE1B,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAK,IAAI,EACd,MAAM,QAAQ,aAAa;AAE9B,UAAM,UAAU,SAAS,EAAE,OAAA;AAC3B,UAAM,UAAU,YAAY,EAAE,OAAA;AAAA,EAChC,GAAG,CAAC,MAAM,QAAQ,WAAW,eAAe,cAAc,CAAC;AAE3D,+CACG,OAAA,EAAI,KAAK,cAAc,OAAO,EAAE,OAAc,OAAA,GAC7C,gDAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAO,QAAQ,GAAG,MAAM,GACzD;AAEJ;ACxFA,MAAM,eAAe,CAAC,KAAa,QAAgB,cAAsB;AACrE,MAAI,cAAc,aAAa;AAC3B,WAAO,GAAG,GAAG,OAAO,KAAK,EAAE,MAAM,GAAG,CAAC;AAAA,EACzC,WAAW,cAAc,WAAW;AAChC,WAAO,GAAG,UAAQ,EAAE,IAAI,GAAG,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,KAAK,GAAG,CAAC;AAAA,EACnE;AACA,SAAO,IAAI,SAAA;AACf;AAIA,MAAM,iBAAiB,CAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAC,aAAa,UAAU,SAAS,KAAK;AAAA;AAAA,EAC/C,SAAS;AAAA,EACT,SAAS,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AAAA,EACjD,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB;AAAA,EACA;AACJ,MAA4B;AACxB,QAAM,SAAS,OAAsB,IAAI;AACzC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,CAAC,gBAAgB0G,kBAAiB,IAAI,SAAiB,CAAC;AAE9D,YAAU,MAAM;AAAA,EAChB,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACZ,UAAM,UAAU,WAAW;AAE3B,UAAM,iBAAiB,IAAI,eAAe,CAAC,YAAY;AACnD,UAAI,QAAQ,CAAC,GAAG;AACZ,cAAM,WAAW,QAAQ,CAAC,EAAE,YAAY;AACxC,QAAAA,mBAAkB,QAAQ;AAAA,MAC9B;AAAA,IACJ,CAAC;AAED,QAAI,SAAS;AACT,qBAAe,QAAQ,OAAO;AAAA,IAClC;AAEA,WAAO,MAAM;AACT,UAAI,SAAS;AACT,uBAAe,UAAU,OAAO;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,YAAU,MAAM;AAEZ,QAAI,mBAAmB,EAAG;AAE1B,UAAM,MAAM,GAAG,OAAO,OAAO,OAAO;AACpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,aAAa,iBAAe,OAAO,OAAM,OAAO;AACtD,UAAM,cAAc,SAAS,OAAO,MAAM,OAAO;AAGjD,UAAM,IAAI,GAAG,YAAA,EACR,OAAO,CAAC,GAAG,UAAU,MAAM,CAAC,EAC5B,MAAM,CAAC,GAAG,UAAU,CAAC;AAE1B,UAAM,IAAI,GAAG,YAAA,EACR,OAAO,CAAC,GAAG,GAAG,IAAI,SAAS,CAAW,CAAC,EACvC,KAAA,EACA,MAAM,CAAC,aAAa,CAAC,CAAC;AAI3B,UAAM,QAAQ,IAAI,OAAO,GAAG,EACvB,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,SAAS,OAAO,MAAM,GAAG,EACvE;AAAA,MAAK,GAAG,WAAW,CAAC,EAChB,MAAM,UAAU,SAAS,CAAC,EAC1B,WAAW,CAAC,GAAG,MAAM,UAAU,CAAC,CAAC;AAAA,IAAA;AAG1C,UAAM,UAAU,MAAM,EACjB,KAAK,aAAa,mBAAmB,EACrC,MAAM,eAAe,QAAQ;AAClC,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAG7C,UAAM,QAAQ,IAAI,OAAO,GAAG,EACvB,KAAK,SAAS,QAAQ,EACtB,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG,EAC3D,KAAK,GAAG,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE;AAAA,MAAW,CAAC,MAC7C,uBACM,qBAAqB,CAAC,IACtB,aAAa,GAAG,UAAU,cAAc;AAAA,IAAA,EAE7C,cAAc,CAAC,CAAS;AAEjC,QAAI,MAAM;AACN,YAAM,UAAU,YAAY,EACvB,KAAK,EAAE,OAAO,EACd,MAAA,EACA,OAAO,MAAM,EACb,KAAK,SAAS,WAAW,EACzB,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,UAAU,EACrB,KAAK,MAAM,OAAK,EAAE,CAAC,CAAC,EACpB,KAAK,MAAM,CAAA,MAAK,EAAE,CAAC,CAAC,EACpB,MAAM,UAAU,MAAM,EACtB,MAAM,oBAAoB,KAAK,EAC/B,MAAM,gBAAgB,CAAC;AAAA,IAChC;AACA,UAAM,UAAU,YAAY,EAAE,OAAA;AAC9B,UAAM,UAAU,YAAY,EAAE,OAAA;AAC9B,UAAM,OAAO,SAAS,EAAE,KAAK,UAAU,MAAM;AAI7C,WAAO,KAAK,IAAI,EAAE,QAAQ,CAAC,KAAK,UAAU;;AACtC,UAAI,QAAQ,UAAU;AAClB,cAAM,YAAY,GAAG,KAAA,EAChB,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,EAChB,EAAE,CAAC,MAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,WAAW,GAAG,iBAAiB,GAAG,WAAW;AAEtF,YAAI,OAAO,MAAM,EACZ,OAAM,UAAK,GAAG,MAAR,mBAAW,IAAI,EACrB,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,OAAO,QAAQ,OAAO,MAAM,CAAC,EAC5C,KAAK,gBAAgB,CAAC,EACtB,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG,EAC3D,KAAK,KAAK,SAAS,EACnB,GAAG,aAAa,WAAY;AACzB,aAAG,OAAO,IAAI,EAAE,KAAK,gBAAgB,CAAC;AAAA,QAC1C,CAAC,EACA,GAAG,YAAY,WAAY;AACxB,aAAG,OAAO,IAAI,EAAE,KAAK,gBAAgB,CAAC;AAAA,QAC1C,CAAC;AAKL,aAAI,UAAK,GAAG,MAAR,mBAAW,YAAY;AACvB,cAAI,UAAU,WAAW,GAAG,EAAE,EACzB,MAAK,UAAK,GAAG,MAAR,mBAAW,IAAI,EACpB,MAAA,EACA,OAAO,QAAQ,EACf,KAAK,SAAS,UAAU,GAAG,EAAE,EAC7B,KAAK,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,OAAO,IAAI,EACvC,KAAK,MAAM,CAAC,MAAW,EAAE,CAAC,IAAI,OAAO,GAAG,EACxC,KAAK,KAAK,CAAC,EACX,KAAK,QAAQ,OAAO,QAAQ,OAAO,MAAM,CAAC,EAC1C,KAAK,UAAU,OAAO,EACtB,KAAK,gBAAgB,GAAG,EACxB,GAAG,aAAa,WAAY;AACzB,eAAG,OAAO,IAAI,EAAE,KAAK,KAAK,CAAC;AAAA,UAC/B,CAAC,EACA,GAAG,YAAY,WAAY;AACxB,eAAG,OAAO,IAAI,EAAE,KAAK,KAAK,CAAC;AAAA,UAC/B,CAAC;AAAA,QACT;AAAA,MAEJ;AAAA,IACJ,CAAC;AAAA,EACL,GAAG,CAAC,MAAM,WAAW,WAAW,QAAQ,gBAAgB,QAAQ,QAAQ,MAAM,gBAAgB,UAAU,oBAAoB,CAAC;AAE7H,SACI/I,kCAAAA,IAAC,OAAA,EAAI,KAAK,YAAY,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAA,GAClD,UAAAA,kCAAAA,IAAC,OAAA,EAAI,OAAO,EAAE,UAAU,WAAA,GACpB,UAAAA,kCAAAA,IAAC,OAAA,EAAI,KAAK,QAAQ,OAAM,QAAO,QAAgB,SAAS,OAAO,cAAc,IAAI,MAAM,GAAA,CAAI,GAC/F,GACJ;AAER;ACzKA,MAAM,iBAAgD,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAM;AACL,QAAM,CAAC,aAAa,cAAc,IAAI,SAA6B,IAAI;AACvE,QAAM,CAAC,KAAK,MAAM,IAAI,SAAoB,IAAI;AAE9C,QAAM,iBAAiB,CACtB,GACA,gBACI;AACJ,WAAO,WAAW;AAClB,mBAAe,EAAE,aAAa;AAAA,EAC/B;AAEA,SACCF,kCAAAA;AAAAA,IAACwJ;AAAAA,IAAA;AAAA,MACA,IAAI;AAAA,QACH,OAAO;AAAA,QACP,cAAc;AAAA,QACd,QAAQ;AAAA;AAAA,QAER,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA;AAAA,MAMZ,UAAA;AAAA,QAAAxJ,kCAAAA;AAAAA,UAACyJ;AAAAA,UAAA;AAAA,YACA,IAAI;AAAA,cACH,SAAS;AAAA,cACT,eAAe;AAAA,cACf,SAAS;AAAA,cACT,gBAAgB;AAAA,cAChB,YAAY;AAAA,cACZ,YAAY;AAAA,YAAA;AAAA,YAGb,UAAA;AAAA,cAAAzJ,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,IAAI;AAAA,oBACH,SAAS;AAAA,oBACT,OAAO;AAAA,oBACP,gBAAgB;AAAA,oBAChB,YAAY;AAAA;AAAA,kBAAA;AAAA,kBAGb,UAAA;AAAA,oBAAAE,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAC1C,UAAA,MAAA,CACF;AAAA,oBACAA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACA,OAAM;AAAA,wBACN,MAAK;AAAA,wBACL,SAAS,CAAC,MAAM,eAAe,GAAG,IAAI;AAAA,wBACtC,UAAAA,kCAAAA;AAAAA,0BAAC;AAAA,0BAAA;AAAA,4BACA,IAAI,EAAE,WAAW,gBAAA;AAAA,4BACjB,QAAO;AAAA,4BACP,UAAS;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBACV;AAAA,oBAAA;AAAA,kBACD;AAAA,gBAAA;AAAA,cAAA;AAAA,cAGDA,kCAAAA,IAAC,OACA,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAC1B,UAAA,SAAA,CACF,EAAA,CACD;AAAA,cACC;AAAA,eACA,6BAAM,eACNA,kCAAAA,IAAC,KAAA,EACA,iDAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAsB,UAAA;AAAA,gBAAA;AAAA,gBACrC,WAAW,6BAAM,YAAY,cAAc;AAAA,cAAA,EAAA,CACxD,EAAA,CACD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAKFF,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,UAAU;AAAA,YACV,MAAM,QAAQ,WAAW;AAAA,YACzB,SAAS,MAAM,eAAe,IAAI;AAAA,YAClC,UAAA;AAAA,cAAAE,kCAAAA,IAAC,KAAA,EACC,UAAA,cAAc,IAAI,CAAC,SACnBA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,SAAS,MAAM;AACd,2BAAO,KAAK,aAAa,GAAG;AAC5B,mCAAe,IAAI;AAAA,kBACpB;AAAA,kBACA,gDAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,eAAK,MAAA,CACP;AAAA,gBAAA;AAAA,cAAA,CAED,GACF;AAAA,oDACC,KAAA,EAAI,WAAU,qCACb,UAAA,sBAAsB,IAAI,CAAC,SAC3BA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,SAAS,MAAM;AACd,2BAAO,KAAK,aAAa,GAAG;AAC5B,mCAAe,IAAI;AAAA,kBACpB;AAAA,kBACA,WAAU;AAAA,kBACV,gDAAC,YAAA,EAAW,MAAK,MAAK,OAAM,WAC1B,eAAK,MAAA,CACP;AAAA,gBAAA;AAAA,cAAA,CAED,EAAA,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACD;AAAA,IAAA;AAAA,EAAA;AAGH;ACnIO,SAAS,oBAAoB,MAAM;AACxC,SAAO,qBAAqB,WAAW,IAAI;AAC7C;AACoB,uBAAuB,WAAW,CAAC,MAAM,CAAC;ACD9D,MAAMW,cAAY,CAAC,aAAa,QAAQ;AAWxC,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,MAAM;AAAA,EACjB;AACE,SAAO,eAAe,OAAO,qBAAqB,OAAO;AAC3D;AACA,MAAM,WAAW,OAAO4C,SAAO;AAAA,EAC7B,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAO3C,YAAWA,QAAO;AAC/C,CAAC,EAAE,MAAM;AACP,SAAO;AAAA,IACL,UAAU;AAAA,EACd;AACA,CAAC;AACD,MAAM,OAAoB,sBAAM,WAAW,SAASqI,MAAK,SAAS,KAAK;AACrE,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACf,IAAQ,OACJ,QAAQ,8BAA8B,OAAO3I,WAAS;AACxD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,UAAUC,WAAS;AAAA,IAC1C,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC,WAAW,SAAS,IAAI;AAAA,IACxB;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,KAAK,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ9E,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,QAAQ,eAAe,UAAU,MAAM,WAAS;AAC9C,QAAI,MAAM,UAAU,MAAM,YAAY,YAAY;AAChD,aAAO,IAAI,MAAM,yEAAyE;AAAA,IAC5F;AACA,WAAO;AAAA,EACT,CAAC;AAAA;AAAA;AAAA;AAAA,EAID,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;ACnFG,SAAS,2BAA2B,MAAM;AAC/C,SAAO,qBAAqB,kBAAkB,IAAI;AACpD;AAC2B,uBAAuB,kBAAkB,CAAC,MAAM,CAAC;ACD5E,MAAMJ,cAAY,CAAC,aAAa,WAAW;AAS3C,MAAMK,sBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,MAAM;AAAA,EACjB;AACE,SAAO,eAAe,OAAO,4BAA4B,OAAO;AAClE;AACA,MAAM,kBAAkB,OAAO,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOC,YAAWA,QAAO;AAC/C,CAAC,EAAE,MAAM;AACP,SAAO;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB;AAAA,MACd,eAAe;AAAA,IACrB;AAAA,EACA;AACA,CAAC;AACD,MAAM,cAA2B,sBAAM,WAAW,SAASsI,aAAY,SAAS,KAAK;AACnF,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF;AAAA,IACA,YAAY;AAAA,EAClB,IAAQ,OACJ,QAAQ,8BAA8B,OAAO5I,WAAS;AACxD,QAAM,aAAaI,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,EACJ,CAAG;AACD,QAAM,UAAUC,oBAAkB,UAAU;AAC5C,SAAoBF,kCAAAA,IAAK,iBAAiBC,WAAS;AAAA,IACjD,IAAI;AAAA,IACJ,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,IACvC;AAAA,IACA;AAAA,EACJ,GAAK,KAAK,CAAC;AACX,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,YAAY,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrF,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA,EAIpB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKrB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA,EAIrB,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AACxJ,IAAI;AClEG,MAAM,iBAAiB,CAAC,UAAe;AAC7C,SACCf,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACA,IAAI;AAAA,QACH,OAAO;AAAA,QACP,cAAc;AAAA,QACd,QAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,WAAW;AAAA;AAAA;AAAA;AAAA,QAIX,GAAG;AAAA,MAAA;AAAA,MAEJ,UAAAF,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,IAAI;AAAA,YACH,SAAS;AAAA,YACT,eAAe;AAAA,YACf,SAAS;AAAA,YACT,gBAAgB;AAAA,YAChB,YAAY;AAAA,YACZ,YAAY;AAAA,UAAA;AAAA,UAEb,UAAA;AAAA,YAAAA,kCAAAA;AAAAA,cAACiD;AAAAA,cAAA;AAAA,gBACA,IAAI;AAAA,kBACH,SAAS;AAAA,kBACT,OAAO;AAAA,kBACP,gBAAgB;AAAA,kBAChB,cAAc;AAAA,gBAAA;AAAA,gBAEf,UAAA;AAAA,kBAAAjD,uCAACiD,OAAA,EACA,UAAA;AAAA,oBAAA/C,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAC3B,UAAA,MAAM,KAAK,QAAQ,iBAAA,CACrB;AAAA,oBACAA,kCAAAA,IAAC,cAAW,MAAK,MAAK,OAAM,uBAC1B,UAAA,MAAM,KAAK,WAAW,cAAA,CACxB;AAAA,kBAAA,GACD;AAAA,wDACC+C,OAAA,EACA,UAAA/C,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,MAAK;AAAA,sBACL,IAAI;AAAA,wBACH,SAAS;AAAA,wBACT,KAAK;AAAA,wBACL,cAAc;AAAA,wBACd,iBAAiB;AAAA,sBAAA;AAAA,sBAElB,OAAM;AAAA,sBACL,UAAA,MAAM,KAAK,UAAU;AAAA,oBAAA;AAAA,kBAAA,EACvB,CACD;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEDA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,MAAK;AAAA,gBACL,IAAI;AAAA,kBACH,UAAU;AAAA,kBACV,OAAO;AAAA,kBACP,oBAAoB;AAAA,gBAAA;AAAA,gBAEpB,UAAA,MAAM,KAAK,SAAS;AAAA,cAAA;AAAA,YAAA;AAAA,YAEtBF,kCAAAA,KAACiD,OAAA,EAAI,IAAI,EAAE,IAAI,WAAW,SAAS,QAAQ,YAAY,SAAA,GACtD,UAAA;AAAA,cAAA/C,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBACA,MAAK;AAAA,kBACL,IAAI,EAAE,IAAI,QAAA;AAAA,kBACV,OAAM;AAAA,kBACL,UAAA,MAAM,KAAK,UAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,oDAEtB,YAAA,EAAW,MAAK,MAAK,OAAM,uBAAsB,UAAA,YAAA,CAElD;AAAA,YAAA,EAAA,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACD;AAAA,EAAA;AAMH;AAEO,MAAMwJ,aAAW,CAAC,UAAe;AACvC,SACCxJ,kCAAAA,IAAAD,kBAAAA,UAAA,EACE,UAAA,MAAM,KAAK,IAAI,CAAC,aAAwB;AACxC,WAAOC,kCAAAA,IAAC,gBAAA,EAAe,MAAM,SAAA,CAAU;AAAA,EACxC,CAAC,EAAA,CACF;AAEF;AC3FA,MAAM,cAAc,CAAC,UAA4B;AAC/C,QAAM,EAAE,UAAU,MAAM,UAAA,IAAc;AACtC,SACEA,kCAAAA,IAAAD,kBAAAA,UAAA,EACC,sBAEGC,kCAAAA,IAAC,WAAA,CAAA,CAAS,IAEVA,kCAAAA,IAAAD,kBAAAA,UAAA,EACG,WAAA,6BAAM,UAEHC,sCAAC,OAAA,EAAI,WAAU,gBAAgB,SAAA,CAAS,IAExCF,kCAAAA,KAAC,KAAA,EAAI,UAAS,SAAQ,MAAK,OAAM,KAAI,OAAM,WAAU,yBACnD,UAAA;AAAA,IAAAE,kCAAAA,IAAC,OAAA,EAAI,KAAK,OAAO,OAAO,aAAa;AAAA,IACrCA,kCAAAA,IAAC,cAAW,OAAM,wBAAuB,QAAO,UAAS,OAAM,UAAS,UAAA,UAAA,CAAO;AAAA,EAAA,EAAA,CACjF,GAEN,GAEJ;AAEJ;;AC/BA,IAAIkE,2BAAyBC;AAC7B,OAAO,eAAe,aAAS,cAAc;AAAA,EAC3C,OAAO;AACT,CAAC;AACD,IAAAC,cAAA,YAAA,UAAkB;AAClB,IAAIC,mBAAiBH,yBAAuBI,sBAAgC;AAC5E,IAAIC,gBAAcC;AACHJ,cAAA,YAAA,cAAsBC,iBAAe,6BAA2BE,cAAY,KAAK,QAAQ;AAAA,EACtG,GAAG;AACL,CAAC,GAAG,aAAa;;ACTjB,IAAI,yBAAyBJ;AAC7B,OAAO,eAAe,eAAS,cAAc;AAAA,EAC3C,OAAO;AACT,CAAC;AACD,IAAA,YAAA,cAAA,UAAkB;AAClB,IAAI,iBAAiB,uBAAuBG,sBAAgC;AAC5E,IAAI,cAAcE;AACH,YAAA,cAAA,cAAsB,eAAe,6BAA2B,YAAY,KAAK,QAAQ;AAAA,EACtG,GAAG;AACL,CAAC,GAAG,eAAe;ACAnB,MAAM,WAAgC,CAAC,EAAE,MAAM,aAAa;AAC3D,QAAM,WAAW,YAAA;AACjB,QAAM,gBAAgB,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC;AAEpD,QAAM,gBAAe,iCAAS,mBAAkB,EAAkB,iBAAiB,GAAA;AACnF,QAAM,OAAO,cAAc,aAAa,GAAG,aAAa,eAAe;AAEvE,QAAM,oBAAoB,CAAC,SAAc;AACxC,aAAS,MAAM;AAAA,MACd,OAAO,EAAE,KAAA;AAAA,IAAK,CACd;AAAA,EACF;AAEA,QAAMiF,cAAa,CAAC,SAAiB;;AACpC,YAAO,wCAAM,MAAM,SAAZ,mBAAkB,IAAI,CAAA,OAAK,uBAAG,OAAO,GAAG,kBAAgB,uBAAG,MAAM,GAAG,oBAApE,mBAAoF,KAAK;AAAA,EACjG;AAEA,SACCzJ,kCAAAA,IAAC,eAAY,MACX,UAAA,KAAK,IAAI,CAAC,MAAM,UAAA;;AAChBF,6CAAAA,KAAC,aAAA,EACA,UAAA;AAAA,MAAAE,kCAAAA,IAAC,OAAA,EAAI,WAAU,wBACd,UAAAA,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,WAAU;AAAA,UACV,SAAS,MAAM,kBAAkB,IAAI;AAAA,UACrC,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAC1C,UAAAyJ,YAAW,6BAAM,IAAI,EAAA,CACvB;AAAA,QAAA;AAAA,MAAA,GAEF;AAAA,MACA3J,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,WAAU;AAAA,UACV,SAAS,MAAM,kBAAkB,IAAI;AAAA,UACrC,UAAA;AAAA,YAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAM,uBAC1C,8CAAM,8BAAQ;AAAA,cACd,CAAC,UAAwC,CAAC,MAAM;AAAA,cAC/C,WAAU,GACb;AAAA,aAEC,6BAAM,gBACNA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,UAAS,OAAO,WAC3C,UAAAyJ,YAAW,6BAAM,WAAW,GAC9B;AAAA,YAGDzJ,kCAAAA,IAAC,OAAA,EAAI,WAAU,wBACd,UAAAA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,OAAM,uBAC1B,UAAA,eAAe,IAAI,GACrB,EAAA,CACD;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACD,EAAA,IA9BiB,6BAAM,QAAO,KA+B/B;AAAA,GACA,EAAA,CACF;AAEF;ACpCA,MAAM,gBAAgB,CAAC,QAAQ,UAAU,oBAAoB,cAAc;AAC3E,MAAM,0BAA0B,CAAC,EAAE,OAAO,SAAS,UAAU,GAAG;AAChE,MAAM,6BAA6B;AAYnC,MAAM,QAAQ,CAAC,EAAE,aAA+B;AAC9C,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,qBAAA;AACA,QAAM,WAAW,YAAA;AACjB,QAAMmD,YAAW,YAAA;AACjB,QAAM,EAAE,KAAA,IAAS,QAAA;AACjB,UAAQ,IAAI,iBAAiB,IAAI;AACjC,QAAM,EAAE,QAAA,IAAY,OAAA;AAEpB,QAAM,CAAC,aAAa,cAAc,IAAI,SAA2B;AAAA,IAC/D,MAAM,CAAA;AAAA,IACN,WAAW;AAAA,IACX,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,YAAY;AAAA,IAAA;AAAA,EACd,CACD;AAGD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAuB,MAAM;AACrE,UAAM,WAAW,aAAa,QAAQ,WAAW;AACjD,WAAO,WAAW,KAAK,MAAM,QAAQ,IAAI;AAAA,EAC3C,CAAC;AAED,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiB,EAAE;AAC/C,QAAM,CAAC,oBAAoB,qBAAqB,IAAI;AAAA,IAAiB,MAAA;;AACnE,mEAAgB,OAAhB,mBAAoB,UAAS,UAAU;AAAA;AAAA,EAAA;AAEzC,QAAM,CAAC,aAAa,cAAc,IAAI,SAAS,aAAa;AAC5D,QAAM,CAAC,SAAS,UAAU,IAAI,SAA2B,CAAA,CAAE;AAG3D,QAAM,gBAAgB,QAAQ,MAAMA,UAAS,SAAS,MAAM,GAAG,EAAE,CAAC,GAAG,CAACA,UAAS,QAAQ,CAAC;AAExF,QAAM,gBAAgB,QAAQ,OAAO;AAAA,IACnC,GAAG;AAAA,EAAA,IACD,CAAC,MAAM,CAAC;AAEZ,QAAM,eAAe;AAAA,IAAQ,MAC3B,cAAc,aAAa,KAAK,EAAE,YAAY,IAAI,iBAAiB,GAAA;AAAA,IACnE,CAAC,eAAe,aAAa;AAAA,EAAA;AAG/B,UAAQ,IAAI,mCAAmC,YAAY;AAC3D,QAAM,iBAAiB;AAAA,IAAQ,MAC7B,cAAc,aAAa,GAAG,aAAa,eAAe;AAAA,IAC1D,CAAC,eAAe,aAAa,eAAe;AAAA,EAAA;AAG9C,QAAM,UAAU;AAAA,IAAQ,MACtB,kBAAkB,6BAAM,UAAU,cAAc,aAAa,UAAU;AAAA,IACvE,CAAC,6BAAM,YAAY,aAAa,UAAU;AAAA,EAAA;AAG5C,QAAM,iBAAiB,QAAQ,MAAM;AACnC,UAAM,EAAE,QAAQ,OAAA2E,QAAO,WAAA,IAAe,YAAY;AAClD,UAAM,QAAQA,SAAQ,KAAK,KAAK,aAAaA,MAAK,IAAI;AACtD,UAAM,OAAOA,UAAS,SAAS;AAC/B,WAAO,EAAE,OAAO,MAAM,QAAQ,OAAAA,OAAA;AAAA,EAChC,GAAG,CAAC,YAAY,eAAe,CAAC;AAGhC,QAAM2B,cAAa,YAAY,CAAC,QAAwB;AACtD,WAAO,MACH,IACC,MAAM,OAAO,EACb,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,YAAA,IAAgB,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG,IACT;AAAA,EACN,GAAG,CAAA,CAAE;AAGL,QAAM,uBAAuB,YAAY,CAAC,aAAmC;AAC3E,mBAAe,SAAS,MAAM,CAAC,CAAC;AAAA,EAClC,GAAG,CAAA,CAAE;AAEL,QAAM,wBAAwB,YAAY,CAAC,UAA4B;AACrE,mBAAe,CAAA,UAAS;AAAA,MACtB,GAAG;AAAA,MACH,iBAAiB;AAAA,QACf,GAAG;AAAA,QACH,YAAY,KAAK,gBAAgB;AAAA,MAAA;AAAA,IACnC,EACA;AAAA,EACJ,GAAG,CAAA,CAAE;AAEL,QAAM,eAAe,YAAY,CAAC,gBAAwB;AACxD,cAAU,WAAW;AAAA,EACvB,GAAG,CAAA,CAAE;AAEL,QAAM,iBAAiB,YAAY,CAAC,YAAiB;AACnD,aAAS,gBAAgB;AAAA,MACvB,OAAO;AAAA,IAAA,CACR;AAAA,EACH,GAAG,CAAC,UAAU,cAAc,CAAC;AAG7B,QAAMzD,WAAU,QAAQ,MAAM;AAAA,IAC5B;AAAA,MACE,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,CAAC,EAAE,UAAI;;AACX,iDAAK,aAAL,mBAAe,QACbhG,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,eAAe,IAAI,QAAQ;AAAA,YAC1C,OAAO,EAAE,QAAQ,UAAA;AAAA,YAEhB,UAAAyJ,YAAW,IAAI,SAAS,IAAI;AAAA,UAAA;AAAA,QAAA,IAG/B;AAAA;AAAA,IAAA;AAAA,IAGN;AAAA,MACE,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,IAER;AAAA,MACE,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM;AAAA,MACN,MAAM,CAAC,EAAE,IAAA,MAAI;;AACX,iDAAK,aAAL,mBAAe,UACbzJ,sCAAC,OAAA,EAEG,UAAA,IAAI,SAAS,OAAO;AAAA,UAClB,CAAC,UAAwC,CAAC,MAAM;AAAA,QAAA,EAChD,QAEN,IAEA;AAAA;AAAA,IAAA;AAAA,IAGN;AAAA,MACE,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,CAAC,EAAE,UAAe;;AACtB,cAAM2I,YAAS,sCAAK,aAAL,mBAAe,WAAf,mBAAuB;AAAA,UACpC,CAAC,UACC,EAAC,+BAAO,qBAAmB,+BAAO;AAAA,cACjC,CAAA;AAEL,YAAI,CAACA,QAAO,OAAQ,QAAO;AAE3B,eACE7I,kCAAAA,KAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,KAAK,UAAU,QAAQ,GAAG,OAC9E,UAAA;AAAA,UAAA6I,QAAO,MAAM,GAAG,0BAA0B,EAAE,IAAI,CAAC,MAAW;;AAC3D3I,qDAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,WAAU;AAAA,gBAET,YAAAoC,MAAA,6BAAM,UAAN,gBAAAA,IAAa,SAAS,QAAO,EAAE,KAAK,KAAK,IAAI,KAAK;AAAA,cAAA;AAAA,cAL9C,GAAG,KAAK,KAAK,IAAI,KAAK;AAAA,YAAA;AAAA,WAO9B;AAAA,UACAuG,QAAO,SAAS,8BACf7I,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,WAAU;AAAA,cACX,UAAA;AAAA,gBAAA;AAAA,gBACG6I,QAAO,SAAS;AAAA,gBAA2B;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAC/C,GAEJ;AAAA,MAEJ;AAAA,IAAA;AAAA,EACF,GACC,CAACc,aAAY,gBAAgB,CAAC,CAAC;AAGlC,QAAM,cAAc,QAAQ,MAAM;AAAA,IAChC;AAAA,MACE,MAAM;AAAA,MACN,KAAK;AAAA,MACL,MAAM,CAAA;AAAA,IAAC;AAAA,EACT,GACC,EAAE;AAGL,QAAM,aAAa,YAAY,YAAW;;AACxC,YAAQ,IAAI,6BAA6B,YAAY;AACrD,QAAI,CAAC,aAAa,cAAc,EAAC,6BAAM,YAAY;AAEnD,UAAM,OAAO,mCAAU;AACvB,UAAM,SAAS;AAAA,MACb,MAAM,eAAe;AAAA,MACrB,OAAO,eAAe;AAAA,MACtB;AAAA,MACA;AAAA,MACA,GAAI,QAAQ,EAAE,OAAO,GAAG,KAAK,EAAE,IAAI,KAAK,OAAO,KAAK,CAAC,GAAA;AAAA,MACrD,GAAG,SAAA;AAAA,MACH,gBAAc,cAAA,EAAW,YAAY,MAAvB,mBAA0B,eAAc;AAAA,IAAA;AAExD,YAAQ,IAAI,wBAAwB,MAAM;AAE1C,mBAAe,WAAS,EAAE,GAAG,MAAM,WAAW,OAAO;AACrD,UAAM,WAAW,MAAM,iBAAiB;AAAA,MACtC,GAAG;AAAA,MACH,GAAG;AAAA,IAAA,CACJ;AACD,YAAQ,IAAI,oBAAoB,QAAQ;AACxC,mBAAe;AAAA,MACb,OAAM,0CAAU,SAAV,mBAAgB;AAAA,MACtB,WAAW;AAAA,MACX,iBAAiB;AAAA,QACf,GAAG,YAAY;AAAA,QACf,IAAG,0CAAU,SAAV,mBAAgB;AAAA,MAAA;AAAA,IACrB,CACD;AAAA,EAGH,GAAG;AAAA,IAAC;AAAA,IACF,eAAe;AAAA,IACf,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,6BAAM;AAAA,EAAA,CACP;AAED,YAAU,MAAM;AACd,eAAA;AAAA,EACF,GAAG;AAAA,IACD;AAAA,EAAA,CACD;AAGD,YAAU,MAAM;AACd,SAAI,+CAAe,WAAU,cAAc,CAAC,EAAE,UAAU,oBAAoB;AAC1E,4BAAsB,cAAc,CAAC,EAAE,KAAK;AAAA,IAC9C;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAGlB,YAAU,MAAM;AACd,QAAI,+CAAe,QAAQ;AACzB,YAAM,YAAY,WAAW,MAAM;AACjC,qBAAa,QAAQ,aAAa,KAAK,UAAU,aAAa,CAAC;AAAA,MACjE,GAAG,GAAG;AAEN,aAAO,MAAM,aAAa,SAAS;AAAA,IACrC;AAAA,EACF,GAAG,CAAC,aAAa,CAAC;AAElB,SACE3J,kCAAAA,KAAC,WAAA,EAAQ,WAAU,SACjB,UAAA;AAAA,IAAAE,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,WAAW,CAAC,QAAQ;AAClB,gCAAsB,GAAG;AAAA,QAC3B;AAAA,QACA;AAAA,QACA,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAGb,uBAAuB,UAAU,SAChCA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,kBAAkB;AAAA,QAClB,aAAa,CAAC,kBAAkB,GAAG,WAAW;AAAA,QAC9C;AAAA,QACA,MAAM,YAAY;AAAA,QAClB,SAAAgG;AAAA,QACA,YAAY;AAAA,QACZ,iBAAiB,EAAE,QAAQ,GAAG,OAAO,GAAA;AAAA,QACrC,eAAe;AAAA,QACf,QAAQ,EAAE,SAAS,WAAW,GAAC;AAAA,QAC/B,iBAAiB;AAAA,QACjB,4BAA0B;AAAA,QAC1B,iBAAiB,MAAM;AAAA,QAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAI5B,uBAAuB,UAAU,QAChChG,sCAAC,YAAS,MAAM,YAAY,MAAM,QAAgB;AAAA,IAGpDA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU,MAAM;AAAA,QAAE;AAAA,QAClB,aAAa;AAAA,QACb,gBAAgB,MAAM;AAAA,QAAE;AAAA,QACxB,OAAO,eAAe;AAAA,QACtB,iBAAiB;AAAA,UACf,QAAQ,YAAY,gBAAgB;AAAA,UACpC,OAAO,YAAY,gBAAgB;AAAA,QAAA;AAAA,QAErC;AAAA,QACA,aAAa,CAAA;AAAA,QACb,UAAS;AAAA,QACT,uBAAuB,MAAM;AAAA,QAAE;AAAA,QAC/B,kBAAkB,MAAM;AAAA,QAAE;AAAA,QAC1B,aAAa;AAAA,QACb,uBAAuB;AAAA,MAAA;AAAA,IAAA;AAAA,EACzB,GACF;AAEJ;ACzVA,MAAA,2BAAe,cAA4Bc,kCAAAA,IAAK,QAAQ;AAAA,EACtD,GAAG;AACL,CAAC,GAAG,sBAAsB;ACF1B,MAAA,eAAe,cAA4BA,kCAAAA,IAAK,QAAQ;AAAA,EACtD,GAAG;AACL,CAAC,GAAG,UAAU;ACFd,MAAA,4BAAe,cAA4BA,kCAAAA,IAAK,QAAQ;AAAA,EACtD,GAAG;AACL,CAAC,GAAG,uBAAuB;ACTpB,SAAS,wBAAwB,MAAM;AAC5C,SAAO,qBAAqB,eAAe,IAAI;AACjD;AACA,MAAM,kBAAkB,uBAAuB,eAAe,CAAC,QAAQ,WAAW,YAAY,iBAAiB,gBAAgB,kBAAkB,aAAa,YAAY,CAAC;ACD3K,MAAM,YAAY,CAAC,eAAe,SAAS,QAAQ,iBAAiB,qBAAqB,cAAc,QAAQ,WAAW;AAgB1H,MAAM,oBAAoB,gBAAc;AACtC,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAM;AACJ,QAAM,QAAQ;AAAA,IACZ,MAAM,CAAC,QAAQ,iBAAiB,iBAAiB,QAAQ,WAAW,KAAK,CAAC,IAAI,OAAO,WAAW,IAAI,CAAC,EAAE;AAAA,EAC3G;AACE,QAAM,kBAAkB,eAAe,OAAO,yBAAyB,OAAO;AAC9E,SAAOC,WAAS,CAAA,GAAI,SAAS,eAAe;AAC9C;AACA,MAAM,eAAe,OAAO,YAAY;AAAA,EACtC,mBAAmB,UAAQ,sBAAsB,IAAI,KAAK,SAAS;AAAA,EACnE,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB,CAAC,OAAOE,YAAW;AACpC,UAAM;AAAA,MACJ;AAAA,IACN,IAAQ;AACJ,WAAO,CAACA,QAAO,MAAM,WAAW,iBAAiBA,QAAO,eAAeA,QAAO,OAAO,WAAW,WAAW,IAAI,CAAC,EAAE,GAAG,WAAW,UAAU,aAAaA,QAAO,QAAQ,WAAW,WAAW,KAAK,CAAC,EAAE,CAAC;AAAA,EACvM;AACF,CAAC,EAAE,CAAC;AAAA,EACF;AAAA,EACA;AACF,MAAMF,WAAS;AAAA,EACb,QAAQ,MAAM,QAAQ,OAAO,QAAQ,KAAK;AAC5C,GAAG,CAAC,WAAW,iBAAiB;AAAA,EAC9B,WAAW;AAAA,IACT,iBAAiB,MAAM,OAAO,QAAQ,WAAW,UAAU,YAAY,MAAM,KAAK,QAAQ,OAAO,gBAAgB,MAAM,KAAK,QAAQ,WAAW,KAAK,EAAE,WAAW,MAAM,MAAM,KAAK,QAAQ,OAAO,YAAY,MAAM2I,QAAM,WAAW,UAAU,YAAY,MAAM,QAAQ,OAAO,SAAS,MAAM,QAAQ,WAAW,KAAK,EAAE,MAAM,MAAM,QAAQ,OAAO,YAAY;AAAA;AAAA,IAE/V,wBAAwB;AAAA,MACtB,iBAAiB;AAAA,IACvB;AAAA,EACA;AACA,GAAG,WAAW,UAAU,aAAa;AAAA,EACnC,CAAC,KAAK,gBAAgB,OAAO,OAAO,gBAAgB,aAAa,EAAE,GAAG;AAAA,IACpE,QAAQ,MAAM,QAAQ,OAAO,QAAQ,WAAW,KAAK,EAAE;AAAA,EAC3D;AAAA,EACE,CAAC,KAAK,gBAAgB,QAAQ,EAAE,GAAG;AAAA,IACjC,QAAQ,MAAM,QAAQ,OAAO,QAAQ,OAAO;AAAA,EAChD;AACA,CAAC,CAAC;AACF,MAAM,qBAAkC5I,kCAAAA,IAAK,cAAc,EAAE;AAC7D,MAAM,cAA2BA,kCAAAA,IAAK,0BAA0B,EAAE;AAClE,MAAM,2BAAwCA,kCAAAA,IAAK,2BAA2B,EAAE;AAChF,MAAM,WAAwB,sBAAM,WAAW,SAASgC,UAAS,SAAS,KAAK;AAC7E,MAAI,sBAAsB;AAC1B,QAAM,QAAQ,gBAAgB;AAAA,IAC5B,OAAO;AAAA,IACP,MAAM;AAAA,EACV,CAAG;AACD,QAAM;AAAA,IACF,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,MAAM,WAAW;AAAA,IACjB,gBAAgB;AAAA,IAChB,mBAAmB,wBAAwB;AAAA,IAC3C;AAAA,IACA,OAAO;AAAA,IACP;AAAA,EACN,IAAQ,OACJ,QAAQ,8BAA8B,OAAO,SAAS;AACxD,QAAM,OAAO,gBAAgB,wBAAwB;AACrD,QAAM,oBAAoB,gBAAgB,wBAAwB;AAClE,QAAM,aAAa/B,WAAS,CAAA,GAAI,OAAO;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAG;AACD,QAAM,UAAU,kBAAkB,UAAU;AAC5C,SAAoBD,kCAAAA,IAAK,cAAcC,WAAS;AAAA,IAC9C,MAAM;AAAA,IACN,YAAYA,WAAS;AAAA,MACnB,sBAAsB;AAAA,IAC5B,GAAO,UAAU;AAAA,IACb,MAAmB,sBAAM,aAAa,MAAM;AAAA,MAC1C,WAAW,uBAAuB,KAAK,MAAM,aAAa,OAAO,uBAAuB;AAAA,IAC9F,CAAK;AAAA,IACD,aAA0B,sBAAM,aAAa,mBAAmB;AAAA,MAC9D,WAAW,wBAAwB,kBAAkB,MAAM,aAAa,OAAO,wBAAwB;AAAA,IAC7G,CAAK;AAAA,IACD;AAAA,IACA;AAAA,IACA,WAAW,KAAK,QAAQ,MAAM,SAAS;AAAA,EAC3C,GAAK,OAAO;AAAA,IACR;AAAA,EACJ,CAAG,CAAC;AACJ,CAAC;AACD,QAAQ,IAAI,aAAa,eAAe,SAAS,YAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlF,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKnB,aAAa,UAAU;AAAA;AAAA;AAAA;AAAA,EAIvB,SAAS,UAAU;AAAA;AAAA;AAAA;AAAA,EAInB,WAAW,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOrB,OAAO,UAAgD,UAAU,CAAC,UAAU,MAAM,CAAC,WAAW,WAAW,aAAa,SAAS,QAAQ,WAAW,SAAS,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,EAIhL,gBAAgB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAK1B,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzB,MAAM,UAAU;AAAA;AAAA;AAAA;AAAA,EAIhB,IAAI,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQd,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKzB,mBAAmB,UAAU;AAAA;AAAA;AAAA;AAAA,EAI7B,YAAY,UAAU;AAAA;AAAA;AAAA;AAAA,EAItB,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOV,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,UAAU,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMpB,MAAM,UAAgD,UAAU,CAAC,UAAU,MAAM,CAAC,UAAU,OAAO,CAAC,GAAG,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA,EAIxH,IAAI,UAAU,UAAU,CAAC,UAAU,QAAQ,UAAU,UAAU,CAAC,UAAU,MAAM,UAAU,QAAQ,UAAU,IAAI,CAAC,CAAC,GAAG,UAAU,MAAM,UAAU,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtJ,OAAO,UAAU;AACnB,IAAI;ACrLG,SAAS,WAAW;AAAA,EACvB;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,EACb,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA,eAAe,CAAA;AACnB,GAAc;;AACV,QAAM,CAAC,MAAM,OAAO,IAAI,SAAkB,KAAK;AAC/C,QAAM,EAAC,EAAA,IAAG,eAAA;AAEV,YAAU,MAAM;AACZ,QAAI,aAAa,eAAe,OAAO;AACnC,cAAQ,IAAI;AAAA,IAChB;AACA,QAAI,CAAC,aAAa,gBAAgB,QAAQ,GAAG;AACzC,cAAQ,KAAK;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,cAAc,OAAO,SAAS,CAAC;AAEnC,QAAM,eAAe,MAAM;AACvB,YAAQ,CAAA,aAAY,CAAC,QAAQ;AAAA,EACjC;AAEA,WAAS4I,gBAAe,KAAU,MAAW;AACzC,SAAI,6BAAM,SAAQ,IAAI;AAClB,aAAO;AAAA,IACX;AAEA,UAAM,kBAAe,6BAAM,KAAK,MAAM,KAAK,OAAO,CAAC,KAAU,QAAc,OAAO,IAAI,GAAG,MAAM,SAAY,IAAI,GAAG,IAAI,QAAY,WAAS,6BAAM,KAAK,MAAM,KAAK,OAAO,CAAC,KAAU,QAAc,OAAO,IAAI,GAAG,MAAM,SAAY,IAAI,GAAG,IAAI,QAAY,SAAQ,MAAM,MAAM;AAC5Q,WAAO,mBAAmB;AAAA,MACtB,OAAO;AAAA,MACP,GAAG;AAAA,IAAA,CACN;AAAA,EACL;AAEA,QAAM,YAAY,iBAAiB,KAAK,CAAA,SAAQ,KAAK,WAAW,QAAQ,UAAU,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,QAAQ,CAAC,CAAC,CAAC;AAExH,SACI7J,kCAAAA,KAAAC,4BAAA,EACI,UAAA;AAAA,IAAAD,uCAAC,YAAS,IAAI;AAAA,MAAE,QAAQ;AAAA,MAClB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,yBAAyB;AAAA;AAAA,MAAA;AAAA;AAAA,MAI3B,mBAAmB;AAAA,QACf,cAAc;AAAA,QACd,mBAAmB;AAAA,QACnB,WAAW;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IACf,GAKC,UAAA;AAAA,QAAA,kBAAa,KAAK,MAAlB,mBAAqB,mBAClBE,kCAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAU;AAAA,UACV,IAAI;AAAA,YACA,aAAa;AAAA,YACb,UAAU;AAAA,YACV,OAAO;AAAA,YACP,UAAU;AAAA,YACV,UAAU;AAAA,YACV,UAAU;AAAA,UAAA;AAAA,UAGd,UAAAA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACG,SAAS;AAAA,cACT,UAAU,CAAA,MAAK,iBAAiB,SAAS,EAAE,OAAO,OAAO;AAAA,cACzD,SAAS,CAAA,MAAK,EAAE,gBAAA;AAAA,YAAgB;AAAA,UAAA;AAAA,QACpC;AAAA,MAAA;AAAA,MAIP,aAAa,KAAK,EAAE,QAAQ,IAAI,CAAC,QAAa,UAAkB;AAC7D,YAAI,OAAO,aAAc,QAAO;AAEhC,cAAM,YAAY,aAAa,KAAK,EAAE,QAAQ,MAAM,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAW,CAAC,EAAE,YAAY;AACpG,cAAM,eAAe,cAAc,KAC7B,aAAa,KAAK,EAAE,QAAQ,MAAM,QAAQ,CAAC,EAAE,SAAS,IACtD,YAAY;AAClB,cAAM,UAAU,OAAO,aAAa,eAAe;AAGnD,YAAI,aAAa;AACjB,cAAM,eAAe;AAErB,iBAAS,IAAI,OAAO,IAAI,QAAQ,WAAW,IAAI,QAAQ,QAAQ,KAAK;AAChE,gBAAM,YAAY,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,IAAI;AAChG,wBAAc,aAAa;AAAA,QAC/B;AACA,cAAM,YAAS,iCAAQ,YAAW,iCAAQ,SAAS,QAAQ;AAE3D,eACIA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEG,WAAU;AAAA,YACV;AAAA,YACA,IAAI;AAAA,cACA,aAAa,UAAU,IAAI,QAAQ;AAAA,cACnC,UAAU;AAAA,cACV,OAAO,GAAG,UAAU;AAAA,cACpB,UAAU,GAAG,UAAU;AAAA,cACvB,UAAU,GAAG,UAAU;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,YAAA;AAAA,YAGb,UAAA,aAAY,iCAAQ,aACjBF,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SAAS;AAAA,gBACT,IAAI;AAAA,kBACA,aAAc,QAAQ,SAAS,UAAU,IAAK,QAAQ,IAAI;AAAA,kBAC1D,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,iBAAgB,iCAAQ,YAAW,iCAAQ,WAAW;AAAA,kBACtD,OAAO;AAAA,kBACP,QAAQ;AAAA,kBACR,UAAU;AAAA,gBAAA;AAAA,gBAGd,UAAA;AAAA,kBAAAE,kCAAAA,IAAC,YAAA,EAAW,MAAK,SAAQ,IAAI,EAAC,GAAE,EAAA,GAC3B,UAAA,OAAOA,kCAAAA,IAAC4J,aAAA,EAAgB,IAAI,EAAE,UAAU,SAAO,CAAG,IAAK5J,kCAAAA,IAAC6J,WAAA,EAAkB,IAAI,EAAE,UAAU,OAAA,EAAO,CAAG,EAAA,CACzG;AAAA,mBACC,iCAAQ,UAAS,OAAO,OAAOF,gBAAe,SAAS,MAAM,GAAG,SAAS,IAAI,IAC1E3J,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACG,MAAK;AAAA,sBACL,QAAO;AAAA,sBACP,OAAM;AAAA,sBACN,IAAI;AAAA,wBACA,UAAU;AAAA,wBACV,cAAc;AAAA,wBACd,YAAY;AAAA,sBAAA;AAAA,sBAGf,UAAA2J,gBAAe,SAAS,MAAM;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACnC;AAAA,cAAA;AAAA,YAAA,IAIR,YAAY3J,kCAAAA,IAAC,KAAA,EAAI,IAAI;AAAA,cACjB,aAAc,QAAQ,SAAS,UAAU,IAAK,QAAQ,IAAI;AAAA,cAC1D,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,iBAAgB,iCAAQ,YAAW,iCAAQ,WAAW;AAAA,cACtD,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,UAAU;AAAA,YAAA,GAGT,WAAA,iCAAQ,UAAS,OAAO,OAAO2J,gBAAe,SAAS,MAAM,GAAG,SAAS,IAAI,IAC1E3J,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAK;AAAA,gBACL,QAAO;AAAA,gBACP,OAAM;AAAA,gBACN,IAAI;AAAA,kBACA,UAAU;AAAA,kBACV,cAAc;AAAA,kBACd,YAAY;AAAA,gBAAA;AAAA,gBAGf,UAAA2J,gBAAe,SAAS,MAAM;AAAA,cAAA;AAAA,YAAA,EACnC,CAER;AAAA,UAAA;AAAA,UArEC;AAAA,QAAA;AAAA,MAyEjB,CAAC;AAAA,IAAA,GACL;AAAA,IAEC,MAAM,QAAQ,SAAQ,kBAAa,QAAQ,CAAC,MAAtB,mBAAyB,MAAM,CAAC,KACnD3J,kCAAAA,IAAC,UAAA,EAAS,IAAI,CAAA,GACV,UAAAA,kCAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,IAAI;AAAA;AAAA,UAEA,QAAQ;AAAA,UACR,cAAc;AAAA,QAAA;AAAA,QAElB,OAAO,EAAE,SAAS,EAAA;AAAA,QAClB,SAAS,aAAa,KAAK,EAAE,QAAQ,OAAO,CAAC,MAAW,CAAC,EAAE,YAAY,EAAE,UAAU,iBAAiB,IAAI;AAAA,QAExG,iDAAC,UAAA,EAAS,IAAI,MAAM,SAAQ,QAAO,eAAa,MAC3C,UAAA;AAAA,WAAA,cAAQ,kBAAa,QAAQ,CAAC,MAAtB,mBAAyB,MAAM,MAAvC,mBAA0C,IAAI,CAAC,UAAe,KAAa,QACxEA,kCAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEG,SAAS;AAAA,cACT,OAAO,QAAQ;AAAA,cACf;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,SAAS,CAAC,GAAG,SAAS,GAAG;AAAA,cACzB;AAAA,cACA;AAAA,cACA,WAAW;AAAA,cACX,WAAW;AAAA,cACX;AAAA,cACA;AAAA,cACA;AAAA,YAAA;AAAA,YAjBK,SAAS,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE,KAAK,GAAG;AAAA,UAAA;AAAA,WAqBrD,mCAAS,UAAS,OAAO,KAAK,mCAAS,KAAK,EAAE,SAAS,KAAK,uDACxD,UAAA,EAAS,IAAI,EAAE,mBAAiB,kDAAe,OAAf,mBAAmB,YAAW,aAC1D,UAAA;AAAA,YAAA,kBACGA,kCAAAA,IAAC,aAAU,IAAI;AAAA,cACX,OAAO;AAAA,cACP,UAAU;AAAA,cACV,UAAU;AAAA,YAAA,GACX;AAAA,YAGN,aAAa,IAAI,CAAC,QAAa,UAAkB;;AAC9C,kBAAI,OAAO,aAAc,QAAO;AAEhC,oBAAM,eAAe,aAAa,MAAM,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAW,CAAC,EAAE,gBAAgB,MAAM,MAAM,MAAM,OACxGoC,MAAA,aAAa,MAAM,QAAQ,CAAC,MAA5B,gBAAAA,IAA+B,UAAS,IACxC,aAAa,MAAM,QAAQ,CAAC,EAAE,UAAU,CAAC,MAAW,CAAC,EAAE,gBAAgB,MAAM,MAAM,IAAI;AAC7F,oBAAM,UAAU,OAAO,aAAa,eAAe;AAGnD,kBAAI,aAAa;AACjB,uBAAS,IAAI,OAAO,IAAI,QAAQ,WAAW,IAAI,QAAQ,QAAQ,KAAK;AAChE,8BAAc,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK;AAAA,cACvD;AAEA,qBACIpC,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEG,WAAU;AAAA,kBACV;AAAA,kBACA,IAAI;AAAA,oBACA,aAAa,UAAU,IAAI,GAAG,QAAQ,EAAE,OAAO;AAAA,oBAC/C,OAAO,GAAG,UAAU;AAAA,oBACpB,UAAU,GAAG,UAAU;AAAA,oBACvB,UAAU,GAAG,UAAU;AAAA,kBAAA;AAAA,kBAG3B,gDAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,iBAAgB,iCAAQ,aAAY,SAAS,OAAO,UACjG,WAAA,iCAAQ,UAAS,iCAAQ,OAAO2J,gBAAe,SAAS,MAAM,GAAG,WAC9D3J,kCAAAA,IAAC,cAAW,MAAK,MAAK,QAAO,QAAO,OAAM,sBACrC,UAAA2J,gBAAe,mCAAS,OAAO,MAAM,GAC1C,EAAA,CAER;AAAA,gBAAA;AAAA,gBAhBK;AAAA,cAAA;AAAA,YAmBjB,CAAC;AAAA,UAAA,EAAA,CACL;AAAA,QAAA,EAAA,CAER;AAAA,MAAA;AAAA,IAAA,EACJ,CACJ;AAAA,EAAA,GAER;AAER;ACnSO,MAAM,6BAAgD;AAAA,EAC3D,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,YAAY;AACd;AAEA,IAAI,gBAAiD;AAErD,SAAS,mBAAoD;AAC3D,MAAI,eAAe;AACjB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,oBAAgB,OAAO,WAAW,IAAI;AACtC,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,KAAK,oEAAoE,KAAK;AACtF,WAAO;AAAA,EACT;AACF;AAEA,SAAS,uBAAuB,MAAc,QAAmC;AAC/E,QAAM,UAAU,iBAAA;AAEhB,MAAI,CAAC,SAAS;AACZ,YAAQ,KAAK,2CAA2C;AACxD,WAAO;AAAA,EACT;AAEA,UAAQ,OAAO,GAAG,OAAO,UAAU,IAAI,OAAO,QAAQ,IAAI,OAAO,UAAU;AAE3E,QAAM,UAAU,QAAQ,YAAY,IAAI;AACxC,SAAO,QAAQ;AACjB;AAEA,SAAS,oBAAoB,MAAc,QAAmC;AAC5E,MAAI;AACF,UAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,YAAQ,MAAM,WAAW;AACzB,YAAQ,MAAM,aAAa;AAC3B,YAAQ,MAAM,aAAa;AAC3B,YAAQ,MAAM,WAAW,OAAO;AAChC,YAAQ,MAAM,aAAa,OAAO;AAClC,YAAQ,MAAM,aAAa,OAAO,OAAO,UAAU;AACnD,YAAQ,cAAc;AAEtB,aAAS,KAAK,YAAY,OAAO;AACjC,UAAM,QAAQ,QAAQ;AACtB,aAAS,KAAK,YAAY,OAAO;AAEjC,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,KAAK,2BAA2B,KAAK;AAC7C,WAAO,KAAK,SAAS;AAAA,EACvB;AACF;AAEO,SAAS,iBACd,MACA,SAA4B,4BACpB;AACR,MAAI,CAAC,QAAQ,KAAK,WAAW,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,OAAO,IAAI;AAE3B,QAAM,UAAU,iBAAA;AAChB,MAAI,SAAS;AACX,WAAO,uBAAuB,SAAS,MAAM;AAAA,EAC/C;AAEA,SAAO,oBAAoB,SAAS,MAAM;AAC5C;AAqBO,SAAS,0BAA0B,OAAY,MAAuB;AAC3E,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,UAAU,iBAAiB,MAAM;AAC5C,QAAI;AACF,aAAO,IAAI,KAAK,KAAK,EAAE,mBAAA;AAAA,IACzB,QAAQ;AACN,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,SAAS,YAAY,OAAO,UAAU,UAAU;AAClD,WAAO,OAAO,KAAK;AAAA,EACrB;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,QAAI;AACF,aAAO,KAAK,UAAU,KAAK;AAAA,IAC7B,QAAQ;AACN,aAAO,OAAO,KAAK;AAAA,IACrB;AAAA,EACF;AAEA,SAAO,OAAO,KAAK;AACrB;AAgCO,SAAS,sBACd,SACA,mBACA,oBAAuC,4BACvC,cAAgC,EAAE,KAAK,IAAI,SAAS,GAAA,GACpD,GACwB;AAExB,QAAM,mBAA2C,CAAA;AAEjD,UAAQ,QAAQ,CAAC,WAAW;AAC1B,UAAM,QAAQ,EAAE,OAAO,KAAK;AAC5B,QAAI,OAAO,OAAO;AAChB,YAAM,eAAe,OAAO,OAAO,UAAU,WACzC,SAAS,OAAO,MAAM,QAAQ,UAAU,EAAE,GAAG,EAAE,IAC/C,OAAO;AAEX,uBAAiB,KAAK,IAAI;AAC1B;AAAA,IACF;AAEA,UAAM,aAAa;AACnB,QAAI,cAAc,iBAAiB,YAAY,iBAAiB;AAEhE,QAAI,OAAO,eAAe;AACxB,qBAAe;AAAA,IACjB;AAEA,QAAI,qBAAqB;AACzB,UAAM,UAAU,kBAAkB,KAAK,KAAK,CAAA;AAE5C,YAAQ,QAAQ,CAAC,YAAY;AAC3B,YAAM,eAAe,iBAAiB,SAAS,iBAAiB;AAChE,2BAAqB,KAAK,IAAI,oBAAoB,YAAY;AAAA,IAChE,CAAC;AAID,QAAI,kBAAkB,KAAK,IAAI,cAAc,MAAM,cAAc,KAAK,aAAa,kBAAkB;AAErG,UAAM,iBAAiB,YAAY;AAEnC,uBAAmB;AAEnB,QAAI,qBAAqB,IAAI;AAC3B,wBAAkB,KAAK,IAAI,YAAY,KAAK,eAAe;AAAA,IAC7D,OAAO;AACL,wBAAkB,KAAK,IAAI,IAAI,eAAe;AAAA,IAChD;AAEA,QAAI,YAAY,KAAK;AACnB,wBAAkB,KAAK,IAAI,YAAY,KAAK,eAAe;AAAA,IAC7D;AAEA,qBAAiB,KAAK,IAAI,KAAK,MAAM,eAAe,IAAI,MAAM,KAAK,MAAM,eAAe,IAAI;AAAA,EAC9F,CAAC;AAED,SAAO;AACT;AAEA,MAAM,cAAc;AAAA,EAClB,UAAU;AAAA,IACR,QAAQ;AAAA,EAAA;AAAA,EAEV,QAAQ;AAAA,IACN,QAAQ;AAAA,EAAA;AAAA,EAEV,UAAU;AAAA,IACR,QAAQ,CAAC,UAAe;AAAA,EAAA;AAAA,EAE1B,WAAU;AAAA,IACR,QAAO,CAAC,UAAY,mBAAmB,KAAK;AAAA,EAAA;AAEhD;AAEA,SAAS,eAAe,KAAU,MAAgB;;AAChD,QAAM,QAAO,6BAAM,SAAQ;AAC3B,MAAI,EAAC,6BAAM,UAAQ,6BAAM,UAAS,IAAI;AACpC,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,6BAAM,KAAK,MAAM,KAAK;AAAA,IAClC,CAAC,KAAU,QAAc,OAAO,IAAI,GAAG,MAAM,SAAY,IAAI,GAAG,IAAI;AAAA,IACpE;AAAA;AAGF,MAAI,UAAU,KAAK,UAAU,KAAK;AAChC,WAAO;AAAA,EACT;AAEA,SAAO,UAAU,UAAY,iBAAY,IAAI,MAAhB,mBAAmB,OAAO,SAAS;AAClE;AACO,SAAS,iBAAiB,QAA0D;AACzF,QAAM,EAAE,SAAS,SAAS,MAAM,cAAc,MAAM;AACpD,QAAM,UAA8C,CAAA;AAEpD,UAAQ,QAAQ,CAAC,WAAW;AAC1B,YAAQ,EAAE,OAAO,KAAK,CAAC,IAAI,CAAA;AAAA,EAC7B,CAAC;AAED,MAAI,CAAC,QAAQ,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AACtD,WAAO;AAAA,EACT;AAEA,MAAI,eAAe;AACnB,QAAM,aAAa;AAEnB,WAAS,WAAW,MAAa,QAAgB,GAA0B;;AACzE,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,gBAAgB,YAAY;AACtD;AAAA,IACF;AAEA,UAAM,eAAe,gBAAgB,aAAa,KAAK,KAAK,aAAa,KAAK,EAAE,UAC5E,aAAa,KAAK,EAAE,UACpB;AAEJ,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,eAAe,YAAY,KAAK;AACjE,YAAM,MAAM,KAAK,CAAC;AAGlB,cAAQ,QAAQ,CAAC,WAAgB;AAC/B,cAAM,cAAc,EAAE,OAAO,KAAK;AAClC,YAAI,CAAC,QAAQ,WAAW,GAAG;AACzB;AAAA,QACF;AAGA,cAAM,uBAAuB,aAAa;AAAA,UAAK,CAAC,OAC9C,EAAE,GAAG,KAAK,MAAM;AAAA,QAAA;AAGlB,YAAI;AAEJ,YAAI,sBAAsB;AAExB,cAAI,OAAO,UAAU,OAAO,OAAO,WAAW,YAAY;AACxD,gBAAI;AACF,oBAAM,WAAW,OAAO,OAAO,eAAe,KAAK,MAAM,GAAG,KAAK,IAAI;AAErE,kBAAI,OAAO,aAAa,UAAU;AAChC,0BAAU;AAAA,cACZ,WAAW,OAAO,aAAa,UAAU;AACvC,0BAAU,OAAO,QAAQ;AAAA,cAC3B,WAAW,YAAY,OAAO,aAAa,YAAY,WAAW,UAAU;AAC1E,sBAAM,QAAS,SAAiB;AAChC,oBAAI,SAAS,MAAM,UAAU;AAC3B,4BAAU,OAAO,MAAM,QAAQ;AAAA,gBACjC,OAAO;AACL,4BAAU,OAAO,QAAQ;AAAA,gBAC3B;AAAA,cACF,OAAO;AACL,0BAAU,OAAO,QAAQ;AAAA,cAC3B;AAAA,YACF,SAAS,OAAO;AACd,wBAAU,0BAA0B,eAAe,KAAK,MAAM,GAAG,OAAO,IAAI;AAAA,YAC9E;AAAA,UACF,OAAO;AACL,kBAAM,QAAQ,eAAe,KAAK,MAAM;AACxC,sBAAU,0BAA0B,OAAO,OAAO,IAAI;AAAA,UACxD;AAAA,QACF,OAAO;AAEL,oBAAU;AAAA,QACZ;AAEA,gBAAQ,WAAW,EAAE,KAAK,OAAO;AAAA,MACnC,CAAC;AAED;AAGA,UAAI,gBAAgB,aAAa,QAAQ,CAAC,GAAG;AAC3C,cAAM,cAAa,kBAAa,QAAQ,CAAC,MAAtB,mBAAyB;AAC5C,YAAI,cAAc,IAAI,UAAU,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,GAAG;AACnE,qBAAW,IAAI,UAAU,GAAG,QAAQ,CAAM;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,aAAW,MAAM,CAAC;AAElB,SAAO;AACT;AAEO,SAAS,yBAAiC;AAC/C,SAAO;AACT;AC7RO,SAAS,YAAY;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe,CAAA;AAAA,EACf;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA,eAAe;AAAA,EACf,eAAe;AAAA,EACf;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AACb,GAAsB;;AAMrB,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,IAAI;AACzC,QAAM,CAAC,UAAU,WAAW,IAAI,SAAc,IAAI;AAClD,QAAM,CAAC,cAAc,eAAe,IAAI,SAAc,IAAI;AAC1D,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAc,CAAA,CAAE;AAC1D,QAAM,EAAE,EAAA,IAAM,eAAA;AACd,QAAM,CAAC,kBAAkB,mBAAmB,IAAI,SAAqB,CAAA,CAAE;AACvE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAoC,CAAA,CAAE;AAC9E,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAwB,IAAI;AACxE,QAAM,eAAe,OAAe,CAAC;AACrC,QAAM,mBAAmB,OAAe,CAAC;AACzC,QAAM,aAAa,OAA8C,EAAE;AACnE,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AACxD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,WAASA,gBAAe,KAAU,MAAW;;AAC5C,SAAI,6BAAM,SAAQ,IAAI;AACrB,aAAO;AAAA,IACR;AAEA,UAAM,mBAAiBvH,MAAA,6BAAM,SAAN,gBAAAA,IAAY,MAAM,KAAK,OAAO,CAAC,KAAU,QAAc,OAAO,IAAI,GAAG,MAAM,SAAY,IAAI,GAAG,IAAI,QAAY,WAAS,6BAAM,KAAK,MAAM,KAAK,OAAO,CAAC,KAAU,QAAc,OAAO,IAAI,GAAG,MAAM,SAAY,IAAI,GAAG,IAAI,QAAY,SAAQ,MAAM,MAAM;AAC/Q,WAAO,mBAAmB;AAAA,MACzB,OAAO;AAAA,MACP,GAAG;AAAA,IAAA,CACH;AAAA,EACF;AAEA,YAAU,MAAM;;AACf,QAAI,CAAC,iBAAiB,QAAQ,QAAQ,SAAS,KAAK,CAAC,WAAW;AAE/D,YAAM,oBAAoB,iBAAiB;AAAA,QAC1C,SAAS;AAAA,QACT;AAAA,QACA,MAAM,MAAM,QAAQ,IAAI,IAAI,QAAO,8BAAOA,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,YAAW,CAAA;AAAA,QACtE;AAAA,QACA;AAAA,MAAA,CACA;AAGD,YAAM,mBAAmB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA,EAAE,KAAK,KAAK,SAAS,IAAI,KAAK,IAAA;AAAA,QAC9B;AAAA,MAAA;AAED,sBAAgB,gBAAgB;AAChC,uBAAiB,IAAI;AAAA,IACtB;AAAA,EAED,GAAG,CAAC,MAAM,SAAS,eAAe,WAAW,YAAY,CAAC;AA8B1D,WAAS,eAAeM,OAAWoH,eAAqB,QAAgB,cAAwB,CAAA,GAAI,QAAgB,GAAe;AAClI,QAAI,CAAC,MAAM,QAAQpH,KAAI,UAAU,CAAA;AACjC,QAAI,QAAoB,CAAA;AACxBA,UAAK,QAAQ,CAAC,KAAU,QAAgB;;AACvC,YAAM,OAAO,CAAC,GAAG,aAAa,GAAG;AACjC,WAAIoH,MAAAA,cAAa,KAAK,MAAlBA,gBAAAA,IAAqB,gBAAgB;AACxC,cAAM,KAAK,IAAI;AAAA,MAChB;AACA,YAAM,YAAY,QAAQ;AAC1B,YAAM,cAAaA,MAAAA,cAAa,SAAS,MAAtBA,gBAAAA,IAAyB;AAC5C,UAAI,cAAc,MAAM,QAAQ,IAAI,UAAU,CAAC,GAAG;AACjD,gBAAQ,MAAM,OAAO,eAAe,IAAI,UAAU,GAAGA,eAAc,YAAY,MAAM,SAAS,CAAC;AAAA,MAChG;AAAA,IACD,CAAC;AACD,WAAO;AAAA,EACR;AAEA,QAAM,uBAAuB,CAAC,SAAmB,YAAqB;AACrE,wBAAoB,CAAA,SAAQ;AAC3B,YAAM,OAAO,UACV,CAAC,GAAG,MAAM,OAAO,IACjB,KAAK,OAAO,CAAA,SAAQ,EAAE,KAAK,WAAW,QAAQ,UAAU,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE;AAClG,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAEA,QAAM,6BAA6B,CAAC,YAAqB;;AACxD,UAAM,WAAW;AAAA,MAChB,MAAM,QAAQ,YAAY,IAAI,eAAe,8CAAe1H,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB;AAAA,MAC7E;AAAA,OACAmE,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB;AAAA,IAAA;AAElB,QAAI,SAAS;AACZ,0BAAoB,QAAQ;AAAA,IAC7B,OAAO;AACN,0BAAoB,CAAA,CAAE;AAAA,IACvB;AAAA,EACD;AAEA,QAAM,cAAc;AAAA,IACnB,MAAM,QAAQ,YAAY,IAAI,eAAe,8CAAe,kBAAa,CAAC,MAAd,mBAAiB;AAAA,IAC7E;AAAA,KACA,kBAAa,CAAC,MAAd,mBAAiB;AAAA,EAAA;AAElB,QAAM,cAAc,YAAY,SAAS,KAAK,YAAY;AAAA,IAAM,UAC/D,iBAAiB,KAAK,CAAA,QAAO,IAAI,WAAW,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC;AAAA,EAAA;AAE9F,QAAM,eAAe,YAAY;AAAA,IAAK,UACrC,iBAAiB,KAAK,CAAA,QAAO,IAAI,WAAW,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC;AAAA,EAAA;AAG9F,WAAS,wBACR,KACA,OACA,cACA,QACU;AACV,QAAI,OAAO,KAAM,QAAO;AACxB,UAAM,aAAa,MAAM,YAAA;AACzB,QAAI,OAAO,iBAAiB,UAAU;AACrC,qBAAe,CAAC,YAAY;AAAA,IAC7B;AACA,SAAI,iCAAQ,SAAQ,QAAQ;AAC3B,aAAO,MAAM,GAAG,EAAE,OAAO,YAAY,EAAE,SAAS,UAAU;AAAA,IAC3D;AAEA,QAAI,OAAO,QAAQ,UAAU;AAC5B,aAAO,IAAI,cAAc,SAAS,UAAU;AAAA,IAC7C;AAEA,QAAI,OAAO,QAAQ,UAAU;AAC5B,UAAI,MAAM,QAAQ,GAAG,GAAG;AACvB,eAAO,IAAI,KAAK,CAAA,SAAQ,wBAAwB,MAAM,YAAY,cAAc,MAAM,CAAC;AAAA,MACxF;AACA,UAAI,cAAc;AACjB,eAAO,aAAa,KAAK,CAAA,QAAO;AAC/B,gBAAM,MAAM,IAAI,GAAG;AACnB,cAAI,OAAO,MAAM;AAChB,mBAAO,OAAO,QAAQ,WAAW,IAAI,YAAA,EAAc,SAAS,UAAU,IAAI,wBAAwB,KAAK,YAAY,MAAM,MAAM;AAAA,UAChI;AACA,gBAAM,YAAY,OAAO,KAAK,GAAG,EAAE,OAAO,CAAA,MAAK,OAAO,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,IAAI;AAC5F,cAAI,UAAU,SAAS,GAAG;AACzB,mBAAO,UAAU,KAAK,CAAA,MAAK,wBAAwB,IAAI,CAAC,GAAG,YAAY,MAAM,MAAM,CAAC;AAAA,UACrF;AACA,iBAAO;AAAA,QACR,CAAC;AAAA,MACF,OAAO;AACN,eAAO,OAAO,OAAO,GAAG,EAAE,KAAK,CAAA,QAAO,wBAAwB,KAAK,YAAY,MAAM,MAAM,CAAC;AAAA,MAC7F;AAAA,IACD;AAEA,WAAO,OAAO,GAAG,EAAE,YAAA,EAAc,SAAS,UAAU;AAAA,EACrD;AAEA,YAAU,MAAM;;AACf,QAAI,eAAe,MAAM,QAAQ,QAAQ,IAAI,WAAW,sCAAWnE,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB;AACpF,KAAAmE,MAAA,OAAO,KAAK,aAAa,MAAzB,gBAAAA,IAA4B,QAAQ,CAAA,QAAO;;AAC1C,YAAM,SAAQA,OAAAnE,MAAA,+CAAgB,SAAhB,gBAAAA,IAAsB,UAAtB,gBAAAmE,IAA6B;AAC3C,UAAI,OAAO;AACV,uBAAe,6CAAc,OAAO,CAAC,SAAA;;AAAc,yCAAwB,MAAM,OAAO,MAAKnE,MAAA,+CAAgB,SAAhB,gBAAAA,IAAsB,MAAM;AAAA;AAAA,MAC1H;AAAA,IACD;AACA,oBAAgB,MAAM,QAAQ,QAAQ,IAAI,eAAe,EAAE,GAAG,UAAU,EAACqE,MAAA,aAAa,CAAC,MAAd,gBAAAA,IAAiB,MAAM,GAAG,cAAc;AAAA,EAElH,GAAG,CAAC,eAAe,QAAQ,CAAC;AAE5B,QAAM,eAAe,CAAC,aAAqB,KAAa,WAAgB;AACvE,qBAAiB,CAAC,UAAe;AAAA,MAChC,GAAG;AAAA,MACH,CAAC,GAAG,GAAG;AAAA,QACN,OAAO;AAAA,QACP;AAAA,MAAA;AAAA,IACD,EACC;AAAA,EACH;AAGA,QAAM,kBAAkB,CAAC,GAAqB,eAAuB;AACpE,YAAQ,IAAI,cAAc,UAAU;AACpC,MAAE,eAAA;AACF,MAAE,gBAAA;AACF,sBAAkB,UAAU;AAC5B,iBAAa,UAAU,EAAE;AACzB,qBAAiB,UAAU,aAAa,UAAU,KAAK;AAAA,EACxD;AAEA,QAAM,kBAAkB,CAAC,MAAkB;AAC1C,QAAI,CAAC,eAAgB;AACrB,UAAM,OAAO,EAAE,UAAU,aAAa;AACtC,UAAM,WAAW,KAAK,IAAI,KAAK,iBAAiB,UAAU,IAAI;AAC9D,oBAAgB,CAAA,UAAS;AAAA,MACxB,GAAG;AAAA,MACH,CAAC,cAAc,GAAG;AAAA,IAAA,EACjB;AAAA,EACH;AAEA,QAAM,gBAAgB,MAAM;AAC3B,sBAAkB,IAAI;AAAA,EACvB;AAEA,YAAU,MAAM;AACf,QAAI,gBAAgB;AACnB,eAAS,iBAAiB,aAAa,eAAe;AACtD,eAAS,iBAAiB,WAAW,aAAa;AAClD,aAAO,MAAM;AACZ,iBAAS,oBAAoB,aAAa,eAAe;AACzD,iBAAS,oBAAoB,WAAW,aAAa;AAAA,MACtD;AAAA,IACD;AAAA,EAED,GAAG,CAAC,cAAc,CAAC;AAEnB,YAAU,MAAM;AACf,gBAAY,IAAI;AAChB,oBAAgB,IAAI;AACpB,qBAAiB,KAAK;AAAA,EAEvB,GAAG,CAAC,IAAI,CAAC;AAET,YAAU,MAAM;AACf,WAAO,MAAM,iBAAiB,KAAK;AAAA,EACpC,GAAG,CAAA,CAAE;AAEL,WAAS,cAAc/D,OAAWoH,eAAqB,MAAqB;;AAC3E,QAAI,UAAU,MAAM,QAAQpH,KAAI,IAAIA,QAAOA,gCAAOoH,MAAAA,cAAa,CAAC,MAAdA,gBAAAA,IAAiB;AACnE,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACrC,UAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,OAAO,GAAG;AACxC,eAAO;AAAA,MACR;AACA,YAAM,QAAQ,KAAK,CAAC,CAAC;AACrB,UAAI,IAAI,KAAK,SAAS,GAAG;AACxB,cAAM,YAAY,IAAI;AACtB,cAAM,cAAaA,MAAAA,cAAa,SAAS,MAAtBA,gBAAAA,IAAyB;AAC5C,kBAAU,2BAAM;AAAA,MACjB;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAEA,YAAU,MAAM;AACf,QAAI,mBAAmB;AACtB,YAAM,gBAAgB,iBAAiB,OAAO,CAAA,SAAQ;;AACrD,cAAM,QAAQ,KAAK,SAAS;AAC5B,gBAAO1H,MAAA,aAAa,KAAK,MAAlB,gBAAAA,IAAqB;AAAA,MAC7B,CAAC;AACD,YAAM,eAAe,cACnB,IAAI,CAAA,SAAQ,cAAc,cAAc,cAAc,IAAI,CAAC,EAC3D,OAAO,OAAO;AAChB,wBAAkB,YAAY;AAAA,IAC/B;AAAA,EAED,GAAG,CAAC,kBAAkB,YAAY,CAAC;AAGnC,QAAM,cAAa,6CAAe,cACjC,GAAE,6CAAc,YAAW,OAAK,mBAAa,kBAAa,CAAC,MAAd,mBAAiB,MAAM,MAApC,mBAAuC,YAAW;AAEnF,SACCtC,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MAAe,IAAI;AAAA,QACnB,OAAO;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,QACX,iBAAiB;AAAA,QACjB,SAAS;AAAA,QACT,UAAU;AAAA,MAAA;AAAA,MAEV,WAAU;AAAA,MAEV,UAAA;AAAA,QAAAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,cAAW;AAAA,YACX,IAAI;AAAA,cACH,gBAAgB;AAAA,cAChB,OAAO;AAAA,cACP,aAAa;AAAA,cACb,cAAc,aAAa,QAAQ;AAAA,YAAA;AAAA,YAGpC,UAAA;AAAA,cAAAA,kCAAAA,KAAC,WAAA,EAAU,IAAI,EAAE,UAAU,UAAU,KAAK,GAAG,QAAQ,IAAI,iBAAiB,QAAA,GACzE,UAAA;AAAA,gBAAAA,uCAAC,YAAS,IAAI,EAAE,QAAQ,IAAI,iBAAiB,WAC3C,UAAA;AAAA,kBAAA,kBACAE,kCAAAA,IAAC,aAAU,IAAI;AAAA,oBACd,OAAO,GAAG,uBAAA,CAAwB;AAAA,oBAClC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,iBAAiB;AAAA,oBACjB,QAAQ;AAAA,kBAAA,GAER,UAAAA,kCAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACA,SAAS;AAAA,sBACT,eAAe,CAAC,eAAe;AAAA,sBAC/B,UAAU,CAAA,MAAK,2BAA2B,EAAE,OAAO,OAAO;AAAA,oBAAA;AAAA,kBAAA,GAE5D;AAAA,kBAEA,QAAQ,IAAI,CAAC,KAAK,UAAU;AAC5B,0BAAM,iBAAgB,2BAAK,kBAAiB;AAC5C,0BAAM,QAAQ,aAAa,EAAE,IAAI,KAAK,CAAC,KAAK;AAE5C,2BACCF,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEA,WAAU;AAAA,wBACV,IAAI;AAAA,0BACH,OAAO,GAAG,KAAK;AAAA,0BACf,UAAU,GAAG,KAAK;AAAA,0BAClB,UAAU,GAAG,KAAK;AAAA,0BAClB,QAAQ;AAAA,0BACR,UAAU;AAAA,0BACV,SAAS;AAAA,0BACT,UAAU;AAAA,wBAAA;AAAA,wBAGX,UAAA;AAAA,0BAAAA,kCAAAA;AAAAA,4BAAC;AAAA,4BAAA;AAAA,8BACA,KAAK,CAAC,OAAO,WAAW,QAAQ,IAAI,IAAI,IAAI;AAAA,8BAC5C,IAAI;AAAA,gCACH,SAAS;AAAA,gCACT,gBAAgB;AAAA,gCAChB,QAAQ;AAAA,gCACR,YAAY;AAAA,gCACZ,OAAO;AAAA,gCACP,UAAU;AAAA,gCACV,cAAc;AAAA,8BAAA;AAAA,8BAGf,UAAA;AAAA,gCAAAE,kCAAAA;AAAAA,kCAAC;AAAA,kCAAA;AAAA,oCACA,MAAK;AAAA,oCACL,QAAO;AAAA,oCACP,OAAM;AAAA,oCACN,IAAI;AAAA,sCACH,UAAU;AAAA,sCACV,cAAc;AAAA,sCACd,YAAY;AAAA,sCACZ,MAAM;AAAA,sCACN,UAAU;AAAA,sCACV,YAAY;AAAA,oCAAA;AAAA,oCAGZ,UAAA,QAAO,2BAAK,WAAU,WAAW,EAAE,2BAAK,KAAK,IAAI,2BAAK;AAAA,kCAAA;AAAA,gCAAA;AAAA,gCAEvD,iBACAA,kCAAAA;AAAAA,kCAAC;AAAA,kCAAA;AAAA,oCACA,MAAK;AAAA,oCACL,IAAI;AAAA,sCACH,SAAS;AAAA,oCAAA;AAAA,oCAEV,SAAS,MAAa;AAErB,mDAAa,IAAI;AACjB,gDAAU,UAAU,IAAI,OAAO,OAAO,IAAI,IAAI;AAC9C,oDAAc,WAAW,IAAI,MAAM,UAAU,IAAI,OAAO,QAAQ,MAAM;AAAA,oCACvE;AAAA,oCAEC,UAAA,UAAU,IAAI,OAAOA,kCAAAA,IAAC,SAAA,EAAQ,UAAS,QAAA,CAAQ,IAAKA,kCAAAA,IAAC,WAAA,EAAU,UAAS,QAAA,CAAQ;AAAA,kCAAA;AAAA,gCAAA;AAAA,8BAClF;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAIFA,kCAAAA;AAAAA,4BAAC;AAAA,4BAAA;AAAA,8BACA,WAAU;AAAA,8BACV,aAAa,CAAC,MAAM,gBAAgB,GAAG,EAAE,IAAI,KAAK,CAAC;AAAA,8BACnD,IAAI;AAAA,gCACH,UAAU;AAAA,gCACV,OAAO;AAAA,gCACP,KAAK;AAAA,gCACL,QAAQ;AAAA,gCACR,OAAO;AAAA,gCACP,QAAQ;AAAA,gCACR,iBAAiB;AAAA,gCACjB,WAAW;AAAA,kCACV,iBAAiB;AAAA,kCACjB,uBAAuB;AAAA,oCACtB,iBAAiB;AAAA,kCAAA;AAAA,gCAClB;AAAA,gCAED,aAAa;AAAA,kCACZ,SAAS;AAAA,kCACT,UAAU;AAAA,kCACV,MAAM;AAAA,kCACN,KAAK;AAAA,kCACL,QAAQ;AAAA,kCACR,OAAO;AAAA,kCACP,iBAAiB;AAAA,kCACjB,YAAY;AAAA,gCAAA;AAAA,gCAEb,YAAY;AAAA,kCACX,SAAS;AAAA,kCACT,UAAU;AAAA,kCACV,OAAO;AAAA,kCACP,KAAK;AAAA,kCACL,QAAQ;AAAA,kCACR,OAAO;AAAA,kCACP,iBAAiB;AAAA,kCACjB,YAAY;AAAA,gCAAA;AAAA,gCAEb,QAAQ;AAAA,gCACR,YAAY;AAAA,8BAAA;AAAA,4BACb;AAAA,0BAAA;AAAA,wBACD;AAAA,sBAAA;AAAA,sBAjGK;AAAA,oBAAA;AAAA,kBAoGR,CAAC;AAAA,gBAAA,GACF;AAAA,gBACC,uDACC,UAAA,EACC,UAAA;AAAA,kBAAA,kBACAA,kCAAAA,IAAC,aAAU,IAAI;AAAA,oBACd,OAAO,GAAG,uBAAA,CAAwB;AAAA,oBAClC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,QAAQ;AAAA,oBACR,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,iBAAiB;AAAA,oBACjB,QAAQ;AAAA,kBAAA,GACN;AAAA,kBAEH,QAAQ,IAAI,CAAC,KAAK,UAAU;AAC5B,0BAAM,QAAQ,aAAa,EAAE,IAAI,KAAK,CAAC,KAAK;AAC5C,2BACCA,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEA,WAAU;AAAA,wBACV,IAAI;AAAA,0BACH,OAAO,GAAG,KAAK;AAAA,0BACf,UAAU,GAAG,KAAK;AAAA,0BAClB,UAAU,GAAG,KAAK;AAAA,0BAClB,SAAS;AAAA,wBAAA;AAAA,wBAGV,UAAAA,kCAAAA;AAAAA,0BAAC;AAAA,0BAAA;AAAA,4BAAU,IAAI;AAAA,8BACd,SAAS;AAAA,4BAAA;AAAA,4BAET,YAAY;AAAA,8BACX,IAAI;AAAA,gCACH,YAAY;AAAA,8BAAA;AAAA,4BACb;AAAA,4BAED,cAAc,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,QAAQ,KAAK,CAAC;AAAA,0BAAA;AAAA,wBAAA;AAAA,sBAAG;AAAA,sBAjB5D,2BAAK;AAAA,oBAAA;AAAA,kBAoBb,CAAC;AAAA,gBAAA,GACF;AAAA,gBAIA,qDACC,UAAA,EACA,UAAAA,kCAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACA,SAAS,QAAQ,UAAU,iBAAiB,IAAI;AAAA,oBAChD,IAAI;AAAA,sBACH,SAAS;AAAA,sBACT,cAAc;AAAA,sBACd,iBAAiB;AAAA,oBAAA;AAAA,oBAGjB,UAAAS,eAAM,cAAc,aAAa;AAAA,sBACjC;AAAA,oBAAA,CACA;AAAA,kBAAA;AAAA,gBAAA,EACF,CACD;AAAA,cAAA,GAEF;AAAA,cAIC,gBACAT,kCAAAA,IAAC,WAAA,EACC,UAAA,MAAM,QAAQ,YAAY,IAAI,6CAAc,IAAI,CAAC,KAAK,OAAO,QAC7DA,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEA,OAAO;AAAA,kBACP,SAAS,CAAC,KAAK;AAAA,kBACf,SAAS;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,YAAY,gBAAgB,QAAQ;AAAA,kBACpC;AAAA,kBACA,WAAW,CAAC,CAAC;AAAA,kBACb,MAAM;AAAA,kBACN;AAAA,kBACA,kBAAkB;AAAA,kBAClB,WAAW;AAAA,kBACX,WAAW;AAAA,kBACX,gBAAgB;AAAA,kBAChB;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAjBK,IAAI,MAAM;AAAA,cAAA,OAoBhB,kBAAa,CAAC,MAAd,mBAAiB,WAChBA,sCAAAD,kBAAAA,UAAA,EACE,WAAA,mBAAa,kBAAa,CAAC,MAAd,mBAAiB,MAAM,MAApC,mBAAuC,IAAI,CAAC,KAAU,OAAe,QACrEC,kCAAAA;AAAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEA,OAAO;AAAA,kBACP,SAAS,CAAC,KAAK;AAAA,kBACf,SAAS;AAAA,kBACT;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA,YAAY,gBAAgB,QAAQ;AAAA,kBACpC;AAAA,kBACA,WAAW,CAAC,CAAC;AAAA,kBACb,MAAM;AAAA,kBACN;AAAA,kBACA,kBAAkB;AAAA,kBAClB,WAAW;AAAA,kBACX,WAAW;AAAA,kBACX,gBAAgB;AAAA,kBAChB;AAAA,kBACA;AAAA,gBAAA;AAAA,gBAjBK,IAAI,MAAM;AAAA,cAAA,IAoBlB,EAAA,CAGH;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAKD,cACAA,kCAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACA,IAAI;AAAA;AAAA,cAEH,QAAQ;AAAA;AAAA,cAER,OAAO;AAAA,cACP,mBAAiB,kDAAe,OAAf,mBAAmB,YAAW;AAAA,cAC/C,WAAW;AAAA;AAAA,YAAA;AAAA,YAIZ,UAAAA,kCAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACA,IAAI;AAAA,kBACH,OAAO;AAAA,kBACP,aAAa;AAAA,kBACb,cAAc;AAAA,gBAAA;AAAA,gBAGf,UAAAA,kCAAAA,IAAC,WAAA,EACA,UAAAF,uCAAC,UAAA,EACC,UAAA;AAAA,kBAAA,kBACAE,kCAAAA,IAAC,aAAU,IAAI;AAAA,oBACd,OAAO,GAAG,uBAAA,CAAwB;AAAA,oBAClC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,UAAU,GAAG,uBAAA,CAAwB;AAAA,oBACrC,SAAS;AAAA,oBACT,UAAU;AAAA,oBACV,MAAM;AAAA,oBACN,mBAAiB,kDAAe,OAAf,mBAAmB,YAAW;AAAA,oBAC/C,QAAQ;AAAA,oBACR,cAAc;AAAA,kBAAA,GACZ;AAAA,kBAEH,6CAAc,IAAI,CAAC,QAAQ,UAAU;;AACrC,wBAAI,OAAO,aAAc,QAAO;AAChC,0BAAM,eAAe,aAAa,MAAM,KAAK,EAAE,UAAU,CAAC,MAAW,CAAC,EAAE,gBAAgB,MAAM,MAAM,KAAK,MAAKoC,MAAA,aAAa,MAAM,KAAK,MAAxB,gBAAAA,IAA2B,SAAS,aAAa,MAAM,KAAK,EAAE,UAAU,CAAC,MAAW,CAAC,EAAE,gBAAgB,MAAM,MAAM;AACjO,0BAAM,UAAU,OAAO,aAAa,gBAAgB,IAAI;AAGxD,wBAAI,aAAa;AACjB,6BAAS,IAAI,OAAO,IAAI,QAAQ,WAAW,IAAI,QAAQ,QAAQ,KAAK;AACnE,oCAAc,aAAa,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK;AAAA,oBACpD;AAEA,2BACCpC,kCAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBAEA,WAAU;AAAA,wBACV;AAAA,wBACA,IAAI;AAAA,0BACH,aAAa;AAAA,0BACb,OAAO,GAAG,UAAU;AAAA,0BACpB,UAAU,GAAG,UAAU;AAAA,0BACvB,UAAU,GAAG,UAAU;AAAA,0BACvB,cAAc;AAAA,wBAAA;AAAA,wBAGf,UAAAA,kCAAAA,IAAC,OAAI,IAAI;AAAA,0BACR,SAAS;AAAA,0BACT,YAAY;AAAA,0BACZ,gBAAgB,IAAG,iCAAQ,YAAW,iCAAQ,WAAW,OAAO;AAAA,0BAChE,OAAO;AAAA,wBAAA,GAEN,WAAA,iCAAQ,UAAS,OAAO,OAAO,6CAAe,UAAU,OAAO,OAAO,YAAY,IAClFA,kCAAAA,IAAC,YAAA,EAAW,MAAK,MAAK,QAAO,QAAO,OAAM,sBACxC,UAAA2J,gBAAe,6CAAe,WAAW,MAAM,EAAA,CACjD,EAAA,CAEF;AAAA,sBAAA;AAAA,sBAtBK;AAAA,oBAAA;AAAA,kBAyBR;AAAA,gBAAC,EAAA,CACF,EAAA,CACD;AAAA,cAAA;AAAA,YAAA;AAAA,UACD;AAAA,QAAA;AAAA,UAIA,6BAAM,YAAW,OAAK,mCAAO,kBAAa,CAAC,MAAd,mBAAiB,YAAxB,mBAAiC,YAAW,MAAM,wBAAwB,EAAE,eAAe,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvH;ACzsBO,MAAM,qBAAqB,CAAC;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA,eAAe;AAAA,EACf;AACJ,MAQM;AAEF,SAAO,YAAY,MAAM;AACrB,QAAI,CAAC,gBAAgB,CAAC,WAAY;AAElC,WAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,WAAW,SAAS,MAAM;AAE7D,YAAM,cAAc,WAAW,SAAS;AACxC,YAAM,SAAS,OAAO,mBAAmB,KAAK;AAE9C,YAAM,YAAY,cACZ,GAAG,WAAW,IAAI,SAAS,KAC3B;AAEN,UAAI;AAGJ,UAAI,oBAAoB,MAAM;AAC1B,yBAAiB;AAAA,MACrB,WAAW,mBAAmB,OAAO,oBAAoB,aAAY,yCAAY,yBAAwB;AAErG,cAAM,oBAAoB,WAAW,uBAAuB,KAAK,CAAC,SAAc,KAAK,gBAAgB,gBAAgB,EAAE;AACvH,YAAI,mBAAmB;AAEnB,kBAAO,WAAA;AAAA,YACH,KAAK;AACD,gCAAkB,kBAAkB,2BAA2B,kBAAkB,2BAA2B;AAC5G;AAAA,YACJ,KAAK;AACD,+BAAiB,kBAAkB,2BAA2B;AAC9D;AAAA,YACJ,KAAK;AACD,+BAAiB,kBAAkB,2BAA2B;AAC9D;AAAA,YACJ;AACI,+BAAkB,aAAa,iBAAiB,aAAa,uBAAuB,aAAa,SAC3F,WAAW,IAAK,OAAO,WAAW,IAAI,UAAW,IAAI,IACrD,WAAW,IAAK,OAAO,kBAAkB,SAAS,CAAC,IAAI,UAAW,IAAI;AAAA,UAAA;AAAA,QAExF,OAAO;AAEH,2BAAiB;AAAA,QACrB;AAAA,MACJ,OAAO;AAEH,yBAAkB,aAAa,iBAAiB,aAAa,uBAAuB,aAAa,SAC3F,WAAW,IAAK,OAAO,WAAW,IAAI,UAAW,IAAI,IACrD,WAAW,IAAK,OAAO,WAAW,IAAI,UAAW,IAAI;AAAA,MAC/D;AAEA,eAAS,WAAW,cAAc;AAAA,IACtC,CAAC;AAAA,EACL,GAAG,CAAC,cAAc,YAAY,qBAAqB,aAAa,UAAU,cAAc,eAAe,CAAC;AAC5G;AC7CA,MAAM,kBAAkD,CAAC;AAAA,EACrD;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,aAAa;AAAA,EACb,WAAW;AAAA,EACX;AAAA,EACA,eAAe;AAAA,IACX,0BAA0B;AAAA,IAC1B,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAAA;AAAA,EAEhC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,uBAAuB;AAAA,EACvB;AACJ,MAAM;AAGF,QAAM,CAAC,YAAY,aAAa,IAAI,SAAc,IAAI;AACtD,QAAM,cAAc,eAAA;AACpB,QAAM;AAAA,IACF,SAAS;AAAA,IACT,UAAU;AAAA,EAAA,IACV,eAAe,CAAA;AAEnB,QAAM,uBAAuB,gBAAgB,SAAY,cAAc,kBAAkB;AACzF,QAAM,oBAAoB;AAAA,IAAQ,MAAM;AAAA;AAAA,IAEpC,CAAC,KAAK,UAAU,YAAY,CAAC;AAAA,EAAA;AAEjC,QAAM,kBAAkB,mBAAmB;AAAA,IACvC,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,qBAAqB,yCAAY;AAAA,IACjC,aAAa;AAAA,IACb,UAAU,YAAY;AAAA,IAEtB;AAAA;AAAA,EAAA,CAEH;AAED,YAAU,MAAM;AACZ,QAAI,CAAC,qBAAsB;AAC3B,oBAAA;AAAA,EAEJ,GAAG,CAAC,iBAAiB,oBAAoB,CAAC;AAE1C,QAAM,kBAAkB,CAAC,MAAWI,UAAiB;AACjD,kBAAc,IAAI;AAClB,uDAAkB,MAAMA;AAAAA,EAC5B;AAEA,QAAM,yBAAyB,iBAAiB;AAAA,IAC5C,oBAAmB,6CAAc,wBAAuB;AAAA,EAAA;AAG5D,SACI/J,kCAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG;AAAA,MACA;AAAA,MACA,aAAa,eAAe;AAAA,MAC5B,gBAAgB,kBAAkB;AAAA,MAClC,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,eAAe;AAAA,MACf,iBAAiB;AAAA,IAAA;AAAA,EAAA;AAG7B;","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,71,72,73,74,75,76,77,78,79,80,81,101,102,125,126,127,128,131,132,135,136,137,138,139]}
|