{"version":3,"file":"useTeamRouteParams-65641c02.js","sources":["../../../node_modules/vue-toastification/dist/index.mjs","../../../node_modules/mitt/dist/mitt.mjs","../../../resources/js/Store/assetStore.js","../../../resources/js/Store/projectStore.js","../../../resources/js/Composables/useToast.js","../../../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../../../node_modules/@fortawesome/vue-fontawesome/index.es.js","../../../resources/js/Composables/useAwesomeIcons.js","../../../node_modules/mdb-vue-ui-kit/js/mdb.es.min.js","../../../resources/js/Components/IconBadge.vue","../../../resources/js/Components/Mod/MDBOverride/MDBEventHandlers.ts","../../../resources/js/Components/Mod/MDBOverride/getUID.ts","../../../resources/js/Components/Mod/MDBOverride/mdbClickOutside.ts","../../../resources/js/Components/Mod/MDBOverride/MDBInputZ.vue","../../../node_modules/@popperjs/core/lib/enums.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/@popperjs/core/lib/popper.js","../../../resources/js/Components/Mod/MDBOverride/MDBPopper.ts","../../../resources/js/Components/Mod/MDBOverride/MDBTooltipZ.vue","../../../node_modules/mdurl/lib/decode.mjs","../../../node_modules/mdurl/lib/encode.mjs","../../../node_modules/mdurl/lib/format.mjs","../../../node_modules/mdurl/lib/parse.mjs","../../../node_modules/uc.micro/properties/Any/regex.mjs","../../../node_modules/uc.micro/categories/Cc/regex.mjs","../../../node_modules/uc.micro/categories/Cf/regex.mjs","../../../node_modules/uc.micro/categories/P/regex.mjs","../../../node_modules/uc.micro/categories/S/regex.mjs","../../../node_modules/uc.micro/categories/Z/regex.mjs","../../../node_modules/entities/lib/esm/generated/decode-data-html.js","../../../node_modules/entities/lib/esm/generated/decode-data-xml.js","../../../node_modules/entities/lib/esm/decode_codepoint.js","../../../node_modules/entities/lib/esm/decode.js","../../../node_modules/markdown-it/lib/common/utils.mjs","../../../node_modules/markdown-it/lib/helpers/parse_link_label.mjs","../../../node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","../../../node_modules/markdown-it/lib/helpers/parse_link_title.mjs","../../../node_modules/markdown-it/lib/renderer.mjs","../../../node_modules/markdown-it/lib/ruler.mjs","../../../node_modules/markdown-it/lib/token.mjs","../../../node_modules/markdown-it/lib/rules_core/state_core.mjs","../../../node_modules/markdown-it/lib/rules_core/normalize.mjs","../../../node_modules/markdown-it/lib/rules_core/block.mjs","../../../node_modules/markdown-it/lib/rules_core/inline.mjs","../../../node_modules/markdown-it/lib/rules_core/linkify.mjs","../../../node_modules/markdown-it/lib/rules_core/replacements.mjs","../../../node_modules/markdown-it/lib/rules_core/smartquotes.mjs","../../../node_modules/markdown-it/lib/rules_core/text_join.mjs","../../../node_modules/markdown-it/lib/parser_core.mjs","../../../node_modules/markdown-it/lib/rules_block/state_block.mjs","../../../node_modules/markdown-it/lib/rules_block/table.mjs","../../../node_modules/markdown-it/lib/rules_block/code.mjs","../../../node_modules/markdown-it/lib/rules_block/fence.mjs","../../../node_modules/markdown-it/lib/rules_block/blockquote.mjs","../../../node_modules/markdown-it/lib/rules_block/hr.mjs","../../../node_modules/markdown-it/lib/rules_block/list.mjs","../../../node_modules/markdown-it/lib/rules_block/reference.mjs","../../../node_modules/markdown-it/lib/common/html_blocks.mjs","../../../node_modules/markdown-it/lib/common/html_re.mjs","../../../node_modules/markdown-it/lib/rules_block/html_block.mjs","../../../node_modules/markdown-it/lib/rules_block/heading.mjs","../../../node_modules/markdown-it/lib/rules_block/lheading.mjs","../../../node_modules/markdown-it/lib/rules_block/paragraph.mjs","../../../node_modules/markdown-it/lib/parser_block.mjs","../../../node_modules/markdown-it/lib/rules_inline/state_inline.mjs","../../../node_modules/markdown-it/lib/rules_inline/text.mjs","../../../node_modules/markdown-it/lib/rules_inline/linkify.mjs","../../../node_modules/markdown-it/lib/rules_inline/newline.mjs","../../../node_modules/markdown-it/lib/rules_inline/escape.mjs","../../../node_modules/markdown-it/lib/rules_inline/backticks.mjs","../../../node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","../../../node_modules/markdown-it/lib/rules_inline/emphasis.mjs","../../../node_modules/markdown-it/lib/rules_inline/link.mjs","../../../node_modules/markdown-it/lib/rules_inline/image.mjs","../../../node_modules/markdown-it/lib/rules_inline/autolink.mjs","../../../node_modules/markdown-it/lib/rules_inline/html_inline.mjs","../../../node_modules/markdown-it/lib/rules_inline/entity.mjs","../../../node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","../../../node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","../../../node_modules/markdown-it/lib/parser_inline.mjs","../../../node_modules/linkify-it/lib/re.mjs","../../../node_modules/linkify-it/index.mjs","../../../node_modules/punycode.js/punycode.es6.js","../../../node_modules/markdown-it/lib/presets/default.mjs","../../../node_modules/markdown-it/lib/presets/zero.mjs","../../../node_modules/markdown-it/lib/presets/commonmark.mjs","../../../node_modules/markdown-it/lib/index.mjs","../../../node_modules/dompurify/dist/purify.es.mjs","../../../resources/js/Utils/aiChatMessageHelpers.js","../../../resources/js/Components/Chat/AiChat.vue","../../../resources/js/Components/Mod/FormFields/AiFormFieldBuilder.vue","../../../resources/js/Components/AIPromptBuilderButton.vue","../../../resources/js/Components/Mod/FormFields/TextField.vue","../../../resources/js/Composables/useTeamRouteParams.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// src/index.ts\nimport { provide, inject, getCurrentInstance } from \"vue\";\n\n// src/ts/interface.ts\nimport { createApp, nextTick } from \"vue\";\n\n// src/ts/utils.ts\nimport { defineComponent, toRaw, unref } from \"vue\";\nvar isFunction = (value) => typeof value === \"function\";\nvar isString = (value) => typeof value === \"string\";\nvar isNonEmptyString = (value) => isString(value) && value.trim().length > 0;\nvar isNumber = (value) => typeof value === \"number\";\nvar isUndefined = (value) => typeof value === \"undefined\";\nvar isObject = (value) => typeof value === \"object\" && value !== null;\nvar isJSX = (obj) => hasProp(obj, \"tag\") && isNonEmptyString(obj.tag);\nvar isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;\nvar isToastComponent = (obj) => hasProp(obj, \"component\") && isToastContent(obj.component);\nvar isVueComponent = (c) => isFunction(c) || isObject(c);\nvar isToastContent = (obj) => !isUndefined(obj) && (isString(obj) || isVueComponent(obj) || isToastComponent(obj));\nvar isDOMRect = (obj) => isObject(obj) && [\"height\", \"width\", \"right\", \"left\", \"top\", \"bottom\"].every((p) => isNumber(obj[p]));\nvar hasProp = (obj, propKey) => (isObject(obj) || isFunction(obj)) && propKey in obj;\nvar getId = ((i) => () => i++)(0);\nfunction getX(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;\n}\nfunction getY(event) {\n return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;\n}\nvar removeElement = (el) => {\n if (!isUndefined(el.remove)) {\n el.remove();\n } else if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n};\nvar getVueComponentFromObj = (obj) => {\n if (isToastComponent(obj)) {\n return getVueComponentFromObj(obj.component);\n }\n if (isJSX(obj)) {\n return defineComponent({\n render() {\n return obj;\n }\n });\n }\n return typeof obj === \"string\" ? obj : toRaw(unref(obj));\n};\nvar normalizeToastComponent = (obj) => {\n if (typeof obj === \"string\") {\n return obj;\n }\n const props = hasProp(obj, \"props\") && isObject(obj.props) ? obj.props : {};\n const listeners = hasProp(obj, \"listeners\") && isObject(obj.listeners) ? obj.listeners : {};\n return { component: getVueComponentFromObj(obj), props, listeners };\n};\nvar isBrowser = () => typeof window !== \"undefined\";\n\n// src/ts/eventBus.ts\nvar EventBus = class {\n constructor() {\n this.allHandlers = {};\n }\n getHandlers(eventType) {\n return this.allHandlers[eventType] || [];\n }\n on(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.push(handler);\n this.allHandlers[eventType] = handlers;\n }\n off(eventType, handler) {\n const handlers = this.getHandlers(eventType);\n handlers.splice(handlers.indexOf(handler) >>> 0, 1);\n }\n emit(eventType, event) {\n const handlers = this.getHandlers(eventType);\n handlers.forEach((handler) => handler(event));\n }\n};\nvar isEventBusInterface = (e) => [\"on\", \"off\", \"emit\"].every((f) => hasProp(e, f) && isFunction(e[f]));\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nimport { defineComponent as defineComponent7 } from \"vue\";\n\n// src/ts/constants.ts\nvar TYPE;\n(function(TYPE2) {\n TYPE2[\"SUCCESS\"] = \"success\";\n TYPE2[\"ERROR\"] = \"error\";\n TYPE2[\"WARNING\"] = \"warning\";\n TYPE2[\"INFO\"] = \"info\";\n TYPE2[\"DEFAULT\"] = \"default\";\n})(TYPE || (TYPE = {}));\nvar POSITION;\n(function(POSITION2) {\n POSITION2[\"TOP_LEFT\"] = \"top-left\";\n POSITION2[\"TOP_CENTER\"] = \"top-center\";\n POSITION2[\"TOP_RIGHT\"] = \"top-right\";\n POSITION2[\"BOTTOM_LEFT\"] = \"bottom-left\";\n POSITION2[\"BOTTOM_CENTER\"] = \"bottom-center\";\n POSITION2[\"BOTTOM_RIGHT\"] = \"bottom-right\";\n})(POSITION || (POSITION = {}));\nvar EVENTS;\n(function(EVENTS2) {\n EVENTS2[\"ADD\"] = \"add\";\n EVENTS2[\"DISMISS\"] = \"dismiss\";\n EVENTS2[\"UPDATE\"] = \"update\";\n EVENTS2[\"CLEAR\"] = \"clear\";\n EVENTS2[\"UPDATE_DEFAULTS\"] = \"update_defaults\";\n})(EVENTS || (EVENTS = {}));\nvar VT_NAMESPACE = \"Vue-Toastification\";\n\n// src/ts/propValidators.ts\nvar COMMON = {\n type: {\n type: String,\n default: TYPE.DEFAULT\n },\n classNames: {\n type: [String, Array],\n default: () => []\n },\n trueBoolean: {\n type: Boolean,\n default: true\n }\n};\nvar ICON = {\n type: COMMON.type,\n customIcon: {\n type: [String, Boolean, Object, Function],\n default: true\n }\n};\nvar CLOSE_BUTTON = {\n component: {\n type: [String, Object, Function, Boolean],\n default: \"button\"\n },\n classNames: COMMON.classNames,\n showOnHover: {\n type: Boolean,\n default: false\n },\n ariaLabel: {\n type: String,\n default: \"close\"\n }\n};\nvar PROGRESS_BAR = {\n timeout: {\n type: [Number, Boolean],\n default: 5e3\n },\n hideProgressBar: {\n type: Boolean,\n default: false\n },\n isRunning: {\n type: Boolean,\n default: false\n }\n};\nvar TRANSITION = {\n transition: {\n type: [Object, String],\n default: `${VT_NAMESPACE}__bounce`\n }\n};\nvar CORE_TOAST = {\n position: {\n type: String,\n default: POSITION.TOP_RIGHT\n },\n draggable: COMMON.trueBoolean,\n draggablePercent: {\n type: Number,\n default: 0.6\n },\n pauseOnFocusLoss: COMMON.trueBoolean,\n pauseOnHover: COMMON.trueBoolean,\n closeOnClick: COMMON.trueBoolean,\n timeout: PROGRESS_BAR.timeout,\n hideProgressBar: PROGRESS_BAR.hideProgressBar,\n toastClassName: COMMON.classNames,\n bodyClassName: COMMON.classNames,\n icon: ICON.customIcon,\n closeButton: CLOSE_BUTTON.component,\n closeButtonClassName: CLOSE_BUTTON.classNames,\n showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,\n accessibility: {\n type: Object,\n default: () => ({\n toastRole: \"alert\",\n closeButtonLabel: \"close\"\n })\n },\n rtl: {\n type: Boolean,\n default: false\n },\n eventBus: {\n type: Object,\n required: false,\n default: () => new EventBus()\n }\n};\nvar TOAST = {\n id: {\n type: [String, Number],\n required: true,\n default: 0\n },\n type: COMMON.type,\n content: {\n type: [String, Object, Function],\n required: true,\n default: \"\"\n },\n onClick: {\n type: Function,\n default: void 0\n },\n onClose: {\n type: Function,\n default: void 0\n }\n};\nvar CONTAINER = {\n container: {\n type: [\n Object,\n Function\n ],\n default: () => document.body\n },\n newestOnTop: COMMON.trueBoolean,\n maxToasts: {\n type: Number,\n default: 20\n },\n transition: TRANSITION.transition,\n toastDefaults: Object,\n filterBeforeCreate: {\n type: Function,\n default: (toast) => toast\n },\n filterToasts: {\n type: Function,\n default: (toasts) => toasts\n },\n containerClassName: COMMON.classNames,\n onMounted: Function,\n shareAppContext: [Boolean, Object]\n};\nvar propValidators_default = {\n CORE_TOAST,\n TOAST,\n CONTAINER,\n PROGRESS_BAR,\n ICON,\n TRANSITION,\n CLOSE_BUTTON\n};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nimport { defineComponent as defineComponent5 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=script\nimport { defineComponent as defineComponent2 } from \"vue\";\nvar VtProgressBar_default = defineComponent2({\n name: \"VtProgressBar\",\n props: propValidators_default.PROGRESS_BAR,\n data() {\n return {\n hasClass: true\n };\n },\n computed: {\n style() {\n return {\n animationDuration: `${this.timeout}ms`,\n animationPlayState: this.isRunning ? \"running\" : \"paused\",\n opacity: this.hideProgressBar ? 0 : 1\n };\n },\n cpClass() {\n return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : \"\";\n }\n },\n watch: {\n timeout() {\n this.hasClass = false;\n this.$nextTick(() => this.hasClass = true);\n }\n },\n mounted() {\n this.$el.addEventListener(\"animationend\", this.animationEnded);\n },\n beforeUnmount() {\n this.$el.removeEventListener(\"animationend\", this.animationEnded);\n },\n methods: {\n animationEnded() {\n this.$emit(\"close-toast\");\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue?vue&type=template\nimport { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\";\nfunction render(_ctx, _cache) {\n return _openBlock(), _createElementBlock(\"div\", {\n style: _normalizeStyle(_ctx.style),\n class: _normalizeClass(_ctx.cpClass)\n }, null, 6);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtProgressBar.vue\nVtProgressBar_default.render = render;\nvar VtProgressBar_default2 = VtProgressBar_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=script\nimport { defineComponent as defineComponent3 } from \"vue\";\nvar VtCloseButton_default = defineComponent3({\n name: \"VtCloseButton\",\n props: propValidators_default.CLOSE_BUTTON,\n computed: {\n buttonComponent() {\n if (this.component !== false) {\n return getVueComponentFromObj(this.component);\n }\n return \"button\";\n },\n classes() {\n const classes = [`${VT_NAMESPACE}__close-button`];\n if (this.showOnHover) {\n classes.push(\"show-on-hover\");\n }\n return classes.concat(this.classNames);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue?vue&type=template\nimport { createTextVNode as _createTextVNode, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, withCtx as _withCtx, openBlock as _openBlock2, createBlock as _createBlock } from \"vue\";\nvar _hoisted_1 = /* @__PURE__ */ _createTextVNode(\" \\xD7 \");\nfunction render2(_ctx, _cache) {\n return _openBlock2(), _createBlock(_resolveDynamicComponent(_ctx.buttonComponent), _mergeProps({\n \"aria-label\": _ctx.ariaLabel,\n class: _ctx.classes\n }, _ctx.$attrs), {\n default: _withCtx(() => [\n _hoisted_1\n ]),\n _: 1\n }, 16, [\"aria-label\", \"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtCloseButton.vue\nVtCloseButton_default.render = render2;\nvar VtCloseButton_default2 = VtCloseButton_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nimport { defineComponent as defineComponent4 } from \"vue\";\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=script\nvar VtSuccessIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock3, createElementBlock as _createElementBlock2 } from \"vue\";\nvar _hoisted_12 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"check-circle\",\n class: \"svg-inline--fa fa-check-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_2 = /* @__PURE__ */ _createElementVNode(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n}, null, -1);\nvar _hoisted_3 = [\n _hoisted_2\n];\nfunction render3(_ctx, _cache) {\n return _openBlock3(), _createElementBlock2(\"svg\", _hoisted_12, _hoisted_3);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtSuccessIcon.vue\nVtSuccessIcon_default.render = render3;\nvar VtSuccessIcon_default2 = VtSuccessIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=script\nvar VtInfoIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode2, openBlock as _openBlock4, createElementBlock as _createElementBlock3 } from \"vue\";\nvar _hoisted_13 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"info-circle\",\n class: \"svg-inline--fa fa-info-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_22 = /* @__PURE__ */ _createElementVNode2(\"path\", {\n fill: \"currentColor\",\n d: \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"\n}, null, -1);\nvar _hoisted_32 = [\n _hoisted_22\n];\nfunction render4(_ctx, _cache) {\n return _openBlock4(), _createElementBlock3(\"svg\", _hoisted_13, _hoisted_32);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtInfoIcon.vue\nVtInfoIcon_default.render = render4;\nvar VtInfoIcon_default2 = VtInfoIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=script\nvar VtWarningIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode3, openBlock as _openBlock5, createElementBlock as _createElementBlock4 } from \"vue\";\nvar _hoisted_14 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-circle\",\n class: \"svg-inline--fa fa-exclamation-circle fa-w-16\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n};\nvar _hoisted_23 = /* @__PURE__ */ _createElementVNode3(\"path\", {\n fill: \"currentColor\",\n d: \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_33 = [\n _hoisted_23\n];\nfunction render5(_ctx, _cache) {\n return _openBlock5(), _createElementBlock4(\"svg\", _hoisted_14, _hoisted_33);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtWarningIcon.vue\nVtWarningIcon_default.render = render5;\nvar VtWarningIcon_default2 = VtWarningIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=script\nvar VtErrorIcon_default = {};\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue?vue&type=template\nimport { createElementVNode as _createElementVNode4, openBlock as _openBlock6, createElementBlock as _createElementBlock5 } from \"vue\";\nvar _hoisted_15 = {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-triangle\",\n class: \"svg-inline--fa fa-exclamation-triangle fa-w-18\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\"\n};\nvar _hoisted_24 = /* @__PURE__ */ _createElementVNode4(\"path\", {\n fill: \"currentColor\",\n d: \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n}, null, -1);\nvar _hoisted_34 = [\n _hoisted_24\n];\nfunction render6(_ctx, _cache) {\n return _openBlock6(), _createElementBlock5(\"svg\", _hoisted_15, _hoisted_34);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/icons/VtErrorIcon.vue\nVtErrorIcon_default.render = render6;\nvar VtErrorIcon_default2 = VtErrorIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=script\nvar VtIcon_default = defineComponent4({\n name: \"VtIcon\",\n props: propValidators_default.ICON,\n computed: {\n customIconChildren() {\n return hasProp(this.customIcon, \"iconChildren\") ? this.trimValue(this.customIcon.iconChildren) : \"\";\n },\n customIconClass() {\n if (isString(this.customIcon)) {\n return this.trimValue(this.customIcon);\n } else if (hasProp(this.customIcon, \"iconClass\")) {\n return this.trimValue(this.customIcon.iconClass);\n }\n return \"\";\n },\n customIconTag() {\n if (hasProp(this.customIcon, \"iconTag\")) {\n return this.trimValue(this.customIcon.iconTag, \"i\");\n }\n return \"i\";\n },\n hasCustomIcon() {\n return this.customIconClass.length > 0;\n },\n component() {\n if (this.hasCustomIcon) {\n return this.customIconTag;\n }\n if (isToastContent(this.customIcon)) {\n return getVueComponentFromObj(this.customIcon);\n }\n return this.iconTypeComponent;\n },\n iconTypeComponent() {\n const types = {\n [TYPE.DEFAULT]: VtInfoIcon_default2,\n [TYPE.INFO]: VtInfoIcon_default2,\n [TYPE.SUCCESS]: VtSuccessIcon_default2,\n [TYPE.ERROR]: VtErrorIcon_default2,\n [TYPE.WARNING]: VtWarningIcon_default2\n };\n return types[this.type];\n },\n iconClasses() {\n const classes = [`${VT_NAMESPACE}__icon`];\n if (this.hasCustomIcon) {\n return classes.concat(this.customIconClass);\n }\n return classes;\n }\n },\n methods: {\n trimValue(value, empty = \"\") {\n return isNonEmptyString(value) ? value.trim() : empty;\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue?vue&type=template\nimport { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode2, resolveDynamicComponent as _resolveDynamicComponent2, normalizeClass as _normalizeClass2, withCtx as _withCtx2, openBlock as _openBlock7, createBlock as _createBlock2 } from \"vue\";\nfunction render7(_ctx, _cache) {\n return _openBlock7(), _createBlock2(_resolveDynamicComponent2(_ctx.component), {\n class: _normalizeClass2(_ctx.iconClasses)\n }, {\n default: _withCtx2(() => [\n _createTextVNode2(_toDisplayString(_ctx.customIconChildren), 1)\n ]),\n _: 1\n }, 8, [\"class\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtIcon.vue\nVtIcon_default.render = render7;\nvar VtIcon_default2 = VtIcon_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=script\nvar VtToast_default = defineComponent5({\n name: \"VtToast\",\n components: { ProgressBar: VtProgressBar_default2, CloseButton: VtCloseButton_default2, Icon: VtIcon_default2 },\n inheritAttrs: false,\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.TOAST),\n data() {\n const data = {\n isRunning: true,\n disableTransitions: false,\n beingDragged: false,\n dragStart: 0,\n dragPos: { x: 0, y: 0 },\n dragRect: {}\n };\n return data;\n },\n computed: {\n classes() {\n const classes = [\n `${VT_NAMESPACE}__toast`,\n `${VT_NAMESPACE}__toast--${this.type}`,\n `${this.position}`\n ].concat(this.toastClassName);\n if (this.disableTransitions) {\n classes.push(\"disable-transition\");\n }\n if (this.rtl) {\n classes.push(`${VT_NAMESPACE}__toast--rtl`);\n }\n return classes;\n },\n bodyClasses() {\n const classes = [\n `${VT_NAMESPACE}__toast-${isString(this.content) ? \"body\" : \"component-body\"}`\n ].concat(this.bodyClassName);\n return classes;\n },\n draggableStyle() {\n if (this.dragStart === this.dragPos.x) {\n return {};\n } else if (this.beingDragged) {\n return {\n transform: `translateX(${this.dragDelta}px)`,\n opacity: 1 - Math.abs(this.dragDelta / this.removalDistance)\n };\n } else {\n return {\n transition: \"transform 0.2s, opacity 0.2s\",\n transform: \"translateX(0)\",\n opacity: 1\n };\n }\n },\n dragDelta() {\n return this.beingDragged ? this.dragPos.x - this.dragStart : 0;\n },\n removalDistance() {\n if (isDOMRect(this.dragRect)) {\n return (this.dragRect.right - this.dragRect.left) * this.draggablePercent;\n }\n return 0;\n }\n },\n mounted() {\n if (this.draggable) {\n this.draggableSetup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusSetup();\n }\n },\n beforeUnmount() {\n if (this.draggable) {\n this.draggableCleanup();\n }\n if (this.pauseOnFocusLoss) {\n this.focusCleanup();\n }\n },\n methods: {\n hasProp,\n getVueComponentFromObj,\n closeToast() {\n this.eventBus.emit(EVENTS.DISMISS, this.id);\n },\n clickHandler() {\n if (this.onClick) {\n this.onClick(this.closeToast);\n }\n if (this.closeOnClick) {\n if (!this.beingDragged || this.dragStart === this.dragPos.x) {\n this.closeToast();\n }\n }\n },\n timeoutHandler() {\n this.closeToast();\n },\n hoverPause() {\n if (this.pauseOnHover) {\n this.isRunning = false;\n }\n },\n hoverPlay() {\n if (this.pauseOnHover) {\n this.isRunning = true;\n }\n },\n focusPause() {\n this.isRunning = false;\n },\n focusPlay() {\n this.isRunning = true;\n },\n focusSetup() {\n addEventListener(\"blur\", this.focusPause);\n addEventListener(\"focus\", this.focusPlay);\n },\n focusCleanup() {\n removeEventListener(\"blur\", this.focusPause);\n removeEventListener(\"focus\", this.focusPlay);\n },\n draggableSetup() {\n const element = this.$el;\n element.addEventListener(\"touchstart\", this.onDragStart, {\n passive: true\n });\n element.addEventListener(\"mousedown\", this.onDragStart);\n addEventListener(\"touchmove\", this.onDragMove, { passive: false });\n addEventListener(\"mousemove\", this.onDragMove);\n addEventListener(\"touchend\", this.onDragEnd);\n addEventListener(\"mouseup\", this.onDragEnd);\n },\n draggableCleanup() {\n const element = this.$el;\n element.removeEventListener(\"touchstart\", this.onDragStart);\n element.removeEventListener(\"mousedown\", this.onDragStart);\n removeEventListener(\"touchmove\", this.onDragMove);\n removeEventListener(\"mousemove\", this.onDragMove);\n removeEventListener(\"touchend\", this.onDragEnd);\n removeEventListener(\"mouseup\", this.onDragEnd);\n },\n onDragStart(event) {\n this.beingDragged = true;\n this.dragPos = { x: getX(event), y: getY(event) };\n this.dragStart = getX(event);\n this.dragRect = this.$el.getBoundingClientRect();\n },\n onDragMove(event) {\n if (this.beingDragged) {\n event.preventDefault();\n if (this.isRunning) {\n this.isRunning = false;\n }\n this.dragPos = { x: getX(event), y: getY(event) };\n }\n },\n onDragEnd() {\n if (this.beingDragged) {\n if (Math.abs(this.dragDelta) >= this.removalDistance) {\n this.disableTransitions = true;\n this.$nextTick(() => this.closeToast());\n } else {\n setTimeout(() => {\n this.beingDragged = false;\n if (isDOMRect(this.dragRect) && this.pauseOnHover && this.dragRect.bottom >= this.dragPos.y && this.dragPos.y >= this.dragRect.top && this.dragRect.left <= this.dragPos.x && this.dragPos.x <= this.dragRect.right) {\n this.isRunning = false;\n } else {\n this.isRunning = true;\n }\n });\n }\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue?vue&type=template\nimport { resolveComponent as _resolveComponent, openBlock as _openBlock8, createBlock as _createBlock3, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString2, createTextVNode as _createTextVNode3, Fragment as _Fragment, createElementBlock as _createElementBlock6, resolveDynamicComponent as _resolveDynamicComponent3, toHandlers as _toHandlers, mergeProps as _mergeProps2, normalizeClass as _normalizeClass3, createElementVNode as _createElementVNode5, withModifiers as _withModifiers, normalizeStyle as _normalizeStyle2 } from \"vue\";\nvar _hoisted_16 = [\"role\"];\nfunction render8(_ctx, _cache) {\n const _component_Icon = _resolveComponent(\"Icon\");\n const _component_CloseButton = _resolveComponent(\"CloseButton\");\n const _component_ProgressBar = _resolveComponent(\"ProgressBar\");\n return _openBlock8(), _createElementBlock6(\"div\", {\n class: _normalizeClass3(_ctx.classes),\n style: _normalizeStyle2(_ctx.draggableStyle),\n onClick: _cache[0] || (_cache[0] = (...args) => _ctx.clickHandler && _ctx.clickHandler(...args)),\n onMouseenter: _cache[1] || (_cache[1] = (...args) => _ctx.hoverPause && _ctx.hoverPause(...args)),\n onMouseleave: _cache[2] || (_cache[2] = (...args) => _ctx.hoverPlay && _ctx.hoverPlay(...args))\n }, [\n _ctx.icon ? (_openBlock8(), _createBlock3(_component_Icon, {\n key: 0,\n \"custom-icon\": _ctx.icon,\n type: _ctx.type\n }, null, 8, [\"custom-icon\", \"type\"])) : _createCommentVNode(\"v-if\", true),\n _createElementVNode5(\"div\", {\n role: _ctx.accessibility.toastRole || \"alert\",\n class: _normalizeClass3(_ctx.bodyClasses)\n }, [\n typeof _ctx.content === \"string\" ? (_openBlock8(), _createElementBlock6(_Fragment, { key: 0 }, [\n _createTextVNode3(_toDisplayString2(_ctx.content), 1)\n ], 2112)) : (_openBlock8(), _createBlock3(_resolveDynamicComponent3(_ctx.getVueComponentFromObj(_ctx.content)), _mergeProps2({\n key: 1,\n \"toast-id\": _ctx.id\n }, _ctx.hasProp(_ctx.content, \"props\") ? _ctx.content.props : {}, _toHandlers(_ctx.hasProp(_ctx.content, \"listeners\") ? _ctx.content.listeners : {}), { onCloseToast: _ctx.closeToast }), null, 16, [\"toast-id\", \"onCloseToast\"]))\n ], 10, _hoisted_16),\n !!_ctx.closeButton ? (_openBlock8(), _createBlock3(_component_CloseButton, {\n key: 1,\n component: _ctx.closeButton,\n \"class-names\": _ctx.closeButtonClassName,\n \"show-on-hover\": _ctx.showCloseButtonOnHover,\n \"aria-label\": _ctx.accessibility.closeButtonLabel,\n onClick: _withModifiers(_ctx.closeToast, [\"stop\"])\n }, null, 8, [\"component\", \"class-names\", \"show-on-hover\", \"aria-label\", \"onClick\"])) : _createCommentVNode(\"v-if\", true),\n _ctx.timeout ? (_openBlock8(), _createBlock3(_component_ProgressBar, {\n key: 2,\n \"is-running\": _ctx.isRunning,\n \"hide-progress-bar\": _ctx.hideProgressBar,\n timeout: _ctx.timeout,\n onCloseToast: _ctx.timeoutHandler\n }, null, 8, [\"is-running\", \"hide-progress-bar\", \"timeout\", \"onCloseToast\"])) : _createCommentVNode(\"v-if\", true)\n ], 38);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToast.vue\nVtToast_default.render = render8;\nvar VtToast_default2 = VtToast_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=script\nimport { defineComponent as defineComponent6 } from \"vue\";\nvar VtTransition_default = defineComponent6({\n name: \"VtTransition\",\n props: propValidators_default.TRANSITION,\n emits: [\"leave\"],\n methods: {\n hasProp,\n leave(el) {\n if (el instanceof HTMLElement) {\n el.style.left = el.offsetLeft + \"px\";\n el.style.top = el.offsetTop + \"px\";\n el.style.width = getComputedStyle(el).width;\n el.style.position = \"absolute\";\n }\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue?vue&type=template\nimport { renderSlot as _renderSlot, TransitionGroup as _TransitionGroup, withCtx as _withCtx3, openBlock as _openBlock9, createBlock as _createBlock4 } from \"vue\";\nfunction render9(_ctx, _cache) {\n return _openBlock9(), _createBlock4(_TransitionGroup, {\n tag: \"div\",\n \"enter-active-class\": _ctx.transition.enter ? _ctx.transition.enter : `${_ctx.transition}-enter-active`,\n \"move-class\": _ctx.transition.move ? _ctx.transition.move : `${_ctx.transition}-move`,\n \"leave-active-class\": _ctx.transition.leave ? _ctx.transition.leave : `${_ctx.transition}-leave-active`,\n onLeave: _ctx.leave\n }, {\n default: _withCtx3(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"enter-active-class\", \"move-class\", \"leave-active-class\", \"onLeave\"]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtTransition.vue\nVtTransition_default.render = render9;\nvar VtTransition_default2 = VtTransition_default;\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=script\nvar VtToastContainer_default = defineComponent7({\n name: \"VueToastification\",\n devtools: {\n hide: true\n },\n components: { Toast: VtToast_default2, VtTransition: VtTransition_default2 },\n props: Object.assign({}, propValidators_default.CORE_TOAST, propValidators_default.CONTAINER, propValidators_default.TRANSITION),\n data() {\n const data = {\n count: 0,\n positions: Object.values(POSITION),\n toasts: {},\n defaults: {}\n };\n return data;\n },\n computed: {\n toastArray() {\n return Object.values(this.toasts);\n },\n filteredToasts() {\n return this.defaults.filterToasts(this.toastArray);\n }\n },\n beforeMount() {\n const events = this.eventBus;\n events.on(EVENTS.ADD, this.addToast);\n events.on(EVENTS.CLEAR, this.clearToasts);\n events.on(EVENTS.DISMISS, this.dismissToast);\n events.on(EVENTS.UPDATE, this.updateToast);\n events.on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);\n this.defaults = this.$props;\n },\n mounted() {\n this.setup(this.container);\n },\n methods: {\n async setup(container) {\n if (isFunction(container)) {\n container = await container();\n }\n removeElement(this.$el);\n container.appendChild(this.$el);\n },\n setToast(props) {\n if (!isUndefined(props.id)) {\n this.toasts[props.id] = props;\n }\n },\n addToast(params) {\n params.content = normalizeToastComponent(params.content);\n const props = Object.assign({}, this.defaults, params.type && this.defaults.toastDefaults && this.defaults.toastDefaults[params.type], params);\n const toast = this.defaults.filterBeforeCreate(props, this.toastArray);\n toast && this.setToast(toast);\n },\n dismissToast(id) {\n const toast = this.toasts[id];\n if (!isUndefined(toast) && !isUndefined(toast.onClose)) {\n toast.onClose();\n }\n delete this.toasts[id];\n },\n clearToasts() {\n Object.keys(this.toasts).forEach((id) => {\n this.dismissToast(id);\n });\n },\n getPositionToasts(position) {\n const toasts = this.filteredToasts.filter((toast) => toast.position === position).slice(0, this.defaults.maxToasts);\n return this.defaults.newestOnTop ? toasts.reverse() : toasts;\n },\n updateDefaults(update) {\n if (!isUndefined(update.container)) {\n this.setup(update.container);\n }\n this.defaults = Object.assign({}, this.defaults, update);\n },\n updateToast({\n id,\n options,\n create\n }) {\n if (this.toasts[id]) {\n if (options.timeout && options.timeout === this.toasts[id].timeout) {\n options.timeout++;\n }\n this.setToast(Object.assign({}, this.toasts[id], options));\n } else if (create) {\n this.addToast(Object.assign({}, { id }, options));\n }\n },\n getClasses(position) {\n const classes = [`${VT_NAMESPACE}__container`, position];\n return classes.concat(this.defaults.containerClassName);\n }\n }\n});\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue?vue&type=template\nimport { renderList as _renderList, Fragment as _Fragment2, openBlock as _openBlock10, createElementBlock as _createElementBlock7, resolveComponent as _resolveComponent2, mergeProps as _mergeProps3, createBlock as _createBlock5, normalizeClass as _normalizeClass4, withCtx as _withCtx4, createVNode as _createVNode } from \"vue\";\nfunction render10(_ctx, _cache) {\n const _component_Toast = _resolveComponent2(\"Toast\");\n const _component_VtTransition = _resolveComponent2(\"VtTransition\");\n return _openBlock10(), _createElementBlock7(\"div\", null, [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.positions, (pos) => {\n return _openBlock10(), _createElementBlock7(\"div\", { key: pos }, [\n _createVNode(_component_VtTransition, {\n transition: _ctx.defaults.transition,\n class: _normalizeClass4(_ctx.getClasses(pos))\n }, {\n default: _withCtx4(() => [\n (_openBlock10(true), _createElementBlock7(_Fragment2, null, _renderList(_ctx.getPositionToasts(pos), (toast) => {\n return _openBlock10(), _createBlock5(_component_Toast, _mergeProps3({\n key: toast.id\n }, toast), null, 16);\n }), 128))\n ]),\n _: 2\n }, 1032, [\"transition\", \"class\"])\n ]);\n }), 128))\n ]);\n}\n\n// vue:/Users/maronato/Developer/vue-toastification/src/components/VtToastContainer.vue\nVtToastContainer_default.render = render10;\nvar VtToastContainer_default2 = VtToastContainer_default;\n\n// src/ts/interface.ts\nvar buildInterface = (globalOptions = {}, mountContainer = true) => {\n const events = globalOptions.eventBus = globalOptions.eventBus || new EventBus();\n if (mountContainer) {\n nextTick(() => {\n const app = createApp(VtToastContainer_default2, __spreadValues({}, globalOptions));\n const component = app.mount(document.createElement(\"div\"));\n const onMounted = globalOptions.onMounted;\n if (!isUndefined(onMounted)) {\n onMounted(component, app);\n }\n if (globalOptions.shareAppContext) {\n const baseApp = globalOptions.shareAppContext;\n if (baseApp === true) {\n console.warn(`[${VT_NAMESPACE}] App to share context with was not provided.`);\n } else {\n app._context.components = baseApp._context.components;\n app._context.directives = baseApp._context.directives;\n app._context.mixins = baseApp._context.mixins;\n app._context.provides = baseApp._context.provides;\n app.config.globalProperties = baseApp.config.globalProperties;\n }\n }\n });\n }\n const toast = (content, options) => {\n const props = Object.assign({}, { id: getId(), type: TYPE.DEFAULT }, options, {\n content\n });\n events.emit(EVENTS.ADD, props);\n return props.id;\n };\n toast.clear = () => events.emit(EVENTS.CLEAR, void 0);\n toast.updateDefaults = (update) => {\n events.emit(EVENTS.UPDATE_DEFAULTS, update);\n };\n toast.dismiss = (id) => {\n events.emit(EVENTS.DISMISS, id);\n };\n function updateToast(id, { content, options }, create = false) {\n const opt = Object.assign({}, options, { content });\n events.emit(EVENTS.UPDATE, {\n id,\n options: opt,\n create\n });\n }\n toast.update = updateToast;\n toast.success = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.SUCCESS }));\n toast.info = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.INFO }));\n toast.error = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.ERROR }));\n toast.warning = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.WARNING }));\n return toast;\n};\n\n// src/index.ts\nvar createMockToastInterface = () => {\n const toast = () => console.warn(`[${VT_NAMESPACE}] This plugin does not support SSR!`);\n return new Proxy(toast, {\n get() {\n return toast;\n }\n });\n};\nfunction createToastInterface(optionsOrEventBus) {\n if (!isBrowser()) {\n return createMockToastInterface();\n }\n if (isEventBusInterface(optionsOrEventBus)) {\n return buildInterface({ eventBus: optionsOrEventBus }, false);\n }\n return buildInterface(optionsOrEventBus, true);\n}\nvar toastInjectionKey = Symbol(\"VueToastification\");\nvar globalEventBus = new EventBus();\nvar VueToastificationPlugin = (App, options) => {\n if ((options == null ? void 0 : options.shareAppContext) === true) {\n options.shareAppContext = App;\n }\n const inter = createToastInterface(__spreadValues({\n eventBus: globalEventBus\n }, options));\n App.provide(toastInjectionKey, inter);\n};\nvar provideToast = (options) => {\n const toast = createToastInterface(options);\n if (getCurrentInstance()) {\n provide(toastInjectionKey, toast);\n }\n};\nvar useToast = (eventBus) => {\n if (eventBus) {\n return createToastInterface(eventBus);\n }\n const toast = getCurrentInstance() ? inject(toastInjectionKey, void 0) : void 0;\n return toast ? toast : createToastInterface(globalEventBus);\n};\nvar src_default = VueToastificationPlugin;\nexport {\n EventBus,\n POSITION,\n TYPE,\n createToastInterface,\n src_default as default,\n globalEventBus,\n provideToast,\n toastInjectionKey,\n useToast\n};\n","export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e)})}}}\n//# sourceMappingURL=mitt.mjs.map\n","import { defineStore } from \"pinia\"\nimport { ref } from \"vue\"\nimport { usePage } from \"@inertiajs/vue3\"\nexport const useAssetStore = defineStore(\"asset\", () => {\n\tconst assetList = ref([])\n\tconst assetListLoading = ref(false)\n\n\tasync function populateAssetList(project) {\n\t\tif (this.assetListLoading || !project?.slug) return\n\n\t\tthis.assetListLoading = true\n\t\t// const project = page.props.project\n\t\tlet filterString = \"\"\n\t\tconst curRoute = route(\"dashboard.project.assets.index\", {\n\t\t\tproject: project.slug,\n\t\t\tteam: usePage().props.currentTeam?.slug,\n\t\t\t// filter: \"image\",\n\t\t})\n\t\tconst response = await http.get(curRoute)\n\t\tassetList.value = response.data.map((item) => ({\n\t\t\tid: item.id,\n\t\t\ttext: item[\"name\"],\n\t\t\tvalue: item[\"id\"],\n\t\t\tasset_url: item[\"asset_url\"],\n\t\t}))\n\t\tthis.assetListLoading = false\n\t}\n\n\tfunction setAssetList(value) {\n\t\tthis.assetList = value\n\t}\n\n\tfunction addAsset(value) {\n\t\tthis.assetList.push({\n\t\t\tid: value.id,\n\t\t\ttext: value.name,\n\t\t\tvalue: value.id,\n\t\t\tasset_url: value.asset_url,\n\t\t})\n\t}\n\n\tfunction updateAssetPreview(dataModel) {\n\t\tif (!dataModel?.asset_list) return {}\n\t\treturn Object.entries(dataModel.asset_list).reduce(\n\t\t\t(assetPreview, [key, value]) => {\n\t\t\t\tif (!value) return assetPreview\n\t\t\t\tif (typeof value === \"object\") {\n\t\t\t\t\tassetPreview[key] = Object.entries(value).reduce(\n\t\t\t\t\t\t(repeatableFieldValue, [subKey, subValue]) => {\n\t\t\t\t\t\t\trepeatableFieldValue[subKey] = Object.entries(subValue).reduce(\n\t\t\t\t\t\t\t\t(subField, [subFieldKey, subFieldValue]) => {\n\t\t\t\t\t\t\t\t\tsubField[subFieldKey] = assetList.value.find(\n\t\t\t\t\t\t\t\t\t\t(asset) => asset.id === subFieldValue,\n\t\t\t\t\t\t\t\t\t).asset_url\n\t\t\t\t\t\t\t\t\treturn subField\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\t)\n\t\t\t\t\t\t\treturn repeatableFieldValue\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{},\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tassetPreview[key] = assetList.value.find(\n\t\t\t\t\t\t(asset) => asset.id === value,\n\t\t\t\t\t).asset_url\n\t\t\t\t}\n\t\t\t\treturn assetPreview\n\t\t\t},\n\t\t\t{},\n\t\t)\n\t}\n\n\treturn {\n\t\tassetList,\n\t\tassetListLoading,\n\t\tsetAssetList,\n\t\taddAsset,\n\t\tpopulateAssetList,\n\t\tupdateAssetPreview,\n\t}\n})\n","// Utilities\nimport { defineStore } from \"pinia\"\n\nconst RECENT_PROJECT_LIST_KEY = \"recent-project-list\"\nconst MAX_RECENT_PROJECTS = 4\n\nexport const useProjectStore = defineStore(\"projects\", {\n\tstate: () => ({\n\t\tprojectList: [],\n\t\tbreadCrumbs: [],\n\t\trecentProjects:\n\t\t\tJSON.parse(localStorage.getItem(RECENT_PROJECT_LIST_KEY)) || {},\n\t\tprojectsPaginated: {},\n\t\tactiveProject: null,\n\t}),\n\n\tgetters: {\n\t\tgetPaginatedProjectList() {\n\t\t\tif (!this.projectsPaginated || !this.projectsPaginated.data) return null\n\t\t\treturn this.projectsPaginated.data\n\t\t},\n\t\tgetActiveProjectId() {\n\t\t\tif (!this.activeProject) return null\n\t\t\treturn this.activeProject.id\n\t\t},\n\t\tgetActiveProject() {\n\t\t\treturn this.activeProject\n\t\t},\n\t},\n\n\tactions: {\n\t\tsetProjectList(value) {\n\t\t\tthis.projectList = value\n\t\t},\n\n\t\tsetProjectsPaginated(value) {\n\t\t\tthis.projectsPaginated = value\n\t\t},\n\n\t\tsetActiveProject(adminId, teamSlug, value) {\n\t\t\tthis.activeProject = value\n\n\t\t\tif (!value || !adminId) return\n\n\t\t\tvalue.team_slug = teamSlug\n\t\t\ttry {\n\t\t\t\t// Initialize admin's recent projects array if needed\n\t\t\t\tif (!this.recentProjects[adminId]) {\n\t\t\t\t\tthis.recentProjects[adminId] = []\n\t\t\t\t}\n\n\t\t\t\t// Remove project if it already exists\n\t\t\t\tthis.recentProjects[adminId] = this.recentProjects[adminId].filter(\n\t\t\t\t\t(p) => p.id !== value.id,\n\t\t\t\t)\n\n\t\t\t\t// Add new project at the beginning\n\t\t\t\tthis.recentProjects[adminId].unshift(value)\n\n\t\t\t\t// Limit to max recent projects\n\t\t\t\tif (this.recentProjects[adminId].length > MAX_RECENT_PROJECTS) {\n\t\t\t\t\tthis.recentProjects[adminId] = this.recentProjects[adminId].slice(\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tMAX_RECENT_PROJECTS,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\tlocalStorage.setItem(\n\t\t\t\t\tRECENT_PROJECT_LIST_KEY,\n\t\t\t\t\tJSON.stringify(this.recentProjects),\n\t\t\t\t)\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error updating recent projects:\", err)\n\t\t\t\tlocalStorage.setItem(RECENT_PROJECT_LIST_KEY, JSON.stringify({}))\n\t\t\t}\n\t\t},\n\n\t\tsetBreadCrumbs(value) {\n\t\t\tthis.breadCrumbs = value\n\t\t},\n\n\t\tgetRecentProjects(adminId) {\n\t\t\tif (!this.recentProjects[adminId]) return null\n\t\t\treturn this.recentProjects[adminId].filter(\n\t\t\t\t(item) => !Array.isArray(item) && item?.id,\n\t\t\t)\n\t\t},\n\n\t\tremoveFromRecents(adminId, projectId) {\n\t\t\ttry {\n\t\t\t\tif (!this.recentProjects[adminId]) {\n\t\t\t\t\tthis.recentProjects[adminId] = []\n\t\t\t\t} else {\n\t\t\t\t\tthis.recentProjects[adminId] = this.recentProjects[adminId].filter(\n\t\t\t\t\t\t(project) => project.id !== projectId,\n\t\t\t\t\t)\n\t\t\t\t\tlocalStorage.setItem(\n\t\t\t\t\t\tRECENT_PROJECT_LIST_KEY,\n\t\t\t\t\t\tJSON.stringify(this.recentProjects),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Error removing from recents:\", err)\n\t\t\t\tlocalStorage.setItem(RECENT_PROJECT_LIST_KEY, JSON.stringify({}))\n\t\t\t}\n\t\t},\n\t},\n})\n","import { useToast as toastLibraryProxy } from \"vue-toastification\"\n\n/**\n * A wrapper around the toast library of choice\n * we are simply wrapping useToast so if we ever need to change\n * libraries we can do so in one place\n */\n\nexport const useToast = () => {\n\treturn toastLibraryProxy()\n}\n","/*!\n * Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n * Copyright 2024 Fonticons, Inc.\n */\nfunction _defineProperty(e, r, t) {\n return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && _setPrototypeOf(t, e);\n}\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (e, r) {\n return new BabelRegExp(e, void 0, r);\n };\n var e = RegExp.prototype,\n r = new WeakMap();\n function BabelRegExp(e, t, p) {\n var o = RegExp(e, t);\n return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype);\n }\n function buildGroups(e, t) {\n var p = r.get(t);\n return Object.keys(p).reduce(function (r, t) {\n var o = p[t];\n if (\"number\" == typeof o) r[t] = e[o];else {\n for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;\n r[t] = e[o[i]];\n }\n return r;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {\n var t = e.exec.call(this, r);\n if (t) {\n t.groups = buildGroups(t, this);\n var p = t.indices;\n p && (p.groups = buildGroups(p, this));\n }\n return t;\n }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {\n if (\"string\" == typeof p) {\n var o = r.get(this);\n return e[Symbol.replace].call(this, t, p.replace(/\\$<([^>]+)>/g, function (e, r) {\n var t = o[r];\n return \"$\" + (Array.isArray(t) ? t.join(\"$\") : t);\n }));\n }\n if (\"function\" == typeof p) {\n var i = this;\n return e[Symbol.replace].call(this, t, function () {\n var e = arguments;\n return \"object\" != typeof e[e.length - 1] && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);\n });\n }\n return e[Symbol.replace].call(this, t, p);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nconst noop = () => {};\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar p = /fa(s|r|l|t|d|dr|dl|dt|b|k|kd|ss|sr|sl|st|sds|sdr|sdl|sdt)?[\\-\\ ]/,\n g = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar S = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n duotone: {\n fa: \"solid\",\n fad: \"solid\",\n \"fa-solid\": \"solid\",\n \"fa-duotone\": \"solid\",\n fadr: \"regular\",\n \"fa-regular\": \"regular\",\n fadl: \"light\",\n \"fa-light\": \"light\",\n fadt: \"thin\",\n \"fa-thin\": \"thin\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\",\n fasdr: \"regular\",\n \"fa-regular\": \"regular\",\n fasdl: \"light\",\n \"fa-light\": \"light\",\n fasdt: \"thin\",\n \"fa-thin\": \"thin\"\n }\n },\n A = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n P = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar s = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n L = [s, t, r, o];\nvar G = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n duotone: {\n 900: \"fad\",\n 400: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar lt = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\",\n 400: \"fadr\",\n normal: \"fadr\",\n 300: \"fadl\",\n 100: \"fadt\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\",\n 400: \"fasdr\",\n normal: \"fasdr\",\n 300: \"fasdl\",\n 100: \"fasdt\"\n }\n };\nvar pt = new Map([[\"classic\", {\n defaultShortPrefixId: \"fas\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\", \"brands\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp\", {\n defaultShortPrefixId: \"fass\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"duotone\", {\n defaultShortPrefixId: \"fad\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }], [\"sharp-duotone\", {\n defaultShortPrefixId: \"fasds\",\n defaultStyleId: \"solid\",\n styleIds: [\"solid\", \"regular\", \"light\", \"thin\"],\n futureStyleIds: [],\n defaultFontWeight: 900\n }]]),\n xt = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n brands: \"fab\"\n },\n duotone: {\n solid: \"fad\",\n regular: \"fadr\",\n light: \"fadl\",\n thin: \"fadt\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\",\n regular: \"fasdr\",\n light: \"fasdl\",\n thin: \"fasdt\"\n }\n };\nvar Ft = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"],\n St = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n },\n At = [\"kit\"];\nvar Ct = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n};\nvar Lt = [\"fak\", \"fakd\"],\n Wt = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n };\nvar Et = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n };\n\nvar t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n },\n r$1 = [\"fa-classic\", \"fa-duotone\", \"fa-sharp\", \"fa-sharp-duotone\"];\nvar bt$1 = [\"fak\", \"fa-kit\", \"fakd\", \"fa-kit-duotone\"];\nvar Yt = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n };\nvar ua = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n duotone: {\n \"fa-regular\": \"fadr\",\n \"fa-light\": \"fadl\",\n \"fa-thin\": \"fadt\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\",\n \"fa-regular\": \"fasdr\",\n \"fa-light\": \"fasdl\",\n \"fa-thin\": \"fasdt\"\n }\n },\n I$1 = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\", \"fad\"],\n duotone: [\"fadr\", \"fadl\", \"fadt\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\", \"fasdr\", \"fasdl\", \"fasdt\"]\n },\n ga = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n duotone: {\n fadr: \"fa-regular\",\n fadl: \"fa-light\",\n fadt: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\",\n fasdr: \"fa-regular\",\n fasdl: \"fa-light\",\n fasdt: \"fa-thin\"\n }\n },\n x = [\"fa-solid\", \"fa-regular\", \"fa-light\", \"fa-thin\", \"fa-duotone\", \"fa-brands\"],\n Ia = [\"fa\", \"fas\", \"far\", \"fal\", \"fat\", \"fad\", \"fadr\", \"fadl\", \"fadt\", \"fab\", \"fass\", \"fasr\", \"fasl\", \"fast\", \"fasds\", \"fasdr\", \"fasdl\", \"fasdt\", ...r$1, ...x],\n m$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n c$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n F$1 = c$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n ma = [...Object.keys(I$1), ...m$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(c$1.map(a => \"\".concat(a, \"x\"))).concat(F$1.map(a => \"w-\".concat(a)));\nvar wa = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n };\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[s];\n }\n });\n}\nconst _PREFIX_TO_STYLE = _objectSpread2({}, S);\n\n// We changed FACSSClassesToStyleId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _PREFIX_TO_STYLE below, so we are manually adding\n// {'fa-duotone': 'duotone'}\n_PREFIX_TO_STYLE[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n 'fa-duotone': 'duotone'\n}), S[s]), St['kit']), St['kit-duotone']);\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = _objectSpread2({}, xt);\n\n// We changed FAStyleIdToShortPrefixId in the icons repo to be canonical and as such, \"classic\" family does not have any\n// duotone styles. But we do still need duotone in _STYLE_TO_PREFIX below, so we are manually adding {duotone: 'fad'}\n_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n duotone: 'fad'\n}), _STYLE_TO_PREFIX[s]), Et['kit']), Et['kit-duotone']);\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = _objectSpread2({}, ga);\n_PREFIX_TO_LONG_STYLE[s] = _objectSpread2(_objectSpread2({}, _PREFIX_TO_LONG_STYLE[s]), Wt['kit']);\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = _objectSpread2({}, ua);\n_LONG_STYLE_TO_PREFIX[s] = _objectSpread2(_objectSpread2({}, _LONG_STYLE_TO_PREFIX[s]), Ct['kit']);\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = p; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = g;\nconst _FONT_WEIGHT_TO_PREFIX = _objectSpread2({}, G);\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = A;\nconst RESERVED_CLASSES = [...At, ...ma];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\n }\n}\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nconst _default = {\n styleDefault: 'solid',\n familyDefault: s,\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\n// familyPrefix is deprecated but we must still support it if present\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nconst _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n});\n\n// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nlet _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\n\nconst w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\nlet loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\").concat(tag, \">\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"([^\"]+)\".*path d=\"([^\"]+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\".*path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"([^\"]+)\".*d=\"([^\"]+)\"/, {\n cls1: 1,\n d1: 2\n})];\n\nconst {\n styles,\n shims\n} = namespace;\nconst FAMILY_NAMES = Object.keys(PREFIX_TO_LONG_STYLE);\nconst PREFIXES_FOR_FAMILY = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = Object.keys(PREFIX_TO_LONG_STYLE[familyId]);\n return acc;\n}, {});\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n });\n\n // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getFamilyId(values) {\n let family = s;\n const famProps = FAMILY_NAMES.reduce((acc, familyId) => {\n acc[familyId] = \"\".concat(config.cssPrefix, \"-\").concat(familyId);\n return acc;\n }, {});\n L.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n return family;\n}\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = s\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n\n // handles the exception of passing in only a family of 'duotone' with no style\n if (family === t && !styleOrPrefix) {\n return 'fad';\n }\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nfunction moveNonFaClassesToRest(classNames) {\n let rest = [];\n let iconName = null;\n classNames.forEach(cls => {\n const result = getIconName(config.cssPrefix, cls);\n if (result) {\n iconName = result;\n } else if (cls) {\n rest.push(cls);\n }\n });\n return {\n iconName,\n rest\n };\n}\nfunction sortedUniqueValues(arr) {\n return arr.sort().filter((value, index, arr) => {\n return arr.indexOf(value) === index;\n });\n}\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n let givenPrefix = null;\n const faCombinedClasses = Ia.concat(bt$1);\n const faStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => faCombinedClasses.includes(cls)));\n const nonStyleOrFamilyClasses = sortedUniqueValues(values.filter(cls => !Ia.includes(cls)));\n const faStyles = faStyleOrFamilyClasses.filter(cls => {\n givenPrefix = cls;\n return !P.includes(cls);\n });\n const [styleFromValues = null] = faStyles;\n const family = getFamilyId(faStyleOrFamilyClasses);\n const canonical = _objectSpread2(_objectSpread2({}, moveNonFaClassesToRest(nonStyleOrFamilyClasses)), {}, {\n prefix: getCanonicalPrefix(styleFromValues, {\n family\n })\n });\n return _objectSpread2(_objectSpread2(_objectSpread2({}, canonical), getDefaultCanonicalPrefix({\n values,\n family,\n styles,\n config,\n canonical,\n givenPrefix\n })), applyShimAndAlias(skipLookups, givenPrefix, canonical));\n}\nfunction applyShimAndAlias(skipLookups, givenPrefix, canonical) {\n let {\n prefix,\n iconName\n } = canonical;\n if (skipLookups || !prefix || !iconName) {\n return {\n prefix,\n iconName\n };\n }\n const shim = givenPrefix === 'fa' ? byOldName(iconName) : {};\n const aliasIconName = byAlias(prefix, iconName);\n iconName = shim.iconName || aliasIconName || iconName;\n prefix = shim.prefix || prefix;\n if (prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n prefix = 'fas';\n }\n return {\n prefix,\n iconName\n };\n}\nconst newCanonicalFamilies = L.filter(familyId => {\n return familyId !== s || familyId !== t;\n});\nconst newCanonicalStyles = Object.keys(ga).filter(key => key !== s).map(key => Object.keys(ga[key])).flat();\nfunction getDefaultCanonicalPrefix(prefixOptions) {\n const {\n values,\n family,\n canonical,\n givenPrefix = '',\n styles = {},\n config: config$$1 = {}\n } = prefixOptions;\n const isDuotoneFamily = family === t;\n const valuesHasDuotone = values.includes('fa-duotone') || values.includes('fad');\n const defaultFamilyIsDuotone = config$$1.familyDefault === 'duotone';\n const canonicalPrefixIsDuotone = canonical.prefix === 'fad' || canonical.prefix === 'fa-duotone';\n if (!isDuotoneFamily && (valuesHasDuotone || defaultFamilyIsDuotone || canonicalPrefixIsDuotone)) {\n canonical.prefix = 'fad';\n }\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (!canonical.prefix && newCanonicalFamilies.includes(family)) {\n const validPrefix = Object.keys(styles).find(key => newCanonicalStyles.includes(key));\n if (validPrefix || config$$1.autoFetchSvg) {\n const defaultPrefix = pt.get(family).defaultShortPrefixId;\n canonical.prefix = defaultPrefix;\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = _objectSpread2(_objectSpread2({}, this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]);\n\n // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n const longPrefix = PREFIX_TO_LONG_STYLE[s][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n reset() {\n this.definitions = {};\n }\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id\n }),\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = Lt.includes(prefix);\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c$$1 => extra.classes.indexOf(c$$1) === -1).filter(c$$1 => c$$1 !== '' || !!c$$1).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n const args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n const styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n const styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\n\nconst noop$1 = () => {};\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.7.2\\\"\";\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n return comment;\n}\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1];\n\n // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\n\nconst {\n styles: styles$2\n} = namespace;\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nfunction getKnownPrefixes() {\n return [...Ft, ...Ia];\n}\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n const prefixes = config.autoFetchSvg ? getKnownPrefixes() : P.concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n let candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {\n // noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask\n }));\n };\n}\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n let nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n };\n }\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n };\n }\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n };\n },\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, {\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n}), lt), wa), Yt);\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c$$1 => c$$1.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n }\n\n // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n }));\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(a$$1 => toHtml(a$$1)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto() {\n disconnect();\n },\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n };\n }\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children,\n attributes\n };\n };\n }\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n };\n\n // Ring\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n const OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n const dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","import { parse, icon, config, text } from '@fortawesome/fontawesome-svg-core';\nimport { h, defineComponent, computed, watch } from 'vue';\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nfunction _toPrimitive(t, r) {\n if (\"object\" != typeof t || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != typeof i) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nfunction _toPropertyKey(t) {\n var i = _toPrimitive(t, \"string\");\n return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _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}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\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}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar humps$1 = {exports: {}};\n\n(function (module) {\n(function(global) {\n\n\t var _processKeys = function(convert, obj, options) {\n\t if(!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {\n\t return obj;\n\t }\n\n\t var output,\n\t i = 0,\n\t l = 0;\n\n\t if(_isArray(obj)) {\n\t output = [];\n\t for(l=obj.length; i} classes The class list to convert.\n * @returns {Object}\n */\nfunction classToObject(classes) {\n return classes.split(/\\s+/).reduce(function (output, className) {\n output[className] = true;\n return output;\n }, {});\n}\n\n/**\n * Converts a FontAwesome abstract element of an icon into a Vue VNode.\n * @param {AbstractElement | String} abstractElement The element to convert.\n * @param {Object} props The user-defined props.\n * @param {Object} attrs The user-defined native HTML attributes.\n * @returns {VNode}\n */\nfunction convert(abstractElement) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // If the abstract element is a string, we'll just return a string render function\n if (typeof abstractElement === 'string') {\n return abstractElement;\n }\n\n // Converting abstract element children into Vue VNodes\n var children = (abstractElement.children || []).map(function (child) {\n return convert(child);\n });\n\n // Converting abstract element attributes into valid Vue format\n var mixins = Object.keys(abstractElement.attributes || {}).reduce(function (mixins, key) {\n var value = abstractElement.attributes[key];\n switch (key) {\n case 'class':\n mixins.class = classToObject(value);\n break;\n case 'style':\n mixins.style = styleToObject(value);\n break;\n default:\n mixins.attrs[key] = value;\n }\n return mixins;\n }, {\n attrs: {},\n class: {},\n style: {}\n });\n\n // Now, we'll return the VNode\n attrs.class;\n var _attrs$style = attrs.style,\n aStyle = _attrs$style === void 0 ? {} : _attrs$style,\n otherAttrs = _objectWithoutProperties(attrs, _excluded);\n return h(abstractElement.tag, _objectSpread2(_objectSpread2(_objectSpread2({}, props), {}, {\n class: mixins.class,\n style: _objectSpread2(_objectSpread2({}, mixins.style), aStyle)\n }, mixins.attrs), otherAttrs), children);\n}\n\nvar PRODUCTION = false;\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction objectWithKey(key, value) {\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\nfunction classList(props) {\n var _classes;\n var classes = (_classes = {\n 'fa-spin': props.spin,\n 'fa-pulse': props.pulse,\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-li': props.listItem,\n 'fa-inverse': props.inverse,\n 'fa-flip': props.flip === true,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both'\n }, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_classes, \"fa-\".concat(props.size), props.size !== null), \"fa-rotate-\".concat(props.rotation), props.rotation !== null), \"fa-pull-\".concat(props.pull), props.pull !== null), 'fa-swap-opacity', props.swapOpacity), 'fa-bounce', props.bounce), 'fa-shake', props.shake), 'fa-beat', props.beat), 'fa-fade', props.fade), 'fa-beat-fade', props.beatFade), 'fa-flash', props.flash), _defineProperty(_defineProperty(_classes, 'fa-spin-pulse', props.spinPulse), 'fa-spin-reverse', props.spinReverse));\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\nfunction normalizeIconArgs(icon) {\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n if (parse.icon) {\n return parse.icon(icon);\n }\n if (icon === null) {\n return null;\n }\n if (_typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n }\n if (Array.isArray(icon) && icon.length === 2) {\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n }\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\nvar FontAwesomeIcon = defineComponent({\n name: 'FontAwesomeIcon',\n props: {\n border: {\n type: Boolean,\n default: false\n },\n fixedWidth: {\n type: Boolean,\n default: false\n },\n flip: {\n type: [Boolean, String],\n default: false,\n validator: function validator(value) {\n return [true, false, 'horizontal', 'vertical', 'both'].indexOf(value) > -1;\n }\n },\n icon: {\n type: [Object, Array, String],\n required: true\n },\n mask: {\n type: [Object, Array, String],\n default: null\n },\n maskId: {\n type: String,\n default: null\n },\n listItem: {\n type: Boolean,\n default: false\n },\n pull: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['right', 'left'].indexOf(value) > -1;\n }\n },\n pulse: {\n type: Boolean,\n default: false\n },\n rotation: {\n type: [String, Number],\n default: null,\n validator: function validator(value) {\n return [90, 180, 270].indexOf(Number.parseInt(value, 10)) > -1;\n }\n },\n swapOpacity: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x'].indexOf(value) > -1;\n }\n },\n spin: {\n type: Boolean,\n default: false\n },\n transform: {\n type: [String, Object],\n default: null\n },\n symbol: {\n type: [Boolean, String],\n default: false\n },\n title: {\n type: String,\n default: null\n },\n titleId: {\n type: String,\n default: null\n },\n inverse: {\n type: Boolean,\n default: false\n },\n bounce: {\n type: Boolean,\n default: false\n },\n shake: {\n type: Boolean,\n default: false\n },\n beat: {\n type: Boolean,\n default: false\n },\n fade: {\n type: Boolean,\n default: false\n },\n beatFade: {\n type: Boolean,\n default: false\n },\n flash: {\n type: Boolean,\n default: false\n },\n spinPulse: {\n type: Boolean,\n default: false\n },\n spinReverse: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var icon$1 = computed(function () {\n return normalizeIconArgs(props.icon);\n });\n var classes = computed(function () {\n return objectWithKey('classes', classList(props));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var mask = computed(function () {\n return objectWithKey('mask', normalizeIconArgs(props.mask));\n });\n var renderedIcon = computed(function () {\n return icon(icon$1.value, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes.value), transform.value), mask.value), {}, {\n symbol: props.symbol,\n title: props.title,\n titleId: props.titleId,\n maskId: props.maskId\n }));\n });\n watch(renderedIcon, function (value) {\n if (!value) {\n return log('Could not find one or more icon(s)', icon$1.value, mask.value);\n }\n }, {\n immediate: true\n });\n var vnode = computed(function () {\n return renderedIcon.value ? convert(renderedIcon.value.abstract[0], {}, attrs) : null;\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nvar FontAwesomeLayers = defineComponent({\n name: 'FontAwesomeLayers',\n props: {\n fixedWidth: {\n type: Boolean,\n default: false\n }\n },\n setup: function setup(props, _ref) {\n var slots = _ref.slots;\n var familyPrefix = config.familyPrefix;\n var className = computed(function () {\n return [\"\".concat(familyPrefix, \"-layers\")].concat(_toConsumableArray(props.fixedWidth ? [\"\".concat(familyPrefix, \"-fw\")] : []));\n });\n return function () {\n return h('div', {\n class: className.value\n }, slots.default ? slots.default() : []);\n };\n }\n});\n\nvar FontAwesomeLayersText = defineComponent({\n name: 'FontAwesomeLayersText',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n transform: {\n type: [String, Object],\n default: null\n },\n counter: {\n type: Boolean,\n default: false\n },\n position: {\n type: String,\n default: null,\n validator: function validator(value) {\n return ['bottom-left', 'bottom-right', 'top-left', 'top-right'].indexOf(value) > -1;\n }\n }\n },\n setup: function setup(props, _ref) {\n var attrs = _ref.attrs;\n var familyPrefix = config.familyPrefix;\n var classes = computed(function () {\n return objectWithKey('classes', [].concat(_toConsumableArray(props.counter ? [\"\".concat(familyPrefix, \"-layers-counter\")] : []), _toConsumableArray(props.position ? [\"\".concat(familyPrefix, \"-layers-\").concat(props.position)] : [])));\n });\n var transform = computed(function () {\n return objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n });\n var abstractElement = computed(function () {\n var _text = text(props.value.toString(), _objectSpread2(_objectSpread2({}, transform.value), classes.value)),\n abstract = _text.abstract;\n if (props.counter) {\n abstract[0].attributes.class = abstract[0].attributes.class.replace('fa-layers-text', '');\n }\n return abstract[0];\n });\n var vnode = computed(function () {\n return convert(abstractElement.value, {}, attrs);\n });\n return function () {\n return vnode.value;\n };\n }\n});\n\nexport { FontAwesomeIcon, FontAwesomeLayers, FontAwesomeLayersText };\n","// import { fas, far, fal, fat, fab } from \"@awesome.me/kit-b1b42196dd/icons\"\nimport * as fas from \"@awesome.me/kit-b1b42196dd/icons/classic/solid\"\nimport * as far from \"@awesome.me/kit-b1b42196dd/icons/classic/regular\"\nimport * as fal from \"@awesome.me/kit-b1b42196dd/icons/classic/light\"\nimport * as fat from \"@awesome.me/kit-b1b42196dd/icons/classic/thin\"\nimport * as fab from \"@awesome.me/kit-b1b42196dd/icons/classic/brands\"\n\nexport const lookupIcon = (iClass, iStyle = \"far\") => {\n\tif (!iClass) return {}\n\tlet iconClass =\n\t\t\"fa\" + toTitleCase(iClass.replace(/-/g, \" \")).replace(/ /g, \"\")\n\tlet iconStyle = iStyle\n\tlet icon = {}\n\tswitch (iconStyle) {\n\t\tcase \"far\":\n\t\t\ticon = far[iconClass] || {}\n\t\t\tbreak\n\t\tcase \"fal\":\n\t\t\ticon = fal[iconClass] || {}\n\t\t\tbreak\n\t\tcase \"fat\":\n\t\t\ticon = fat[iconClass] || {}\n\t\t\tbreak\n\t\tcase \"fab\":\n\t\t\ticon = fab[iconClass] || {}\n\t\t\tbreak\n\t\tdefault:\n\t\t\ticon = fas[iconClass] || {}\n\t\t\tbreak\n\t}\n\treturn icon\n}\nfunction toTitleCase(str) {\n\treturn str.replace(\n\t\t/\\w\\S*/g,\n\t\t(text) => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase(),\n\t)\n}\n","import { defineComponent as re, useAttrs as Pa, computed as T, openBlock as x, createBlock as ee, resolveDynamicComponent as ue, normalizeClass as Y, withCtx as Q, renderSlot as oe, ref as y, withDirectives as je, unref as _, createElementBlock as R, Fragment as Ie, mergeProps as $e, createCommentVNode as K, onMounted as Fe, onUnmounted as dt, watch as pe, withKeys as ke, renderList as kt, createElementVNode as H, toDisplayString as se, normalizeStyle as Ce, inject as N, watchEffect as Ze, provide as q, Transition as At, vShow as Hn, reactive as $t, nextTick as Ge, useSlots as er, createVNode as Ee, onBeforeUnmount as tr, withModifiers as _e, createTextVNode as et, resolveComponent as nr, KeepAlive as Pc, onUpdated as $i, vModelRadio as ro, Teleport as Ut, createSlots as Vc, toRefs as os, toHandlerKey as Rc, onBeforeUpdate as sr, vModelText as Ic, onBeforeMount as ar, TransitionGroup as Fc, isRef as co, toRaw as uo } from \"vue\";\nconst Nc = {\n name: \"MDBBadge\"\n}, uS = /* @__PURE__ */ re({\n ...Nc,\n props: {\n badge: String,\n color: String,\n pill: Boolean,\n dot: Boolean,\n notification: Boolean,\n tag: {\n type: String,\n default: \"span\"\n }\n },\n setup(t, { expose: e }) {\n const n = t, s = Pa(), a = T(() => [\n \"badge\",\n n.color && `badge-${n.color}`,\n n.badge && `bg-${n.badge}`,\n n.pill && \"rounded-pill\",\n n.dot && \"badge-dot\",\n n.notification && \"badge-notification\"\n ]);\n return e({ attrs: s }), (i, o) => (x(), ee(ue(t.tag), {\n class: Y(a.value)\n }, {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Hc = [\n \"primary\",\n \"secondary\",\n \"success\",\n \"danger\",\n \"warning\",\n \"info\",\n \"light\",\n \"dark\"\n], Wc = \"rgba({{color}}, 0.2) 0, rgba({{color}}, 0.3) 40%, rgba({{color}}, 0.4) 50%, rgba({{color}}, 0.5) 60%, rgba({{color}}, 0) 70%\", zc = [0, 0, 0], fo = 0.5, Yc = (t) => t && Hc.includes(t.toLowerCase()), jc = (t, e) => {\n const n = (i) => (i.length < 7 && (i = `#${i[1]}${i[1]}${i[2]}${i[2]}${i[3]}${i[3]}`), [\n parseInt(i.substr(1, 2), 16),\n parseInt(i.substr(3, 2), 16),\n parseInt(i.substr(5, 2), 16)\n ]), s = (i) => {\n const o = document.body.appendChild(\n document.createElement(\"fictum\")\n ), l = \"rgb(1, 2, 3)\";\n return o.style.color = l, o.style.color !== l || (o.style.color = i, o.style.color === l || o.style.color === \"\") ? (document.body.removeChild(o), e) : (i = getComputedStyle(o).color, document.body.removeChild(o), i);\n }, a = (i) => {\n const o = i.match(/[.\\d]+/g);\n if (o === null)\n return;\n const l = o.map((r) => +Number(r));\n return l.length = 3, l;\n };\n return typeof t == \"string\" && t.toLowerCase() === \"transparent\" ? e : typeof t == \"string\" && t[0] === \"#\" ? n(t) : (typeof t == \"string\" && t.indexOf(\"rgb\") === -1 && (t = s(t)), typeof t == \"string\" && t.indexOf(\"rgb\") === 0 ? a(t) : e);\n}, Xc = ({ offsetX: t, offsetY: e, height: n, width: s }) => {\n const a = e <= n / 2, i = t <= s / 2, o = (f, d) => Math.sqrt(f ** 2 + d ** 2), l = e === n / 2 && t === s / 2, r = {\n first: a === !0 && i === !1,\n second: a === !0 && i === !0,\n third: a === !1 && i === !0,\n fourth: a === !1 && i === !1\n }, c = {\n topLeft: o(t, e),\n topRight: o(s - t, e),\n bottomLeft: o(t, n - e),\n bottomRight: o(s - t, n - e)\n };\n let u = 0;\n return l || r.fourth ? u = c.topLeft : r.third ? u = c.topRight : r.second ? u = c.bottomRight : r.first && (u = c.bottomLeft), u * 2;\n}, Uc = (t, e) => {\n for (const n in e)\n t.style[n] = e[n];\n}, qc = (t) => {\n const e = jc(t, zc);\n if (t !== \"\" && e) {\n const n = e.join(\",\");\n return `radial-gradient(circle, ${Wc.split(\"{{color}}\").join(`${n}`)})`;\n }\n}, Kc = (t, e, n) => {\n const s = document.createElement(\"div\");\n s.classList.add(\"ripple-wave\");\n const a = {\n offsetX: n.centered ? e.height / 2 : e.left,\n offsetY: n.centered ? e.width / 2 : e.top,\n height: e.height,\n width: e.width\n }, i = Xc(a), o = n.radius || i / 2, l = {\n delay: n.duration && n.duration * fo,\n duration: n.duration && n.duration - n.duration * fo\n }, r = {\n left: n.centered ? `${Math.round(e.width / 2 - o)}px` : `${Math.round(e.left - o)}px`,\n top: n.centered ? `${Math.round(e.height / 2 - o)}px` : `${Math.round(e.top - o)}px`,\n height: `${Math.round(\n n.radius && n.radius * 2 || i\n )}px`,\n width: `${Math.round(\n n.radius && n.radius * 2 || i\n )}px`,\n transitionDelay: `0s, ${l.delay}ms`,\n transitionDuration: `${n.duration}ms, ${l.duration}ms`\n };\n n.unbound && t.classList.add(\"ripple-surface-unbound\"), Yc(n.color) ? t.classList.add(`ripple-surface-${n.color}`) : r.backgroundImage = qc(n.color), Uc(s, r), t.appendChild(s), setTimeout(() => {\n s.classList.add(\"active\");\n }, 50), setTimeout(\n () => {\n t.removeChild(s);\n },\n n.duration ? n.duration + 1e3 : 1e3\n );\n}, Ct = {\n mounted(t, e) {\n if (e.value === !1)\n return;\n const n = {\n centered: e.value && e.value.centered || !1,\n color: e.value && e.value.color || \"\",\n duration: e.value && e.value.duration || 500,\n radius: e.value && e.value.radius || 0,\n unbound: e.value && e.value.unbound || !1\n };\n t.classList.add(\"ripple-surface\"), t.waves = (s) => {\n const a = {\n top: s.offsetY,\n left: s.offsetX,\n height: t.offsetHeight,\n width: t.offsetWidth\n };\n Kc(t, a, n);\n }, t.addEventListener(\"click\", (s) => t.waves(s));\n },\n updated(t, e) {\n e.value !== !1 && (t.classList.contains(\"ripple-surface\") || t.classList.add(\"ripple-surface\"));\n },\n unmounted(t) {\n t.removeEventListener(\"click\", (e) => t.waves(e));\n }\n}, Gc = {\n name: \"MDBBtn\"\n}, un = /* @__PURE__ */ re({\n ...Gc,\n props: {\n color: String,\n size: String,\n outline: String,\n rounded: Boolean,\n floating: Boolean,\n toggler: Boolean,\n toggle: Boolean,\n role: {\n type: String,\n default: \"button\"\n },\n type: {\n type: String,\n default: \"button\"\n },\n tag: {\n type: String,\n default: \"button\"\n },\n block: {\n type: Boolean,\n default: !1\n },\n ripple: {\n type: [Object, Boolean],\n default: (t) => t.outline || t.color === \"light\" || t.color === \"link\" ? { color: \"dark\" } : !0\n },\n picker: Boolean\n },\n emits: [\"update:toggle\"],\n setup(t, { emit: e }) {\n const n = t, s = y(n.toggle), a = T(() => [\n !n.picker && \"btn\",\n n.color && `btn-${n.color}`,\n n.size && `btn-${n.size}`,\n n.outline && `btn-outline-${n.outline}`,\n n.rounded && \"btn-rounded\",\n n.floating && \"btn-floating\",\n n.block && \"btn-block\",\n s.value && \"active\"\n ]), i = () => {\n n.toggler && (s.value = !s.value, e(\"update:toggle\", s.value));\n };\n return (o, l) => je((x(), ee(ue(t.tag), {\n type: t.type,\n role: t.role,\n class: Y(a.value),\n onClick: i\n }, {\n default: Q(() => [\n oe(o.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"type\", \"role\", \"class\"])), [\n [_(Ct), t.ripple]\n ]);\n }\n}), Zc = {\n name: \"MDBBtnGroup\"\n}, dS = /* @__PURE__ */ re({\n ...Zc,\n props: {\n size: String,\n vertical: Boolean,\n role: {\n type: String,\n default: \"group\"\n },\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n e.size && `btn-group-${e.size}`,\n e.vertical ? \"btn-group-vertical\" : \"btn-group\"\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value),\n role: t.role\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"role\"]));\n }\n}), Jc = {\n name: \"MDBBtnClose\"\n}, Qc = /* @__PURE__ */ re({\n ...Jc,\n props: {\n white: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"btn-close\", e.white && \"btn-close-white\"]);\n return (s, a) => (x(), R(\"button\", {\n class: Y(n.value),\n \"aria-label\": \"Close\"\n }, null, 2));\n }\n}), eu = {\n name: \"MDBCard\"\n}, fS = /* @__PURE__ */ re({\n ...eu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n border: String,\n bg: String,\n text: [String, Array],\n shadow: String\n },\n setup(t) {\n const e = t, n = T(() => [\n \"card\",\n e.border && `border border-${e.border}`,\n e.bg && `bg-${e.bg}`,\n e.shadow && `shadow-${e.shadow}`,\n e.text && s(e.text)\n ]), s = (a) => typeof a == \"string\" ? `text-${a}` : a.map((i) => `text-${i}`.trim()).join(\" \");\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), tu = {\n name: \"MDBCardBody\"\n}, hS = /* @__PURE__ */ re({\n ...tu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n text: {\n type: [String, Array]\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"card-body\", e.text && s(e.text)]), s = (a) => typeof a == \"string\" ? `text-${a}` : a.map((i) => `text-${i}`.trim()).join(\" \");\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), nu = {\n name: \"MDBCardTitle\"\n}, pS = /* @__PURE__ */ re({\n ...nu,\n props: {\n tag: {\n type: String,\n default: \"h5\"\n },\n subtitle: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => e.subtitle ? e.tag !== \"h5\" ? e.tag : \"h6\" : e.tag), s = T(() => [e.subtitle ? \"card-subtitle\" : \"card-title\"]);\n return (a, i) => (x(), ee(ue(n.value), {\n class: Y(s.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), su = {\n name: \"MDBCardText\"\n}, vS = /* @__PURE__ */ re({\n ...su,\n props: {\n tag: {\n type: String,\n default: \"p\"\n }\n },\n setup(t) {\n const e = T(() => [\"card-text\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), au = {\n name: \"MDBCardImg\"\n}, mS = /* @__PURE__ */ re({\n ...au,\n props: {\n tag: {\n type: String,\n default: \"img\"\n },\n src: {\n type: String,\n required: !0\n },\n alt: String,\n top: {\n type: Boolean,\n default: !1\n },\n bottom: {\n type: Boolean,\n default: !1\n },\n fluid: {\n type: Boolean,\n default: !1\n },\n overlay: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n e.top && \"card-img-top\",\n e.bottom && \"card-img-bottom\",\n e.fluid && \"img-fluid\",\n e.overlay && \"card-img\",\n !e.top && !e.bottom && !e.fluid && !e.overlay && \"card-img\"\n ]);\n return (s, a) => (x(), R(Ie, null, [\n (x(), ee(ue(t.tag), $e({\n src: t.src,\n alt: t.alt,\n class: n.value\n }, s.$attrs), null, 16, [\"src\", \"alt\", \"class\"])),\n t.overlay ? (x(), R(\"div\", $e({\n key: 0,\n class: \"card-img-overlay\"\n }, s.$attrs), [\n oe(s.$slots, \"default\")\n ], 16)) : K(\"\", !0)\n ], 64));\n }\n}), iu = {\n name: \"MDBCardHeader\"\n}, gS = /* @__PURE__ */ re({\n ...iu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n bg: String,\n border: String\n },\n setup(t) {\n const e = t, n = T(() => [\n \"card-header\",\n e.border && `border-${e.border}`,\n e.bg && `bg-${e.bg}`\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), ou = {\n name: \"MDBCardFooter\"\n}, bS = /* @__PURE__ */ re({\n ...ou,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n bg: String,\n border: String\n },\n setup(t) {\n const e = t, n = T(() => [\n \"card-footer\",\n e.border && `border-${e.border}`,\n e.bg && `bg-${e.bg}`\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), lu = {\n name: \"MDBCardLink\"\n}, yS = /* @__PURE__ */ re({\n ...lu,\n props: {\n tag: {\n type: String,\n default: \"a\"\n }\n },\n setup(t) {\n const e = T(() => [\"card-link\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), ru = {\n name: \"MDBCardGroup\"\n}, xS = /* @__PURE__ */ re({\n ...ru,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = T(() => [\"card-group\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), cu = {\n key: 0,\n class: \"carousel-indicators\"\n}, uu = [\"ariaCurrent\", \"ariaLabel\", \"onClick\"], du = {\n key: 0,\n class: \"img-fluid\",\n autoplay: \"\",\n loop: \"\",\n muted: \"\"\n}, fu = [\"src\", \"type\"], hu = [\"src\", \"alt\"], pu = { key: 0 }, vu = { key: 1 }, mu = /* @__PURE__ */ H(\"span\", {\n class: \"carousel-control-prev-icon\",\n \"aria-hidden\": \"true\"\n}, null, -1), gu = /* @__PURE__ */ H(\"span\", { class: \"visually-hidden\" }, \"Previous\", -1), bu = [\n mu,\n gu\n], yu = /* @__PURE__ */ H(\"span\", {\n class: \"carousel-control-next-icon\",\n \"aria-hidden\": \"true\"\n}, null, -1), xu = /* @__PURE__ */ H(\"span\", { class: \"visually-hidden\" }, \"Next\", -1), ku = [\n yu,\n xu\n], wu = {\n name: \"MDBCarousel\"\n}, kS = /* @__PURE__ */ re({\n ...wu,\n props: {\n captionsClass: {\n type: String,\n default: \"carousel-caption d-none d-md-block\"\n },\n controls: {\n type: Boolean,\n default: !0\n },\n dark: Boolean,\n fade: Boolean,\n indicators: {\n type: Boolean,\n default: !0\n },\n interval: {\n type: [Number, Boolean],\n default: 5e3\n },\n items: Array,\n itemsClass: {\n type: String,\n default: \"d-block w-100\"\n },\n keyboard: {\n type: Boolean,\n default: !0\n },\n modelValue: {\n type: Number,\n default: 0\n },\n pause: {\n type: [String, Boolean],\n default: \"hover\"\n },\n tag: {\n type: String,\n default: \"div\"\n },\n touch: {\n type: Boolean,\n default: !0\n },\n innerClass: String\n },\n emits: [\"update:modelValue\"],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = T(() => [\n \"carousel\",\n \"slide\",\n s.fade && \"carousel-fade\",\n s.dark && \"carousel-dark\"\n ]), i = T(() => [\"carousel-inner\", s.innerClass]), o = y(s.modelValue), l = y(null), r = y(!1);\n let c, u = !1;\n const f = () => {\n h(\"prev\");\n }, d = () => {\n h(\"next\");\n }, h = (O) => {\n if (r.value)\n return;\n const $ = u;\n u = !1, p(O), u = $;\n }, p = (O) => {\n if (u || !l.value)\n return;\n r.value = !0;\n const $ = v(O), I = m(O), F = g(I), z = b(I), G = S(o.value), U = S($);\n o.value = $, U.classList.add(z), n(\"update:modelValue\", o.value), s.interval && w(), setTimeout(() => {\n G.classList.add(F), U.classList.add(F);\n }, 20), setTimeout(() => {\n G.classList.remove(\"active\"), G.classList.remove(F), U.classList.remove(F), U.classList.remove(z), U.classList.add(\"active\"), r.value = !1;\n }, 600);\n }, v = (O) => {\n const $ = s.items || [];\n return O === \"prev\" && o.value <= 0 ? $.length - 1 : O === \"prev\" ? o.value - 1 : O === \"next\" && o.value >= $.length - 1 ? 0 : O === \"next\" ? o.value + 1 : O;\n }, m = (O) => O === \"next\" || typeof O == \"number\" && O > o.value, g = (O) => O ? \"carousel-item-start\" : \"carousel-item-end\", b = (O) => O ? \"carousel-item-next\" : \"carousel-item-prev\", S = (O) => l.value.querySelectorAll(\".carousel-item\")[O], w = () => {\n clearInterval(c), c = void 0;\n const O = s.items && s.items[o.value].interval || s.interval;\n c = setInterval(() => {\n p(\"next\");\n }, O);\n }, k = () => {\n s.pause === \"hover\" && s.interval && (clearInterval(c), c = void 0, u = !0);\n }, C = () => {\n s.pause === \"hover\" && s.interval && (w(), u = !1);\n }, M = () => {\n s.keyboard && d();\n }, V = () => {\n s.keyboard && f();\n }, B = !!window.PointerEvent, D = y(0), E = y(0), X = (O) => {\n if (!s.touch)\n return;\n const $ = O, I = O, F = O;\n B && ($.pointerType === \"pen\" || $.pointerType === \"touch\") ? D.value = I.clientX : D.value = F.touches[0].clientX;\n }, L = (O) => {\n s.touch && (E.value = O.touches && O.touches.length > 1 ? 0 : O.touches[0].clientX - D.value);\n }, A = (O) => {\n if (!s.touch)\n return;\n const $ = O, I = O;\n B && ($.pointerType === \"pen\" || $.pointerType === \"touch\") && (E.value = I.clientX - D.value), P();\n }, P = () => {\n const O = Math.abs(E.value);\n if (O <= 40)\n return;\n const $ = O / E.value;\n E.value = 0, $ && ($ > 0 ? f() : d());\n };\n return Fe(() => {\n var $;\n const O = ($ = l.value) == null ? void 0 : $.querySelectorAll(\".carousel-item\")[o.value];\n O == null || O.classList.add(\"active\"), s.interval && w();\n }), dt(() => {\n s.interval && (clearInterval(c), c = void 0);\n }), pe(\n () => s.modelValue,\n (O) => h(O)\n ), e({ next: d, prev: f }), (O, $) => (x(), ee(ue(t.tag), {\n class: Y(a.value),\n onMouseenter: k,\n onMouseleave: C,\n onKeydown: [\n ke(M, [\"right\"]),\n ke(V, [\"left\"])\n ],\n onTouchstart: X,\n onTouchmove: L,\n onTouchend: A\n }, {\n default: Q(() => [\n t.indicators ? (x(), R(\"div\", cu, [\n (x(!0), R(Ie, null, kt(t.items, (I, F) => (x(), R(\"button\", {\n key: F,\n type: \"button\",\n class: Y(o.value === F && \"active\"),\n ariaCurrent: o.value === F && \"true\",\n ariaLabel: `Slide ${F + 1}`,\n onClick: (z) => h(F)\n }, null, 10, uu))), 128))\n ])) : K(\"\", !0),\n H(\"div\", {\n class: Y(i.value),\n ref_key: \"carouselInnerRef\",\n ref: l\n }, [\n (x(!0), R(Ie, null, kt(t.items, (I, F) => (x(), R(\"div\", {\n class: \"carousel-item\",\n key: F\n }, [\n I.video ? (x(), R(\"video\", du, [\n H(\"source\", {\n src: I.video,\n type: I.videoType\n }, null, 8, fu)\n ])) : (x(), R(\"img\", {\n key: 1,\n src: I.src,\n alt: I.alt,\n class: Y(t.itemsClass)\n }, null, 10, hu)),\n I.label || I.caption ? (x(), R(\"div\", {\n key: 2,\n class: Y(t.captionsClass)\n }, [\n I.label ? (x(), R(\"h5\", pu, se(I.label), 1)) : K(\"\", !0),\n I.caption ? (x(), R(\"p\", vu, se(I.caption), 1)) : K(\"\", !0)\n ], 2)) : K(\"\", !0)\n ]))), 128))\n ], 2),\n t.controls ? (x(), R(\"button\", {\n key: 1,\n onClick: f,\n class: \"carousel-control-prev\",\n type: \"button\"\n }, bu)) : K(\"\", !0),\n t.controls ? (x(), R(\"button\", {\n key: 2,\n onClick: d,\n class: \"carousel-control-next\",\n type: \"button\"\n }, ku)) : K(\"\", !0)\n ]),\n _: 1\n }, 40, [\"class\", \"onKeydown\"]));\n }\n}), Su = {\n name: \"MDBListGroup\"\n}, wS = /* @__PURE__ */ re({\n ...Su,\n props: {\n flush: {\n type: Boolean,\n default: !1\n },\n horizontal: {\n type: [Boolean, String],\n default: !1\n },\n numbered: Boolean,\n tag: {\n type: String,\n default: \"ul\"\n },\n light: Boolean,\n small: Boolean\n },\n setup(t) {\n const e = t, n = T(() => [\n \"list-group\",\n e.horizontal && s.value,\n e.flush && \"list-group-flush\",\n e.numbered && \"list-group-numbered\",\n e.light && \"list-group-light\",\n e.small && \"list-group-small\"\n ]), s = T(() => {\n if (e.horizontal)\n return e.horizontal !== !0 ? `list-group-horizontal-${e.horizontal}` : \"list-group-horizontal\";\n });\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), _u = {\n name: \"MDBListGroupItem\"\n}, SS = /* @__PURE__ */ re({\n ..._u,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n active: {\n type: Boolean,\n default: !1\n },\n disabled: {\n type: Boolean,\n default: !1\n },\n action: {\n type: Boolean,\n default: !1\n },\n color: String,\n noBorder: Boolean,\n spacing: {\n type: [Boolean, String],\n default: !1\n },\n ripple: {\n type: [Object, Boolean],\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => {\n if (e.spacing)\n return e.spacing !== !0 ? e.spacing : \"px-3\";\n }), s = T(() => [\n \"list-group-item\",\n e.active && \"active\",\n e.disabled && \"disabled\",\n e.action && \"list-group-item-action\",\n e.color && `list-group-item-${e.color}`,\n e.noBorder && \"border-0\",\n e.spacing && n.value\n ]);\n return (a, i) => je((x(), ee(ue(t.tag), {\n class: Y(s.value),\n \"aria-current\": t.active ? !0 : null,\n \"aria-disabled\": t.disabled ? !0 : null,\n disabled: t.disabled ? !0 : null\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"aria-current\", \"aria-disabled\", \"disabled\"])), [\n [_(Ct), e.ripple]\n ]);\n }\n}), Mu = {\n name: \"MDBProgress\"\n}, _S = /* @__PURE__ */ re({\n ...Mu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n height: Number\n },\n setup(t) {\n const e = t, n = T(() => [\"progress\"]), s = T(() => ({ height: e.height + \"px\" }));\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value),\n style: Ce(s.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"style\"]));\n }\n}), Cu = {\n name: \"MDBProgressBar\"\n}, MS = /* @__PURE__ */ re({\n ...Cu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n bg: String,\n striped: {\n type: Boolean,\n default: !1\n },\n animated: {\n type: Boolean,\n default: !1\n },\n value: {\n type: Number,\n default: 0\n },\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n \"progress-bar\",\n e.bg && `bg-${e.bg}`,\n e.striped && \"progress-bar-striped\",\n e.animated && \"progress-bar-animated\"\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value),\n role: \"progressbar\",\n \"aria-valuenow\": t.value,\n \"aria-valuemin\": t.min,\n \"aria-valuemax\": t.max,\n style: Ce([\n {\n width: (t.value - t.min) / (t.max - t.min) * 100 + \"%\"\n }\n ])\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"aria-valuenow\", \"aria-valuemin\", \"aria-valuemax\", \"style\"]));\n }\n}), $u = /* @__PURE__ */ H(\"span\", { class: \"visually-hidden\" }, \"Loading...\", -1), Bu = {\n name: \"MDBSpinner\"\n}, Tu = /* @__PURE__ */ re({\n ...Bu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n grow: {\n type: Boolean,\n default: !1\n },\n color: String,\n size: String\n },\n setup(t) {\n const e = t, n = T(() => [\n e.grow ? \"spinner-grow\" : \"spinner-border\",\n e.color && `text-${e.color}`,\n `${e.size ? e.grow ? \"spinner-grow-\" + e.size : \"spinner-border-\" + e.size : \"\"}`\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value),\n role: \"status\"\n }, {\n default: Q(() => [\n $u,\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Du = 1e6, ut = (t) => {\n do\n t += Math.floor(Math.random() * Du);\n while (document.getElementById(t));\n return t;\n}, Ou = /\\..*/, Lu = {\n mouseenter: \"mouseover\",\n mouseleave: \"mouseout\"\n}, Au = [\n \"click\",\n \"dblclick\",\n \"mouseup\",\n \"mousedown\",\n \"contextmenu\",\n \"mousewheel\",\n \"DOMMouseScroll\",\n \"mouseover\",\n \"mouseout\",\n \"mousemove\",\n \"selectstart\",\n \"selectend\",\n \"keydown\",\n \"keypress\",\n \"keyup\",\n \"orientationchange\",\n \"touchstart\",\n \"touchmove\",\n \"touchend\",\n \"touchcancel\",\n \"pointerdown\",\n \"pointermove\",\n \"pointerup\",\n \"pointerleave\",\n \"pointercancel\",\n \"gesturestart\",\n \"gesturechange\",\n \"gestureend\",\n \"focus\",\n \"blur\",\n \"change\",\n \"reset\",\n \"select\",\n \"submit\",\n \"focusin\",\n \"focusout\",\n \"load\",\n \"unload\",\n \"beforeunload\",\n \"resize\",\n \"move\",\n \"DOMContentLoaded\",\n \"readystatechange\",\n \"error\",\n \"abort\",\n \"scroll\"\n];\nfunction Bi(t, e, n) {\n const s = typeof e == \"string\", a = s ? n : e;\n let i = t.replace(Ou, \"\");\n const o = Lu[i];\n return o && (i = o), Au.indexOf(i) > -1 || (i = t), [s, a, i];\n}\nfunction Eu(t, e, n, s) {\n if (typeof e != \"string\" || !t)\n return;\n n || (n = s, s = void 0);\n const [a, i, o] = Bi(\n e,\n n,\n s\n );\n t.addEventListener(\n o,\n i,\n a\n );\n}\nfunction Pu(t, e, n, s) {\n t.removeEventListener(\n e,\n n,\n !!s\n );\n}\nconst Le = function(t, e, n, s = void 0) {\n Eu(t, e, n, s);\n}, Ka = function(t, e, n, s = void 0) {\n if (!t)\n return;\n const [a, i, o] = Bi(\n e,\n n,\n s\n );\n t.addEventListener(\n o,\n i,\n { once: !0 }\n );\n}, Me = function(t, e, n, s = void 0) {\n if (typeof e != \"string\" || !t)\n return;\n const [a, i, o] = Bi(\n e,\n n,\n s\n );\n Pu(\n t,\n o,\n i,\n a ? n : void 0\n );\n}, ir = function(t, e, n, s = void 0) {\n const a = e.split(\" \");\n for (let i = 0; i < a.length; i++)\n Le(t, a[i], n, s);\n}, fi = function(t, e, n, s = void 0) {\n const a = e.split(\" \");\n for (let i = 0; i < a.length; i++)\n Me(t, a[i], n, s);\n}, Vu = {\n name: \"MDBCollapse\"\n}, or = /* @__PURE__ */ re({\n ...Vu,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: Boolean,\n id: String,\n collapseClass: String,\n duration: {\n type: Number,\n default: 300\n },\n sidenav: {\n type: Boolean,\n default: !1\n },\n horizontal: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\"update:modelValue\"],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = y(null), i = y(s.modelValue), o = T(() => [\n l.value,\n s.collapseClass,\n m && m.value ? \"navbar-collapse\" : \"\",\n g.value,\n s.horizontal && \"collapse-horizontal\"\n ]), l = T(() => s.sidenav ? \"sidenav-collapse\" : i.value ? \"collapse\" : null), r = N(\"accordionState\", null), c = N(\n \"incrementAccordionItemsCount\",\n !1\n ), u = N(\n \"setAccordionActiveItem\",\n !1\n ), f = y(null), d = () => {\n f.value !== null && i.value && u && u(f.value);\n };\n Ze(\n () => {\n r && r.active !== f.value && n(\"update:modelValue\", !1);\n },\n { flush: \"post\" }\n ), Fe(() => {\n i.value && a.value && (a.value.style.height = a.value.scrollHeight + \"px\", a.value.style.width = a.value.scrollWidth + \"px\"), r && (f.value = c ? c() : 0, i.value && u && u(f.value));\n });\n let h = !1;\n const p = y(0);\n pe(\n () => s.modelValue,\n (L) => {\n if (h) {\n clearInterval(p.value), p.value = setTimeout(() => {\n n(\"update:modelValue\", i.value);\n }, s.duration);\n return;\n }\n i.value = L, r && d();\n }\n ), q(\"openCollapse\", () => {\n n(\"update:modelValue\", !0);\n });\n const m = N(\n \"navbarFlexWrapValue\",\n !1\n ), g = T(() => !m || m.value === \"wrap\" && i.value ? \"show\" : (m.value === \"nowrap\" && i.value, !1)), b = (L, A) => {\n A === \"null\" && s.modelValue ? i.value = !0 : (A === \"null\" && !s.modelValue || A === \"nowrap\") && (i.value = !1);\n };\n pe(\n () => m && m.value,\n (L, A) => {\n L === \"nowrap\" ? i.value = !0 : L === \"wrap\" && b(L, A), n(\"update:modelValue\", i.value);\n },\n { immediate: !0 }\n );\n const S = T(() => s.id ? s.id : ut(\"collapsibleContent-\")), w = (L) => {\n const A = L;\n s.horizontal ? A.style.width = \"0\" : A.style.height = \"0\", A.style.transitionDuration = s.duration + \"ms\", h = !0;\n }, k = (L) => {\n var P, O;\n const A = L;\n s.horizontal ? A.style.width = ((P = a.value) == null ? void 0 : P.scrollWidth) + \"px\" : A.style.height = ((O = a.value) == null ? void 0 : O.scrollHeight) + \"px\";\n }, C = (L) => {\n const A = L;\n A.classList.contains(\"show\") || A.classList.add(\"show\"), s.horizontal ? A.style.width = \"\" : A.style.height = \"\", h = !1;\n }, M = (L) => {\n var P, O;\n const A = L;\n s.horizontal ? A.style.width || (A.classList.add(\"show\"), A.style.width = ((P = a.value) == null ? void 0 : P.scrollWidth) + \"px\") : A.style.height || (A.classList.add(\"show\"), A.style.height = ((O = a.value) == null ? void 0 : O.scrollHeight) + \"px\"), h = !0;\n }, V = (L) => {\n const A = L;\n s.horizontal ? A.style.width = \"0px\" : A.style.height = \"0px\";\n }, B = (L) => {\n L.classList.add(\"collapse\"), h = !1;\n }, D = y(null), E = y(!1), X = () => {\n if (!i.value || E.value) return;\n E.value = !0;\n const L = window.innerWidth;\n D.value = L, setTimeout(() => {\n E.value = !1;\n }, 100);\n };\n return Fe(() => {\n D.value = window.innerWidth, Le(window, \"resize\", X);\n }), dt(() => {\n Me(window, \"resize\", X);\n }), e({ collapse: a }), (L, A) => (x(), ee(At, {\n onBeforeEnter: w,\n onEnter: k,\n onAfterEnter: C,\n onBeforeLeave: M,\n onLeave: V,\n onAfterLeave: B,\n \"enter-active-class\": \"collapsing\",\n \"leave-active-class\": \"collapsing show\"\n }, {\n default: Q(() => [\n je((x(), ee(ue(t.tag), {\n class: Y(o.value),\n id: S.value,\n ref_key: \"collapse\",\n ref: a\n }, {\n default: Q(() => [\n oe(L.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"id\"])), [\n [Hn, i.value]\n ])\n ]),\n _: 3\n }));\n }\n});\nvar Ot = \"top\", Nt = \"bottom\", Ht = \"right\", Lt = \"left\", Va = \"auto\", Vs = [Ot, Nt, Ht, Lt], Zn = \"start\", Bs = \"end\", Ru = \"clippingParents\", lr = \"viewport\", cs = \"popper\", Iu = \"reference\", ho = /* @__PURE__ */ Vs.reduce(function(t, e) {\n return t.concat([e + \"-\" + Zn, e + \"-\" + Bs]);\n}, []), rr = /* @__PURE__ */ [].concat(Vs, [Va]).reduce(function(t, e) {\n return t.concat([e, e + \"-\" + Zn, e + \"-\" + Bs]);\n}, []), Fu = \"beforeRead\", Nu = \"read\", Hu = \"afterRead\", Wu = \"beforeMain\", zu = \"main\", Yu = \"afterMain\", ju = \"beforeWrite\", Xu = \"write\", Uu = \"afterWrite\", hi = [Fu, Nu, Hu, Wu, zu, Yu, ju, Xu, Uu];\nfunction en(t) {\n return t ? (t.nodeName || \"\").toLowerCase() : null;\n}\nfunction qt(t) {\n if (t == null)\n return window;\n if (t.toString() !== \"[object Window]\") {\n var e = t.ownerDocument;\n return e && e.defaultView || window;\n }\n return t;\n}\nfunction Jn(t) {\n var e = qt(t).Element;\n return t instanceof e || t instanceof Element;\n}\nfunction Vt(t) {\n var e = qt(t).HTMLElement;\n return t instanceof e || t instanceof HTMLElement;\n}\nfunction Ti(t) {\n if (typeof ShadowRoot > \"u\")\n return !1;\n var e = qt(t).ShadowRoot;\n return t instanceof e || t instanceof ShadowRoot;\n}\nfunction qu(t) {\n var e = t.state;\n Object.keys(e.elements).forEach(function(n) {\n var s = e.styles[n] || {}, a = e.attributes[n] || {}, i = e.elements[n];\n !Vt(i) || !en(i) || (Object.assign(i.style, s), Object.keys(a).forEach(function(o) {\n var l = a[o];\n l === !1 ? i.removeAttribute(o) : i.setAttribute(o, l === !0 ? \"\" : l);\n }));\n });\n}\nfunction Ku(t) {\n var e = t.state, n = {\n popper: {\n position: e.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n return Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), function() {\n Object.keys(e.elements).forEach(function(s) {\n var a = e.elements[s], i = e.attributes[s] || {}, o = Object.keys(e.styles.hasOwnProperty(s) ? e.styles[s] : n[s]), l = o.reduce(function(r, c) {\n return r[c] = \"\", r;\n }, {});\n !Vt(a) || !en(a) || (Object.assign(a.style, l), Object.keys(i).forEach(function(r) {\n a.removeAttribute(r);\n }));\n });\n };\n}\nconst Gu = {\n name: \"applyStyles\",\n enabled: !0,\n phase: \"write\",\n fn: qu,\n effect: Ku,\n requires: [\"computeStyles\"]\n};\nfunction jt(t) {\n return t.split(\"-\")[0];\n}\nvar Vn = Math.max, ka = Math.min, Qn = Math.round;\nfunction es(t, e) {\n e === void 0 && (e = !1);\n var n = t.getBoundingClientRect(), s = 1, a = 1;\n if (Vt(t) && e) {\n var i = t.offsetHeight, o = t.offsetWidth;\n o > 0 && (s = Qn(n.width) / o || 1), i > 0 && (a = Qn(n.height) / i || 1);\n }\n return {\n width: n.width / s,\n height: n.height / a,\n top: n.top / a,\n right: n.right / s,\n bottom: n.bottom / a,\n left: n.left / s,\n x: n.left / s,\n y: n.top / a\n };\n}\nfunction Di(t) {\n var e = es(t), n = t.offsetWidth, s = t.offsetHeight;\n return Math.abs(e.width - n) <= 1 && (n = e.width), Math.abs(e.height - s) <= 1 && (s = e.height), {\n x: t.offsetLeft,\n y: t.offsetTop,\n width: n,\n height: s\n };\n}\nfunction cr(t, e) {\n var n = e.getRootNode && e.getRootNode();\n if (t.contains(e))\n return !0;\n if (n && Ti(n)) {\n var s = e;\n do {\n if (s && t.isSameNode(s))\n return !0;\n s = s.parentNode || s.host;\n } while (s);\n }\n return !1;\n}\nfunction Xt(t) {\n return qt(t).getComputedStyle(t);\n}\nfunction Zu(t) {\n return [\"table\", \"td\", \"th\"].indexOf(en(t)) >= 0;\n}\nfunction Cn(t) {\n return ((Jn(t) ? t.ownerDocument : (\n // $FlowFixMe[prop-missing]\n t.document\n )) || window.document).documentElement;\n}\nfunction Ra(t) {\n return en(t) === \"html\" ? t : (\n // this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n t.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n t.parentNode || // DOM Element detected\n (Ti(t) ? t.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n Cn(t)\n );\n}\nfunction po(t) {\n return !Vt(t) || // https://github.com/popperjs/popper-core/issues/837\n Xt(t).position === \"fixed\" ? null : t.offsetParent;\n}\nfunction Ju(t) {\n var e = navigator.userAgent.toLowerCase().indexOf(\"firefox\") !== -1, n = navigator.userAgent.indexOf(\"Trident\") !== -1;\n if (n && Vt(t)) {\n var s = Xt(t);\n if (s.position === \"fixed\")\n return null;\n }\n var a = Ra(t);\n for (Ti(a) && (a = a.host); Vt(a) && [\"html\", \"body\"].indexOf(en(a)) < 0; ) {\n var i = Xt(a);\n if (i.transform !== \"none\" || i.perspective !== \"none\" || i.contain === \"paint\" || [\"transform\", \"perspective\"].indexOf(i.willChange) !== -1 || e && i.willChange === \"filter\" || e && i.filter && i.filter !== \"none\")\n return a;\n a = a.parentNode;\n }\n return null;\n}\nfunction Rs(t) {\n for (var e = qt(t), n = po(t); n && Zu(n) && Xt(n).position === \"static\"; )\n n = po(n);\n return n && (en(n) === \"html\" || en(n) === \"body\" && Xt(n).position === \"static\") ? e : n || Ju(t) || e;\n}\nfunction Oi(t) {\n return [\"top\", \"bottom\"].indexOf(t) >= 0 ? \"x\" : \"y\";\n}\nfunction ys(t, e, n) {\n return Vn(t, ka(e, n));\n}\nfunction Qu(t, e, n) {\n var s = ys(t, e, n);\n return s > n ? n : s;\n}\nfunction ur() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\nfunction dr(t) {\n return Object.assign({}, ur(), t);\n}\nfunction fr(t, e) {\n return e.reduce(function(n, s) {\n return n[s] = t, n;\n }, {});\n}\nvar ed = function(e, n) {\n return e = typeof e == \"function\" ? e(Object.assign({}, n.rects, {\n placement: n.placement\n })) : e, dr(typeof e != \"number\" ? e : fr(e, Vs));\n};\nfunction td(t) {\n var e, n = t.state, s = t.name, a = t.options, i = n.elements.arrow, o = n.modifiersData.popperOffsets, l = jt(n.placement), r = Oi(l), c = [Lt, Ht].indexOf(l) >= 0, u = c ? \"height\" : \"width\";\n if (!(!i || !o)) {\n var f = ed(a.padding, n), d = Di(i), h = r === \"y\" ? Ot : Lt, p = r === \"y\" ? Nt : Ht, v = n.rects.reference[u] + n.rects.reference[r] - o[r] - n.rects.popper[u], m = o[r] - n.rects.reference[r], g = Rs(i), b = g ? r === \"y\" ? g.clientHeight || 0 : g.clientWidth || 0 : 0, S = v / 2 - m / 2, w = f[h], k = b - d[u] - f[p], C = b / 2 - d[u] / 2 + S, M = ys(w, C, k), V = r;\n n.modifiersData[s] = (e = {}, e[V] = M, e.centerOffset = M - C, e);\n }\n}\nfunction nd(t) {\n var e = t.state, n = t.options, s = n.element, a = s === void 0 ? \"[data-popper-arrow]\" : s;\n if (a != null && !(typeof a == \"string\" && (a = e.elements.popper.querySelector(a), !a))) {\n if (process.env.NODE_ENV !== \"production\" && (Vt(a) || console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', \"To use an SVG arrow, wrap it in an HTMLElement that will be used as\", \"the arrow.\"].join(\" \"))), !cr(e.elements.popper, a)) {\n process.env.NODE_ENV !== \"production\" && console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', \"element.\"].join(\" \"));\n return;\n }\n e.elements.arrow = a;\n }\n}\nconst sd = {\n name: \"arrow\",\n enabled: !0,\n phase: \"main\",\n fn: td,\n effect: nd,\n requires: [\"popperOffsets\"],\n requiresIfExists: [\"preventOverflow\"]\n};\nfunction ts(t) {\n return t.split(\"-\")[1];\n}\nvar ad = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n};\nfunction id(t) {\n var e = t.x, n = t.y, s = window, a = s.devicePixelRatio || 1;\n return {\n x: Qn(e * a) / a || 0,\n y: Qn(n * a) / a || 0\n };\n}\nfunction vo(t) {\n var e, n = t.popper, s = t.popperRect, a = t.placement, i = t.variation, o = t.offsets, l = t.position, r = t.gpuAcceleration, c = t.adaptive, u = t.roundOffsets, f = t.isFixed, d = o.x, h = d === void 0 ? 0 : d, p = o.y, v = p === void 0 ? 0 : p, m = typeof u == \"function\" ? u({\n x: h,\n y: v\n }) : {\n x: h,\n y: v\n };\n h = m.x, v = m.y;\n var g = o.hasOwnProperty(\"x\"), b = o.hasOwnProperty(\"y\"), S = Lt, w = Ot, k = window;\n if (c) {\n var C = Rs(n), M = \"clientHeight\", V = \"clientWidth\";\n if (C === qt(n) && (C = Cn(n), Xt(C).position !== \"static\" && l === \"absolute\" && (M = \"scrollHeight\", V = \"scrollWidth\")), C = C, a === Ot || (a === Lt || a === Ht) && i === Bs) {\n w = Nt;\n var B = f && C === k && k.visualViewport ? k.visualViewport.height : (\n // $FlowFixMe[prop-missing]\n C[M]\n );\n v -= B - s.height, v *= r ? 1 : -1;\n }\n if (a === Lt || (a === Ot || a === Nt) && i === Bs) {\n S = Ht;\n var D = f && C === k && k.visualViewport ? k.visualViewport.width : (\n // $FlowFixMe[prop-missing]\n C[V]\n );\n h -= D - s.width, h *= r ? 1 : -1;\n }\n }\n var E = Object.assign({\n position: l\n }, c && ad), X = u === !0 ? id({\n x: h,\n y: v\n }) : {\n x: h,\n y: v\n };\n if (h = X.x, v = X.y, r) {\n var L;\n return Object.assign({}, E, (L = {}, L[w] = b ? \"0\" : \"\", L[S] = g ? \"0\" : \"\", L.transform = (k.devicePixelRatio || 1) <= 1 ? \"translate(\" + h + \"px, \" + v + \"px)\" : \"translate3d(\" + h + \"px, \" + v + \"px, 0)\", L));\n }\n return Object.assign({}, E, (e = {}, e[w] = b ? v + \"px\" : \"\", e[S] = g ? h + \"px\" : \"\", e.transform = \"\", e));\n}\nfunction od(t) {\n var e = t.state, n = t.options, s = n.gpuAcceleration, a = s === void 0 ? !0 : s, i = n.adaptive, o = i === void 0 ? !0 : i, l = n.roundOffsets, r = l === void 0 ? !0 : l;\n if (process.env.NODE_ENV !== \"production\") {\n var c = Xt(e.elements.popper).transitionProperty || \"\";\n o && [\"transform\", \"top\", \"right\", \"bottom\", \"left\"].some(function(f) {\n return c.indexOf(f) >= 0;\n }) && console.warn([\"Popper: Detected CSS transitions on at least one of the following\", 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', `\n\n`, 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', \"for smooth transitions, or remove these properties from the CSS\", \"transition declaration on the popper element if only transitioning\", \"opacity or background-color for example.\", `\n\n`, \"We recommend using the popper element as a wrapper around an inner\", \"element that can have any CSS property transitioned for animations.\"].join(\" \"));\n }\n var u = {\n placement: jt(e.placement),\n variation: ts(e.placement),\n popper: e.elements.popper,\n popperRect: e.rects.popper,\n gpuAcceleration: a,\n isFixed: e.options.strategy === \"fixed\"\n };\n e.modifiersData.popperOffsets != null && (e.styles.popper = Object.assign({}, e.styles.popper, vo(Object.assign({}, u, {\n offsets: e.modifiersData.popperOffsets,\n position: e.options.strategy,\n adaptive: o,\n roundOffsets: r\n })))), e.modifiersData.arrow != null && (e.styles.arrow = Object.assign({}, e.styles.arrow, vo(Object.assign({}, u, {\n offsets: e.modifiersData.arrow,\n position: \"absolute\",\n adaptive: !1,\n roundOffsets: r\n })))), e.attributes.popper = Object.assign({}, e.attributes.popper, {\n \"data-popper-placement\": e.placement\n });\n}\nconst ld = {\n name: \"computeStyles\",\n enabled: !0,\n phase: \"beforeWrite\",\n fn: od,\n data: {}\n};\nvar Js = {\n passive: !0\n};\nfunction rd(t) {\n var e = t.state, n = t.instance, s = t.options, a = s.scroll, i = a === void 0 ? !0 : a, o = s.resize, l = o === void 0 ? !0 : o, r = qt(e.elements.popper), c = [].concat(e.scrollParents.reference, e.scrollParents.popper);\n return i && c.forEach(function(u) {\n u.addEventListener(\"scroll\", n.update, Js);\n }), l && r.addEventListener(\"resize\", n.update, Js), function() {\n i && c.forEach(function(u) {\n u.removeEventListener(\"scroll\", n.update, Js);\n }), l && r.removeEventListener(\"resize\", n.update, Js);\n };\n}\nconst cd = {\n name: \"eventListeners\",\n enabled: !0,\n phase: \"write\",\n fn: function() {\n },\n effect: rd,\n data: {}\n};\nvar ud = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n};\nfunction ba(t) {\n return t.replace(/left|right|bottom|top/g, function(e) {\n return ud[e];\n });\n}\nvar dd = {\n start: \"end\",\n end: \"start\"\n};\nfunction mo(t) {\n return t.replace(/start|end/g, function(e) {\n return dd[e];\n });\n}\nfunction Li(t) {\n var e = qt(t), n = e.pageXOffset, s = e.pageYOffset;\n return {\n scrollLeft: n,\n scrollTop: s\n };\n}\nfunction Ai(t) {\n return es(Cn(t)).left + Li(t).scrollLeft;\n}\nfunction fd(t) {\n var e = qt(t), n = Cn(t), s = e.visualViewport, a = n.clientWidth, i = n.clientHeight, o = 0, l = 0;\n return s && (a = s.width, i = s.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (o = s.offsetLeft, l = s.offsetTop)), {\n width: a,\n height: i,\n x: o + Ai(t),\n y: l\n };\n}\nfunction hd(t) {\n var e, n = Cn(t), s = Li(t), a = (e = t.ownerDocument) == null ? void 0 : e.body, i = Vn(n.scrollWidth, n.clientWidth, a ? a.scrollWidth : 0, a ? a.clientWidth : 0), o = Vn(n.scrollHeight, n.clientHeight, a ? a.scrollHeight : 0, a ? a.clientHeight : 0), l = -s.scrollLeft + Ai(t), r = -s.scrollTop;\n return Xt(a || n).direction === \"rtl\" && (l += Vn(n.clientWidth, a ? a.clientWidth : 0) - i), {\n width: i,\n height: o,\n x: l,\n y: r\n };\n}\nfunction Ei(t) {\n var e = Xt(t), n = e.overflow, s = e.overflowX, a = e.overflowY;\n return /auto|scroll|overlay|hidden/.test(n + a + s);\n}\nfunction hr(t) {\n return [\"html\", \"body\", \"#document\"].indexOf(en(t)) >= 0 ? t.ownerDocument.body : Vt(t) && Ei(t) ? t : hr(Ra(t));\n}\nfunction xs(t, e) {\n var n;\n e === void 0 && (e = []);\n var s = hr(t), a = s === ((n = t.ownerDocument) == null ? void 0 : n.body), i = qt(s), o = a ? [i].concat(i.visualViewport || [], Ei(s) ? s : []) : s, l = e.concat(o);\n return a ? l : (\n // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n l.concat(xs(Ra(o)))\n );\n}\nfunction pi(t) {\n return Object.assign({}, t, {\n left: t.x,\n top: t.y,\n right: t.x + t.width,\n bottom: t.y + t.height\n });\n}\nfunction pd(t) {\n var e = es(t);\n return e.top = e.top + t.clientTop, e.left = e.left + t.clientLeft, e.bottom = e.top + t.clientHeight, e.right = e.left + t.clientWidth, e.width = t.clientWidth, e.height = t.clientHeight, e.x = e.left, e.y = e.top, e;\n}\nfunction go(t, e) {\n return e === lr ? pi(fd(t)) : Jn(e) ? pd(e) : pi(hd(Cn(t)));\n}\nfunction vd(t) {\n var e = xs(Ra(t)), n = [\"absolute\", \"fixed\"].indexOf(Xt(t).position) >= 0, s = n && Vt(t) ? Rs(t) : t;\n return Jn(s) ? e.filter(function(a) {\n return Jn(a) && cr(a, s) && en(a) !== \"body\";\n }) : [];\n}\nfunction md(t, e, n) {\n var s = e === \"clippingParents\" ? vd(t) : [].concat(e), a = [].concat(s, [n]), i = a[0], o = a.reduce(function(l, r) {\n var c = go(t, r);\n return l.top = Vn(c.top, l.top), l.right = ka(c.right, l.right), l.bottom = ka(c.bottom, l.bottom), l.left = Vn(c.left, l.left), l;\n }, go(t, i));\n return o.width = o.right - o.left, o.height = o.bottom - o.top, o.x = o.left, o.y = o.top, o;\n}\nfunction pr(t) {\n var e = t.reference, n = t.element, s = t.placement, a = s ? jt(s) : null, i = s ? ts(s) : null, o = e.x + e.width / 2 - n.width / 2, l = e.y + e.height / 2 - n.height / 2, r;\n switch (a) {\n case Ot:\n r = {\n x: o,\n y: e.y - n.height\n };\n break;\n case Nt:\n r = {\n x: o,\n y: e.y + e.height\n };\n break;\n case Ht:\n r = {\n x: e.x + e.width,\n y: l\n };\n break;\n case Lt:\n r = {\n x: e.x - n.width,\n y: l\n };\n break;\n default:\n r = {\n x: e.x,\n y: e.y\n };\n }\n var c = a ? Oi(a) : null;\n if (c != null) {\n var u = c === \"y\" ? \"height\" : \"width\";\n switch (i) {\n case Zn:\n r[c] = r[c] - (e[u] / 2 - n[u] / 2);\n break;\n case Bs:\n r[c] = r[c] + (e[u] / 2 - n[u] / 2);\n break;\n }\n }\n return r;\n}\nfunction Ts(t, e) {\n e === void 0 && (e = {});\n var n = e, s = n.placement, a = s === void 0 ? t.placement : s, i = n.boundary, o = i === void 0 ? Ru : i, l = n.rootBoundary, r = l === void 0 ? lr : l, c = n.elementContext, u = c === void 0 ? cs : c, f = n.altBoundary, d = f === void 0 ? !1 : f, h = n.padding, p = h === void 0 ? 0 : h, v = dr(typeof p != \"number\" ? p : fr(p, Vs)), m = u === cs ? Iu : cs, g = t.rects.popper, b = t.elements[d ? m : u], S = md(Jn(b) ? b : b.contextElement || Cn(t.elements.popper), o, r), w = es(t.elements.reference), k = pr({\n reference: w,\n element: g,\n strategy: \"absolute\",\n placement: a\n }), C = pi(Object.assign({}, g, k)), M = u === cs ? C : w, V = {\n top: S.top - M.top + v.top,\n bottom: M.bottom - S.bottom + v.bottom,\n left: S.left - M.left + v.left,\n right: M.right - S.right + v.right\n }, B = t.modifiersData.offset;\n if (u === cs && B) {\n var D = B[a];\n Object.keys(V).forEach(function(E) {\n var X = [Ht, Nt].indexOf(E) >= 0 ? 1 : -1, L = [Ot, Nt].indexOf(E) >= 0 ? \"y\" : \"x\";\n V[E] += D[L] * X;\n });\n }\n return V;\n}\nfunction gd(t, e) {\n e === void 0 && (e = {});\n var n = e, s = n.placement, a = n.boundary, i = n.rootBoundary, o = n.padding, l = n.flipVariations, r = n.allowedAutoPlacements, c = r === void 0 ? rr : r, u = ts(s), f = u ? l ? ho : ho.filter(function(p) {\n return ts(p) === u;\n }) : Vs, d = f.filter(function(p) {\n return c.indexOf(p) >= 0;\n });\n d.length === 0 && (d = f, process.env.NODE_ENV !== \"production\" && console.error([\"Popper: The `allowedAutoPlacements` option did not allow any\", \"placements. Ensure the `placement` option matches the variation\", \"of the allowed placements.\", 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(\" \")));\n var h = d.reduce(function(p, v) {\n return p[v] = Ts(t, {\n placement: v,\n boundary: a,\n rootBoundary: i,\n padding: o\n })[jt(v)], p;\n }, {});\n return Object.keys(h).sort(function(p, v) {\n return h[p] - h[v];\n });\n}\nfunction bd(t) {\n if (jt(t) === Va)\n return [];\n var e = ba(t);\n return [mo(t), e, mo(e)];\n}\nfunction yd(t) {\n var e = t.state, n = t.options, s = t.name;\n if (!e.modifiersData[s]._skip) {\n for (var a = n.mainAxis, i = a === void 0 ? !0 : a, o = n.altAxis, l = o === void 0 ? !0 : o, r = n.fallbackPlacements, c = n.padding, u = n.boundary, f = n.rootBoundary, d = n.altBoundary, h = n.flipVariations, p = h === void 0 ? !0 : h, v = n.allowedAutoPlacements, m = e.options.placement, g = jt(m), b = g === m, S = r || (b || !p ? [ba(m)] : bd(m)), w = [m].concat(S).reduce(function(ve, ye) {\n return ve.concat(jt(ye) === Va ? gd(e, {\n placement: ye,\n boundary: u,\n rootBoundary: f,\n padding: c,\n flipVariations: p,\n allowedAutoPlacements: v\n }) : ye);\n }, []), k = e.rects.reference, C = e.rects.popper, M = /* @__PURE__ */ new Map(), V = !0, B = w[0], D = 0; D < w.length; D++) {\n var E = w[D], X = jt(E), L = ts(E) === Zn, A = [Ot, Nt].indexOf(X) >= 0, P = A ? \"width\" : \"height\", O = Ts(e, {\n placement: E,\n boundary: u,\n rootBoundary: f,\n altBoundary: d,\n padding: c\n }), $ = A ? L ? Ht : Lt : L ? Nt : Ot;\n k[P] > C[P] && ($ = ba($));\n var I = ba($), F = [];\n if (i && F.push(O[X] <= 0), l && F.push(O[$] <= 0, O[I] <= 0), F.every(function(ve) {\n return ve;\n })) {\n B = E, V = !1;\n break;\n }\n M.set(E, F);\n }\n if (V)\n for (var z = p ? 3 : 1, G = function(ye) {\n var W = w.find(function(te) {\n var ae = M.get(te);\n if (ae)\n return ae.slice(0, ye).every(function(be) {\n return be;\n });\n });\n if (W)\n return B = W, \"break\";\n }, U = z; U > 0; U--) {\n var ie = G(U);\n if (ie === \"break\") break;\n }\n e.placement !== B && (e.modifiersData[s]._skip = !0, e.placement = B, e.reset = !0);\n }\n}\nconst xd = {\n name: \"flip\",\n enabled: !0,\n phase: \"main\",\n fn: yd,\n requiresIfExists: [\"offset\"],\n data: {\n _skip: !1\n }\n};\nfunction bo(t, e, n) {\n return n === void 0 && (n = {\n x: 0,\n y: 0\n }), {\n top: t.top - e.height - n.y,\n right: t.right - e.width + n.x,\n bottom: t.bottom - e.height + n.y,\n left: t.left - e.width - n.x\n };\n}\nfunction yo(t) {\n return [Ot, Ht, Nt, Lt].some(function(e) {\n return t[e] >= 0;\n });\n}\nfunction kd(t) {\n var e = t.state, n = t.name, s = e.rects.reference, a = e.rects.popper, i = e.modifiersData.preventOverflow, o = Ts(e, {\n elementContext: \"reference\"\n }), l = Ts(e, {\n altBoundary: !0\n }), r = bo(o, s), c = bo(l, a, i), u = yo(r), f = yo(c);\n e.modifiersData[n] = {\n referenceClippingOffsets: r,\n popperEscapeOffsets: c,\n isReferenceHidden: u,\n hasPopperEscaped: f\n }, e.attributes.popper = Object.assign({}, e.attributes.popper, {\n \"data-popper-reference-hidden\": u,\n \"data-popper-escaped\": f\n });\n}\nconst wd = {\n name: \"hide\",\n enabled: !0,\n phase: \"main\",\n requiresIfExists: [\"preventOverflow\"],\n fn: kd\n};\nfunction Sd(t, e, n) {\n var s = jt(t), a = [Lt, Ot].indexOf(s) >= 0 ? -1 : 1, i = typeof n == \"function\" ? n(Object.assign({}, e, {\n placement: t\n })) : n, o = i[0], l = i[1];\n return o = o || 0, l = (l || 0) * a, [Lt, Ht].indexOf(s) >= 0 ? {\n x: l,\n y: o\n } : {\n x: o,\n y: l\n };\n}\nfunction _d(t) {\n var e = t.state, n = t.options, s = t.name, a = n.offset, i = a === void 0 ? [0, 0] : a, o = rr.reduce(function(u, f) {\n return u[f] = Sd(f, e.rects, i), u;\n }, {}), l = o[e.placement], r = l.x, c = l.y;\n e.modifiersData.popperOffsets != null && (e.modifiersData.popperOffsets.x += r, e.modifiersData.popperOffsets.y += c), e.modifiersData[s] = o;\n}\nconst Md = {\n name: \"offset\",\n enabled: !0,\n phase: \"main\",\n requires: [\"popperOffsets\"],\n fn: _d\n};\nfunction Cd(t) {\n var e = t.state, n = t.name;\n e.modifiersData[n] = pr({\n reference: e.rects.reference,\n element: e.rects.popper,\n strategy: \"absolute\",\n placement: e.placement\n });\n}\nconst $d = {\n name: \"popperOffsets\",\n enabled: !0,\n phase: \"read\",\n fn: Cd,\n data: {}\n};\nfunction Bd(t) {\n return t === \"x\" ? \"y\" : \"x\";\n}\nfunction Td(t) {\n var e = t.state, n = t.options, s = t.name, a = n.mainAxis, i = a === void 0 ? !0 : a, o = n.altAxis, l = o === void 0 ? !1 : o, r = n.boundary, c = n.rootBoundary, u = n.altBoundary, f = n.padding, d = n.tether, h = d === void 0 ? !0 : d, p = n.tetherOffset, v = p === void 0 ? 0 : p, m = Ts(e, {\n boundary: r,\n rootBoundary: c,\n padding: f,\n altBoundary: u\n }), g = jt(e.placement), b = ts(e.placement), S = !b, w = Oi(g), k = Bd(w), C = e.modifiersData.popperOffsets, M = e.rects.reference, V = e.rects.popper, B = typeof v == \"function\" ? v(Object.assign({}, e.rects, {\n placement: e.placement\n })) : v, D = typeof B == \"number\" ? {\n mainAxis: B,\n altAxis: B\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, B), E = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, X = {\n x: 0,\n y: 0\n };\n if (C) {\n if (i) {\n var L, A = w === \"y\" ? Ot : Lt, P = w === \"y\" ? Nt : Ht, O = w === \"y\" ? \"height\" : \"width\", $ = C[w], I = $ + m[A], F = $ - m[P], z = h ? -V[O] / 2 : 0, G = b === Zn ? M[O] : V[O], U = b === Zn ? -V[O] : -M[O], ie = e.elements.arrow, ve = h && ie ? Di(ie) : {\n width: 0,\n height: 0\n }, ye = e.modifiersData[\"arrow#persistent\"] ? e.modifiersData[\"arrow#persistent\"].padding : ur(), W = ye[A], te = ye[P], ae = ys(0, M[O], ve[O]), be = S ? M[O] / 2 - z - ae - W - D.mainAxis : G - ae - W - D.mainAxis, xe = S ? -M[O] / 2 + z + ae + te + D.mainAxis : U + ae + te + D.mainAxis, Te = e.elements.arrow && Rs(e.elements.arrow), qe = Te ? w === \"y\" ? Te.clientTop || 0 : Te.clientLeft || 0 : 0, lt = (L = E == null ? void 0 : E[w]) != null ? L : 0, it = $ + be - lt - qe, nt = $ + xe - lt, Ne = ys(h ? ka(I, it) : I, $, h ? Vn(F, nt) : F);\n C[w] = Ne, X[w] = Ne - $;\n }\n if (l) {\n var ht, st = w === \"x\" ? Ot : Lt, ne = w === \"x\" ? Nt : Ht, fe = C[k], ge = k === \"y\" ? \"height\" : \"width\", de = fe + m[st], Se = fe - m[ne], Be = [Ot, Lt].indexOf(g) !== -1, J = (ht = E == null ? void 0 : E[k]) != null ? ht : 0, le = Be ? de : fe - M[ge] - V[ge] - J + D.altAxis, he = Be ? fe + M[ge] + V[ge] - J - D.altAxis : Se, De = h && Be ? Qu(le, fe, he) : ys(h ? le : de, fe, h ? he : Se);\n C[k] = De, X[k] = De - fe;\n }\n e.modifiersData[s] = X;\n }\n}\nconst Dd = {\n name: \"preventOverflow\",\n enabled: !0,\n phase: \"main\",\n fn: Td,\n requiresIfExists: [\"offset\"]\n};\nfunction Od(t) {\n return {\n scrollLeft: t.scrollLeft,\n scrollTop: t.scrollTop\n };\n}\nfunction Ld(t) {\n return t === qt(t) || !Vt(t) ? Li(t) : Od(t);\n}\nfunction Ad(t) {\n var e = t.getBoundingClientRect(), n = Qn(e.width) / t.offsetWidth || 1, s = Qn(e.height) / t.offsetHeight || 1;\n return n !== 1 || s !== 1;\n}\nfunction Ed(t, e, n) {\n n === void 0 && (n = !1);\n var s = Vt(e), a = Vt(e) && Ad(e), i = Cn(e), o = es(t, a), l = {\n scrollLeft: 0,\n scrollTop: 0\n }, r = {\n x: 0,\n y: 0\n };\n return (s || !s && !n) && ((en(e) !== \"body\" || // https://github.com/popperjs/popper-core/issues/1078\n Ei(i)) && (l = Ld(e)), Vt(e) ? (r = es(e, !0), r.x += e.clientLeft, r.y += e.clientTop) : i && (r.x = Ai(i))), {\n x: o.left + l.scrollLeft - r.x,\n y: o.top + l.scrollTop - r.y,\n width: o.width,\n height: o.height\n };\n}\nfunction Pd(t) {\n var e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), s = [];\n t.forEach(function(i) {\n e.set(i.name, i);\n });\n function a(i) {\n n.add(i.name);\n var o = [].concat(i.requires || [], i.requiresIfExists || []);\n o.forEach(function(l) {\n if (!n.has(l)) {\n var r = e.get(l);\n r && a(r);\n }\n }), s.push(i);\n }\n return t.forEach(function(i) {\n n.has(i.name) || a(i);\n }), s;\n}\nfunction Vd(t) {\n var e = Pd(t);\n return hi.reduce(function(n, s) {\n return n.concat(e.filter(function(a) {\n return a.phase === s;\n }));\n }, []);\n}\nfunction Rd(t) {\n var e;\n return function() {\n return e || (e = new Promise(function(n) {\n Promise.resolve().then(function() {\n e = void 0, n(t());\n });\n })), e;\n };\n}\nfunction gn(t) {\n for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), s = 1; s < e; s++)\n n[s - 1] = arguments[s];\n return [].concat(n).reduce(function(a, i) {\n return a.replace(/%s/, i);\n }, t);\n}\nvar On = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s', Id = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available', xo = [\"name\", \"enabled\", \"phase\", \"fn\", \"effect\", \"requires\", \"options\"];\nfunction Fd(t) {\n t.forEach(function(e) {\n [].concat(Object.keys(e), xo).filter(function(n, s, a) {\n return a.indexOf(n) === s;\n }).forEach(function(n) {\n switch (n) {\n case \"name\":\n typeof e.name != \"string\" && console.error(gn(On, String(e.name), '\"name\"', '\"string\"', '\"' + String(e.name) + '\"'));\n break;\n case \"enabled\":\n typeof e.enabled != \"boolean\" && console.error(gn(On, e.name, '\"enabled\"', '\"boolean\"', '\"' + String(e.enabled) + '\"'));\n break;\n case \"phase\":\n hi.indexOf(e.phase) < 0 && console.error(gn(On, e.name, '\"phase\"', \"either \" + hi.join(\", \"), '\"' + String(e.phase) + '\"'));\n break;\n case \"fn\":\n typeof e.fn != \"function\" && console.error(gn(On, e.name, '\"fn\"', '\"function\"', '\"' + String(e.fn) + '\"'));\n break;\n case \"effect\":\n e.effect != null && typeof e.effect != \"function\" && console.error(gn(On, e.name, '\"effect\"', '\"function\"', '\"' + String(e.fn) + '\"'));\n break;\n case \"requires\":\n e.requires != null && !Array.isArray(e.requires) && console.error(gn(On, e.name, '\"requires\"', '\"array\"', '\"' + String(e.requires) + '\"'));\n break;\n case \"requiresIfExists\":\n Array.isArray(e.requiresIfExists) || console.error(gn(On, e.name, '\"requiresIfExists\"', '\"array\"', '\"' + String(e.requiresIfExists) + '\"'));\n break;\n case \"options\":\n case \"data\":\n break;\n default:\n console.error('PopperJS: an invalid property has been provided to the \"' + e.name + '\" modifier, valid properties are ' + xo.map(function(s) {\n return '\"' + s + '\"';\n }).join(\", \") + '; but \"' + n + '\" was provided.');\n }\n e.requires && e.requires.forEach(function(s) {\n t.find(function(a) {\n return a.name === s;\n }) == null && console.error(gn(Id, String(e.name), s, s));\n });\n });\n });\n}\nfunction Nd(t, e) {\n var n = /* @__PURE__ */ new Set();\n return t.filter(function(s) {\n var a = e(s);\n if (!n.has(a))\n return n.add(a), !0;\n });\n}\nfunction Hd(t) {\n var e = t.reduce(function(n, s) {\n var a = n[s.name];\n return n[s.name] = a ? Object.assign({}, a, s, {\n options: Object.assign({}, a.options, s.options),\n data: Object.assign({}, a.data, s.data)\n }) : s, n;\n }, {});\n return Object.keys(e).map(function(n) {\n return e[n];\n });\n}\nvar ko = \"Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.\", Wd = \"Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.\", wo = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n};\nfunction So() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n return !e.some(function(s) {\n return !(s && typeof s.getBoundingClientRect == \"function\");\n });\n}\nfunction zd(t) {\n t === void 0 && (t = {});\n var e = t, n = e.defaultModifiers, s = n === void 0 ? [] : n, a = e.defaultOptions, i = a === void 0 ? wo : a;\n return function(l, r, c) {\n c === void 0 && (c = i);\n var u = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, wo, i),\n modifiersData: {},\n elements: {\n reference: l,\n popper: r\n },\n attributes: {},\n styles: {}\n }, f = [], d = !1, h = {\n state: u,\n setOptions: function(g) {\n var b = typeof g == \"function\" ? g(u.options) : g;\n v(), u.options = Object.assign({}, i, u.options, b), u.scrollParents = {\n reference: Jn(l) ? xs(l) : l.contextElement ? xs(l.contextElement) : [],\n popper: xs(r)\n };\n var S = Vd(Hd([].concat(s, u.options.modifiers)));\n if (u.orderedModifiers = S.filter(function(E) {\n return E.enabled;\n }), process.env.NODE_ENV !== \"production\") {\n var w = Nd([].concat(S, u.options.modifiers), function(E) {\n var X = E.name;\n return X;\n });\n if (Fd(w), jt(u.options.placement) === Va) {\n var k = u.orderedModifiers.find(function(E) {\n var X = E.name;\n return X === \"flip\";\n });\n k || console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', \"present and enabled to work.\"].join(\" \"));\n }\n var C = Xt(r), M = C.marginTop, V = C.marginRight, B = C.marginBottom, D = C.marginLeft;\n [M, V, B, D].some(function(E) {\n return parseFloat(E);\n }) && console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', \"between the popper and its reference element or boundary.\", \"To replicate margin, use the `offset` modifier, as well as\", \"the `padding` option in the `preventOverflow` and `flip`\", \"modifiers.\"].join(\" \"));\n }\n return p(), h.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function() {\n if (!d) {\n var g = u.elements, b = g.reference, S = g.popper;\n if (!So(b, S)) {\n process.env.NODE_ENV !== \"production\" && console.error(ko);\n return;\n }\n u.rects = {\n reference: Ed(b, Rs(S), u.options.strategy === \"fixed\"),\n popper: Di(S)\n }, u.reset = !1, u.placement = u.options.placement, u.orderedModifiers.forEach(function(E) {\n return u.modifiersData[E.name] = Object.assign({}, E.data);\n });\n for (var w = 0, k = 0; k < u.orderedModifiers.length; k++) {\n if (process.env.NODE_ENV !== \"production\" && (w += 1, w > 100)) {\n console.error(Wd);\n break;\n }\n if (u.reset === !0) {\n u.reset = !1, k = -1;\n continue;\n }\n var C = u.orderedModifiers[k], M = C.fn, V = C.options, B = V === void 0 ? {} : V, D = C.name;\n typeof M == \"function\" && (u = M({\n state: u,\n options: B,\n name: D,\n instance: h\n }) || u);\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: Rd(function() {\n return new Promise(function(m) {\n h.forceUpdate(), m(u);\n });\n }),\n destroy: function() {\n v(), d = !0;\n }\n };\n if (!So(l, r))\n return process.env.NODE_ENV !== \"production\" && console.error(ko), h;\n h.setOptions(c).then(function(m) {\n !d && c.onFirstUpdate && c.onFirstUpdate(m);\n });\n function p() {\n u.orderedModifiers.forEach(function(m) {\n var g = m.name, b = m.options, S = b === void 0 ? {} : b, w = m.effect;\n if (typeof w == \"function\") {\n var k = w({\n state: u,\n name: g,\n instance: h,\n options: S\n }), C = function() {\n };\n f.push(k || C);\n }\n });\n }\n function v() {\n f.forEach(function(m) {\n return m();\n }), f = [];\n }\n return h;\n };\n}\nvar Yd = [cd, $d, ld, Gu, Md, xd, Dd, sd, wd], _o = /* @__PURE__ */ zd({\n defaultModifiers: Yd\n});\nfunction $n() {\n const t = y(!1), e = y(), n = y(), s = y(void 0), a = $t({});\n function i(h, p, v) {\n e.value = h, n.value = p, a.value = {\n placement: \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 0]\n }\n }\n ],\n ...v\n };\n }\n function o() {\n t.value = !t.value, t.value && Ge(() => c());\n }\n function l() {\n t.value || (t.value = !0, Ge(() => s.value = c()));\n }\n function r() {\n t.value && (t.value = !t.value);\n }\n function c() {\n !e.value || !n.value || (s.value === void 0 || !s.value ? s.value = _o(\n e.value,\n n.value,\n a.value\n ) : s.value.update());\n }\n function u(h, p) {\n a.value && (a.value[h] = p), e.value && n.value && (s.value = _o(\n e.value,\n n.value,\n a.value\n ));\n }\n function f() {\n s.value && (s.value.destroy(), s.value = void 0);\n }\n function d(h, p) {\n return typeof h == \"string\" ? h.split(\",\").map((v) => Number.parseInt(v, 10)) : typeof h == \"function\" ? (v) => h(v, p) : h;\n }\n return {\n setPopper: i,\n togglePopper: o,\n isPopperActive: t,\n openPopper: l,\n closePopper: r,\n updatePopper: u,\n destroyPopper: f,\n getPopperOffset: d\n };\n}\nconst vr = (t, e) => {\n const n = {\n none: {\n width: 0,\n attr: null\n },\n sm: {\n width: 576,\n attr: null\n },\n md: {\n width: 768,\n attr: null\n },\n lg: {\n width: 992,\n attr: null\n },\n xl: {\n width: 1200,\n attr: null\n },\n xxl: {\n width: 1400,\n attr: null\n },\n mega: {\n width: 1e4,\n attr: null\n }\n };\n e.forEach((i) => {\n const o = Object.keys(n).filter(\n (l) => i.includes(l) ? l : !1\n )[0];\n o ? n[o].attr = i : n.none.attr = i;\n });\n const s = {};\n return Object.keys(n).reduce((i, o, l) => n[i].attr && n[o].attr || n[i].attr && !o ? (s[n[i].attr] = {\n min: n[i].width,\n max: n[o].width\n }, o) : n[i].attr && !n[o].attr ? (l === Object.keys(n).length - 1 && (s[n[i].attr] = {\n min: n[i].width,\n max: n[o].width\n }), i) : \"\"), Object.keys(s).filter((i) => {\n if (t > s[i].min && t < s[i].max)\n return i;\n })[0];\n}, Sn = () => typeof window < \"u\" && window.matchMedia ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches : !1, jd = {\n name: \"MDBDropdown\"\n}, CS = /* @__PURE__ */ re({\n ...jd,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n boundary: {\n type: String,\n default: \"clippingParent\"\n },\n btnGroup: {\n type: Boolean,\n default: !1\n },\n dropup: {\n type: Boolean,\n default: !1\n },\n dropend: {\n type: Boolean,\n default: !1\n },\n dropstart: {\n type: Boolean,\n default: !1\n },\n align: {\n type: [String, Array],\n default: \"start\"\n },\n offset: {\n type: [Array, String, Function],\n default: () => [0, 0]\n },\n popperConfig: [null, Object, Function],\n target: String,\n modelValue: Boolean\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = T(() => [\n n.btnGroup ? \"btn-group\" : \"dropdown\",\n n.dropup && \"dropup\",\n n.dropend && \"dropend\",\n n.dropstart && \"dropstart\"\n ]), {\n setPopper: a,\n isPopperActive: i,\n closePopper: o,\n openPopper: l,\n updatePopper: r,\n getPopperOffset: c\n } = $n(), u = y(null), f = y(null), d = y(null), h = y(window.innerWidth), p = y(\"\");\n q(\"menuAlignClasses\", p), q(\"closePopper\", o);\n const v = y(n.modelValue), m = y(!0), g = y(0), b = y(0);\n pe(\n () => n.modelValue,\n (L) => {\n clearInterval(b.value), m.value && L !== v.value && (v.value = n.modelValue, m.value = !1), b.value = setTimeout(\n () => {\n v.value = n.modelValue;\n },\n Sn() ? 0 : 300\n );\n }\n ), pe(\n () => m.value,\n (L) => {\n L || (g.value = setTimeout(\n () => {\n m.value = !0;\n },\n Sn() ? 0 : 200\n ));\n }\n ), q(\"isActive\", v);\n const S = y(!1), w = y(null);\n q(\"setMenuMountedState\", (L, A) => {\n S.value = L, w.value = A;\n });\n const C = (L) => {\n L ? (D(), l()) : o();\n };\n pe(\n () => S.value,\n (L) => C(L),\n { immediate: !0 }\n ), q(\"isPopperActive\", i), q(\"externalTarget\", n.target), q(\"handleEscAndOutsideClick\", () => {\n e(\"update:modelValue\", !1);\n });\n const V = n.dropup ? \"top\" : n.dropend ? \"right\" : n.dropstart ? \"left\" : \"bottom\", B = () => {\n typeof n.align == \"string\" ? p.value = `dropdown-menu-${n.align}` : p.value = n.align.map(\n ($) => `dropdown-menu-${$}`.trim()\n );\n let L = n.align;\n (typeof n.align != \"string\" || n.align !== \"start\" && n.align !== \"end\") && (L = E(), Le(window, \"resize\", X));\n const A = `${V}-${L}`;\n let P = document.querySelector(n.boundary);\n P || (P = n.boundary);\n const O = {\n placement: A,\n modifiers: [\n {\n name: \"preventOverflow\",\n options: {\n boundary: P\n }\n },\n {\n name: \"offset\",\n options: {\n offset: c(n.offset, u.value)\n }\n }\n ]\n };\n return {\n ...O,\n ...typeof n.popperConfig == \"function\" ? n.popperConfig(O) : n.popperConfig\n };\n }, D = () => {\n var A;\n f.value = n.target ? document.querySelector(n.target) : (A = u.value) == null ? void 0 : A.querySelector(\"[data-trigger]\"), d.value = w.value;\n const L = B();\n a(f.value, d.value, L);\n }, E = () => {\n h.value = window.innerWidth;\n let L = n.align;\n typeof n.align == \"string\" && (L = [\"start\", n.align]);\n const A = vr(\n h.value,\n L\n );\n return A ? A.includes(\"start\") ? \"start\" : \"end\" : \"\";\n }, X = () => {\n const L = E();\n r(\"placement\", `${V}-${L}`);\n };\n return dt(() => {\n clearInterval(g.value), clearInterval(b.value), Me(window, \"resize\", X);\n }), (L, A) => (x(), ee(ue(t.tag), {\n class: Y(s.value),\n ref_key: \"root\",\n ref: u\n }, {\n default: Q(() => [\n oe(L.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), tn = {\n stopProp(t) {\n t.stopPropagation();\n },\n mounted(t, e) {\n const n = (a) => {\n const i = a.target;\n !t.contains(i) && t !== i && e.value(a);\n };\n t.clickOutside = n;\n const s = e.modifiers.mousedown ? \"mousedown\" : \"click\";\n document.addEventListener(s, (a) => {\n var i;\n return (i = t.clickOutside) == null ? void 0 : i.call(t, a);\n }), document.addEventListener(\"touchstart\", (a) => {\n var i;\n return (i = t.clickOutside) == null ? void 0 : i.call(t, a);\n });\n },\n unmounted(t, e) {\n if (!t.clickOutside) return;\n const n = e.modifiers.mousedown ? \"mousedown\" : \"click\";\n document.removeEventListener(n, (s) => {\n var a;\n return (a = t.clickOutside) == null ? void 0 : a.call(t, s);\n }), document.removeEventListener(\"touchstart\", (s) => {\n var a;\n return (a = t.clickOutside) == null ? void 0 : a.call(t, s);\n }), delete t.clickOutside;\n }\n}, Xd = {\n key: 1,\n class: \"visually-hidden\"\n}, Ud = {\n name: \"MDBDropdownToggle\"\n}, $S = /* @__PURE__ */ re({\n ...Ud,\n props: {\n ...un.props,\n tag: {\n type: String,\n default: \"button\"\n },\n href: [String, null],\n split: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n s.value,\n \"dropdown-toggle\",\n e.split && \"dropdown-toggle-split\",\n e.size && `btn-${e.size}`,\n e.outline && `btn-outline-${e.outline}`\n ]), s = T(() => e.tag !== \"button\" ? void 0 : `btn ${e.color && !e.outline ? `btn-${e.color}` : e.outline ? \"\" : \"btn-primary\"}`), a = y(!1), i = () => {\n a.value = !a.value;\n }, o = N(\"isPopperActive\");\n Ze(() => {\n a.value = o ? o.value : !1;\n });\n const l = N(\"handleEscAndOutsideClick\"), r = (c) => {\n const u = c.target;\n o && !u.closest(\".dropdown-menu\") && (l == null || l());\n };\n return (c, u) => je((x(), ee(ue(t.tag), {\n type: \"button\",\n class: Y(n.value),\n \"aria-expanded\": a.value,\n \"aria-haspopup\": \"true\",\n onClick: i,\n \"data-trigger\": \"\"\n }, {\n default: Q(() => [\n t.split ? (x(), R(\"span\", Xd, \"Toggle Dropdown\")) : oe(c.$slots, \"default\", { key: 0 })\n ]),\n _: 3\n }, 8, [\"class\", \"aria-expanded\"])), [\n [_(tn), r],\n [_(Ct)]\n ]);\n }\n}), qd = [\"tabindex\"], Kd = {\n key: 1,\n class: \"dropdown-divider\"\n}, Gd = {\n name: \"MDBDropdownItem\",\n inheritAttrs: !1\n}, BS = /* @__PURE__ */ re({\n ...Gd,\n props: {\n tag: {\n type: String,\n default: \"a\"\n },\n to: [String, Object],\n href: String,\n disabled: {\n type: Boolean,\n default: !1\n },\n active: {\n type: Boolean,\n default: !1\n },\n exact: {\n type: Boolean,\n default: !1\n },\n newTab: {\n type: Boolean,\n default: !1\n },\n submenu: {\n type: Boolean,\n default: !1\n },\n submenuIcon: String,\n divider: {\n type: Boolean,\n default: !1\n },\n text: {\n type: Boolean,\n default: !1\n },\n header: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n a.value,\n e.disabled ? \"disabled\" : \"\",\n e.active ? \"active\" : \"\",\n e.submenu && \"dropdown-submenu\"\n ]), s = T(() => !!(e.to !== void 0 || e.href !== void 0 || e.tag !== \"a\" || e.text)), a = T(() => e.text ? \"dropdown-item-text\" : e.header ? \"dropdown-header\" : \"dropdown-item\"), i = T(() => e.to ? \"router-link\" : e.text ? \"span\" : e.tag), o = T(() => e.newTab ? \"_blank\" : null), l = N(\n \"handleEscAndOutsideClick\",\n () => !1\n );\n return (r, c) => (x(), R(\"li\", {\n tabindex: t.divider ? void 0 : 0\n }, [\n s.value ? (x(), ee(ue(i.value), $e({ key: 0 }, r.$attrs, {\n to: t.to,\n exact: t.to ? t.exact : null,\n href: t.to ? null : t.href,\n class: n.value,\n target: o.value,\n type: t.tag === \"button\" ? \"button\" : null,\n \"aria-current\": t.active ? !0 : null,\n \"aria-disabled\": t.disabled ? !0 : null,\n disabled: t.disabled ? !0 : null,\n onClick: _(l)\n }), {\n default: Q(() => [\n oe(r.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"to\", \"exact\", \"href\", \"class\", \"target\", \"type\", \"aria-current\", \"aria-disabled\", \"disabled\", \"onClick\"])) : t.divider ? (x(), R(\"hr\", Kd)) : oe(r.$slots, \"default\", { key: 2 })\n ], 8, qd));\n }\n}), Zd = {\n key: 0,\n \"data-popper-arrow\": \"\",\n class: \"tooltip_arrow\"\n}, Jd = {\n name: \"MDBTooltip\"\n}, Qd = /* @__PURE__ */ re({\n ...Jd,\n props: {\n tag: {\n type: String,\n default: \"span\"\n },\n modelValue: Boolean,\n reference: String,\n popover: String,\n options: {\n type: [Object, Function],\n default() {\n return {};\n }\n },\n boundary: {\n type: String,\n default: \"clippingParent\"\n },\n fallbackPlacements: {\n type: Array,\n default: () => [\"top\", \"right\", \"bottom\", \"left\"]\n },\n offset: {\n type: String,\n default: \"0, 5\"\n },\n direction: {\n type: String,\n default: \"top\",\n validator: (t) => [\"top\", \"right\", \"bottom\", \"left\"].indexOf(t.toLowerCase()) > -1\n },\n maxWidth: {\n type: Number,\n default: 276\n },\n arrow: {\n type: Boolean,\n default: !1\n },\n disabled: Boolean\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, { setPopper: s, isPopperActive: a, openPopper: i, closePopper: o, getPopperOffset: l } = $n(), r = y(null), c = y(null), u = T(() => `max-width: ${n.maxWidth}px!important`), f = () => {\n const S = n.direction;\n let w = document.querySelector(n.boundary);\n w || (w = n.boundary);\n const k = {\n placement: S,\n modifiers: [\n {\n name: \"flip\",\n options: {\n fallbackPlacements: n.fallbackPlacements\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n boundary: w\n }\n },\n {\n name: \"offset\",\n options: {\n offset: l(n.offset, r.value)\n }\n },\n {\n name: \"arrow\",\n options: {\n element: \".tooltip_arrow\",\n padding: 5\n }\n }\n ]\n };\n return {\n ...k,\n ...typeof n.options == \"function\" ? n.options(k) : n.options\n };\n }, d = () => {\n r.value = n.reference ? document.querySelector(n.reference) : r.value, c.value = n.popover ? document.querySelector(n.popover) : c.value;\n const S = f();\n r.value && c.value && s(r.value, c.value, S);\n }, h = y(!1);\n Ze(() => {\n if (n.modelValue) {\n if (h.value)\n return;\n Ge(() => {\n d(), setTimeout(i, 0), setTimeout(() => {\n var S;\n (S = c.value) == null || S.classList.add(\"show\");\n }, 0);\n });\n } else {\n if (!a.value)\n return;\n setTimeout(() => {\n c.value && c.value.classList.remove(\"show\");\n }, 10), h.value = !0, setTimeout(() => {\n o(), h.value = !1;\n }, 150);\n }\n });\n const p = T(() => n.modelValue || !n.modelValue && a.value ? !0 : (!n.modelValue && !a.value, !1)), v = () => {\n !n.disabled && e(\"update:modelValue\", !0);\n }, m = () => {\n !n.disabled && e(\"update:modelValue\", !1);\n }, g = er(), b = T(() => {\n var w;\n const S = (w = g.tip) == null ? void 0 : w.call(g);\n return !S || S.length === 0 || S.every((k) => !k.children || k.children.length === 0);\n });\n return (S, w) => (x(), R(Ie, null, [\n (x(), ee(ue(t.tag), $e({\n ref_key: \"triggerEl\",\n ref: r,\n style: { display: \"inline-block\" }\n }, S.$attrs, {\n onMouseenter: v,\n onMouseleave: m,\n onFocus: v,\n onBlur: m\n }), {\n default: Q(() => [\n oe(S.$slots, \"reference\")\n ]),\n _: 3\n }, 16)),\n Ee(At, { name: \"fade\" }, {\n default: Q(() => [\n p.value && !b.value ? (x(), R(\"div\", {\n key: 0,\n ref_key: \"popperEl\",\n ref: c,\n class: Y({\n tooltip: !0,\n fade: !0,\n \"tooltip-inner\": !0\n }),\n style: Ce([u.value])\n }, [\n oe(S.$slots, \"tip\"),\n t.arrow ? (x(), R(\"div\", Zd)) : K(\"\", !0)\n ], 4)) : K(\"\", !0)\n ]),\n _: 3\n })\n ], 64));\n }\n}), ef = {\n key: 0,\n class: \"popover-header\"\n}, tf = {\n key: 1,\n class: \"popover-body\"\n}, nf = {\n key: 2,\n \"data-popper-arrow\": \"\",\n class: \"popover_arrow\"\n}, sf = {\n name: \"MDBPopover\"\n}, af = /* @__PURE__ */ re({\n ...sf,\n props: {\n tag: {\n type: String,\n default: \"span\"\n },\n modelValue: Boolean,\n reference: String,\n popover: String,\n options: {\n type: [Object, Function],\n default() {\n return {};\n }\n },\n boundary: {\n type: String,\n default: \"clippingParent\"\n },\n fallbackPlacements: {\n type: Array,\n default: () => [\"top\", \"right\", \"bottom\", \"left\"]\n },\n offset: {\n type: String,\n default: \"0, 5\"\n },\n direction: {\n type: String,\n default: \"bottom\",\n validator: (t) => [\"top\", \"right\", \"bottom\", \"left\"].indexOf(t.toLowerCase()) > -1\n },\n maxWidth: {\n type: Number,\n default: 276\n },\n arrow: {\n type: Boolean,\n default: !1\n },\n dismissible: {\n type: Boolean,\n default: !1\n },\n hover: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, {\n setPopper: s,\n isPopperActive: a,\n openPopper: i,\n closePopper: o,\n destroyPopper: l,\n getPopperOffset: r\n } = $n(), c = y(null), u = y(null), f = T(() => `max-width: ${n.maxWidth}px!important`), d = () => n.arrow ? [0, 10] : n.offset, h = () => {\n const w = n.direction;\n let k = document.querySelector(n.boundary);\n k || (k = n.boundary);\n const C = d(), M = {\n placement: w,\n modifiers: [\n {\n name: \"flip\",\n options: {\n fallbackPlacements: n.fallbackPlacements\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n boundary: k\n }\n },\n {\n name: \"offset\",\n options: {\n offset: r(C, c.value)\n }\n },\n {\n name: \"arrow\",\n options: {\n element: \".popover_arrow\",\n padding: 5\n }\n }\n ]\n };\n return {\n ...M,\n ...typeof n.options == \"function\" ? n.options(M) : n.options\n };\n }, p = () => {\n c.value = n.reference ? document.querySelector(n.reference) : c.value, u.value = n.popover ? document.querySelector(n.popover) : u.value;\n const w = h();\n c.value && u.value && s(c.value, u.value, w);\n };\n Ze(() => {\n if (n.modelValue)\n Ge(() => {\n p(), setTimeout(i, 0), setTimeout(() => {\n var w;\n (w = u.value) == null || w.classList.add(\"show\"), n.hover && u.value && (Le(u.value, \"mouseover\", m), Le(u.value, \"mouseout\", g));\n }, 0);\n });\n else {\n if (!a.value)\n return;\n setTimeout(() => {\n u.value && (Me(u.value, \"mouseover\", m), Me(u.value, \"mouseout\", g), u.value.classList.remove(\"show\"));\n }, 0), setTimeout(o, 0), l();\n }\n });\n const v = T(() => n.modelValue || !n.modelValue && a.value ? !0 : (!n.modelValue && !a.value, !1)), m = () => {\n e(\"update:modelValue\", !0);\n }, g = () => {\n e(\"update:modelValue\", !1);\n }, b = () => {\n !n.dismissible || !n.modelValue || e(\"update:modelValue\", !1);\n }, S = () => {\n c.value && (Me(c.value, \"mouseover\", m), Me(c.value, \"mouseout\", g)), l();\n };\n return Fe(() => {\n n.hover && c.value && (Le(c.value, \"mouseover\", m), Le(c.value, \"mouseout\", g));\n }), dt(() => {\n S();\n }), (w, k) => (x(), R(Ie, null, [\n je((x(), ee(ue(t.tag), $e({\n ref_key: \"triggerEl\",\n ref: c,\n style: { display: \"inline-block\" },\n tabindex: t.dismissible ? 0 : null\n }, w.$attrs), {\n default: Q(() => [\n oe(w.$slots, \"reference\")\n ]),\n _: 3\n }, 16, [\"tabindex\"])), [\n [_(tn), b]\n ]),\n Ee(At, null, {\n default: Q(() => [\n v.value && (w.$slots.header || w.$slots.body) ? (x(), R(\"div\", {\n key: 0,\n ref_key: \"popperEl\",\n ref: u,\n class: Y({ popover: !0, fade: !0 }),\n style: Ce([f.value])\n }, [\n w.$slots.header ? (x(), R(\"div\", ef, [\n oe(w.$slots, \"header\")\n ])) : K(\"\", !0),\n w.$slots.body ? (x(), R(\"div\", tf, [\n oe(w.$slots, \"body\")\n ])) : K(\"\", !0),\n oe(w.$slots, \"default\"),\n t.arrow ? (x(), R(\"div\", nf)) : K(\"\", !0)\n ], 4)) : K(\"\", !0)\n ]),\n _: 3\n })\n ], 64));\n }\n});\nfunction of() {\n const t = y(), e = y(), n = y();\n function s(c) {\n return t.value = c, a(), Le(window, \"keydown\", l), !0;\n }\n function a() {\n if (!t.value)\n return;\n const c = Array.from(\n t.value.querySelectorAll(\n 'button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((u) => {\n const f = u instanceof HTMLAnchorElement ? !0 : !u.disabled;\n return !u.classList.contains(\"ps__thumb-x\") && !u.classList.contains(\"ps__thumb-y\") && f;\n });\n c.length !== 0 && (e.value = c[0], n.value = c[c.length - 1], Le(\n n.value,\n \"keydown\",\n (u) => i(u)\n ));\n }\n function i(c) {\n c.key === \"Tab\" && (c.preventDefault(), o());\n }\n function o() {\n e.value && e.value.focus();\n }\n function l(c, u = !1) {\n c.key === \"Tab\" && (c.preventDefault(), o()), !u && Me(window, \"keydown\", l);\n }\n function r() {\n Me(n.value, \"keydown\", i);\n }\n return {\n initFocusTrap: s,\n removeFocusTrap: r\n };\n}\nfunction mr(t, e) {\n const n = y(\"root\"), s = y(\"dialog\"), a = y(\"\"), i = y(null), o = y(t.modelValue), l = y(!1), r = y(null);\n Ze(() => {\n o.value = t.modelValue, o.value && e(\"update:modelValue\", !0);\n });\n const c = T(() => [\n \"modal\",\n t.animation && \"fade\",\n o.value && \"show\",\n t.staticBackdrop && \"modal-static\"\n ]), u = T(() => [\n \"modal-dialog\",\n t.size && \"modal-\" + t.size,\n t.centered && \"modal-dialog-centered\",\n t.scrollable && \"modal-dialog-scrollable\",\n t.fullscreen && v.value,\n t.dialogClasses\n ]), f = T(() => t.removeBackdrop ? !1 : { \"background-color\": \"rgba(0,0,0, 0.5)\" }), d = y(!1), h = T(() => {\n if (!(d.value || t.keepOverflow))\n return \"overflow: hidden\";\n }), p = T(() => t.bgSrc ? { \"background-image\": `url(\"${t.bgSrc}\")` } : {}), v = T(() => t.fullscreen ? [\n t.fullscreen !== !0 ? `modal-fullscreen-${t.fullscreen}` : \"modal-fullscreen\"\n ] : !1), m = () => {\n typeof s.value != \"string\" && b(s.value);\n }, g = () => {\n e(\"update:modelValue\", !1);\n };\n q(\"closeModal\", g);\n const b = (O) => {\n O.style.transform = \"scale(1.02)\", setTimeout(() => O.style.transform = \"scale(1.0)\", 300);\n }, S = (O) => {\n O.key === \"Escape\" && o.value && g();\n }, w = y(null), k = y(0), C = () => {\n const O = document.createElement(\"div\");\n O.className = \"modal-scrollbar-measure\", document.body.appendChild(O);\n const $ = O.getBoundingClientRect().width - O.clientWidth;\n return document.body.removeChild(O), $;\n }, M = () => {\n const O = document.body.getBoundingClientRect();\n w.value = Math.round(O.left + O.right) < window.innerWidth, k.value = w.value ? Number(C().toFixed(2)) : 0;\n }, V = () => {\n document.body.style.paddingRight = \"\", document.body.classList.remove(\"modal-open\");\n }, B = (O) => {\n const $ = O;\n d.value = !1, a.value = \"translate(0, -25%)\";\n const I = $.childNodes[0];\n I.style.transform = a.value, $.style.opacity = \"0\", $.style.display = \"block\", M(), P(), A.value && (document.body.style.paddingRight = `${k.value}px`, $.style.paddingRight = `${k.value}px`, document.body.classList.add(\"modal-open\")), e(\"show\", n.value);\n }, D = (O) => {\n var F;\n const $ = O, I = $.childNodes[0];\n I.style.transform = \"translate(0,0)\", $.style.opacity = \"1\", setTimeout(() => {\n d.value = !0, e(\"shown\", n.value);\n }, 400), r.value = n.value, t.keyboard && Le(window, \"keyup\", S), t.focus && (i.value = of(), (F = i.value) == null || F.initFocusTrap(n.value));\n }, E = (O) => {\n const $ = O, I = $.childNodes[0];\n I.style.transform = a.value, $.style.opacity = \"0\", A.value && setTimeout(() => {\n $.style.paddingRight = \"\", V();\n }, 200), e(\"hide\", r.value), t.keyboard && Me(window, \"keyup\", S), t.focus && i.value && i.value.removeFocusTrap();\n }, X = () => {\n e(\"hidden\", r.value), d.value = !1;\n }, L = () => !!(document.body.classList.contains(\"modal-open\") && document.body.querySelector(\".modal.show\"));\n tr(() => {\n L() && (V(), document.body.style.overflowY = \"\"), Me(window, \"keyup\", S);\n });\n const A = y(!0), P = () => {\n A.value = document.body.classList.contains(\"modal-open\") ? !!document.querySelector(\".modal.non-invasive\") : !0;\n };\n return {\n wrapperClass: c,\n dialogClass: u,\n backdropStyle: f,\n backdropOverflowStyle: h,\n computedContentStyle: p,\n root: n,\n dialog: s,\n isActive: o,\n closeModal: g,\n animateStaticBackdrop: m,\n enter: B,\n afterEnter: D,\n beforeLeave: E,\n afterLeave: X,\n scrollbarWidth: k,\n setScrollbar: M,\n shouldOverflow: d,\n thisElement: r,\n handleEscKeyUp: S,\n focusTrap: i,\n dialogTransform: a,\n animateStaticModal: b,\n fullscreenClass: v,\n clickFromBackdrop: l,\n isOnlyNonInvasiveModal: P,\n onlyNonInvasiveModal: A\n };\n}\nconst lf = {\n name: \"MDBModal\"\n}, rf = /* @__PURE__ */ re({\n ...lf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: Boolean,\n size: {\n type: String,\n validator: (t) => [\"sm\", \"lg\", \"xl\"].indexOf(t.toLowerCase()) > -1\n },\n removeBackdrop: {\n type: Boolean,\n default: !1\n },\n staticBackdrop: {\n type: Boolean,\n default: !1\n },\n centered: {\n type: Boolean,\n default: !1\n },\n bgSrc: {\n type: String,\n default: \"\"\n },\n scrollable: {\n type: Boolean,\n default: !1\n },\n duration: {\n type: Number,\n default: 400\n },\n labelledby: String,\n fullscreen: {\n type: [Boolean, String],\n default: !1\n },\n animation: {\n type: Boolean,\n default: !0\n },\n dialogClasses: {\n type: String\n },\n keyboard: {\n type: Boolean,\n default: !0\n },\n focus: {\n type: Boolean,\n default: !0\n },\n keepOverflow: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"show\",\n \"shown\",\n \"hide\",\n \"hidden\",\n \"update:modelValue\"\n ],\n setup(t, { emit: e }) {\n const n = t, {\n wrapperClass: s,\n dialogClass: a,\n backdropStyle: i,\n backdropOverflowStyle: o,\n computedContentStyle: l,\n root: r,\n dialog: c,\n isActive: u,\n closeModal: f,\n animateStaticBackdrop: d,\n enter: h,\n afterEnter: p,\n beforeLeave: v,\n afterLeave: m,\n clickFromBackdrop: g\n } = mr(n, e);\n return (b, S) => (x(), ee(At, {\n onEnter: _(h),\n onAfterEnter: _(p),\n onBeforeLeave: _(v),\n onAfterLeave: _(m)\n }, {\n default: Q(() => [\n _(u) ? (x(), ee(ue(t.tag), {\n key: 0,\n ref_key: \"root\",\n ref: r,\n class: Y(_(s)),\n style: Ce([_(i), _(o)]),\n \"aria-hidden\": !_(u),\n \"aria-modal\": _(u) ? !0 : null,\n \"aria-labelledby\": t.labelledby,\n role: \"dialog\",\n onMousedown: S[0] || (S[0] = _e((w) => g.value = !0, [\"self\"])),\n onClick: S[1] || (S[1] = _e(\n () => {\n _(g) && (t.staticBackdrop ? _(d)() : (_(f)(), g.value = !1));\n },\n [\"self\"]\n ))\n }, {\n default: Q(() => [\n H(\"div\", {\n class: Y(_(a)),\n role: \"document\",\n ref_key: \"dialog\",\n ref: c\n }, [\n H(\"div\", {\n class: \"modal-content\",\n style: Ce(_(l))\n }, [\n oe(b.$slots, \"default\")\n ], 4)\n ], 2)\n ]),\n _: 3\n }, 40, [\"class\", \"style\", \"aria-hidden\", \"aria-modal\", \"aria-labelledby\"])) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"onEnter\", \"onAfterEnter\", \"onBeforeLeave\", \"onAfterLeave\"]));\n }\n}), cf = {\n name: \"MDBModalHeader\"\n}, TS = /* @__PURE__ */ re({\n ...cf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n close: {\n type: Boolean,\n default: !0\n },\n closeWhite: {\n type: Boolean,\n default: !1\n },\n color: String\n },\n setup(t) {\n const e = t, n = N(\"closeModal\"), s = T(() => [\"modal-header\", e.color && `bg-${e.color}`]);\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(s.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\"),\n t.close ? (x(), ee(Qc, {\n key: 0,\n white: t.closeWhite,\n onClick: _e(_(n), [\"prevent\"])\n }, null, 8, [\"white\", \"onClick\"])) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), uf = {\n name: \"MDBModalTitle\"\n}, DS = /* @__PURE__ */ re({\n ...uf,\n props: {\n tag: {\n type: String,\n default: \"h5\"\n },\n bold: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"modal-title\", e.bold && \"font-weight-bold\"]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), df = {\n name: \"MDBModalBody\"\n}, OS = /* @__PURE__ */ re({\n ...df,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = T(() => [\"modal-body\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), ff = {\n name: \"MDBModalFooter\"\n}, LS = /* @__PURE__ */ re({\n ...ff,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = T(() => [\"modal-footer\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), hf = {\n name: \"MDBAccordion\"\n}, AS = /* @__PURE__ */ re({\n ...hf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: String,\n stayOpen: Boolean,\n flush: Boolean,\n classes: String,\n borderless: Boolean\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(null), a = T(() => [\n \"accordion\",\n n.flush && \"accordion-flush\",\n n.classes,\n n.borderless && \"accordion-borderless\"\n ]), i = y(n.modelValue), o = (l) => {\n i.value = l, e(\"update:modelValue\", l);\n };\n return Ze(() => i.value = n.modelValue), q(\"activeItem\", i), q(\"stayOpen\", n.stayOpen), q(\"setActiveItem\", o), (l, r) => (x(), ee(ue(t.tag), {\n class: Y(a.value),\n ref_key: \"accordionRef\",\n ref: s\n }, {\n default: Q(() => [\n oe(l.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), pf = [\"aria-controls\"], vf = {\n name: \"MDBAccordionItem\"\n}, ES = /* @__PURE__ */ re({\n ...vf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n collapseId: {\n type: String,\n required: !0\n },\n headerTitle: String,\n headerClasses: String,\n bodyClasses: String,\n itemClasses: String,\n icon: String\n },\n setup(t) {\n const e = t, n = y(null), s = T(() => [\"accordion-item\", e.itemClasses]), a = T(() => [\"accordion-header\", e.headerClasses]), i = T(() => [\"accordion-body\", e.bodyClasses]), o = T(() => [\"accordion-button\", !f.value && \"collapsed\"]), l = T(() => e.icon ? [e.icon] : !1), r = N(\n \"setActiveItem\",\n null\n ), c = N(\"activeItem\", null), u = N(\"stayOpen\", !1), f = y((c == null ? void 0 : c.value) === e.collapseId);\n Ze(() => {\n u || (f.value = (c == null ? void 0 : c.value) === e.collapseId);\n });\n const d = () => {\n u ? f.value = !f.value : r && (f.value ? r(\"\") : r(e.collapseId));\n };\n return (h, p) => (x(), ee(ue(t.tag), {\n class: Y(s.value),\n ref_key: \"itemRef\",\n ref: n\n }, {\n default: Q(() => [\n H(\"h2\", {\n class: Y(a.value)\n }, [\n H(\"button\", {\n onClick: d,\n class: Y(o.value),\n \"aria-expanded\": \"true\",\n \"aria-controls\": t.collapseId,\n type: \"button\"\n }, [\n l.value ? (x(), R(\"i\", {\n key: 0,\n class: Y(l.value)\n }, null, 2)) : K(\"\", !0),\n et(se(t.headerTitle), 1)\n ], 10, pf)\n ], 2),\n Ee(or, {\n id: t.collapseId,\n modelValue: f.value,\n \"onUpdate:modelValue\": p[0] || (p[0] = (v) => f.value = v)\n }, {\n default: Q(() => [\n H(\"div\", {\n class: Y(i.value)\n }, [\n oe(h.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"id\", \"modelValue\"])\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), mf = {\n name: \"MDBIcon\"\n}, ns = /* @__PURE__ */ re({\n ...mf,\n props: {\n iconStyle: {\n type: String,\n default: \"fas\"\n },\n icon: String,\n flag: String,\n size: String,\n fw: Boolean,\n solid: Boolean\n },\n setup(t) {\n const e = t, n = T(() => [\n !e.flag && e.iconStyle,\n e.flag ? `flag flag-${e.flag}` : `fa-${e.icon}`,\n e.size && `fa-${e.size}`,\n e.fw && \"fa-fw\",\n e.solid && \"fa-solid\"\n ]);\n return (s, a) => (x(), R(\"i\", {\n class: Y(n.value)\n }, [\n oe(s.$slots, \"default\")\n ], 2));\n }\n}), gf = {\n name: \"MDBNavbar\"\n}, bf = /* @__PURE__ */ re({\n ...gf,\n props: {\n tag: {\n type: String,\n default: \"nav\"\n },\n bg: String,\n dark: {\n type: Boolean,\n default: !1\n },\n light: {\n type: Boolean,\n default: !1\n },\n double: {\n type: Boolean,\n default: !1\n },\n expand: String,\n position: String,\n transparent: {\n type: Boolean,\n default: !1\n },\n scrolling: {\n type: Boolean,\n default: !1\n },\n scrollingOffset: {\n type: Number,\n default: 100\n },\n center: {\n type: Boolean,\n default: !1\n },\n container: {\n type: [Boolean, String],\n default: !1\n },\n classContainer: String,\n classNavbar: String\n },\n setup(t) {\n const e = t, n = T(() => [\n \"navbar\",\n e.dark && \"navbar-dark\",\n e.light && \"navbar-light\",\n e.bg && !e.transparent ? `bg-${e.bg}` : \"\",\n e.expand ? e.expand === \"small\" || e.expand === \"sm\" ? \"navbar-expand-sm\" : e.expand === \"medium\" || e.expand === \"md\" ? \"navbar-expand-md\" : e.expand === \"large\" || e.expand === \"lg\" ? \"navbar-expand-lg\" : \"navbar-expand-xl\" : \"\",\n e.position === \"top\" ? \"fixed-top\" : e.position === \"bottom\" ? \"fixed-bottom\" : e.position === \"sticky\" ? \"sticky-top\" : \"\",\n e.scrolling && a.value,\n e.double && \"double-nav\",\n e.center && \"justify-content-center\",\n e.classNavbar\n ]), s = T(() => e.container ? [\n e.container !== !0 ? `container-${e.container}` : \"container-fluid\",\n e.classContainer && e.classContainer\n ] : !1), a = y(\"navbar-scroll\"), i = () => {\n window.pageYOffset > e.scrollingOffset ? a.value = \"navbar-scroll navbar-scrolled\" : a.value = \"navbar-scroll\";\n }, o = y(null), l = y(\"nowrap\");\n q(\"navbarFlexWrapValue\", l);\n const r = () => {\n if (!o.value) return;\n const c = getComputedStyle(o.value).flexWrap;\n c === \"nowrap\" ? l.value = \"nowrap\" : c === \"wrap\" && (l.value = \"wrap\");\n };\n return Fe(() => (getComputedStyle(o.value) && getComputedStyle(o.value).flexWrap === \"wrap\" ? l.value = \"wrap\" : l.value = \"nowrap\", window.addEventListener(\"resize\", () => r()), e.scrolling && window.addEventListener(\"scroll\", i), () => {\n window.removeEventListener(\"scroll\", i);\n })), (c, u) => (x(), ee(ue(t.tag), {\n ref_key: \"navbar\",\n ref: o,\n class: Y(n.value),\n role: \"navigation\"\n }, {\n default: Q(() => [\n t.container ? (x(), R(\"div\", {\n key: 0,\n class: Y(s.value)\n }, [\n oe(c.$slots, \"default\")\n ], 2)) : K(\"\", !0),\n t.container ? K(\"\", !0) : oe(c.$slots, \"default\", { key: 1 })\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), yf = {\n name: \"MDBNavbarToggler\"\n}, PS = /* @__PURE__ */ re({\n ...yf,\n props: {\n tag: {\n type: String,\n default: \"button\"\n },\n target: {\n type: String,\n default: \"#navbarSupportedContent\"\n },\n togglerClass: String,\n togglerIcon: {\n type: String,\n default: \"bars\"\n },\n togglerSize: {\n type: String,\n default: \"1x\"\n },\n iconStyle: {\n type: String,\n default: \"fas\"\n }\n },\n setup(t) {\n const e = t, n = y(!1), s = T(() => [\"navbar-toggler\", e.togglerClass]), a = () => n.value = !n.value;\n return (i, o) => (x(), ee(ue(t.tag), {\n class: Y(s.value),\n type: \"button\",\n \"aria-controls\": t.target,\n \"aria-expanded\": n.value,\n \"aria-label\": \"Toggle navigation\",\n onClick: a\n }, {\n default: Q(() => [\n Ee(_(ns), {\n icon: t.togglerIcon,\n size: t.togglerSize,\n iconStyle: t.iconStyle\n }, null, 8, [\"icon\", \"size\", \"iconStyle\"])\n ]),\n _: 1\n }, 8, [\"class\", \"aria-controls\", \"aria-expanded\"]));\n }\n}), xf = {\n name: \"MDBNavbarBrand\"\n}, VS = /* @__PURE__ */ re({\n ...xf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = t, n = Pa(), s = T(() => n.href ? \"a\" : e.tag);\n return (a, i) => (x(), ee(ue(s.value), { class: \"navbar-brand\" }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }));\n }\n}), kf = {\n name: \"MDBNavbarNav\"\n}, RS = /* @__PURE__ */ re({\n ...kf,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n right: {\n type: Boolean,\n default: !1\n },\n center: {\n type: Boolean,\n default: !1\n },\n vertical: {\n type: Boolean,\n default: !1\n },\n justifyAround: {\n type: Boolean,\n default: !1\n },\n class: String,\n nav: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n e.nav ? \"nav\" : \"navbar-nav\",\n e.right ? \"ms-auto\" : e.center ? \"justify-content-center w-100\" : e.vertical ? \"flex-column\" : e.justifyAround ? \"justify-content-around w-100\" : \"me-auto\",\n e.class && `${e.class}`\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), wf = [\"href\", \"target\"], Sf = {\n name: \"MDBNavbarItem\"\n}, IS = /* @__PURE__ */ re({\n ...Sf,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n active: {\n type: Boolean,\n default: !1\n },\n disabled: Boolean,\n exact: {\n type: Boolean,\n default: !1\n },\n newTab: {\n type: Boolean,\n default: !1\n },\n to: [Object, String],\n href: String,\n linkClass: String\n },\n setup(t) {\n const e = t, n = T(() => [\"nav-item\", !e.to && !e.href && e.active && \"active\"]), s = T(() => [\n \"nav-link\",\n e.disabled && \"disabled\",\n e.active && \"active\",\n e.linkClass\n ]), a = T(() => e.newTab ? \"_blank\" : \"\");\n return (i, o) => {\n const l = nr(\"router-link\");\n return x(), ee(ue(e.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n t.to ? (x(), ee(l, {\n key: 0,\n class: Y(s.value),\n exact: t.exact,\n to: t.to,\n target: a.value\n }, {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"exact\", \"to\", \"target\"])) : t.href ? (x(), R(\"a\", {\n key: 1,\n href: t.href,\n class: Y(s.value),\n target: a.value\n }, [\n oe(i.$slots, \"default\")\n ], 10, wf)) : oe(i.$slots, \"default\", { key: 2 })\n ]),\n _: 3\n }, 8, [\"class\"]);\n };\n }\n}), _f = {\n name: \"MDBPagination\"\n}, FS = /* @__PURE__ */ re({\n ..._f,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n circle: {\n type: Boolean,\n default: !1\n },\n lg: {\n type: Boolean,\n default: !1\n },\n sm: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n \"pagination\",\n e.sm && \"pagination-sm\",\n e.lg && \"pagination-lg\",\n e.circle && \"pagination-circle\"\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Mf = [\"href\", \"tabindex\", \"aria-disabled\"], Cf = { \"aria-hidden\": \"true\" }, $f = /* @__PURE__ */ H(\"span\", { class: \"sr-only\" }, \"Previous\", -1), Bf = [\"href\", \"tabindex\", \"aria-disabled\"], Tf = { \"aria-hidden\": \"true\" }, Df = /* @__PURE__ */ H(\"span\", { class: \"sr-only\" }, \"Next\", -1), Of = {\n name: \"MDBPageNav\"\n}, NS = /* @__PURE__ */ re({\n ...Of,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n disabled: {\n type: Boolean,\n default: !1\n },\n href: {\n type: String,\n default: \"#\"\n },\n prev: {\n type: Boolean,\n default: !1\n },\n next: {\n type: Boolean,\n default: !1\n },\n icon: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"page-item\", e.disabled && \"disabled\"]), s = T(() => e.icon ? \"«\" : \"Previous\"), a = T(() => e.icon ? \"»\" : \"Next\"), i = T(() => e.disabled ? \"-1\" : \"false\");\n return (o, l) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n t.prev ? (x(), R(\"a\", {\n key: 0,\n class: \"page-link\",\n href: t.href,\n tabindex: i.value,\n \"aria-disabled\": t.disabled,\n \"aria-label\": \"Previous\"\n }, [\n H(\"span\", Cf, se(s.value), 1),\n $f\n ], 8, Mf)) : K(\"\", !0),\n t.next ? (x(), R(\"a\", {\n key: 1,\n class: \"page-link\",\n href: t.href,\n tabindex: i.value,\n \"aria-disabled\": t.disabled,\n \"aria-label\": \"Next\"\n }, [\n H(\"span\", Tf, se(a.value), 1),\n Df\n ], 8, Bf)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\"]));\n }\n}), Lf = [\"href\", \"aria-label\", \"aria-disabled\", \"tabindex\"], Af = {\n key: 0,\n \"aria-hidden\": \"true\"\n}, Ef = {\n key: 1,\n class: \"sr-only\"\n}, Pf = {\n name: \"MDBPageItem\"\n}, HS = /* @__PURE__ */ re({\n ...Pf,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n active: {\n type: Boolean,\n default: !1\n },\n disabled: {\n type: Boolean,\n default: !1\n },\n href: String,\n icon: {\n type: Boolean,\n defaul: !1\n },\n label: {\n type: String\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"page-item\", e.active && \"active\", e.disabled && \"disabled\"]), s = T(() => e.icon && e.label ? e.label : e.href), a = T(() => e.disabled ? \"-1\" : \" false\");\n return (i, o) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n H(\"a\", {\n class: \"page-link\",\n href: t.href,\n \"aria-label\": s.value,\n \"aria-disabled\": t.disabled,\n tabindex: a.value\n }, [\n t.icon ? (x(), R(\"span\", Af, [\n oe(i.$slots, \"default\")\n ])) : K(\"\", !0),\n t.icon ? (x(), R(\"span\", Ef, se(s.value), 1)) : oe(i.$slots, \"default\", { key: 2 })\n ], 8, Lf)\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Vf = {\n name: \"MDBBreadcrumb\"\n}, WS = /* @__PURE__ */ re({\n ...Vf,\n props: {\n tag: {\n type: String,\n default: \"ol\"\n }\n },\n setup(t) {\n const e = T(() => [\"breadcrumb\"]);\n return (n, s) => (x(), ee(ue(t.tag), {\n class: Y(e.value)\n }, {\n default: Q(() => [\n oe(n.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Rf = {\n name: \"MDBBreadcrumbItem\"\n}, zS = /* @__PURE__ */ re({\n ...Rf,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n active: {\n type: Boolean,\n default: !1\n },\n current: {\n type: String,\n default: \"page\"\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"breadcrumb-item\", e.active && \"active\"]), s = T(() => e.active && e.current);\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value),\n \"aria-current\": s.value\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\", \"aria-current\"]));\n }\n}), If = {\n name: \"MDBFooter\"\n}, YS = /* @__PURE__ */ re({\n ...If,\n props: {\n tag: {\n type: String,\n default: \"footer\"\n },\n bg: {\n type: String,\n default: \"light\"\n },\n text: [String, Array]\n },\n setup(t) {\n const e = t, n = T(() => {\n const a = e.text;\n return [\n e.bg && e.bg !== \"none\" && `bg-${e.bg}`,\n e.text && s(a)\n ];\n }), s = (a) => typeof a == \"string\" ? `text-${a}` : a.map((i) => `text-${i}`.trim()).join(\" \");\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Ff = {\n name: \"MDBTabs\"\n}, jS = /* @__PURE__ */ re({\n ...Ff,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: String,\n vertical: {\n type: [Boolean, String],\n default: !1\n }\n },\n emits: [\n \"update:modelValue\",\n \"hide\",\n \"hidden\",\n \"show\",\n \"shown\"\n ],\n setup(t, { emit: e }) {\n const n = t, s = y(null), a = y(null), i = y(n.modelValue);\n pe(\n () => n.modelValue,\n (h) => {\n h !== i.value && (i.value = h, o(null, h));\n }\n );\n const o = (h, p) => {\n h || (h = document.body.querySelector(`#tab-${p}`)), s.value && e(\"hide\", { target: s.value, relatedTarget: h }), e(\"show\", { target: h, relatedTarget: s.value }), e(\"update:modelValue\", p), a.value = h, i.value = p;\n }, l = () => {\n e(\"shown\", { target: a.value, relatedTarget: s.value }), s.value = a.value;\n }, r = () => {\n e(\"hidden\", {\n target: s.value,\n relatedTarget: a.value\n });\n };\n q(\"activeTab\", i), q(\"updateActiveTab\", o), q(\"emitShown\", l), q(\"emitHidden\", r);\n const c = y(!1), u = y(window.innerWidth), f = y(null);\n q(\"isVertical\", c);\n const d = () => {\n u.value = window.innerWidth;\n const h = vr(u.value, [\n \"column\",\n n.vertical\n ]);\n h !== f.value && (c.value = h === n.vertical, f.value = h);\n };\n return Fe(() => {\n n.vertical && (n.vertical === !0 ? c.value = !0 : (d(), Le(window, \"resize\", d)));\n }), dt(() => {\n Me(window, \"resize\", d);\n }), (h, p) => c.value ? (x(), ee(ue(t.tag), $e({\n key: 0,\n class: \"row\"\n }, h.$attrs), {\n default: Q(() => [\n oe(h.$slots, \"default\")\n ]),\n _: 3\n }, 16)) : oe(h.$slots, \"default\", { key: 1 });\n }\n}), Nf = {\n name: \"MDBTabNav\"\n}, XS = /* @__PURE__ */ re({\n ...Nf,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n pills: Boolean,\n justify: Boolean,\n fill: Boolean,\n tabsClasses: String,\n col: {\n type: String,\n default: \"3\"\n }\n },\n setup(t) {\n const e = t, n = N(\"isVertical\"), s = T(() => [\n \"nav\",\n e.pills ? \"nav-pills\" : \"nav-tabs\",\n e.justify && \"nav-justified\",\n e.fill && \"nav-fill\",\n (n == null ? void 0 : n.value) && \"flex-column\",\n e.tabsClasses && e.tabsClasses\n ]), a = T(() => [`col-${e.col}`]);\n return (i, o) => _(n) ? (x(), R(\"div\", {\n key: 0,\n class: Y(a.value)\n }, [\n (x(), ee(ue(t.tag), {\n class: Y(s.value)\n }, {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]))\n ], 2)) : (x(), ee(ue(t.tag), {\n key: 1,\n class: Y(s.value)\n }, {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Hf = {\n key: 0,\n class: \"nav-item\",\n role: \"presentation\"\n}, Wf = [\"id\", \"aria-controls\", \"href\", \"onClick\"], zf = {\n name: \"MDBTabItem\",\n inheritAttrs: !1\n}, US = /* @__PURE__ */ re({\n ...zf,\n props: {\n tag: {\n type: String,\n default: \"a\"\n },\n tabId: {\n type: String,\n required: !0\n },\n href: String\n },\n setup(t) {\n const e = t, n = y(null), s = T(() => [\"nav-link\", l.value && \"active\"]), a = T(() => `tab-${e.tabId}`), i = T(() => `${e.tabId}`), o = N(\"activeTab\"), l = y(o && o.value === e.tabId), r = N(\"updateActiveTab\");\n Ze(\n () => l.value = o && o.value === e.tabId\n );\n const c = () => {\n n.value !== void 0 && r && r(n.value, e.tabId);\n };\n return Fe(() => {\n l.value && r && r(n.value, e.tabId);\n }), (u, f) => t.href ? (x(), R(\"li\", Hf, [\n H(\"a\", $e({\n id: a.value,\n ref_key: \"item\",\n ref: n,\n class: s.value,\n role: \"tab\",\n \"aria-controls\": i.value,\n href: t.href\n }, u.$attrs, {\n onClick: _e(c, [\"prevent\"])\n }), [\n oe(u.$slots, \"default\")\n ], 16, Wf)\n ])) : (x(), ee(ue(t.tag), $e({\n key: 1,\n id: a.value,\n ref_key: \"item\",\n ref: n,\n class: s.value,\n role: \"tab\",\n \"aria-controls\": i.value\n }, u.$attrs, {\n onClick: _e(c, [\"prevent\"])\n }), {\n default: Q(() => [\n oe(u.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"aria-controls\", \"onClick\"]));\n }\n}), Yf = {\n name: \"MDBTabPane\"\n}, qS = /* @__PURE__ */ re({\n ...Yf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n tabId: {\n type: String,\n required: !0\n }\n },\n setup(t) {\n const e = t, n = y(null), s = T(() => [\n \"tab-pane fade\",\n l.value && \"show active\"\n ]), a = T(() => `${e.tabId}`), i = T(() => `tab-${e.tabId}`), o = N(\"activeTab\"), l = y(o && o.value === e.tabId);\n Ze(\n () => l.value = o && o.value === e.tabId\n );\n const r = N(\"emitShown\"), c = N(\"emitHidden\");\n Fe(() => {\n l.value && r && r(e.tabId);\n });\n const u = (p) => {\n const v = p;\n v.style.opacity = \"1\";\n }, f = (p) => {\n const v = p;\n v.style.opacity = \"0\", r && r(e.tabId);\n }, d = (p) => {\n const v = p;\n v.style.opacity = \"1\", c && c(e.tabId);\n }, h = (p) => {\n const v = p;\n v.style.opacity = \"0\";\n };\n return (p, v) => (x(), ee(At, {\n duration: 150,\n onEnter: f,\n onAfterEnter: u,\n onBeforeLeave: d,\n onAfterLeave: h\n }, {\n default: Q(() => [\n je((x(), ee(ue(t.tag), {\n id: a.value,\n ref_key: \"item\",\n ref: n,\n class: Y(s.value),\n role: \"tabpanel\",\n \"aria-labelledby\": i.value\n }, {\n default: Q(() => [\n oe(p.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"class\", \"aria-labelledby\"])), [\n [Hn, l.value]\n ])\n ]),\n _: 3\n }));\n }\n}), jf = {\n name: \"MDBTabContent\",\n inheritAttrs: !1\n}, KS = /* @__PURE__ */ re({\n ...jf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n col: {\n type: String,\n default: \"9\"\n },\n contentClasses: String\n },\n setup(t) {\n const e = t, n = N(\"isVertical\", !1), s = T(() => [\"tab-content\", e.contentClasses && e.contentClasses]), a = T(() => [`col-${e.col}`]);\n return (i, o) => (x(), ee(Pc, null, [\n _(n) ? (x(), R(\"div\", {\n key: 0,\n class: Y(a.value)\n }, [\n (x(), ee(ue(t.tag), $e({ class: s.value }, i.$attrs), {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"]))\n ], 2)) : (x(), ee(ue(t.tag), $e({\n key: 1,\n class: s.value\n }, i.$attrs), {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"]))\n ], 1024));\n }\n}), Xf = {\n name: \"MDBCol\"\n}, GS = /* @__PURE__ */ re({\n ...Xf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n col: String,\n sm: String,\n md: String,\n lg: String,\n xl: String,\n offset: String,\n offsetSm: String,\n offsetMd: String,\n offsetLg: String,\n offsetXl: String,\n auto: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n e.col ? \"col-\" + e.col : \"\",\n e.sm ? \"col-sm-\" + e.sm : \"\",\n e.md ? \"col-md-\" + e.md : \"\",\n e.lg ? \"col-lg-\" + e.lg : \"\",\n e.xl ? \"col-xl-\" + e.xl : \"\",\n !e.col && !e.sm && !e.md && !e.lg && !e.xl ? \"col\" : \"\",\n e.offset ? \"offset-\" + e.offset : \"\",\n e.offsetSm ? \"offset-sm-\" + e.offsetSm : \"\",\n e.offsetMd ? \"offset-md-\" + e.offsetMd : \"\",\n e.offsetLg ? \"offset-lg-\" + e.offsetLg : \"\",\n e.offsetXl ? \"offset-xl-\" + e.offsetXl : \"\",\n e.auto ? \"col-auto\" : \"\"\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Uf = {\n name: \"MDBRow\"\n}, ZS = /* @__PURE__ */ re({\n ...Uf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n start: {\n type: Boolean,\n default: !1\n },\n end: {\n type: Boolean,\n default: !1\n },\n center: {\n type: Boolean,\n default: !1\n },\n between: {\n type: Boolean,\n default: !1\n },\n around: {\n type: Boolean,\n default: !1\n },\n cols: [String, Array]\n },\n setup(t) {\n const e = t, n = T(() => {\n const a = e.cols;\n return [\n \"row\",\n e.cols && a ? `${s(a)}` : \"\",\n e.start && \"justify-content-start\",\n e.end && \"justify-content-end\",\n e.center && \"justify-content-center\",\n e.between && \"justify-content-between\",\n e.around && \"justify-content-around\"\n ];\n }), s = (a) => typeof a == \"string\" ? `row-cols-${a}` : a.map((i) => `row-cols-${i}`.trim()).join(\" \");\n return (a, i) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), qf = {\n name: \"MDBContainer\"\n}, JS = /* @__PURE__ */ re({\n ...qf,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n sm: {\n type: Boolean,\n default: !1\n },\n md: {\n type: Boolean,\n default: !1\n },\n lg: {\n type: Boolean,\n default: !1\n },\n xl: {\n type: Boolean,\n default: !1\n },\n xxl: {\n type: Boolean,\n default: !1\n },\n fluid: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\n e.fluid ? \"container-fluid\" : \"\",\n e.sm ? \"container-sm\" : \"\",\n e.md ? \"container-md\" : \"\",\n e.lg ? \"container-lg\" : \"\",\n e.xl ? \"container-xl\" : \"\",\n e.xxl ? \"container-xxl\" : \"\",\n !e.fluid && !e.sm && !e.md && !e.lg && !e.xl && !e.xxl ? \"container\" : \"\"\n ]);\n return (s, a) => (x(), ee(ue(t.tag), {\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(s.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), Kf = {\n name: \"MDBTable\",\n inheritAttrs: !1\n}, QS = /* @__PURE__ */ re({\n ...Kf,\n props: {\n tag: {\n type: String,\n default: \"table\"\n },\n variant: String,\n dark: {\n type: Boolean,\n default: !1\n },\n light: {\n type: Boolean,\n default: !1\n },\n border: {\n type: [Boolean, String],\n default: !1\n },\n borderless: {\n type: Boolean,\n default: !1\n },\n striped: {\n type: Boolean,\n default: !1\n },\n hover: {\n type: Boolean,\n default: !1\n },\n responsive: {\n type: [Boolean, String],\n default: !1\n },\n align: String,\n sm: {\n type: Boolean,\n default: !1\n },\n tableStyle: String,\n captionTop: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => e.responsive ? e.responsive !== !0 ? `table-responsive-${e.responsive}` : \"table-responsive\" : !1), s = T(() => e.border ? e.border !== !0 ? `table-bordered border-${e.border}` : \"table-bordered\" : \"\"), a = T(() => [\n \"table\",\n e.dark && \"table-dark\",\n e.light && \"table-light\",\n e.variant && `table-${e.variant}`,\n e.striped && \"table-striped\",\n s.value,\n e.borderless && \"table-borderless\",\n e.hover && \"table-hover\",\n e.sm && \"table-sm\",\n e.align && e.align === \"top\" ? \"align-top\" : e.align === \"bottom\" ? \"align-bottom\" : e.align === \"middle\" ? \"align-middle\" : \"\",\n e.captionTop && \"caption-top\",\n e.tableStyle\n ]);\n return (i, o) => t.responsive ? (x(), R(\"div\", {\n key: 0,\n class: Y(n.value)\n }, [\n (x(), ee(ue(t.tag), $e({\n class: a.value,\n style: t.tableStyle\n }, i.$attrs), {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\", \"style\"]))\n ], 2)) : (x(), ee(ue(t.tag), $e({\n key: 1,\n class: a.value,\n style: t.tableStyle\n }, i.$attrs), {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\", \"style\"]));\n }\n}), Gf = [\"id\", \"value\"], Zf = [\"for\"], Jf = {\n key: 2,\n class: \"form-helper\"\n}, Qf = {\n key: 3,\n class: \"form-helper\"\n}, eh = { class: \"form-counter\" }, th = /* @__PURE__ */ H(\"div\", { class: \"form-notch-trailing\" }, null, -1), nh = [\"id\", \"value\"], sh = [\"for\"], ah = {\n key: 1,\n class: \"form-helper\"\n}, ih = {\n key: 2,\n class: \"form-helper\"\n}, oh = { class: \"form-counter\" }, lh = /* @__PURE__ */ H(\"div\", { class: \"form-notch-trailing\" }, null, -1), rh = {\n key: 9,\n class: \"form-text\"\n}, ch = {\n name: \"MDBInput\",\n inheritAttrs: !1\n}, vn = /* @__PURE__ */ re({\n ...ch,\n props: {\n id: String,\n label: String,\n labelClass: String,\n modelValue: [String, Number, Date],\n size: String,\n formOutline: {\n type: Boolean,\n default: !0\n },\n wrapperClass: String,\n inputGroup: {\n type: [Boolean, String],\n default: !1\n },\n wrap: {\n type: Boolean,\n default: !0\n },\n formText: String,\n white: Boolean,\n validationEvent: String,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n tooltipFeedback: {\n type: Boolean,\n default: !1\n },\n tag: {\n type: String,\n default: \"div\"\n },\n helper: String,\n counter: Boolean,\n maxlength: {\n type: Number,\n default: 0\n }\n },\n emits: [\"update:modelValue\", \"click-outside\", \"on-validate\"],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = Pa(), i = y(null), o = y(s.modelValue), l = y(null), r = y(!1), c = y(9), u = y(0), f = s.id || ut(\"MDBInput-\"), d = y(!1), h = T(() => [\n s.formOutline && \"form-outline\",\n g.value,\n s.white && \"form-white\",\n s.wrapperClass\n ]), p = T(() => [\n \"form-control\",\n s.size ? `form-control-${s.size}` : s.inputGroup && s.inputGroup !== !0 && `form-control-${s.inputGroup}`,\n (o.value || o.value === 0) && \"active\",\n r.value && \"placeholder-active\",\n k.value && C.value && \"is-valid\",\n k.value && !C.value && \"is-invalid\",\n L.value && v()\n ]), v = () => L.value ? o.value || o.value === 0 || d.value ? \"opacity-1\" : \"opacity-0\" : \"\", m = T(() => [\"form-label\", s.labelClass]), g = T(() => {\n if (s.inputGroup)\n return s.inputGroup !== !0 ? `input-group input-group-${s.inputGroup}` : \"input-group\";\n }), b = T(() => s.inputGroup && k.value ? { marginBottom: \"1rem\" } : \"\"), S = T(() => s.tooltipFeedback ? \"valid-tooltip\" : \"valid-feedback\"), w = T(() => s.tooltipFeedback ? \"invalid-tooltip\" : \"invalid-feedback\"), k = y(s.isValidated), C = y(s.isValid), M = y(\"\"), V = T(() => k.value && !C.value && s.validationEvent ? M.value : s.invalidFeedback), B = (W) => {\n const te = W.target;\n C.value = te.checkValidity(), C.value || (M.value = te.validationMessage), k.value = !0, n(\"on-validate\", C.value);\n }, D = () => {\n s.validationEvent !== \"submit\" && i.value && s.validationEvent && Le(i.value, s.validationEvent, B);\n };\n function E() {\n l.value && (u.value = l.value.clientWidth * 0.8 + 8);\n }\n const X = T(() => s.label && l.value && u.value === 8 && l.value.textContent !== \"\"), L = T(() => [\n \"date\",\n \"time\",\n \"datetime-local\",\n \"month\",\n \"week\"\n ].includes(a.type));\n function A() {\n a.placeholder && !l.value ? r.value = !0 : r.value = !1;\n }\n const P = y(null);\n P.value = typeof o.value == \"string\" && o.value ? o.value.length : 0;\n function O(W) {\n const te = W.target;\n if (s.maxlength && te.value.length > s.maxlength && typeof o.value == \"string\") {\n te.value = o.value;\n return;\n }\n P.value = te.value.length, o.value = te.value, n(\"update:modelValue\", o.value);\n }\n function $() {\n ve(!0), d.value = !0, s.label && X.value && E();\n }\n function I() {\n ve(), d.value = !1;\n }\n function F() {\n n(\"click-outside\");\n }\n const z = y(null), G = y(null), U = (W) => {\n G.value && G.value.forEach(\n (te) => te.style.opacity = W ? \"0\" : \"1\"\n ), W && z.value && (z.value.style.opacity = \"1\");\n }, ie = a.type && a.type === \"date\", ve = (W = !1) => {\n var te;\n s.label && s.formOutline && G.value && ((te = G.value) == null ? void 0 : te.length) > 1 && U(W), ie && i.value && (i.value.type = W ? \"date\" : \"text\");\n }, ye = (W) => ![...W.parentNode.children].findIndex(\n (te) => te === W\n );\n return Fe(() => {\n var W;\n if (E(), A(), ve(), s.label && s.formOutline && i.value && (G.value = ((W = i.value.parentNode) == null ? void 0 : W.querySelectorAll(\".form-notch\")) || null), s.label && s.formOutline && l.value && i.value && !ye(i.value)) {\n const te = parseFloat(getComputedStyle(l.value).left);\n l.value.style.left = `${te + i.value.offsetLeft}px`, c.value += i.value.offsetLeft;\n }\n s.validationEvent && D();\n }), $i(() => {\n E(), A();\n }), dt(() => {\n i.value && s.validationEvent && Me(i.value, s.validationEvent, B);\n }), Ze(() => {\n var W, te;\n if (typeof s.modelValue == \"string\") {\n if (s.maxlength && ((W = s.modelValue) == null ? void 0 : W.length) > s.maxlength) {\n o.value = s.modelValue.slice(0, s.maxlength), P.value = s.maxlength;\n return;\n }\n P.value = ((te = s.modelValue) == null ? void 0 : te.length) || 0;\n }\n o.value = s.modelValue;\n }), pe(\n () => s.isValidated,\n (W) => k.value = W\n ), pe(\n () => s.isValid,\n (W) => C.value = W\n ), e({\n inputRef: i\n }), (W, te) => (x(), R(Ie, null, [\n t.wrap ? K(\"\", !0) : je((x(), R(\"input\", $e({\n key: 0,\n class: p.value,\n id: _(f),\n value: o.value\n }, W.$attrs, {\n onInput: O,\n ref_key: \"inputRef\",\n ref: i,\n onFocus: $,\n onBlur: I\n }), null, 16, Gf)), [\n [_(tn), F]\n ]),\n t.label && !t.wrap ? (x(), R(\"label\", {\n key: 1,\n ref_key: \"labelRef\",\n ref: l,\n class: Y(m.value),\n for: _(f)\n }, se(t.label), 11, Zf)) : K(\"\", !0),\n !t.wrap && t.helper ? (x(), R(\"div\", Jf, se(t.helper), 1)) : K(\"\", !0),\n !t.wrap && t.counter ? (x(), R(\"div\", Qf, [\n H(\"div\", eh, se(P.value) + \" / \" + se(t.maxlength), 1)\n ])) : K(\"\", !0),\n t.wrap ? K(\"\", !0) : oe(W.$slots, \"default\", { key: 4 }),\n !t.wrap && t.validFeedback ? (x(), R(\"div\", {\n key: 5,\n class: Y(S.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n !t.wrap && V.value ? (x(), R(\"div\", {\n key: 6,\n class: Y(w.value)\n }, se(V.value), 3)) : K(\"\", !0),\n !t.wrap && t.formOutline ? (x(), R(\"div\", {\n key: 7,\n class: \"form-notch\",\n ref_key: \"notchRef\",\n ref: z\n }, [\n H(\"div\", {\n class: \"form-notch-leading\",\n style: Ce({ width: `${c.value}px` })\n }, null, 4),\n H(\"div\", {\n class: \"form-notch-middle\",\n style: Ce({ width: `${u.value}px` })\n }, null, 4),\n th\n ], 512)) : K(\"\", !0),\n t.wrap ? je((x(), ee(ue(t.tag), {\n key: 8,\n class: Y(h.value),\n style: Ce(b.value)\n }, {\n default: Q(() => [\n oe(W.$slots, \"prepend\"),\n H(\"input\", $e({ class: p.value }, W.$attrs, {\n id: _(f),\n value: o.value,\n onInput: O,\n ref_key: \"inputRef\",\n ref: i,\n onFocus: $,\n onBlur: I\n }), null, 16, nh),\n t.label ? (x(), R(\"label\", {\n key: 0,\n ref_key: \"labelRef\",\n ref: l,\n class: Y(m.value),\n for: _(f)\n }, se(t.label), 11, sh)) : K(\"\", !0),\n t.helper ? (x(), R(\"div\", ah, se(t.helper), 1)) : K(\"\", !0),\n t.counter ? (x(), R(\"div\", ih, [\n H(\"div\", oh, se(P.value) + \" / \" + se(t.maxlength), 1)\n ])) : K(\"\", !0),\n oe(W.$slots, \"default\"),\n t.validFeedback ? (x(), R(\"div\", {\n key: 3,\n class: Y(S.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n V.value ? (x(), R(\"div\", {\n key: 4,\n class: Y(w.value)\n }, se(V.value), 3)) : K(\"\", !0),\n t.formOutline ? (x(), R(\"div\", {\n key: 5,\n class: \"form-notch\",\n ref_key: \"notchRef\",\n ref: z\n }, [\n H(\"div\", {\n class: \"form-notch-leading\",\n style: Ce({ width: `${c.value}px` })\n }, null, 4),\n H(\"div\", {\n class: \"form-notch-middle\",\n style: Ce({ width: `${u.value}px` })\n }, null, 4),\n lh\n ], 512)) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"class\", \"style\"])), [\n [_(tn), F]\n ]) : K(\"\", !0),\n t.formText ? (x(), R(\"div\", rh, se(t.formText), 1)) : K(\"\", !0)\n ], 64));\n }\n}), uh = [\"id\", \"value\", \"rows\"], dh = [\"for\"], fh = {\n key: 2,\n class: \"form-helper\"\n}, hh = {\n key: 3,\n class: \"form-helper\"\n}, ph = { class: \"form-counter\" }, vh = [\"id\", \"value\", \"rows\"], mh = [\"for\"], gh = {\n key: 1,\n class: \"form-helper\"\n}, bh = {\n key: 2,\n class: \"form-helper\"\n}, yh = { class: \"form-counter\" }, xh = {\n key: 5,\n class: \"form-notch\"\n}, kh = /* @__PURE__ */ H(\"div\", { class: \"form-notch-trailing\" }, null, -1), wh = {\n key: 8,\n class: \"form-text\"\n}, Sh = {\n name: \"MDBTextarea\",\n inheritAttrs: !1\n}, e1 = /* @__PURE__ */ re({\n ...Sh,\n props: {\n id: String,\n rows: {\n type: [String, Number],\n default: 4\n },\n label: String,\n modelValue: [String, Number],\n size: String,\n formOutline: {\n type: Boolean,\n default: !0\n },\n wrapperClass: String,\n inputGroup: {\n type: [Boolean, String],\n default: !1\n },\n wrap: {\n type: Boolean,\n default: !0\n },\n formText: String,\n white: Boolean,\n validationEvent: String,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n tooltipFeedback: {\n type: Boolean,\n default: !1\n },\n tag: {\n type: String,\n default: \"div\"\n },\n helper: String,\n counter: Boolean,\n maxLength: {\n type: Number,\n default: 0\n }\n },\n emits: [\"update:modelValue\", \"on-validate\"],\n setup(t, { emit: e }) {\n const n = t, s = Pa(), a = y(null), i = y(n.modelValue), o = y(null), l = y(!1), r = y(9), c = y(0), u = n.id || ut(\"MDBTextarea-\"), f = T(() => [\n n.formOutline && \"form-outline\",\n h.value,\n n.white && \"form-white\",\n n.wrapperClass\n ]), d = T(() => [\n \"form-control\",\n n.size && `form-control-${n.size}`,\n i.value && \"active\",\n l.value && \"placeholder-active\",\n g.value && b.value && \"is-valid\",\n g.value && !b.value && \"is-invalid\"\n ]), h = T(() => {\n if (n.inputGroup)\n return n.inputGroup !== !0 ? `input-group input-group-${n.inputGroup}` : \"input-group\";\n }), p = T(() => n.inputGroup && g.value ? { marginBottom: \"1rem\" } : \"\"), v = T(() => n.tooltipFeedback ? \"valid-tooltip\" : \"valid-feedback\"), m = T(() => n.tooltipFeedback ? \"invalid-tooltip\" : \"invalid-feedback\"), g = y(n.isValidated), b = y(n.isValid), S = y(\"\"), w = T(() => g.value && !b.value && n.validationEvent ? S.value : n.invalidFeedback), k = (X) => {\n const L = X.target;\n b.value = L.checkValidity(), b.value || (S.value = L.validationMessage), g.value = !0, e(\"on-validate\", b.value);\n }, C = () => {\n n.validationEvent !== \"submit\" && a.value && n.validationEvent && Le(a.value, n.validationEvent, k);\n };\n function M() {\n o.value && (c.value = o.value.clientWidth * 0.8 + 8);\n }\n function V() {\n s.placeholder && !o.value ? l.value = !0 : l.value = !1;\n }\n const B = y(null);\n B.value = typeof i.value == \"string\" && i.value ? i.value.length : 0;\n function D(X) {\n const L = X.target;\n if (n.counter) {\n if (L.value.length > n.maxLength) {\n typeof i.value == \"string\" && (L.value = i.value);\n return;\n }\n B.value = L.value.length;\n }\n i.value = L.value, e(\"update:modelValue\", i.value);\n }\n const E = (X) => ![...X.parentNode.children].findIndex(\n (L) => L === X\n );\n return Fe(() => {\n if (M(), V(), n.label && n.formOutline && o.value && a.value && !E(a.value)) {\n const X = parseFloat(getComputedStyle(o.value).left);\n o.value.style.left = `${X + a.value.offsetLeft}px`, r.value += a.value.offsetLeft;\n }\n n.validationEvent && C();\n }), $i(() => {\n M(), V();\n }), dt(() => {\n a.value && n.validationEvent && Me(a.value, n.validationEvent, k);\n }), Ze(() => {\n var X;\n if (n.counter) {\n if (typeof n.modelValue == \"string\" && ((X = n.modelValue) == null ? void 0 : X.length) > n.maxLength) {\n i.value = n.modelValue.slice(0, n.maxLength), B.value = n.maxLength;\n return;\n }\n B.value = typeof n.modelValue == \"string\" && n.modelValue ? n.modelValue.length : 0;\n }\n i.value = n.modelValue;\n }), pe(\n () => n.isValidated,\n (X) => g.value = X\n ), pe(\n () => n.isValid,\n (X) => b.value = X\n ), (X, L) => (x(), R(Ie, null, [\n t.wrap ? K(\"\", !0) : (x(), R(\"textarea\", $e({\n key: 0,\n class: d.value\n }, X.$attrs, {\n id: _(u),\n value: i.value,\n onInput: D,\n rows: t.rows,\n ref_key: \"textareaRef\",\n ref: a\n }), null, 16, uh)),\n t.label && !t.wrap ? (x(), R(\"label\", {\n key: 1,\n ref_key: \"labelRef\",\n ref: o,\n class: \"form-label\",\n for: _(u)\n }, se(t.label), 9, dh)) : K(\"\", !0),\n !t.wrap && t.helper ? (x(), R(\"div\", fh, se(t.helper), 1)) : K(\"\", !0),\n !t.wrap && t.counter ? (x(), R(\"div\", hh, [\n H(\"div\", ph, se(B.value) + \" / \" + se(t.maxLength), 1)\n ])) : K(\"\", !0),\n t.wrap ? K(\"\", !0) : oe(X.$slots, \"default\", { key: 4 }),\n !t.wrap && t.validFeedback ? (x(), R(\"div\", {\n key: 5,\n class: Y(v.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n !t.wrap && w.value ? (x(), R(\"div\", {\n key: 6,\n class: Y(m.value)\n }, se(w.value), 3)) : K(\"\", !0),\n t.wrap ? (x(), ee(ue(t.tag), {\n key: 7,\n class: Y(f.value),\n style: Ce(p.value)\n }, {\n default: Q(() => [\n oe(X.$slots, \"prepend\"),\n H(\"textarea\", $e({ class: d.value }, X.$attrs, {\n id: _(u),\n value: i.value,\n onInput: D,\n rows: t.rows,\n ref_key: \"textareaRef\",\n ref: a\n }), null, 16, vh),\n t.label ? (x(), R(\"label\", {\n key: 0,\n ref_key: \"labelRef\",\n ref: o,\n class: \"form-label\",\n for: _(u)\n }, se(t.label), 9, mh)) : K(\"\", !0),\n t.helper ? (x(), R(\"div\", gh, se(t.helper), 1)) : K(\"\", !0),\n t.counter ? (x(), R(\"div\", bh, [\n H(\"div\", yh, se(B.value) + \" / \" + se(t.maxLength), 1)\n ])) : K(\"\", !0),\n t.validFeedback ? (x(), R(\"div\", {\n key: 3,\n class: Y(v.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n w.value ? (x(), R(\"div\", {\n key: 4,\n class: Y(m.value)\n }, se(w.value), 3)) : K(\"\", !0),\n t.formOutline ? (x(), R(\"div\", xh, [\n H(\"div\", {\n class: \"form-notch-leading\",\n style: Ce({ width: `${r.value}px` })\n }, null, 4),\n H(\"div\", {\n class: \"form-notch-middle\",\n style: Ce({ width: `${c.value}px` })\n }, null, 4),\n kh\n ])) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"class\", \"style\"])) : K(\"\", !0),\n t.formText ? (x(), R(\"div\", wh, se(t.formText), 1)) : K(\"\", !0)\n ], 64));\n }\n}), _h = [\"id\", \"checked\", \"required\", \"aria-required\"], Mh = [\"for\", \"innerHTML\"], Ch = [\"id\", \"checked\", \"required\", \"aria-required\"], $h = [\"for\", \"innerHTML\"], Bh = {\n name: \"MDBCheckbox\",\n inheritAttrs: !1\n}, Mo = /* @__PURE__ */ re({\n ...Bh,\n props: {\n id: String,\n label: String,\n modelValue: Boolean,\n inline: Boolean,\n wrapperClass: String,\n labelClass: String,\n inputClass: String,\n btnCheck: Boolean,\n required: Boolean,\n validateOnChange: Boolean,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n tooltipFeedback: {\n type: Boolean,\n default: !1\n },\n wrap: {\n type: Boolean,\n default: !0\n },\n formCheck: {\n type: Boolean,\n default: !0\n },\n tag: {\n type: String,\n default: \"div\"\n }\n },\n emits: [\"update:modelValue\", \"on-validate\"],\n setup(t, { emit: e }) {\n const n = t, s = y(\"inputRef\"), a = y(n.modelValue), i = n.id || ut(\"MDBCheckbox-\"), o = T(() => [\n n.formCheck && !n.btnCheck ? \"form-check\" : \"\",\n n.inline && \"form-check-inline\",\n n.wrapperClass\n ]), l = T(() => [\n n.btnCheck ? \"btn-check\" : \"form-check-input\",\n n.inputClass && n.inputClass,\n f.value && d.value && \"is-valid\",\n f.value && !d.value && \"is-invalid\"\n ]), r = T(() => [n.labelClass || \"form-check-label\"]), c = T(() => n.tooltipFeedback ? \"valid-tooltip\" : \"valid-feedback\"), u = T(() => n.tooltipFeedback ? \"invalid-tooltip\" : \"invalid-feedback\"), f = y(n.isValidated), d = y(n.isValid), h = (m) => {\n const g = m.target;\n d.value = g.checkValidity(), f.value = !0, e(\"on-validate\", d.value);\n }, p = () => {\n Le(s.value, \"change\", h);\n };\n function v() {\n a.value = !a.value, e(\"update:modelValue\", a.value);\n }\n return Fe(() => {\n n.validateOnChange && p();\n }), dt(() => {\n Me(s.value, \"change\", h);\n }), Ze(() => a.value = n.modelValue), pe(\n () => n.isValidated,\n (m) => f.value = m\n ), pe(\n () => n.isValid,\n (m) => d.value = m\n ), (m, g) => (x(), R(Ie, null, [\n t.wrap ? (x(), ee(ue(t.tag), {\n key: 0,\n class: Y(o.value)\n }, {\n default: Q(() => [\n H(\"input\", $e({\n class: l.value,\n type: \"checkbox\"\n }, m.$attrs, {\n id: _(i),\n checked: a.value,\n onChange: v,\n required: t.required ? !0 : void 0,\n \"aria-required\": t.required,\n ref_key: \"inputRef\",\n ref: s\n }), null, 16, _h),\n t.label ? (x(), R(\"label\", {\n key: 0,\n class: Y(r.value),\n for: _(i),\n innerHTML: t.label\n }, null, 10, Mh)) : K(\"\", !0),\n t.validFeedback ? (x(), R(\"div\", {\n key: 1,\n class: Y(c.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n t.invalidFeedback ? (x(), R(\"div\", {\n key: 2,\n class: Y(u.value)\n }, se(t.invalidFeedback), 3)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\"])) : K(\"\", !0),\n t.wrap ? K(\"\", !0) : (x(), R(\"input\", $e({\n key: 1,\n class: l.value,\n type: \"checkbox\"\n }, m.$attrs, {\n id: _(i),\n checked: a.value,\n onChange: v,\n required: t.required ? !0 : void 0,\n \"aria-required\": t.required,\n ref_key: \"inputRef\",\n ref: s\n }), null, 16, Ch)),\n !t.wrap && t.label ? (x(), R(\"label\", {\n key: 2,\n class: Y(r.value),\n for: _(i),\n innerHTML: t.label\n }, null, 10, $h)) : K(\"\", !0),\n !t.wrap && t.validFeedback ? (x(), R(\"div\", {\n key: 3,\n class: Y(c.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n !t.wrap && t.invalidFeedback ? (x(), R(\"div\", {\n key: 4,\n class: Y(u.value)\n }, se(t.invalidFeedback), 3)) : K(\"\", !0)\n ], 64));\n }\n}), Th = [\"id\", \"required\", \"aria-required\"], Dh = [\"for\"], Oh = [\"id\", \"required\", \"aria-required\"], Lh = [\"for\"], Ah = {\n name: \"MDBRadio\",\n inheritAttrs: !1\n}, t1 = /* @__PURE__ */ re({\n ...Ah,\n props: {\n id: String,\n label: String,\n inline: Boolean,\n modelValue: String,\n wrapperClass: String,\n labelClass: String,\n btnCheck: Boolean,\n required: Boolean,\n validateOnChange: Boolean,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n tooltipFeedback: {\n type: Boolean,\n default: !1\n },\n wrap: {\n type: Boolean,\n default: !0\n },\n formCheck: {\n type: Boolean,\n default: !0\n },\n tag: {\n type: String,\n default: \"div\"\n }\n },\n emits: [\"update:modelValue\", \"on-validate\"],\n setup(t, { emit: e }) {\n const n = t, s = y(\"inputRef\"), a = y(n.modelValue || !1), i = n.id || ut(\"MDBRadio-\"), o = T(() => [\n n.formCheck && !n.btnCheck ? \"form-check\" : \"\",\n n.inline && \"form-check-inline\",\n n.wrapperClass\n ]), l = T(() => [\n n.btnCheck ? \"btn-check\" : \"form-check-input\",\n f.value && d.value && \"is-valid\",\n f.value && !d.value && \"is-invalid\"\n ]), r = T(() => [n.labelClass || \"form-check-label\"]), c = T(() => n.tooltipFeedback ? \"valid-tooltip\" : \"valid-feedback\"), u = T(() => n.tooltipFeedback ? \"invalid-tooltip\" : \"invalid-feedback\"), f = y(n.isValidated), d = y(n.isValid), h = (m) => {\n const g = m.target;\n d.value = g.checkValidity(), f.value = !0, e(\"on-validate\", d.value);\n }, p = () => {\n Le(s.value, \"change\", h);\n };\n function v(m) {\n const g = m.target;\n e(\"update:modelValue\", g.value);\n }\n return Fe(() => {\n n.validateOnChange && p();\n }), dt(() => {\n Me(s.value, \"change\", h);\n }), Ze(() => a.value = n.modelValue), pe(\n () => n.isValidated,\n (m) => f.value = m\n ), pe(\n () => n.isValid,\n (m) => d.value = m\n ), (m, g) => (x(), R(Ie, null, [\n t.wrap ? (x(), ee(ue(t.tag), {\n key: 0,\n class: Y(o.value)\n }, {\n default: Q(() => [\n je(H(\"input\", $e({\n class: l.value,\n type: \"radio\"\n }, m.$attrs, {\n id: _(i),\n onChange: v,\n \"onUpdate:modelValue\": g[0] || (g[0] = (b) => a.value = b),\n required: t.required ? !0 : void 0,\n \"aria-required\": t.required,\n ref_key: \"inputRef\",\n ref: s\n }), null, 16, Th), [\n [ro, a.value]\n ]),\n t.label ? (x(), R(\"label\", {\n key: 0,\n class: Y(r.value),\n for: _(i)\n }, se(t.label), 11, Dh)) : K(\"\", !0),\n t.validFeedback ? (x(), R(\"div\", {\n key: 1,\n class: Y(c.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n t.invalidFeedback ? (x(), R(\"div\", {\n key: 2,\n class: Y(u.value)\n }, se(t.invalidFeedback), 3)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\"])) : K(\"\", !0),\n t.wrap ? K(\"\", !0) : je((x(), R(\"input\", $e({\n key: 1,\n class: l.value,\n type: \"radio\"\n }, m.$attrs, {\n id: _(i),\n onChange: v,\n \"onUpdate:modelValue\": g[1] || (g[1] = (b) => a.value = b),\n required: t.required ? !0 : void 0,\n \"aria-required\": t.required,\n ref_key: \"inputRef\",\n ref: s\n }), null, 16, Oh)), [\n [ro, a.value]\n ]),\n !t.wrap && t.label ? (x(), R(\"label\", {\n key: 2,\n class: Y(r.value),\n for: _(i)\n }, se(t.label), 11, Lh)) : K(\"\", !0),\n !t.wrap && t.validFeedback ? (x(), R(\"div\", {\n key: 3,\n class: Y(c.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n !t.wrap && t.invalidFeedback ? (x(), R(\"div\", {\n key: 4,\n class: Y(u.value)\n }, se(t.invalidFeedback), 3)) : K(\"\", !0)\n ], 64));\n }\n}), Eh = [\"for\"], Ph = [\"id\"], Vh = typeof FileList < \"u\" ? FileList : Object, Rh = {\n name: \"MDBFile\"\n}, n1 = /* @__PURE__ */ re({\n ...Rh,\n props: {\n id: String,\n inputClass: String,\n invalidFeedback: String,\n isInvalid: Boolean,\n isValid: Boolean,\n isValidated: Boolean,\n label: String,\n labelClass: String,\n modelValue: {\n type: [Vh, Array],\n default: () => []\n },\n size: String,\n tooltipFeedback: Boolean,\n validFeedback: String,\n validateOnChange: Boolean\n },\n emits: [\"update:modelValue\", \"on-validate\"],\n setup(t, { emit: e }) {\n const n = t, s = n.id || ut(\"MDBFile-\"), a = y(n.modelValue), i = T(() => [\n \"form-control\",\n n.size && `form-control-${n.size}`,\n c.value && u.value && \"is-valid\",\n c.value && !u.value && \"is-invalid\",\n n.inputClass\n ]), o = T(() => [\"form-label\", n.labelClass]), l = T(() => n.tooltipFeedback ? \"valid-tooltip\" : \"valid-feedback\"), r = T(() => n.tooltipFeedback ? \"invalid-tooltip\" : \"invalid-feedback\"), c = y(n.isValidated), u = y(n.isValid), f = (h) => {\n const p = h.target;\n p.files && (u.value = p.files.length > 0, c.value = !0, e(\"on-validate\", u.value));\n }, d = (h) => {\n const p = h.target;\n p.files && (a.value = p.files, e(\"update:modelValue\", a.value), n.validateOnChange && f(h));\n };\n return pe(\n () => n.modelValue,\n (h) => a.value = h\n ), pe(\n () => n.isValidated,\n (h) => c.value = h\n ), pe(\n () => n.isValid,\n (h) => {\n u.value = h;\n }\n ), (h, p) => (x(), R(Ie, null, [\n t.label ? (x(), R(\"label\", {\n key: 0,\n class: Y(o.value),\n for: _(s)\n }, se(t.label), 11, Eh)) : K(\"\", !0),\n H(\"input\", $e({\n type: \"file\",\n class: i.value\n }, h.$attrs, {\n id: _(s),\n onChange: d\n }), null, 16, Ph),\n t.validFeedback ? (x(), R(\"div\", {\n key: 1,\n class: Y(l.value)\n }, se(t.validFeedback), 3)) : K(\"\", !0),\n t.invalidFeedback ? (x(), R(\"div\", {\n key: 2,\n class: Y(r.value)\n }, se(t.invalidFeedback), 3)) : K(\"\", !0)\n ], 64));\n }\n}), Ih = [\"for\"], Fh = [\"id\", \"value\", \"min\", \"max\"], Nh = { class: \"thumb-value\" }, Hh = {\n name: \"MDBRange\",\n inheritAttrs: !1\n}, s1 = /* @__PURE__ */ re({\n ...Hh,\n props: {\n id: String,\n inputClass: String,\n label: String,\n labelClass: String,\n max: {\n type: Number,\n default: 100\n },\n min: {\n type: Number,\n default: 0\n },\n modelValue: {\n type: Number,\n default: 50\n },\n tag: {\n type: String,\n default: \"div\"\n },\n thumb: {\n type: Boolean,\n default: !0\n },\n thumbClass: String,\n wrapperClass: String\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(n.modelValue), a = y(n.min), i = y(n.max), o = n.id || ut(\"MDBRange-\"), l = y(!1), r = T(() => [\"range\", n.wrapperClass]), c = T(() => [\"form-range\", n.inputClass]), u = T(() => [\"form-label\", n.labelClass]), f = T(() => [\"thumb\", l.value && \"thumb-active\", n.thumbClass]), d = y(0), h = (m) => {\n const g = m.target;\n s.value = parseFloat(g.value), e(\"update:modelValue\", s.value), v();\n }, p = (m) => {\n l.value = m;\n }, v = () => {\n const g = ((typeof s.value == \"string\" ? parseFloat(s.value) : s.value) - a.value) * 100 / (i.value - a.value);\n d.value = `calc(${g}% + (${8 - g * 0.15}px))`;\n };\n return Ge(() => {\n v();\n }), pe(\n () => n.modelValue,\n (m) => {\n s.value = m, v();\n }\n ), (m, g) => (x(), R(Ie, null, [\n t.label ? (x(), R(\"label\", {\n key: 0,\n class: Y(u.value),\n for: _(o)\n }, se(t.label), 11, Ih)) : K(\"\", !0),\n (x(), ee(ue(t.tag), {\n class: Y(r.value)\n }, {\n default: Q(() => [\n H(\"input\", $e({\n type: \"range\",\n class: c.value,\n id: _(o),\n value: s.value,\n min: a.value,\n max: i.value\n }, m.$attrs, {\n onInput: h,\n onMousedown: g[0] || (g[0] = (b) => p(!0)),\n onTouchstart: g[1] || (g[1] = (b) => p(!0)),\n onMouseup: g[2] || (g[2] = (b) => p(!1)),\n onTouchend: g[3] || (g[3] = (b) => p(!1))\n }), null, 16, Fh),\n t.thumb ? (x(), R(\"span\", {\n key: 0,\n class: Y(f.value),\n style: Ce({ left: d.value })\n }, [\n H(\"span\", Nh, se(s.value), 1)\n ], 6)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\"]))\n ], 64));\n }\n}), Wh = [\"id\", \"checked\"], zh = [\"for\"], Yh = {\n name: \"MDBSwitch\",\n inheritAttrs: !1\n}, a1 = /* @__PURE__ */ re({\n ...Yh,\n props: {\n id: String,\n inputClass: String,\n label: String,\n labelClass: String,\n modelValue: {\n type: Boolean,\n default: !1\n },\n tag: {\n type: String,\n default: \"div\"\n },\n wrapperClass: String\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(n.modelValue), a = n.id || ut(\"MDBSwitch-\"), i = T(() => [\"form-check form-switch\", n.wrapperClass]), o = T(() => [\"form-check-input\", n.inputClass]), l = T(() => [\"form-check-label\", n.labelClass]);\n function r() {\n s.value = !s.value, e(\"update:modelValue\", s.value);\n }\n return pe(\n () => n.modelValue,\n (c) => s.value = c\n ), (c, u) => (x(), ee(ue(t.tag), {\n class: Y(i.value)\n }, {\n default: Q(() => [\n H(\"input\", $e({\n type: \"checkbox\",\n class: o.value,\n id: _(a)\n }, c.$attrs, {\n checked: s.value,\n onChange: r\n }), null, 16, Wh),\n H(\"label\", {\n class: Y(l.value),\n for: _(a)\n }, se(t.label), 11, zh)\n ]),\n _: 1\n }, 8, [\"class\"]));\n }\n}), i1 = {\n mounted(t, e) {\n t.scrollspy = {\n links: [],\n container: window,\n scrollPosition: null,\n async: !1,\n offset: 0\n }, e.value && (t.scrollspy.container = document.getElementById(e.value.container) || window, t.scrollspy.async = e.value.async || !1, t.scrollspy.offset = e.value.offset || 0), t.scrollspy.scrollPosition = Co(t.scrollspy.container), t.scrollspy.findHrefs = (n) => {\n var s;\n if (n.attributes && n instanceof HTMLAnchorElement && n.href) {\n if (t.scrollspy.links.push(n), n.classList.contains(\"collapsible-scrollspy\")) {\n const a = (s = n.parentNode) == null ? void 0 : s.querySelector(\"ul\");\n a.dataset.mdbCollapsibleScrollspyHeight = a.clientHeight.toString(), a.style.overflow = \"hidden\", a.style.height = \"0\";\n }\n } else n.childNodes && n.childNodes.forEach(\n (a) => {\n var i, o;\n return (o = (i = t.scrollspy).findHrefs) == null ? void 0 : o.call(i, a);\n }\n );\n }, t.scrollspy.setActive = (n) => {\n if (e.value && e.value.callback) {\n e.instance[e.value.callback](n);\n return;\n }\n t.scrollspy.links.forEach((s, a) => {\n n === a ? s.classList.add(\"active\") : s.classList.remove(\"active\");\n }), jh(t.scrollspy.links, n, t.scrollspy.container), $o(t.scrollspy.links);\n }, t.scrollspy.spy = () => {\n var a, i, o, l;\n if (t.disableScroll) return;\n const n = t.scrollspy.container;\n t.scrollspy.scrollPosition = Co(n), t.scrollspy.links.forEach((r) => {\n const c = document.querySelector(r.hash);\n if (!c)\n return;\n const u = c.getBoundingClientRect();\n let f;\n if (n === window)\n f = window.innerHeight > u.top && u.top + u.height >= 0;\n else if (!(n instanceof Window)) {\n const d = n.getBoundingClientRect();\n f = u.top <= d.top + d.height && u.top + u.height >= d.top;\n }\n r.isLinkActive = f;\n });\n const s = t.scrollspy.links.filter(\n (r) => r.isLinkActive\n );\n if (s.length > 0) {\n const c = s[0].scrollspyIndex;\n (i = (a = t.scrollspy).setActive) == null || i.call(a, c);\n } else\n (l = (o = t.scrollspy).setActive) == null || l.call(o, -1);\n }, t.scrollspy.clickHandler = (n, s) => {\n var l, r;\n const a = t.scrollspy.container;\n window.clearTimeout(t.disableScrollTimeout), t.disableScroll = !0, n.preventDefault();\n const i = document.querySelector(s.hash);\n if (!i)\n return;\n const o = i.getBoundingClientRect();\n if (a === window)\n window.scrollTo({\n top: window.scrollY + o.y - t.scrollspy.offset\n });\n else if (!(a instanceof Window)) {\n const c = a.getBoundingClientRect();\n a.style.scrollBehavior = \"smooth\", a.scrollTop = a.scrollTop + o.y - c.y - t.scrollspy.offset;\n }\n (r = (l = t.scrollspy).setActive) == null || r.call(l, s.scrollspyIndex), s.scrollspyIndex && Xh(t.scrollspy.links[s.scrollspyIndex], t), $o(t.scrollspy.links), t.disableScrollTimeout = setTimeout(() => {\n t.disableScroll = !1;\n }, 800);\n }, t.scrollspy.findHrefs(t), t.scrollspy.links.forEach((n, s) => {\n n.scrollspyIndex = s, n.addEventListener(\n \"click\",\n (a) => {\n var i, o;\n return (o = (i = t.scrollspy).clickHandler) == null ? void 0 : o.call(i, a, n);\n }\n );\n }), t.scrollspy.spy(), t.scrollspy.container.addEventListener(\n \"scroll\",\n (n) => {\n var s, a;\n return (a = (s = t.scrollspy).spy) == null ? void 0 : a.call(s, n);\n }\n ), window.addEventListener(\"resize\", (n) => {\n var s, a;\n return (a = (s = t.scrollspy).spy) == null ? void 0 : a.call(s, n);\n });\n },\n updated(t, e) {\n var n, s;\n (n = e.modifiers) != null && n.async && e.value && !e.value.loading && ((s = e.oldValue) != null && s.loading) && setTimeout(() => {\n var a, i, o, l;\n t.scrollspy.links = [], (i = (a = t.scrollspy).findHrefs) == null || i.call(a, t), t.scrollspy.links.forEach((r, c) => {\n r.scrollspyIndex = c, r.addEventListener(\n \"click\",\n (u) => {\n var f, d;\n return (d = (f = t.scrollspy).clickHandler) == null ? void 0 : d.call(f, u, r);\n }\n );\n }), (l = (o = t.scrollspy).spy) == null || l.call(o);\n }, 0);\n },\n unmounted(t) {\n window.removeEventListener(\"scroll\", (e) => {\n var n, s;\n return (s = (n = t.scrollspy).spy) == null ? void 0 : s.call(n, e);\n }), window.removeEventListener(\"resize\", (e) => {\n var n, s;\n return (s = (n = t.scrollspy).spy) == null ? void 0 : s.call(n, e);\n });\n }\n}, jh = (t, e, n) => {\n const s = t[e];\n if (!s || !s.parentNode)\n return;\n const a = Array.from(\n s.parentNode.querySelectorAll(\"a\")\n );\n a.shift(), a.forEach((o) => {\n const l = document.querySelector(o.hash);\n if (!l)\n return;\n const r = l.getBoundingClientRect();\n let c;\n if (n === window)\n c = window.innerHeight > r.top && r.top + r.height >= 0;\n else if (!(n instanceof Window)) {\n const u = n.getBoundingClientRect();\n c = r.top < u.top && r.top + r.height > u.top;\n }\n o.isActive = c;\n });\n const i = a.filter((o) => o.isLinkActive);\n i.length > 0 && i[0].classList.add(\"active\");\n}, Xh = (t, e) => {\n var s;\n let n = t.parentNode;\n if (n)\n for (; n && n !== e; )\n n.classList.contains(\"nav-item\") && ((s = n.querySelector(\"a\")) == null || s.classList.add(\"active\")), n = n.parentNode;\n}, Co = (t) => t === window ? t.scrollY : t instanceof Window ? null : t.scrollTop, $o = (t) => {\n t.forEach((e) => {\n var n, s;\n if (e.classList.contains(\"collapsible-scrollspy\") && e.classList.contains(\"active\")) {\n const a = (n = e.parentNode) == null ? void 0 : n.querySelector(\"ul\");\n a && (a.style.overflow = \"hidden\", a.style.height = `${a.dataset.mdbCollapsibleScrollspyHeight}px`);\n } else if (e.classList.contains(\"collapsible-scrollspy\")) {\n const a = (s = e.parentNode) == null ? void 0 : s.querySelector(\"ul\");\n a && (a.style.overflow = \"hidden\", a.style.height = \"0\");\n }\n });\n}, Uh = {\n key: 0,\n class: \"mt-2 mx-2\"\n}, qh = {\n key: 0,\n class: \"mt-2 mx-2\"\n}, Kh = {\n name: \"MDBDropdownMenu\",\n inheritAttrs: !1\n}, o1 = /* @__PURE__ */ re({\n ...Kh,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n fadeIn: {\n type: String,\n default: \"fade-in\"\n },\n fadeOut: {\n type: String,\n default: \"fade-out\"\n },\n animation: {\n type: Boolean,\n default: !0\n },\n dark: {\n type: Boolean,\n default: !1\n },\n static: {\n type: Boolean,\n default: !1\n },\n filter: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = Sn() ? 0 : 550, s = T(() => [\n \"dropdown-menu\",\n a === \"dropdown-menu-start\" ? \"dropdown-menu-start\" : a.value,\n o.value,\n l.value && \"show\",\n e.dark && \"dropdown-menu-dark\"\n ]), a = N(\n \"menuAlignClasses\",\n \"dropdown-menu-start\"\n ), i = y(\"root\"), o = y(null), l = y(!1), r = T(() => e.static ? { display: \"block\", position: \"static\" } : !1), c = () => {\n e.animation && setTimeout(() => {\n o.value = !1;\n }, n);\n }, u = N(\"setMenuMountedState\", () => !1), f = N(\"isActive\", !1);\n f && pe(\n () => f.value,\n (D) => {\n D ? setTimeout(\n () => {\n u(!0, i.value);\n },\n Sn() ? 0 : 100\n ) : !D && g && (d(), setTimeout(() => {\n u(!1);\n }, n));\n }\n );\n const d = () => {\n Me(document, \"keydown\", C), S.value = 0, o.value = e.animation && `animation ${e.fadeOut}`, l.value = !1, c();\n }, h = T(() => e.static || f && f.value || f && !f.value && g && g.value ? !0 : (f && !f.value && g && !g.value && setTimeout(() => !1, n), !1)), p = N(\"externalTarget\", !1), v = y(!1), m = y(\"\");\n Fe(() => {\n p && document.body.querySelector(p) && (v.value = !0, m.value = p);\n });\n const g = N(\"isPopperActive\", null), b = () => {\n Le(document, \"keydown\", C), o.value = e.animation && `animation ${e.fadeIn}`, c();\n };\n g && pe(\n () => g.value,\n (D, E) => {\n i.value && (!E && D === !0 || E === !1) && (w.value = i.value.querySelectorAll(\n \".dropdown-item\"\n ), l.value = !0, b());\n }\n );\n const S = y(0), w = y(null), k = N(\n \"handleEscAndOutsideClick\",\n () => !1\n ), C = (D) => {\n var X, L;\n const E = D.key;\n if ((E === \"ArrowUp\" || E === \"ArrowDown\") && D.preventDefault(), !(f && !f.value)) {\n switch (w.value && w.value.forEach((A) => {\n A.classList.remove(\"active\");\n }), E) {\n case \"Escape\":\n k();\n return;\n case \"Enter\":\n w.value && ((X = w.value[S.value - 1]) == null || X.click());\n return;\n case \"ArrowUp\":\n S.value--, S.value <= 0 && w.value && (S.value = w.value.length);\n break;\n case \"ArrowDown\":\n S.value++, w.value && S.value > w.value.length && (S.value = 1);\n break;\n }\n w.value && ((L = w.value[S.value - 1]) == null || L.classList.add(\"active\"));\n }\n }, M = y(\"\"), V = y([]), B = () => {\n V.value = [\n ...i.value.querySelectorAll(\".dropdown-item\")\n ], V.value.forEach((D) => {\n D.style.display = \"flex\";\n }), M.value && V.value.forEach((D) => {\n var L;\n const E = (L = D.textContent) == null ? void 0 : L.trim().toLowerCase();\n (E == null ? void 0 : E.includes(M.value.toLowerCase())) || (D.style.display = \"none\");\n });\n };\n return pe(\n () => M.value,\n () => {\n B();\n }\n ), (D, E) => v.value ? (x(), ee(Ut, {\n key: 1,\n to: m.value\n }, [\n Ee(At, null, {\n default: Q(() => [\n h.value ? (x(), ee(ue(t.tag), $e({\n key: 0,\n class: s.value,\n style: r.value\n }, D.$attrs, {\n \"data-popper\": _(p),\n ref_key: \"root\",\n ref: i\n }), {\n default: Q(() => [\n t.filter ? (x(), R(\"div\", qh, [\n Ee(_(vn), {\n modelValue: M.value,\n \"onUpdate:modelValue\": E[1] || (E[1] = (X) => M.value = X),\n role: \"searchbox\",\n type: \"text\",\n label: \"Search\"\n }, null, 8, [\"modelValue\"])\n ])) : K(\"\", !0),\n oe(D.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\", \"style\", \"data-popper\"])) : K(\"\", !0)\n ]),\n _: 3\n })\n ], 8, [\"to\"])) : (x(), ee(At, { key: 0 }, {\n default: Q(() => [\n h.value ? (x(), ee(ue(t.tag), $e({\n key: 0,\n class: s.value,\n style: r.value\n }, D.$attrs, {\n \"data-popper\": \"\",\n ref_key: \"root\",\n ref: i\n }), {\n default: Q(() => [\n t.filter ? (x(), R(\"div\", Uh, [\n Ee(_(vn), {\n modelValue: M.value,\n \"onUpdate:modelValue\": E[0] || (E[0] = (X) => M.value = X),\n role: \"searchbox\",\n type: \"text\",\n label: \"Search\"\n }, null, 8, [\"modelValue\"])\n ])) : K(\"\", !0),\n oe(D.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\", \"style\"])) : K(\"\", !0)\n ]),\n _: 3\n }));\n }\n}), Bo = (t) => {\n if (!t)\n return !1;\n const e = t.parentElement;\n if (t.style && t.parentNode && e.style) {\n const n = getComputedStyle(t), s = getComputedStyle(e);\n return n.display !== \"none\" && s.display !== \"none\" && n.visibility !== \"hidden\";\n }\n return !1;\n};\nfunction gr() {\n const t = y(), e = y(), n = y(), s = $t({}), a = y(null), i = y();\n function o(d, h, p, v) {\n t.value = h, e.value = p, n.value = d, s.position = v.position || \"top\", s.container = v.container || null, s.refresh = v.refresh || 1e3, s.filter = v.filter || function(m) {\n return m;\n }, s.container && (i.value = document.querySelector(s.container));\n }\n function l() {\n return [\n ...document.querySelectorAll(e.value)\n ].filter((d, h) => s.filter(d, h)).map((d) => ({ el: d, rect: d.getBoundingClientRect() })).filter(({ el: d, rect: h }) => {\n var v;\n const p = d.id !== ((v = t.value) == null ? void 0 : v.id) && Bo(d);\n return a.value === null ? p : p && c(h) < a.value;\n }).sort((d, h) => c(h.rect) - c(d.rect));\n }\n function r() {\n return [\n ...document.querySelectorAll(\n e.value\n )\n ].filter((d) => {\n var h;\n return d.id !== ((h = t.value) == null ? void 0 : h.id) && Bo(d);\n }).filter((d, h) => s.filter(d, h)).filter((d) => c(d.getBoundingClientRect()) > a.value);\n }\n function c(d) {\n let h = 0, p = window.innerHeight;\n if (i.value) {\n const v = i.value.getBoundingClientRect();\n h = v.top, p = v.bottom;\n }\n return s.position === \"top\" ? d.top - h : p - d.bottom;\n }\n function u() {\n const [d] = l();\n return d ? a.value = c(d.rect) + d.rect.height : a.value = 0, a.value;\n }\n function f() {\n a.value = null;\n }\n return {\n setStack: o,\n nextStackElements: r,\n calculateStackingOffset: u,\n resetStackingOffset: f,\n stackableElements: l\n };\n}\nconst Gh = { class: \"me-auto\" }, Zh = { class: \"me-auto\" }, Jh = {\n name: \"MDBToast\",\n inheritAttrs: !1\n}, l1 = /* @__PURE__ */ re({\n ...Jh,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n id: String,\n modelValue: Boolean,\n offset: {\n type: String,\n default: \"10\"\n },\n position: {\n type: String,\n default: \"top-right\"\n },\n width: {\n type: [String, null],\n default: null\n },\n color: {\n type: String\n },\n container: String,\n autohide: {\n type: Boolean,\n default: !0\n },\n animation: {\n type: Boolean,\n default: !0\n },\n delay: {\n type: Number,\n default: 5e3\n },\n appendToBody: {\n type: Boolean,\n default: !1\n },\n stacking: {\n type: Boolean,\n default: !0\n },\n text: String,\n static: {\n type: Boolean,\n default: !1\n },\n icon: String,\n toast: String,\n heightAnimation: Boolean\n },\n emits: [\n \"update:modelValue\",\n \"show\",\n \"shown\",\n \"hide\",\n \"hidden\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = T(() => [\n \"toast\",\n s.animation && \"fade\",\n s.animation && s.heightAnimation && `fade-height ${s.position.split(\"-\")[0] === \"bottom\" ? \"fade-height-bottom\" : \"\"}`,\n \"mx-auto\",\n s.color && `bg-${s.color}`,\n s.toast && `toast-${s.toast}`,\n i.value,\n d.value && \"show\"\n ]), i = T(() => {\n if (!s.static)\n return s.container ? \"toast-absolute\" : \"toast-fixed\";\n }), o = T(() => [\n \"toast-header\",\n s.toast && `toast-${s.toast}`,\n s.color && `bg-${s.color}`,\n s.text && `text-${s.text}`\n ]), l = T(() => [\"btn-close\", s.text === \"white\" ? \"btn-close-white\" : null]), r = T(() => [\n \"toast-body\",\n s.text === \"white\" ? \"text-white\" : null,\n \"text-start\"\n ]), c = T(() => `width: ${s.width}`), u = y(null), f = y(null), d = y(!!s.static), h = s.id || ut(\"MDBToast-\"), p = y(null), v = () => !s.stacking || !s.position ? 0 : w(), m = () => {\n if (!s.position) return null;\n const [z, G] = s.position.split(\"-\");\n return { y: z, x: G };\n }, g = () => {\n const z = s.animation && s.heightAnimation ? M().length * 300 : 1;\n setTimeout(() => {\n const G = m(), U = G ? G.y : null, ie = v();\n p.value && U && (p.value.style[U] = `${parseInt(ie) + parseInt(s.offset)}px`, s.heightAnimation && (p.value.style.transition = \".3s\", setTimeout(() => {\n p.value && (p.value.style.transition = \"\");\n }, 300))), b();\n }, z);\n }, b = () => {\n const z = v(), G = m();\n if (!G)\n return;\n const U = G.y === \"top\" ? \"bottom\" : \"top\", ie = G.x === \"left\" ? \"right\" : \"left\";\n G.x === \"center\" ? u.value = {\n [G.y]: `${parseInt(z) + parseInt(s.offset)}px`,\n [U]: \"unset\",\n left: \"50%\",\n transform: \"translate(-50%)\"\n } : u.value = {\n [G.y]: `${parseInt(z) + parseInt(s.offset)}px`,\n [G.x]: `${s.offset}px`,\n [U]: \"unset\",\n [ie]: \"unset\",\n transform: \"unset\"\n };\n };\n pe(\n () => s.position,\n () => b()\n ), pe(\n () => s.offset,\n () => b()\n );\n const {\n setStack: S,\n calculateStackingOffset: w,\n nextStackElements: k,\n resetStackingOffset: C,\n stackableElements: M\n } = gr(), V = y(null), B = () => {\n const z = m(), G = z ? z.y : null;\n S(\n p,\n p.value,\n \".toast\",\n {\n position: G,\n offset: s.offset,\n container: s.container,\n filter: (U) => U.dataset.mdbStacking && !U.dataset.mdbStatic\n }\n ), D();\n }, D = () => {\n V.value = new MutationObserver((z) => {\n for (const G of z) {\n const U = G.target.getAttribute(\n G.attributeName\n );\n Ge(() => {\n U && X(U);\n });\n }\n }), V.value.observe(p.value, {\n attributes: !0,\n attributeOldValue: !0,\n attributeFilter: [\"class\"]\n });\n }, E = () => {\n const z = k();\n z.length <= 0 || z.forEach((G) => {\n G.id !== h && G.classList.add(\"should-stack-update\");\n });\n }, X = (z) => {\n z.split(\" \").includes(\"should-stack-update\") && (g(), p.value.classList.remove(\"should-stack-update\"));\n }, L = y(s.modelValue), A = y();\n Ze(() => {\n L.value = s.modelValue;\n });\n const P = () => {\n n(\"show\"), F(), b(), f.value = \"display: block\";\n const z = () => {\n n(\"shown\"), Me(p.value, \"transitionend\", z), s.autohide && (A.value = setTimeout(I, s.delay));\n };\n Ge(() => {\n setTimeout(() => {\n d.value = !0;\n }, 0), s.animation && !Sn() ? Le(p.value, \"transitionend\", z) : z();\n });\n }, O = () => {\n n(\"hide\");\n const z = () => {\n let G = 0;\n s.heightAnimation && (G = 300), setTimeout(() => {\n f.value = \"display: none\", u.value = null, n(\"hidden\"), Me(p.value, \"transitionend\", z), s.stacking && E();\n }, G);\n };\n d.value = !1, s.stacking && !s.static && C(), s.animation && !s.heightAnimation && !Sn() ? Le(p.value, \"transitionend\", z) : z();\n };\n pe(\n () => L.value,\n (z) => {\n z ? P() : O();\n }\n );\n const $ = () => {\n n(\"update:modelValue\", !0);\n }, I = () => {\n s.autohide && !A.value || n(\"update:modelValue\", !1);\n }, F = () => {\n clearTimeout(A.value), A.value = void 0;\n };\n return Fe(() => {\n if (s.modelValue || (f.value = \"display: none\"), s.container) {\n const z = document.querySelector(s.container);\n if (!z) return;\n z.classList.add(\"parent-toast-relative\");\n }\n s.stacking && B();\n }), dt(() => {\n F(), V.value && V.value.disconnect();\n }), e({\n show: $,\n hide: I\n }), (z, G) => t.appendToBody ? (x(), ee(Ut, {\n key: 0,\n to: \"body\"\n }, [\n (x(), ee(ue(t.tag), $e({\n id: _(h),\n ref_key: \"toastRef\",\n ref: p,\n class: [\"\", a.value],\n style: [f.value, c.value, u.value],\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n \"data-mdb-stacking\": t.stacking ? !0 : null,\n \"data-mdb-static\": s.static ? !0 : null\n }, z.$attrs), {\n default: Q(() => [\n H(\"div\", {\n class: Y(o.value)\n }, [\n t.icon ? (x(), R(\"i\", {\n key: 0,\n class: Y(t.icon)\n }, null, 2)) : K(\"\", !0),\n H(\"strong\", Gh, [\n oe(z.$slots, \"title\")\n ]),\n H(\"small\", null, [\n oe(z.$slots, \"small\")\n ]),\n H(\"button\", {\n type: \"button\",\n class: Y(l.value),\n \"aria-label\": \"Close\",\n onClick: I\n }, null, 2)\n ], 2),\n H(\"div\", {\n class: Y(r.value)\n }, [\n oe(z.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"style\", \"data-mdb-stacking\", \"data-mdb-static\"]))\n ])) : (x(), ee(ue(t.tag), $e({\n key: 1,\n id: _(h),\n ref_key: \"toastRef\",\n ref: p,\n class: [\"\", a.value],\n style: [f.value, c.value, u.value],\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n \"data-mdb-stacking\": t.stacking ? !0 : null\n }, z.$attrs), {\n default: Q(() => [\n H(\"div\", {\n class: Y(o.value)\n }, [\n t.icon ? (x(), R(\"i\", {\n key: 0,\n class: Y(t.icon)\n }, null, 2)) : K(\"\", !0),\n H(\"strong\", Zh, [\n oe(z.$slots, \"title\")\n ]),\n H(\"small\", null, [\n oe(z.$slots, \"small\")\n ]),\n H(\"button\", {\n type: \"button\",\n class: Y(l.value),\n \"aria-label\": \"Close\",\n onClick: I\n }, null, 2)\n ], 2),\n H(\"div\", {\n class: Y(r.value)\n }, [\n oe(z.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"style\", \"data-mdb-stacking\"]));\n }\n}), Qh = {\n name: \"MDBAlert\",\n inheritAttrs: !1\n}, r1 = /* @__PURE__ */ re({\n ...Qh,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: Boolean,\n offset: {\n type: String,\n default: \"10\"\n },\n position: {\n type: String,\n default: \"top-right\"\n },\n width: {\n type: [String, null],\n default: null\n },\n color: {\n type: String\n },\n container: String,\n autohide: {\n type: Boolean,\n default: !0\n },\n animation: {\n type: Boolean,\n default: !0\n },\n delay: {\n type: Number,\n default: 5e3\n },\n appendToBody: {\n type: Boolean,\n default: !1\n },\n stacking: {\n type: Boolean,\n default: !0\n },\n static: {\n type: Boolean,\n default: !1\n },\n dismiss: Boolean,\n id: String,\n hidden: Boolean,\n heightAnimation: Boolean\n },\n emits: [\n \"update:modelValue\",\n \"show\",\n \"shown\",\n \"hide\",\n \"hidden\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = T(() => [\n \"alert\",\n s.animation && \"fade\",\n s.animation && s.heightAnimation && `fade-height ${s.position.split(\"-\")[0] === \"bottom\" ? \"fade-height-bottom\" : \"\"}`,\n \"text-start\",\n s.color && `alert-${s.color}`,\n i.value,\n c.value && \"show\",\n s.dismiss && \"alert-dismissible\"\n ]), i = T(() => {\n if (!s.static)\n return s.container ? \"alert-absolute\" : \"alert-fixed\";\n }), o = T(() => `width: ${s.width}`), l = y(null), r = y(null), c = y(!!(s.static && !s.hidden)), u = s.id || ut(\"MDBAlert-\"), f = y(null), d = () => !s.stacking || !s.position ? 0 : g(), h = () => {\n if (!s.position) return null;\n const [$, I] = s.position.split(\"-\");\n return { y: $, x: I };\n }, p = () => {\n const $ = s.animation && s.heightAnimation ? w().length * 300 : 1;\n setTimeout(() => {\n const I = h(), F = I ? I.y : null, z = d();\n f.value && F && (f.value.style[F] = `${parseInt(z) + parseInt(s.offset)}px`, s.heightAnimation && (f.value.style.transition = \".3s\", setTimeout(() => {\n f.value.style.transition = \"\";\n }, 300))), v();\n }, $);\n }, v = () => {\n const $ = d(), I = h();\n if (!I)\n return;\n const F = I.y === \"top\" ? \"bottom\" : \"top\", z = I.x === \"left\" ? \"right\" : \"left\";\n I.x === \"center\" ? l.value = {\n [I.y]: `${parseInt($) + parseInt(s.offset)}px`,\n [F]: \"unset\",\n left: \"50%\",\n transform: \"translate(-50%)\"\n } : l.value = {\n [I.y]: `${parseInt($) + parseInt(s.offset)}px`,\n [I.x]: `${s.offset}px`,\n [F]: \"unset\",\n [z]: \"unset\",\n transform: \"unset\"\n };\n };\n pe(\n () => s.position,\n () => v()\n ), pe(\n () => s.offset,\n () => v()\n );\n const {\n setStack: m,\n calculateStackingOffset: g,\n nextStackElements: b,\n resetStackingOffset: S,\n stackableElements: w\n } = gr(), k = y(null), C = () => {\n const $ = h(), I = $ ? $.y : null;\n m(\n f,\n f.value,\n \".alert\",\n {\n position: I,\n offset: s.offset,\n container: s.container,\n filter: (F) => F.dataset.mdbStacking && !F.dataset.mdbStatic\n }\n ), M();\n }, M = () => {\n k.value = new MutationObserver(($) => {\n for (const I of $) {\n const F = I.target.getAttribute(\n I.attributeName\n );\n Ge(() => {\n F && B(F);\n });\n }\n }), k.value.observe(f.value, {\n attributes: !0,\n attributeOldValue: !0,\n attributeFilter: [\"class\"]\n });\n }, V = () => {\n const $ = b();\n $.length && $.forEach((I) => {\n I.id !== u && I.classList.add(\"should-stack-update\");\n });\n }, B = ($) => {\n $.split(\" \").includes(\"should-stack-update\") && (p(), f.value.classList.remove(\"should-stack-update\"));\n }, D = y(s.modelValue), E = y();\n Ze(() => {\n D.value = s.modelValue;\n });\n const X = () => {\n n(\"show\"), O(), v(), r.value = \"display: block\";\n const $ = () => {\n n(\"shown\"), Me(f.value, \"transitionend\", $), s.autohide && (E.value = setTimeout(P, s.delay));\n };\n Ge(() => {\n setTimeout(() => {\n c.value = !0;\n }, 0), s.animation && !Sn() ? Le(f.value, \"transitionend\", $) : $();\n });\n }, L = () => {\n n(\"hide\");\n const $ = () => {\n let I = 0;\n s.heightAnimation && (I = 300), setTimeout(() => {\n r.value = \"display: none\", l.value = null, n(\"hidden\"), Me(f.value, \"transitionend\", $), s.stacking && !s.static && V();\n }, I);\n };\n c.value = !1, s.stacking && !s.static && S(), s.animation && !s.heightAnimation && !Sn() ? Le(f.value, \"transitionend\", $) : $();\n };\n pe(\n () => D.value,\n ($) => {\n $ ? X() : L();\n }\n );\n const A = () => {\n n(\"update:modelValue\", !0);\n }, P = () => {\n s.autohide && !E.value || n(\"update:modelValue\", !1);\n }, O = () => {\n clearTimeout(E.value), E.value = void 0;\n };\n return Fe(() => {\n if ((s.static && s.hidden || !s.modelValue && !s.static) && (r.value = \"display: none\"), s.container) {\n const $ = document.querySelector(s.container);\n if (!$) return;\n $.classList.add(\"parent-alert-relative\");\n }\n s.stacking && !s.static && C();\n }), dt(() => {\n O(), k.value && k.value.disconnect();\n }), e({\n show: A,\n hide: P\n }), ($, I) => t.appendToBody ? (x(), ee(Ut, {\n key: 0,\n to: \"body\"\n }, [\n (x(), ee(ue(t.tag), $e({\n id: _(u),\n ref_key: \"alertRef\",\n ref: f,\n class: a.value,\n style: [r.value, o.value, l.value],\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n \"data-mdb-stacking\": t.stacking ? !0 : null,\n \"data-mdb-static\": s.static ? !0 : null\n }, $.$attrs), {\n default: Q(() => [\n oe($.$slots, \"default\"),\n t.dismiss ? (x(), R(\"button\", {\n key: 0,\n type: \"button\",\n class: \"btn-close\",\n \"aria-label\": \"Close\",\n onClick: P\n })) : K(\"\", !0)\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"style\", \"data-mdb-stacking\", \"data-mdb-static\"]))\n ])) : (x(), ee(ue(t.tag), $e({\n key: 1,\n id: _(u),\n ref_key: \"alertRef\",\n ref: f,\n class: a.value,\n style: [r.value, o.value, l.value],\n role: \"alert\",\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n \"data-mdb-stacking\": t.stacking ? !0 : null,\n \"data-mdb-static\": s.static ? !0 : null\n }, $.$attrs), {\n default: Q(() => [\n oe($.$slots, \"default\"),\n t.dismiss ? (x(), R(\"button\", {\n key: 0,\n type: \"button\",\n class: \"btn-close\",\n \"aria-label\": \"Close\",\n onClick: P\n })) : K(\"\", !0)\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"style\", \"data-mdb-stacking\", \"data-mdb-static\"]));\n }\n}), ep = {\n name: \"MDBModal\",\n extends: rf\n}, c1 = /* @__PURE__ */ re({\n ...ep,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n modelValue: Boolean,\n size: {\n type: String,\n validator: (t) => [\"sm\", \"lg\", \"xl\"].indexOf(t.toLowerCase()) > -1\n },\n removeBackdrop: {\n type: Boolean,\n default: !1\n },\n staticBackdrop: {\n type: Boolean,\n default: !1\n },\n centered: {\n type: Boolean,\n default: !1\n },\n bgSrc: {\n type: String,\n default: \"\"\n },\n scrollable: {\n type: Boolean,\n default: !1\n },\n duration: {\n type: Number,\n default: 400\n },\n labelledby: String,\n fullscreen: {\n type: [Boolean, String],\n default: !1\n },\n animation: {\n type: Boolean,\n default: !0\n },\n dialogClasses: {\n type: String\n },\n keyboard: {\n type: Boolean,\n default: !0\n },\n focus: {\n type: Boolean,\n default: !0\n },\n side: {\n type: Boolean,\n default: !1\n },\n frame: {\n type: [Boolean, String],\n default: !1\n },\n nonInvasive: {\n type: Boolean,\n default: !1\n },\n direction: {\n type: String,\n default: \"top\"\n },\n position: String,\n keepOverflow: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"show\",\n \"shown\",\n \"hide\",\n \"hidden\",\n \"update:modelValue\"\n ],\n setup(t, { emit: e }) {\n const n = t, {\n dialogClass: s,\n wrapperClass: a,\n backdropOverflowStyle: i,\n computedContentStyle: o,\n root: l,\n dialog: r,\n isActive: c,\n closeModal: u,\n animateStaticBackdrop: f,\n afterEnter: d,\n afterLeave: h,\n scrollbarWidth: p,\n shouldOverflow: v,\n setScrollbar: m,\n thisElement: g,\n handleEscKeyUp: b,\n focusTrap: S,\n dialogTransform: w,\n clickFromBackdrop: k,\n isOnlyNonInvasiveModal: C,\n onlyNonInvasiveModal: M\n } = mr(n, e), V = T(() => {\n const O = [];\n return n.side && O.push(\"modal-side\"), n.frame && O.push(\"modal-frame\"), n.position && O.push(`modal-${n.position}`), n.nonInvasive && O.push(\"modal-non-invasive-show\"), O;\n }), B = y(n.modelValue);\n Ze(() => B.value = n.modelValue), pe(\n () => B.value,\n (O) => {\n e(\"update:modelValue\", O);\n }\n );\n const D = T(() => n.direction === \"right\" ? \"translate(25%,0)\" : n.direction === \"bottom\" ? \"translate(0,25%)\" : n.direction === \"left\" ? \"translate(-25%,0)\" : null), E = (O, $) => {\n e($, O);\n }, X = T(() => n.removeBackdrop || n.nonInvasive ? !1 : { \"background-color\": \"rgba(0,0,0, 0.5)\" }), L = T(() => n.nonInvasive ? { \"pointer-events\": \"none\" } : !1), A = (O) => {\n const $ = O;\n v.value = D.value !== \"translate(0,25%)\", w.value = D.value || \"translate(0, -25%)\", $.childNodes[0].style.transform = w.value, $.style.opacity = \"0\", $.style.display = \"block\", m(), C();\n let I = p.value;\n document.body.style.overflowY = \"hidden\", n.nonInvasive && (I = 0, document.body.style.overflowY = \"auto\"), M.value && (document.body.style.paddingRight = `${I}px`, $.style.paddingRight = `${p.value}px`, document.body.classList.add(\"modal-open\")), e(\"show\", l.value);\n }, P = (O) => {\n const $ = O;\n $.childNodes[0].style.transform = w.value, $.style.opacity = \"0\", M.value && setTimeout(() => {\n $.style.paddingRight = \"\", n.nonInvasive || (document.body.style.paddingRight = \"\", document.body.style.overflowY = \"auto\"), document.body.classList.remove(\"modal-open\");\n }, 200), e(\"hide\", g.value), n.keyboard && Me(window, \"keyup\", b), n.focus && S.value && S.value.removeFocusTrap();\n };\n return (O, $) => (x(), ee(At, {\n onEnter: A,\n onAfterEnter: _(d),\n onBeforeLeave: P,\n onAfterLeave: _(h)\n }, {\n default: Q(() => [\n _(c) ? (x(), ee(ue(t.tag), {\n key: 0,\n ref_key: \"root\",\n ref: l,\n class: Y([_(a), t.nonInvasive && \"non-invasive\"]),\n style: Ce([\n X.value,\n _(i),\n L.value\n ]),\n \"aria-hidden\": !_(c),\n \"aria-modal\": _(c) ? !0 : null,\n \"aria-labelledby\": t.labelledby,\n role: \"dialog\",\n onMousedown: $[0] || ($[0] = _e((I) => k.value = !0, [\"self\"])),\n onClick: $[1] || ($[1] = _e(\n () => {\n t.nonInvasive || !_(k) || (t.staticBackdrop ? _(f)() : (_(u)(), k.value = !1));\n },\n [\"self\"]\n )),\n onShow: $[2] || ($[2] = (I) => E(I, \"show\")),\n onShown: $[3] || ($[3] = (I) => E(I, \"shown\")),\n onHide: $[4] || ($[4] = (I) => E(I, \"hide\")),\n onHidden: $[5] || ($[5] = (I) => E(I, \"hidden\"))\n }, {\n default: Q(() => [\n H(\"div\", {\n ref_key: \"dialog\",\n ref: r,\n class: Y([_(s), V.value]),\n role: \"document\"\n }, [\n H(\"div\", {\n class: \"modal-content\",\n style: Ce(_(o))\n }, [\n oe(O.$slots, \"default\")\n ], 4)\n ], 2)\n ]),\n _: 3\n }, 40, [\"class\", \"style\", \"aria-hidden\", \"aria-modal\", \"aria-labelledby\"])) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\"]));\n }\n}), tp = {\n name: \"MDBRating\"\n}, u1 = /* @__PURE__ */ re({\n ...tp,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n modelValue: {\n type: Number,\n default: -1\n },\n readonly: Boolean,\n events: Boolean,\n dynamic: Boolean,\n classes: String\n },\n emits: [\"update:modelValue\", \"item-click\", \"item-hover\"],\n setup(t, { emit: e }) {\n const n = t, s = y(null), a = T(() => [\"rating\", n.classes]), i = y(n.modelValue), o = (f, d) => {\n d && (e(\"update:modelValue\", f), n.events && e(\"item-click\", d));\n };\n Ze(() => i.value = n.modelValue);\n const l = y(null), r = (f, d) => {\n d && (l.value = f, d !== \"leave\" && n.events && e(\"item-hover\", d));\n }, c = $t({\n icon: \"\",\n color: \"\"\n }), u = (f, d) => {\n c.icon = f, c.color = d;\n };\n return q(\"activeItem\", i), q(\"hoveredItem\", l), q(\"setActiveRating\", o), q(\"setHoveredRating\", r), q(\"readonly\", n.readonly), q(\"dynamic\", n.dynamic), q(\"dynamicStyle\", c), q(\"setDynamic\", u), (f, d) => (x(), ee(ue(t.tag), {\n ref_key: \"ratingRef\",\n ref: s,\n class: Y(a.value),\n onMouseleave: d[0] || (d[0] = (h) => r(null, \"leave\"))\n }, {\n default: Q(() => [\n oe(f.$slots, \"default\")\n ]),\n _: 3\n }, 40, [\"class\"]));\n }\n}), np = {\n name: \"MDBRatingItem\",\n inheritAttrs: !1\n}, d1 = /* @__PURE__ */ re({\n ...np,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n iconClass: String,\n classes: String,\n icon: {\n type: String,\n default: \"star\"\n },\n flag: String,\n size: String,\n color: String,\n title: String,\n index: {\n type: Number,\n required: !0\n },\n popover: { type: [Boolean, String], default: !1 },\n insertBefore: String,\n insertAfter: String\n },\n setup(t) {\n const e = t, n = y(null), s = N(\"activeItem\", !1), a = N(\"hoveredItem\", !1), i = N(\n \"setActiveRating\",\n !1\n ), o = N(\"setHoveredRating\", !1), l = N(\"readonly\", !1), r = N(\"dynamic\", !1), c = N(\"dynamicStyle\", !1), u = N(\"setDynamic\", !1), f = T(() => a && !a.value && s && s.value && s.value >= e.index || a && a.value >= e.index);\n pe(\n [a, s],\n () => {\n r && a && s && u && (a.value ? a.value : s.value) === e.index && u(e.icon, e.color);\n },\n { immediate: !0 }\n );\n const d = (m) => {\n e.popover && (v.value = !v.value), !l && i && i(e.index, m);\n }, h = (m) => {\n !l && o && o(e.index, m);\n }, p = y(!1), v = y(!1);\n return (m, g) => t.popover ? (x(), ee(af, {\n key: 0,\n modelValue: v.value,\n \"onUpdate:modelValue\": g[0] || (g[0] = (b) => v.value = b),\n direction: \"top\"\n }, Vc({\n reference: Q(() => [\n (x(), ee(ue(t.tag), $e(m.$attrs, {\n ref_key: \"ratingItemRef\",\n ref: n,\n class: [t.insertAfter || t.insertBefore ? \"px-2 d-flex\" : null, t.classes]\n }), {\n default: Q(() => [\n et(se(t.insertBefore) + \" \", 1),\n Ee(ns, {\n iconStyle: f.value ? \"fas\" : \"far\",\n icon: _(c) && _(c).icon ? _(c).icon : t.icon,\n size: t.size,\n flag: t.flag,\n class: Y([f.value && \"active\", !t.color && \"text-primary\", t.iconClass]),\n style: Ce({\n color: _(c) && _(c).color ? _(c).color : t.color\n }),\n onClick: d,\n onMouseenter: h\n }, null, 8, [\"iconStyle\", \"icon\", \"size\", \"flag\", \"class\", \"style\"]),\n et(\" \" + se(t.insertAfter), 1)\n ]),\n _: 1\n }, 16, [\"class\"]))\n ]),\n _: 2\n }, [\n t.popover && t.popover !== !0 ? {\n name: \"body\",\n fn: Q(() => [\n et(se(t.popover), 1)\n ]),\n key: \"0\"\n } : {\n name: \"body\",\n fn: Q(() => [\n oe(m.$slots, \"default\")\n ]),\n key: \"1\"\n }\n ]), 1032, [\"modelValue\"])) : (x(), ee(Qd, {\n key: 1,\n modelValue: p.value,\n \"onUpdate:modelValue\": g[1] || (g[1] = (b) => p.value = b),\n disabled: t.title ? void 0 : !0\n }, {\n reference: Q(() => [\n (x(), ee(ue(t.tag), $e(m.$attrs, {\n ref_key: \"ratingItemRef\",\n ref: n,\n class: [t.insertAfter || t.insertBefore ? \"px-2 d-flex\" : null, t.classes]\n }), {\n default: Q(() => [\n et(se(t.insertBefore) + \" \", 1),\n Ee(ns, {\n iconStyle: f.value ? \"fas\" : \"far\",\n icon: _(c) && _(c).icon ? _(c).icon : t.icon,\n size: t.size,\n flag: t.flag,\n class: Y([f.value && \"active\", !t.color && \"text-primary\", t.iconClass]),\n style: Ce({\n color: _(c) && _(c).color ? _(c).color : t.color\n }),\n onClick: d,\n onMouseenter: h\n }, null, 8, [\"iconStyle\", \"icon\", \"size\", \"flag\", \"class\", \"style\"]),\n et(\" \" + se(t.insertAfter), 1)\n ]),\n _: 1\n }, 16, [\"class\"]))\n ]),\n tip: Q(() => [\n et(se(t.title), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"disabled\"]));\n }\n});\nfunction Qs(t, e, n, s) {\n n && s[t].ref.classList[e](n);\n}\nfunction sp(t, e) {\n Qs(t, \"add\", \"stepper-invalid\", e), Qs(t, \"remove\", \"stepper-completed\", e), Qs(t, \"add\", \"\", e), Qs(t, \"remove\", \"\", e);\n}\nfunction Pi(t, e, n, s, a = !1) {\n const i = e.length;\n let o = !0;\n if (!a && t === n && (o = !1), (t >= i || t < 0) && (o = !1), s && (!a && t > n - 1 && (o = !1), n > t || n === i || a)) {\n const l = e[t].ref;\n Array.prototype.slice.call(\n l.querySelectorAll(\n \"input[required]\"\n )\n ).every((u) => u.checkValidity() === !0) || (sp(t, e), o = !1);\n }\n return o;\n}\nconst ap = {\n key: 0,\n class: \"stepper-mobile-head bg-light\"\n}, ip = {\n key: 1,\n class: \"stepper-mobile-footer bg-light\"\n}, op = { class: \"stepper-back-btn\" }, lp = /* @__PURE__ */ H(\"i\", { class: \"fas fa-chevron-left\" }, null, -1), rp = {\n key: 0,\n class: \"stepper-mobile-progress gray-500\"\n}, cp = { class: \"stepper-next-btn\" }, up = /* @__PURE__ */ H(\"i\", { class: \"fas fa-chevron-right\" }, null, -1), dp = {\n name: \"MDBStepper\"\n}, f1 = /* @__PURE__ */ re({\n ...dp,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n activeStepIndex: {\n type: Number,\n default: 1\n },\n linear: Boolean,\n noEditable: Boolean,\n vertical: Boolean,\n mobile: Boolean,\n mobileProgress: Boolean,\n verticalBreakpoint: Number,\n mobileBreakpoint: Number,\n disableStepperHeadClick: Boolean,\n nextBtn: {\n type: String,\n default: \"NEXT\"\n },\n backBtn: {\n type: String,\n default: \"BACK\"\n },\n stepTxt: {\n type: String,\n default: \"step\"\n },\n stepOfTxt: {\n type: String,\n default: \"of\"\n },\n animation: {\n type: Boolean,\n default: !0\n }\n },\n emits: [\n \"on-invalid\",\n \"on-valid\",\n \"on-change-step\",\n \"on-changed-step\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = y(null), i = T(() => [\n \"stepper\",\n v.value && \"stepper-vertical\",\n g.value && \"stepper-mobile\",\n s.mobileProgress && \"stepper-progress-bar\"\n ]), o = $t({\n steps: [],\n count: 0,\n activeStep: s.activeStepIndex - 1,\n prevStep: void 0\n }), l = () => {\n const D = {\n index: o.count,\n completed: !1,\n ref: null,\n validated: !1,\n valid: !1,\n visited: !1\n };\n return o.steps.push(D), o.count++, D.index;\n }, r = (D, E) => {\n o.steps[E].ref = D;\n }, c = (D) => {\n h(D) && (o.activeStep = D, C(D, \"on-valid\"), n(\"on-changed-step\", {\n currentStep: o.activeStep,\n prevStep: o.prevStep\n }));\n }, u = (D) => {\n h(D) && (o.prevStep = D, f(D, \"completed\"), C(D, \"on-change-step\"));\n }, f = (D, E) => {\n h(D) && (o.steps[D][E] = !0);\n }, d = (D, E) => {\n h(D) && (o.steps[D].valid = E);\n }, h = (D) => o.steps.findIndex((E) => E.index === D) > -1, p = y(s.vertical), v = T(() => s.vertical || p.value), m = y(s.mobile), g = T(() => s.mobile || m.value);\n q(\"state\", o), q(\"addStep\", l), q(\"addStepRef\", r), q(\"setActiveStep\", c), q(\"setPrevStep\", u), q(\"setStepValid\", d), q(\"linear\", s.linear), q(\"mobile\", g), q(\"vertical\", v), q(\"noEditable\", s.noEditable), q(\"setStepAttribute\", f), q(\"disableStepperHeadClick\", s.disableStepperHeadClick), q(\"showAnimation\", s.animation);\n const b = y();\n q(\"setStepperHeight\", (D) => {\n b.value = D;\n });\n const w = () => {\n const D = s.verticalBreakpoint && s.verticalBreakpoint < window.innerWidth, E = s.verticalBreakpoint && s.verticalBreakpoint > window.innerWidth, X = s.mobileBreakpoint && s.mobileBreakpoint > window.innerWidth;\n D ? (m.value = !1, p.value = !1) : E && !X ? (m.value = !1, p.value = !0) : X && (m.value = !0, p.value = !1);\n }, k = (D, E, X) => {\n if (s.linear) {\n f(D, \"validated\");\n const L = Pi(D, E, X, s.linear);\n return L || C(D, \"on-invalid\"), L;\n }\n return !0;\n }, C = (D, E) => {\n h(D) && n(E, o.steps[D].ref);\n };\n q(\"emitEvent\", C);\n const M = () => {\n k(o.activeStep, o.steps, o.activeStep + 1) && (h(o.activeStep + 1) && u(o.activeStep), c(o.activeStep + 1));\n }, V = () => {\n h(o.activeStep - 1) && u(o.activeStep), c(o.activeStep - 1);\n }, B = (D) => {\n (D - 1 > o.activeStep ? !0 : k(o.activeStep, o.steps, D - 1)) && D - 1 !== o.activeStep && (u(o.activeStep), c(D - 1));\n };\n return Fe(() => {\n (s.mobileBreakpoint || s.verticalBreakpoint) && (w(), window.addEventListener(\"resize\", w));\n }), e({\n changeStep: B,\n nextStep: M,\n prevStep: V\n }), (D, E) => (x(), ee(ue(t.tag), {\n ref_key: \"stepperRef\",\n ref: a,\n class: Y(i.value),\n style: Ce({ height: v.value ? null : `${b.value}px` })\n }, {\n default: Q(() => [\n g.value ? (x(), R(\"div\", ap, se(s.stepTxt) + \" \" + se(o.activeStep + 1) + \" \" + se(s.stepOfTxt) + \" \" + se(o.count), 1)) : K(\"\", !0),\n oe(D.$slots, \"default\"),\n g.value ? (x(), R(\"div\", ip, [\n H(\"div\", op, [\n H(\"button\", {\n type: \"button\",\n class: \"btn btn-link\",\n onClick: V\n }, [\n lp,\n et(\" \" + se(s.backBtn), 1)\n ])\n ]),\n t.mobileProgress ? (x(), R(\"div\", rp, [\n H(\"div\", {\n class: \"stepper-mobile-progress-bar bg-primary\",\n style: Ce({ width: `${(o.activeStep + 1) / o.count * 100}%` })\n }, null, 4)\n ])) : K(\"\", !0),\n H(\"div\", cp, [\n H(\"button\", {\n type: \"button\",\n class: \"btn btn-link ripple-surface\",\n onClick: M\n }, [\n et(se(s.nextBtn) + \" \", 1),\n up\n ])\n ])\n ])) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"class\", \"style\"]));\n }\n}), fp = {\n name: \"MDBStepperStep\"\n}, h1 = /* @__PURE__ */ re({\n ...fp,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n optional: {\n type: Boolean,\n default: !1\n },\n dynamic: Boolean\n },\n setup(t, { expose: e }) {\n const n = t, s = $t({\n steps: [],\n count: 0,\n activeStep: 0,\n prevStep: 0\n }), a = y(null), i = T(() => [\n \"stepper-step\",\n f.value && \"stepper-active\",\n d.value && \"stepper-completed\",\n p.value && \"was-validated\",\n h.value && \"stepper-disabled\"\n ]), { steps: o, activeStep: l } = os(N(\"state\", s)), r = N(\"addStep\", () => 0), c = N(\"addStepRef\"), u = r();\n q(\"stepIndex\", u);\n const f = T(() => l.value === u), d = T(() => o.value[u].completed), h = T(() => o.value[u].visited);\n q(\"optional\", n.optional), pe(\n () => f.value,\n (B) => {\n B && Ge(() => S());\n }\n );\n const p = T(() => o.value[u].validated);\n pe(\n () => p.value,\n (B) => {\n B && setTimeout(S, 200);\n }\n );\n const v = N(\"vertical\", !1), m = N(\"mobile\", !1);\n m && pe(\n () => m.value,\n (B) => {\n B && setTimeout(S, 250);\n }\n ), v && pe(\n () => v.value,\n (B) => {\n B && S();\n }\n );\n const g = (B, D) => {\n let E = !1, X = B;\n for (; !E && X !== document.body; ) {\n const L = X.parentNode;\n L.classList.contains(D) && (E = !0), X = L;\n }\n return X;\n }, b = N(\"setStepperHeight\"), S = () => {\n if (!a.value) return;\n const B = a.value, D = B.querySelector(\".stepper-content\"), E = g(B, \"stepper\").querySelector(\n \".stepper-mobile-footer\"\n ), X = D && getComputedStyle(D), L = E ? getComputedStyle(E) : \"\";\n let A;\n m && m.value ? A = g(B, \"stepper\").querySelector(\n \".stepper-mobile-head\"\n ) : A = B.querySelector(\".stepper-head\");\n const P = A && getComputedStyle(A);\n if (D && X) {\n const O = D.offsetHeight + parseFloat(X.marginTop) + parseFloat(X.marginBottom), $ = A && P ? A.offsetHeight + parseFloat(P.marginTop) + parseFloat(P.marginBottom) : 0, I = L ? E.offsetHeight + parseFloat(L.marginTop) + parseFloat(L.marginBottom) : 0;\n b == null || b($ + O + I);\n }\n }, w = y(n.dynamic), k = v && v.value, C = (B) => {\n if (!(!f.value || !n.dynamic || k))\n for (const D of B)\n D.type === \"childList\" && S();\n }, M = { childList: !0, subtree: !0 }, V = new MutationObserver(C);\n return Fe(() => {\n c && c(a.value, u), l.value === u && v && !v.value && S(), Le(window, \"resize\", S), a.value && w.value && !k && V.observe(a.value, M);\n }), dt(() => {\n Me(window, \"resize\", S), V.disconnect();\n }), e({\n setHeight: S\n }), (B, D) => (x(), ee(ue(t.tag), {\n ref_key: \"stepRef\",\n ref: a,\n class: Y(i.value)\n }, {\n default: Q(() => [\n oe(B.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"class\"]));\n }\n}), hp = {\n key: 0,\n class: \"stepper-head-icon\"\n}, pp = {\n key: 1,\n class: \"stepper-head-icon\"\n}, vp = [\"data-mdb-content\"], mp = {\n name: \"MDBStepperHead\"\n}, p1 = /* @__PURE__ */ re({\n ...mp,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n icon: String\n },\n setup(t) {\n const e = $t({\n steps: [],\n count: 0,\n activeStep: 0,\n prevStep: 0\n }), n = N(\"state\", e), { activeStep: s, steps: a } = os(n), i = N(\"stepIndex\", 0), o = N(\"setActiveStep\"), l = N(\"setPrevStep\"), r = N(\"linear\", !1), c = N(\"noEditable\", !1), u = N(\"setStepAttribute\"), f = N(\"optional\", !1), d = N(\"emitEvent\"), h = N(\"disableStepperHeadClick\"), p = N(\"setStepValid\"), v = (b) => {\n var w;\n const S = [];\n for (let k = 0; k <= b; k++)\n if (k !== s.value) {\n const C = (n == null ? void 0 : n.steps[k].validated) && n.steps[k].valid;\n C || (w = a.value[k].ref) == null || w.classList.add(\"stepper-invalid\"), S.push(C);\n }\n return S.every((k) => k);\n }, m = () => {\n let b = !0, S = !0;\n if (r && (b = Pi(s.value, a.value, i, r), p == null || p(s.value, b)), r && i > s.value && (u == null || u(s.value, \"validated\"), S = v(i - 1), !b || !S)) {\n d == null || d(s.value, \"on-invalid\");\n return;\n }\n c && (u == null || u(s.value, \"visited\"), a.value[i].visited) || (i !== s.value && (l == null || l(s.value)), o && o(i));\n }, g = T(() => h ? null : \"click\");\n return (b, S) => (x(), ee(ue(t.tag), $e({ class: \"stepper-head\" }, { [Rc(g.value)]: m }), {\n default: Q(() => [\n t.icon ? (x(), R(\"span\", hp, se(t.icon), 1)) : (x(), R(\"span\", pp, [\n oe(b.$slots, \"icon\")\n ])),\n H(\"span\", {\n \"data-mdb-content\": _(f) ? \"Optional\" : null,\n class: \"stepper-head-text\"\n }, [\n oe(b.$slots, \"default\")\n ], 8, vp)\n ]),\n _: 3\n }, 16));\n }\n}), gp = {\n mounted(t, e) {\n if (e.value === !1 || !t) return;\n const n = e.value;\n let s = !0, a = !0;\n t.animate = () => {\n const i = parseInt(n.offset, 10) || 0, o = n.repeatOnShow || !1, l = n.callback || n, c = t.getBoundingClientRect().top, u = t.offsetHeight, f = window.innerHeight, d = c + i <= f && c + i + u >= 0;\n switch (!0) {\n case (d && s):\n o && (a = !0), s = !1, l(\"hasShown\");\n break;\n case (!d && a && !s):\n o && (s = !0), a = !1, l(\"hasHidden\");\n break;\n }\n }, window.addEventListener(\"scroll\", (i) => t.animate(i));\n },\n unmounted(t, e) {\n e.value !== !1 && window.removeEventListener(\"scroll\", (n) => t.animate(n));\n }\n}, bp = {\n name: \"MDBAnimation\"\n}, yp = /* @__PURE__ */ re({\n ...bp,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n trigger: {\n type: String,\n default: \"onClick\",\n validator: (t) => [\"onHover\", \"onClick\", \"manually\", \"onLoad\", \"onScroll\"].indexOf(t) > -1\n },\n modelValue: Boolean,\n animation: {\n type: [String, Boolean],\n default: \"fade-in\"\n },\n duration: {\n type: Number,\n default: 500\n },\n reset: {\n type: Boolean,\n default: !1\n },\n delay: {\n type: Number,\n default: 0\n },\n interval: {\n type: Number,\n default: 0\n },\n repeat: {\n type: [Boolean, Number],\n default: !1\n },\n direction: {\n type: String,\n default: \"normal\"\n },\n repeatOnScroll: {\n type: Boolean,\n default: !1\n },\n scrollOffset: {\n type: Number,\n default: 0\n },\n showOnLoad: {\n type: Boolean,\n default: !0\n },\n beginHidden: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\"hide\", \"show\", \"start\", \"end\", \"update:modelValue\"],\n setup(t, { expose: e, emit: n }) {\n const s = t;\n let a;\n ((A) => {\n A.onHover = \"onHover\", A.onClick = \"onClick\", A.onLoad = \"onLoad\", A.onScroll = \"onScroll\", A.manually = \"manually\";\n })(a || (a = {}));\n const i = y(\"\"), o = y(s.beginHidden), l = T(() => [\n i.value,\n o.value ? \"invisible\" : \"\"\n ]), r = () => {\n i.value = `animation ${s.animation}`, n(\"start\", L.value);\n }, c = () => {\n i.value = \"\", Me(L.value, \"animationend\", c), s.trigger === \"manually\" && s.modelValue && !s.repeat && n(\"update:modelValue\", !1);\n }, u = () => {\n n(\"end\", L.value), Me(L.value, \"animationend\", u);\n }, f = T(() => ({\n animationIterationCount: !s.interval && s.repeat === !0 ? \"infinite\" : s.repeat,\n animationDelay: `${s.delay}ms`,\n animationDuration: `${s.duration}ms`,\n animationDirection: s.direction\n })), d = () => {\n s.beginHidden && (o.value = !1), r(), p.value && E(), s.interval && Le(L.value, \"animationend\", D), s.reset && X(), Le(L.value, \"animationend\", u);\n }, h = () => {\n c();\n };\n pe(\n () => s.animation,\n () => {\n d();\n }\n );\n const p = y(\n s.trigger === \"onHover\"\n /* onHover */\n ), v = () => {\n p.value = !0;\n }, m = y(\n s.trigger === \"onClick\"\n /* onClick */\n ), g = () => {\n m.value = !0;\n }, b = y(\n s.trigger === \"manually\"\n /* manually */\n ), S = () => {\n b.value = !0;\n }, w = {\n callback: (A) => k(A),\n offset: s.scrollOffset,\n repeatOnShow: s.repeatOnScroll\n }, k = (A) => {\n switch (A) {\n case \"hasShown\":\n d(), V();\n break;\n case \"hasHidden\":\n s.repeatOnScroll && (c(), (!s.showOnLoad || s.scrollOffset > 0) && M());\n break;\n }\n }, C = () => {\n (!s.showOnLoad || s.scrollOffset > 0) && M();\n }, M = () => {\n L.value && (L.value.style.visibility = \"hidden\", n(\"hide\", L.value));\n }, V = () => {\n L.value && (L.value.style.visibility = \"visible\", n(\"show\", L.value));\n }, B = y(s.modelValue);\n Ze(() => {\n B.value = s.modelValue;\n }), pe(\n () => B.value,\n (A, P) => {\n A && b.value ? d() : P === !0 && h();\n }\n );\n const D = () => {\n c(), setTimeout(() => {\n r();\n }, s.interval);\n }, E = () => {\n p.value = !1, setTimeout(() => {\n p.value = !0;\n }, s.duration + 100);\n }, X = () => {\n Le(L.value, \"animationend\", c);\n }, L = y(null);\n return Fe(() => {\n if (s.animation)\n switch (s.trigger) {\n case \"onHover\":\n v();\n break;\n case \"onClick\":\n g();\n break;\n case \"onLoad\":\n d();\n break;\n case \"manually\":\n S();\n break;\n case \"onScroll\":\n C();\n break;\n }\n }), dt(() => {\n Me(L.value, \"animationend\", c), Me(L.value, \"animationend\", D), Me(L.value, \"animationend\", u);\n }), e({\n startAnimation: d,\n stopAnimation: h\n }), (A, P) => je((x(), ee(ue(t.tag), {\n ref_key: \"wrapper\",\n ref: L,\n class: Y(l.value),\n style: Ce(f.value),\n onMouseenter: P[0] || (P[0] = () => p.value && d()),\n onClick: P[1] || (P[1] = () => m.value && d())\n }, {\n default: Q(() => [\n oe(A.$slots, \"default\")\n ]),\n _: 3\n }, 40, [\"class\", \"style\"])), [\n [\n _(gp),\n t.trigger === \"onScroll\" ? w : !1\n ]\n ]);\n }\n}), xp = {\n name: \"MDBStepperContent\"\n}, v1 = /* @__PURE__ */ re({\n ...xp,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = $t({\n steps: [],\n count: 0,\n activeStep: 0,\n prevStep: 0\n }), n = T(() => [\n \"stepper-content\",\n \"py-3\",\n p && p.value && !d.value && \"stepper-content-hide\"\n ]), s = y(\"0px\"), a = T(() => ({\n height: s.value\n })), i = y(null), { activeStep: o, prevStep: l } = os(N(\"state\", e)), r = N(\"stepIndex\", null), c = N(\"showAnimation\", !0), u = 16, f = T(() => o.value === r), d = y(f.value), h = y(), p = N(\"vertical\", !1), v = T(() => h.value ? o.value > l.value ? \"slide-out-left\" : o.value < l.value ? \"slide-out-right\" : \"\" : (l.value || l.value === 0) && o.value > l.value ? \"slide-in-right\" : o.value < l.value ? \"slide-in-left\" : \"\"), m = () => {\n s.value = g.value ? `${g.value}px` : \"100%\", b.value = !0;\n }, g = y(0), b = y(!0);\n return pe(\n () => f.value,\n (S) => {\n if (p && !p.value) {\n d.value = S;\n return;\n }\n if (!S && b.value) {\n const w = i.value;\n g.value = w.scrollHeight, i.value.style.transition = \"none\", m();\n }\n setTimeout(() => {\n c && (i.value.style.transition = \"height 0.3s ease-in-out, margin-top 0.3s ease-in-out, margin-bottom 0.3s ease-in-out, padding-top 0.3s ease-in-out, padding-bottom 0.3s ease-in-out\"), d.value = S;\n });\n }\n ), pe(\n () => d.value,\n (S) => {\n p && p.value && S && (b.value = !1, setTimeout(m, 250));\n }\n ), p && pe(\n () => p.value,\n (S) => {\n Ge(() => {\n S && i.value && setTimeout(m, 250);\n });\n }\n ), pe(\n () => l.value,\n (S) => {\n p && p.value || !c || i.value && S === r && (h.value = !0, i.value.startAnimation(), setTimeout(\n () => {\n h.value = !1;\n },\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches ? 0 : 800\n ));\n },\n { immediate: !0 }\n ), Fe(() => {\n p && p.value && i.value && (c || (i.value.style.transition = \"none\"), d.value || (g.value = i.value.scrollHeight + 2 * u), m());\n }), (S, w) => _(p) || !_(c) && (d.value || h.value) ? (x(), ee(ue(t.tag), {\n key: 0,\n ref_key: \"contentRef\",\n ref: i,\n style: Ce(_(p) && a.value),\n class: Y(n.value)\n }, {\n default: Q(() => [\n oe(S.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"style\", \"class\"])) : !_(p) && _(c) && (d.value || h.value) ? (x(), ee(yp, {\n key: 1,\n ref_key: \"contentRef\",\n ref: i,\n tag: t.tag,\n class: Y(n.value),\n trigger: \"onLoad\",\n reset: \"\",\n animation: v.value,\n duration: 800\n }, {\n default: Q(() => [\n oe(S.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"tag\", \"class\", \"animation\"])) : K(\"\", !0);\n }\n}), kp = {\n name: \"MDBStepperForm\"\n}, m1 = /* @__PURE__ */ re({\n ...kp,\n props: {\n tag: {\n type: String,\n default: \"form\"\n }\n },\n setup(t) {\n const e = $t({\n steps: [],\n count: 0,\n activeStep: 0,\n prevStep: 0\n }), { steps: n, activeStep: s } = os(N(\"state\", e)), a = N(\"linear\", !1), i = N(\"setStepAttribute\"), o = y(null), l = T(() => [\"stepper-form\", \"needs-validation\"]), r = (c) => {\n var f;\n const u = c.target;\n (f = u.checkValidity) != null && f.call(u) || (c.preventDefault(), c.stopPropagation()), n.value.forEach((d, h) => {\n i == null || i(h, \"validated\"), Pi(s.value, n.value, h, a, !0);\n });\n };\n return (c, u) => (x(), ee(ue(t.tag), {\n ref_key: \"formRef\",\n ref: o,\n class: Y(l.value),\n noValidate: \"\",\n onSubmit: r\n }, {\n default: Q(() => [\n oe(c.$slots, \"default\")\n ]),\n _: 3\n }, 40, [\"class\"]));\n }\n}), wa = {\n mounted(t) {\n if (!t) return;\n let e, n;\n t.initFocusTrap = () => {\n t.calculateFocusTrap(), Le(window, \"keydown\", t.focusFirstElement);\n }, t.calculateFocusTrap = () => {\n const s = Array.from(\n t.querySelectorAll(\n 'button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((a) => !a.classList.contains(\"ps__thumb-x\") && !a.classList.contains(\"ps__thumb-y\") && !a.disabled);\n s.length !== 0 && (e = s[0], n = s[s.length - 1], Le(\n n,\n \"keydown\",\n (a) => t.focusFirstElement(a, !0)\n ));\n }, t.focusTrap = () => {\n e && e.focus();\n }, t.focusFirstElement = (s, a = !1) => {\n (s == null ? void 0 : s.key) === \"Tab\" && (s.preventDefault(), t.focusTrap()), !a && Me(window, \"keydown\", t.focusFirstElement);\n }, t.removeFocusTrap = () => {\n Me(n, \"keydown\", t.handleLastElementKeydown);\n }, t.initFocusTrap();\n },\n unmounted(t) {\n t && t.removeFocusTrap();\n }\n}, Ga = y(!1), ya = y(), wp = () => {\n ya.value = !document.body.classList.contains(\"modal-open\");\n}, Vi = () => {\n const t = document.body.style.paddingRight, e = () => {\n const a = document.createElement(\"div\");\n a.className = \"modal-scrollbar-measure\", document.body.appendChild(a);\n const i = a.getBoundingClientRect().width - a.clientWidth;\n return document.body.removeChild(a), i;\n };\n return {\n beforeEnter: () => {\n if (document.body.scrollHeight > window.innerHeight && (!ya.value && wp(), Ga.value = !0, document.body.classList.add(\"modal-open\"), ya.value)) {\n const a = Number(e().toFixed(2));\n a > 0 && (document.body.style.paddingRight = `${a}px`), setTimeout(() => Ga.value = !1, 500);\n }\n },\n afterLeave: () => {\n Ga.value || ya.value && (document.body.classList.remove(\"modal-open\"), document.body.style.paddingRight = t);\n }\n };\n}, Sp = [\"id\"], _p = { class: \"popconfirm show\" }, Mp = { class: \"popconfirm-message\" }, Cp = {\n key: 0,\n class: \"popconfirm-icon-container\"\n}, $p = { class: \"popconfirm-message-text\" }, Bp = { class: \"popconfirm-buttons-container\" }, Tp = [\"id\"], Dp = { class: \"popconfirm-message\" }, Op = {\n key: 0,\n class: \"popconfirm-icon-container\"\n}, Lp = { class: \"popconfirm-message-text\" }, Ap = { class: \"popconfirm-buttons-container\" }, Ep = {\n name: \"MDBPopconfirm\"\n}, g1 = /* @__PURE__ */ re({\n ...Ep,\n props: {\n tag: {\n type: String,\n default: \"button\"\n },\n message: {\n type: String,\n default: \"Are you sure?\"\n },\n cancelText: {\n type: String,\n default: \"Cancel\"\n },\n cancelLabel: {\n type: String,\n default: \"Cancel\"\n },\n confirmText: {\n type: String,\n default: \"Ok\"\n },\n confirmLabel: {\n type: String,\n default: \"Confirm\"\n },\n icon: {\n type: String,\n default: \"\"\n },\n modal: Boolean,\n offset: {\n type: String,\n default: \"0, 5\"\n },\n position: {\n type: String,\n default: \"bottom\"\n }\n },\n emits: [\"confirm\", \"cancel\"],\n setup(t, { emit: e }) {\n const n = t, { beforeEnter: s } = Vi(), a = document.documentElement.dir === \"rtl\", i = T(() => [n.modal ? \"popconfirm-modal\" : \"popconfirm-popover\", \"shadow-4\"]), o = T(() => [\"popconfirm\", \"fade\", r.value]), l = ut(\"MDBPopconfirm-\"), r = y(\"\"), c = () => {\n switch (n.position) {\n case \"top left\":\n return a ? \"top-start\" : \"top-end\";\n case \"top\":\n return \"top\";\n case \"top right\":\n return a ? \"top-end\" : \"top-start\";\n case \"bottom left\":\n return a ? \"bottom-start\" : \"bottom-end\";\n case \"bottom\":\n return \"bottom\";\n case \"bottom right\":\n return a ? \"bottom-end\" : \"bottom-start\";\n case \"left\":\n return a ? \"right\" : \"left\";\n case \"left top\":\n return a ? \"right-end\" : \"left-end\";\n case \"left bottom\":\n return a ? \"right-start\" : \"left-start\";\n case \"right\":\n return a ? \"left\" : \"right\";\n case \"right top\":\n return a ? \"left-end\" : \"right-end\";\n case \"right bottom\":\n return a ? \"left-start\" : \"right-start\";\n case void 0:\n return \"bottom\";\n default:\n return n.position;\n }\n }, u = y(null), { setPopper: f, isPopperActive: d, openPopper: h, closePopper: p, getPopperOffset: v } = $n(), m = y(null), g = y(null), b = () => {\n const E = {\n placement: c(),\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: v(n.offset, u.value)\n }\n }\n ]\n };\n f(\n m.value,\n g.value,\n E\n );\n }, S = y(!1), w = y(\"\");\n pe(\n () => S.value,\n (D) => {\n D && n.modal ? (w.value = document.body.style.paddingRight, s()) : !D && n.modal && (document.body.classList.remove(\"modal-open\"), document.body.style.paddingRight = w.value);\n }\n ), Ze(() => {\n if (S.value && !n.modal)\n Ge(() => {\n b(), h(), setTimeout(() => {\n r.value = \"show\";\n }, 0), Le(window, \"keydown\", V);\n });\n else {\n if (!d.value)\n return;\n r.value = \"\", setTimeout(p, 150), Me(window, \"keydown\", V);\n }\n });\n const k = () => {\n S.value || (S.value = !0);\n }, C = () => {\n S.value = !1;\n }, M = (D) => {\n const E = m.value === D.target, X = g.value === D.target, L = g.value && g.value.contains(D.target);\n !E && !X && !L && (C(), e(\"cancel\"));\n }, V = (D) => {\n D.key === \"Escape\" && (C(), e(\"cancel\"));\n }, B = (D) => {\n e(D), C();\n };\n return dt(() => {\n Me(window, \"keydown\", V);\n }), (D, E) => (x(), R(Ie, null, [\n (x(), ee(ue(t.tag), $e({\n ref_key: \"triggerEl\",\n ref: m,\n class: \"btn btn-primary popconfirm-toggle\"\n }, D.$attrs, { onClick: k }), {\n default: Q(() => [\n oe(D.$slots, \"default\")\n ]),\n _: 3\n }, 16)),\n t.modal && S.value ? (x(), R(\"div\", {\n key: 0,\n id: _(l),\n ref_key: \"modalRef\",\n ref: u,\n class: \"popconfirm-backdrop\"\n }, [\n je((x(), R(\"div\", {\n class: Y([i.value])\n }, [\n H(\"div\", _p, [\n H(\"div\", Mp, [\n t.icon ? (x(), R(\"span\", Cp, [\n H(\"i\", {\n class: Y(t.icon)\n }, null, 2)\n ])) : K(\"\", !0),\n H(\"span\", $p, se(D.$slots.message ? null : t.message), 1),\n D.$slots.message ? oe(D.$slots, \"message\", { key: 1 }) : K(\"\", !0)\n ]),\n H(\"div\", Bp, [\n Ee(un, {\n color: \"flat\",\n size: \"sm\",\n \"aria-label\": t.cancelLabel,\n onClick: E[0] || (E[0] = (X) => B(\"cancel\"))\n }, {\n default: Q(() => [\n et(se(t.cancelText), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"]),\n Ee(un, {\n color: \"primary\",\n size: \"sm\",\n \"aria-label\": t.confirmLabel,\n onClick: E[1] || (E[1] = (X) => B(\"confirm\"))\n }, {\n default: Q(() => [\n et(se(t.confirmText), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ])\n ])\n ], 2)), [\n [_(wa)],\n [_(tn), M]\n ])\n ], 8, Sp)) : (x(), ee(Ut, {\n key: 1,\n to: \"body\"\n }, [\n S.value ? je((x(), R(\"div\", {\n key: 0,\n id: _(l),\n ref_key: \"popperEl\",\n ref: g,\n class: Y(i.value)\n }, [\n H(\"div\", {\n class: Y(o.value)\n }, [\n H(\"div\", Dp, [\n t.icon ? (x(), R(\"span\", Op, [\n H(\"i\", {\n class: Y(t.icon)\n }, null, 2)\n ])) : K(\"\", !0),\n H(\"span\", Lp, se(D.$slots.message ? null : t.message), 1),\n D.$slots.message ? oe(D.$slots, \"message\", { key: 1 }) : K(\"\", !0)\n ]),\n H(\"div\", Ap, [\n Ee(un, {\n color: \"flat\",\n size: \"sm\",\n \"aria-label\": t.cancelLabel,\n onClick: E[2] || (E[2] = (X) => B(\"cancel\"))\n }, {\n default: Q(() => [\n et(se(t.cancelText), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"]),\n Ee(un, {\n color: \"primary\",\n size: \"sm\",\n \"aria-label\": t.confirmLabel,\n onClick: E[3] || (E[3] = (X) => B(\"confirm\"))\n }, {\n default: Q(() => [\n et(se(t.confirmText), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ])\n ], 2)\n ], 10, Tp)), [\n [_(tn), M],\n [_(wa)]\n ]) : K(\"\", !0)\n ]))\n ], 64));\n }\n}), Pp = { class: \"lightbox-gallery-loader\" }, Vp = { class: \"lightbox-gallery-left-tools\" }, Rp = { class: \"lightbox-gallery-counter\" }, Ip = { class: \"lightbox-gallery-right-tools\" }, Fp = [\"aria-label\"], Np = { class: \"lightbox-gallery-content\" }, Hp = [\"alt\", \"src\"], Wp = { class: \"lightbox-gallery-caption-wrapper\" }, zp = { class: \"lightbox-gallery-caption\" }, Yp = {\n name: \"MDBLightbox\"\n}, b1 = /* @__PURE__ */ re({\n ...Yp,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n zoomLevel: {\n type: [Number, String],\n default: 1\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"open\",\n \"opened\",\n \"slide\",\n \"slided\",\n \"zoom-in\",\n \"zoomed-in\",\n \"zoom-out\",\n \"zoomed-out\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = y(null), i = y(null), o = T(() => [\"lightbox\"]), l = y(!1), r = y(-1), c = y([]), u = y([]), f = y(!1);\n q(\"initialImagesArray\", c);\n const d = (Z, me) => {\n const Ve = Z;\n u.value[me].ref = Ve;\n }, h = y(\"\");\n pe(\n () => r.value,\n () => {\n Ge(() => {\n const Z = V();\n h.value = Z.caption || Z.alt || `Lightbox image ${Z.id + 1}`;\n });\n }\n );\n const p = () => {\n c.value = [], u.value = [], g.value = 0;\n }, v = () => {\n p(), a.value.querySelectorAll(\n \"img\"\n ).forEach((me) => {\n b(me);\n }), C();\n }, m = () => {\n v();\n }, g = y(0), b = (Z) => {\n const { lightboxThumbnail: me, lightboxSrc: Ve, lightboxCaption: bt, lightboxDisabled: yt } = Z.dataset, Yn = {\n id: g.value,\n refId: Z.id,\n left: 0,\n opacity: 1,\n scale: 0.25,\n active: !1,\n thumbnail: me,\n src: Ve || me,\n alt: Z.alt,\n caption: bt,\n disabled: yt,\n ref: Z\n };\n Yn.disabled || (c.value.push(Yn), u.value.push(Yn), g.value++);\n }, S = (Z) => {\n r.value = Z;\n }, w = (Z, me) => {\n Z.left === 0 ? (Z.active = !0, Z.opacity = 1, Z.scale = 1) : (Z.active = !1, Z.opacity = 0), me === g.value - 1 && g.value > 1 && (Z.left = -100);\n }, k = (Z) => {\n Z.width >= Z.height ? (Z.style.width = \"100%\", Z.style.maxWidth = \"100%\", Z.style.height = \"auto\", Z.style.top = `${(Z.parentNode.offsetHeight - Z.height) / 2}px`, Z.style.left = \"0px\") : (Z.style.height = \"100%\", Z.style.maxHeight = \"100%\", Z.style.width = \"auto\", Z.style.left = `${(Z.parentNode.offsetWidth - Z.width) / 2}px`, Z.style.top = \"0px\"), Z.width >= Z.parentNode.offsetWidth && (Z.style.width = `${Z.parentNode.offsetWidth}px`, Z.style.height = \"auto\", Z.style.left = \"0px\", Z.style.top = `${(Z.parentNode.offsetHeight - Z.height) / 2}px`), Z.height >= Z.parentNode.offsetHeight && (Z.style.height = `${Z.parentNode.offsetHeight}px`, Z.style.width = \"auto\", Z.style.top = \"0px\", Z.style.left = `${(Z.parentNode.offsetWidth - Z.width) / 2}px`);\n }, C = () => {\n u.value = [...c.value];\n }, M = () => {\n u.value = u.value.map((Z) => ({\n ...Z,\n left: 0,\n opacity: 0,\n active: !1\n }));\n }, V = () => u.value.filter((Z) => Z.left === 0)[0], B = () => {\n for (let Z = 0; Z < r.value; Z++)\n u.value.push(u.value.shift());\n }, D = () => {\n u.value = u.value.map((Z, me) => ({\n ...Z,\n left: 0 + 100 * me\n }));\n }, E = () => {\n u.value = u.value.map((Z) => ({\n ...Z,\n opacity: 0,\n scale: 0.25\n }));\n };\n q(\"addImg\", b);\n const X = y(!1), L = y(1), A = y(0), P = () => {\n L.value = 1, clearTimeout(A.value), O();\n }, O = () => {\n A.value = setTimeout(() => {\n L.value = 0, clearTimeout(A.value);\n }, 4e3);\n }, $ = () => {\n document.body.classList.add(\"disabled-scroll\"), document.documentElement.scrollHeight > document.documentElement.clientHeight && document.body.classList.add(\"replace-scrollbar\");\n }, I = () => {\n setTimeout(() => {\n document.body.classList.remove(\"disabled-scroll\"), document.body.classList.remove(\"replace-scrollbar\");\n }, 300);\n }, F = (Z = 0) => {\n Z === -1 || l.value ? U() : G(Z);\n }, z = () => {\n var Z;\n f.value ? (document.exitFullscreen && document.exitFullscreen(), f.value = !1) : ((Z = i.value) != null && Z.requestFullscreen && i.value.requestFullscreen(), f.value = !0);\n };\n q(\"toggleLightbox\", F);\n const G = (Z = 0) => {\n n(\"open\"), C(), S(Z), B(), D(), l.value = !0, Ge(() => {\n u.value.forEach((me, Ve) => {\n w(me, Ve), me.ref && k(me.ref);\n }), setTimeout(() => {\n u.value.forEach((me) => {\n me.left === 0 && (me.scale = 1);\n });\n }, 50), $(), O(), oo(), n(\"opened\"), Te();\n });\n }, U = () => {\n l.value && (n(\"close\"), f.value && z(), I(), lo(), E(), l.value = !1, r.value = -1, ze(), M(), n(\"closed\"), Te());\n }, ie = y(null), ve = y(null), ye = y(null), W = y(null), te = y(null), ae = y(0), be = [\n ie,\n ve,\n ye,\n W,\n te\n ], xe = (Z) => {\n var me;\n Z.key === \"Tab\" && (Z.preventDefault(), (me = be[ae.value].value) == null || me.focus(), ae.value < be.length - 1 ? ae.value++ : ae.value = 0);\n }, Te = () => {\n l.value ? setTimeout(() => {\n window.addEventListener(\"keydown\", xe);\n }, 100) : l.value || setTimeout(() => {\n ae.value = 0, window.removeEventListener(\"keydown\", xe);\n }, 100);\n }, qe = y(!1), lt = () => {\n qe.value = !0, setTimeout(() => {\n qe.value = !1;\n }, 400);\n }, it = (Z) => {\n u.value.forEach((me) => {\n let Ve;\n Z === 1 ? (Ve = me.left - 100, Ve < -100 && (Ve = (g.value - 2) * 100)) : (Ve = me.left + 100, Ve === (g.value - 1) * 100 && (Ve = -100)), Ve === 0 ? (me.opacity = 1, me.scale = 1, me.active = !0, me.ref && k(me.ref)) : (me.opacity = 0, me.scale = 0.25, me.active = !1), me.left = Ve;\n });\n }, nt = (Z) => {\n Z === 0 && r.value === 0 || Z === g.value - 1 && r.value === g.value - 1 || (X.value = !0, u.value.forEach((me) => {\n me.opacity = 0, me.scale = 0.25;\n }), M(), setTimeout(() => {\n C(), S(Z === 0 ? 0 : g.value - 1), B(), D(), Ge(() => {\n const me = V().ref;\n me && k(me), u.value.forEach((Ve, bt) => {\n w(Ve, bt);\n }), X.value = !1;\n });\n }, 400));\n }, Ne = (Z = \"right\") => {\n if (qe.value || g.value <= 1)\n return;\n n(\"slide\"), lt(), Be();\n let me;\n switch (Z) {\n case \"right\":\n me = 1;\n break;\n case \"left\":\n me = -1;\n break;\n case \"first\":\n me = 0;\n break;\n case \"last\":\n me = g.value - 1;\n break;\n }\n if (me && Math.abs(me) === 1) {\n it(me);\n const Ve = r.value + me < 0 ? g.value - 1 : r.value + me > g.value - 1 ? 0 : r.value + me;\n S(Ve);\n } else\n me && nt(me);\n ze(), n(\"slided\");\n }, ht = $t({\n x: 0,\n y: 0\n }), st = $t({\n x: 0,\n y: 0\n }), ne = $t({\n x: 0,\n y: 0\n }), fe = y(0), ge = y(0), de = y(0), Se = (Z) => {\n clearTimeout(fe.value);\n const Ve = (/* @__PURE__ */ new Date()).getTime() - ge.value;\n de.value > 0 && Ve < 500 ? (J(Z), fe.value = setTimeout(() => {\n ge.value = (/* @__PURE__ */ new Date()).getTime(), de.value = 0;\n }, 300)) : (de.value++, ge.value = (/* @__PURE__ */ new Date()).getTime());\n }, Be = () => {\n ge.value = 0, de.value = 0, clearTimeout(fe.value);\n }, J = (Z) => {\n De || (Z instanceof MouseEvent && an(Z), Oe.value !== 1 ? ze() : we());\n }, le = y(!1);\n let he, De = !1;\n const We = (Z) => {\n const me = Z instanceof MouseEvent ? void 0 : Z.touches;\n me && (me == null ? void 0 : me.length) > 1 && (De = !0, he = me);\n const Ve = me ? me[0].clientX : Z.clientX, bt = me ? me[0].clientY : Z.clientY, { ref: yt } = V();\n ht.x = yt && parseFloat(yt.style.left) || 0, ht.y = yt && parseFloat(yt.style.top) || 0, st.x = ht.x, st.y = ht.y, ne.x = Ve * (1 / Oe.value) - st.x, ne.y = bt * (1 / Oe.value) - st.y, le.value = !0;\n }, Pe = () => {\n le.value && (le.value = !1);\n }, Ae = (Z) => {\n if (!le.value) return;\n const me = Z instanceof MouseEvent ? void 0 : Z.touches, Ve = me ? me[0].clientX : Z.clientX, bt = me ? me[0].clientY : Z.clientY;\n me && P();\n const { ref: yt } = V();\n if (!De)\n if (Oe.value !== 1)\n st.x = Ve * (1 / Oe.value) - ne.x, st.y = bt * (1 / Oe.value) - ne.y, yt && (yt.style.left = `${st.x}px`, yt.style.top = `${st.y}px`);\n else {\n if (u.value.length <= 1) return;\n st.x = Ve * (1 / Oe.value) - ne.x, yt && (yt.style.left = `${st.x}px`);\n }\n }, wt = (Z, me = void 0) => {\n if (!le.value) return;\n const Ve = st.x - ht.x;\n le.value = !1, Ve !== 0 && Gt(Ve), me && Se(Z), De && Z.targetTouches.length === 0 && (De = !1, he = []);\n }, Gt = (Z) => {\n De || Oe.value !== 1 || g.value <= 1 || (Z > 0 ? Zs ? Ne() : Ne(\"left\") : Z < 0 && (Zs ? Ne(\"left\") : Ne()));\n }, Et = () => {\n u.value.forEach((Z) => {\n Z.ref && k(Z.ref);\n });\n }, zt = () => {\n (document.webkitIsFullScreen || document.mozFullScreen || document.msFullscreenElement) === void 0 && (f.value = !1);\n }, Oe = y(1), Je = y(), ce = () => {\n Oe.value !== 1 ? ze() : we();\n }, we = () => {\n if (Oe.value >= 3) return;\n n(\"zoom-in\");\n const Z = typeof s.zoomLevel == \"string\" ? parseFloat(s.zoomLevel) : s.zoomLevel;\n Oe.value += Z, V().scale = Oe.value, n(\"zoomed-in\");\n }, j = () => {\n if (Oe.value <= 1) return;\n n(\"zoom-out\");\n const Z = typeof s.zoomLevel == \"string\" ? parseFloat(s.zoomLevel) : s.zoomLevel;\n Oe.value -= Z, V().scale = Oe.value, n(\"zoomed-out\"), Oe.value === 1 && Gs();\n }, ze = () => {\n Oe.value !== 1 && (n(\"zoom-out\"), Oe.value = 1, V().scale = 1, Gs(), n(\"zoomed-out\"));\n }, pt = (Z) => {\n if (Z.deltaY > 0)\n j();\n else {\n if (Oe.value >= 3) return;\n an(Z), we();\n }\n }, an = (Z) => {\n clearTimeout(Je.value);\n const me = window.innerWidth / 2 - Z.offsetX - 50, Ve = window.innerHeight / 2 - Z.offsetY - 50, bt = V();\n bt.ref && (bt.ref.style.transition = \"all 0.5s ease-out\", bt.ref.style.left = `${me}px`, bt.ref.style.top = `${Ve}px`, Je.value = setTimeout(() => {\n bt.ref && (bt.ref.style.transition = \"none\");\n }, 500));\n }, Gs = () => {\n clearTimeout(Je.value);\n const Z = V().ref;\n Z && (Z.style.transition = \"all 0.5s ease-out\", Z.style.top = \"0px\", Z.style.left = \"0px\", k(Z), setTimeout(() => {\n Z.style.transition = \"none\";\n }, 500));\n }, qa = (Z) => {\n var Yn;\n const me = Math.hypot(\n he[1].pageX - he[0].pageX,\n he[1].pageY - he[0].pageY\n ), Ve = Math.hypot(\n Z.touches[1].pageX - Z.touches[0].pageX,\n Z.touches[1].pageY - Z.touches[0].pageY\n ), bt = Math.abs(me - Ve), yt = (Yn = Z.view) == null ? void 0 : Yn.screen.width;\n yt && bt > yt * 0.03 && (me <= Ve ? we() : j(), he = Z.touches);\n }, no = (Z) => {\n Z.touches.length > 1 && (De = !0, he = Z.touches);\n }, so = (Z) => {\n De && Z.type === \"touchmove\" && Z.targetTouches.length > 1 && (Z.preventDefault(), qa(Z));\n }, Zs = document.documentElement.dir === \"rtl\", ao = (Z) => {\n P(), Z.target.tagName === \"DIV\" && U();\n }, io = (Z) => {\n if (l.value)\n switch (Z.preventDefault(), P(), Z.keyCode) {\n case 39:\n Zs ? Ne(\"left\") : Ne();\n break;\n case 37:\n Zs ? Ne() : Ne(\"left\");\n break;\n case 27:\n U();\n break;\n case 36:\n Ne(\"first\");\n break;\n case 35:\n Ne(\"last\");\n break;\n case 38:\n we();\n break;\n case 40:\n j();\n break;\n }\n }, oo = () => {\n Le(i.value, \"click\", ao), Le(window, \"keyup\", io), Le(window, \"resize\", Et), Le(window, \"orientationchange\", Et), Le(window, \"fullscreenchange\", zt), Le(window, \"touchstart\", no);\n }, lo = () => {\n Me(i.value, \"click\", ao), Me(window, \"keyup\", io), Me(window, \"resize\", Et), Me(window, \"orientationchange\", Et), Me(window, \"fullscreenchange\", zt), Me(window, \"touchstart\", no);\n };\n return Fe(() => {\n oo(), v(), document.addEventListener(\"touchmove\", so, { passive: !1 });\n }), dt(() => {\n lo(), document.removeEventListener(\"touchmove\", so);\n }), sr(() => {\n u.value.forEach((Z) => {\n Z.ref = null;\n });\n }), e({\n updateImages: m,\n open: G,\n slide: Ne,\n zoomIn: we,\n zoomOut: j,\n toggleFullscreen: z,\n close: U,\n addImg: b,\n resetImagesArrays: p,\n getCurrentImg: V,\n activeImgIndex: r,\n initialImagesArray: c,\n lightboxRef: a\n }), (Z, me) => (x(), R(Ie, null, [\n (x(), ee(ue(t.tag), $e(Z.$attrs, {\n ref_key: \"lightboxRef\",\n ref: a,\n class: o.value\n }), {\n default: Q(() => [\n oe(Z.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"])),\n (x(), ee(Ut, { to: \"body\" }, [\n H(\"div\", {\n ref_key: \"galleryRef\",\n ref: i,\n class: \"lightbox-gallery\",\n style: Ce({\n opacity: l.value ? 1 : 0,\n pointerEvents: l.value ? \"initial\" : \"none\",\n visibility: l.value ? \"visible\" : \"hidden\"\n }),\n onMousemove: P\n }, [\n je(H(\"div\", Pp, [\n Ee(Tu, {\n grow: \"\",\n color: \"light\"\n })\n ], 512), [\n [Hn, X.value]\n ]),\n H(\"div\", {\n class: \"lightbox-gallery-toolbar\",\n style: Ce({ opacity: L.value })\n }, [\n H(\"div\", Vp, [\n H(\"p\", Rp, se(`${r.value + 1} / ${g.value}`), 1)\n ]),\n H(\"div\", Ip, [\n H(\"button\", {\n ref_key: \"fullscreenBtnRef\",\n ref: ie,\n \"aria-label\": \"Toggle fullscreen\",\n class: Y([\n \"lightbox-gallery-fullscreen-btn\",\n f.value && \"active\"\n ]),\n onClick: z\n }, null, 2),\n H(\"button\", {\n ref_key: \"toggleBtnRef\",\n ref: ve,\n class: Y([\n \"lightbox-gallery-zoom-btn\",\n Oe.value > 1 && \"active\"\n ]),\n \"aria-label\": Oe.value > 1 ? \"Zoom in\" : \"Zoom out\",\n onClick: ce\n }, null, 10, Fp),\n H(\"button\", {\n ref_key: \"closeBtnRef\",\n ref: ye,\n \"aria-label\": \"Close\",\n class: Y([\"lightbox-gallery-close-btn\"]),\n onClick: U\n }, null, 512)\n ])\n ], 4),\n H(\"div\", Np, [\n (x(!0), R(Ie, null, kt(u.value, (Ve, bt) => (x(), R(\"div\", {\n key: bt,\n class: \"lightbox-gallery-image\",\n style: Ce({\n position: \"absolute\",\n top: \"0px\",\n left: `${Ve.left}%`,\n opacity: Ve.opacity,\n transform: `scale(${Ve.scale})`\n })\n }, [\n H(\"img\", {\n ref_for: !0,\n ref: (yt) => d(yt, bt),\n alt: Ve.alt || `Lightbox image ${Ve.id + 1}`,\n draggable: \"false\",\n class: Y([Ve.active ? \"active\" : null, \"lightbox-image\"]),\n src: Ve.src,\n onWheel: pt,\n onMouseup: wt,\n onMousemove: Ae,\n onMouseleave: Pe,\n onMousedown: We,\n onTouchend: me[0] || (me[0] = (yt) => wt(yt, !0)),\n onTouchmove: Ae,\n onTouchstart: We,\n onDblclick: J\n }, null, 42, Hp)\n ], 4))), 128))\n ]),\n H(\"div\", {\n class: \"lightbox-gallery-arrow-left\",\n style: Ce({ opacity: L.value })\n }, [\n H(\"button\", {\n ref_key: \"arrowLeftBtnRef\",\n ref: W,\n \"aria-label\": \"Previous\",\n onClick: me[1] || (me[1] = (Ve) => Ne(\"left\"))\n }, null, 512)\n ], 4),\n H(\"div\", {\n class: \"lightbox-gallery-arrow-right\",\n style: Ce({ opacity: L.value })\n }, [\n H(\"button\", {\n ref_key: \"arrowRightBtnRef\",\n ref: te,\n \"aria-label\": \"Next\",\n onClick: me[2] || (me[2] = (Ve) => Ne())\n }, null, 512)\n ], 4),\n H(\"div\", Wp, [\n H(\"p\", zp, se(h.value), 1)\n ])\n ], 36)\n ]))\n ], 64));\n }\n}), jp = {\n name: \"MDBLightboxItem\"\n}, y1 = /* @__PURE__ */ re({\n ...jp,\n props: {\n tag: {\n type: String,\n default: \"img\"\n },\n id: String,\n fullScreenSrc: String,\n caption: String,\n disabled: Boolean\n },\n emits: [\"update:modelValue\", \"item-click\", \"item-hover\"],\n setup(t, { emit: e }) {\n const n = t, s = y(null), a = n.id || ut(\"MDBLightboxItem-\"), i = N(\n \"toggleLightbox\",\n !1\n ), o = N(\"initialImagesArray\", []), l = () => !Array.isArray(o) && o.value && o.value.find((c) => c.refId === a), r = () => {\n const c = l();\n i && c && i(c.id);\n };\n return (c, u) => (x(), ee(ue(t.tag), {\n id: _(a),\n ref_key: \"lightboxItemRef\",\n ref: s,\n \"data-lightbox-src\": t.fullScreenSrc,\n \"data-lightbox-caption\": t.caption,\n \"data-lightbox-disabled\": t.disabled ? !0 : null,\n class: Y({\n \"lightbox-disabled\": t.disabled\n }),\n onClick: r\n }, {\n default: Q(() => [\n oe(c.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"id\", \"data-lightbox-src\", \"data-lightbox-caption\", \"data-lightbox-disabled\", \"class\"]));\n }\n}), Xp = [\"src\", \"alt\"], Up = {\n name: \"MDBChip\"\n}, x1 = /* @__PURE__ */ re({\n ...Up,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n src: String,\n alt: String,\n size: String,\n outline: String,\n close: Boolean,\n handleClose: Function\n },\n emits: [\"close-chip\"],\n setup(t, { emit: e }) {\n const n = t, s = y(!0);\n function a() {\n n.handleClose && n.handleClose(), e(\"close-chip\"), s.value = !1;\n }\n const i = T(() => [\n \"chip\",\n n.size && `chip-${n.size}`,\n n.outline && `chip-outline btn-outline-${n.outline}`\n ]);\n return (o, l) => s.value ? (x(), ee(ue(t.tag), {\n key: 0,\n class: Y(i.value)\n }, {\n default: Q(() => [\n t.src ? (x(), R(\"img\", {\n key: 0,\n src: t.src,\n alt: t.alt\n }, null, 8, Xp)) : K(\"\", !0),\n oe(o.$slots, \"default\"),\n je(H(\"i\", {\n class: \"fas fa-times close\",\n onClick: a\n }, null, 512), [\n [Hn, t.close]\n ])\n ]),\n _: 3\n }, 8, [\"class\"])) : K(\"\", !0);\n }\n}), qp = [\"contenteditable\", \"onDblclick\", \"onBlur\", \"onKeydown\"], Kp = [\"onClick\"], Gp = [\"id\", \"placeholder\", \"onKeydown\"], Zp = [\"for\"], Jp = { class: \"form-notch\" }, Qp = /* @__PURE__ */ H(\"div\", { class: \"form-notch-trailing\" }, null, -1), ev = {\n name: \"MDBChipsInput\"\n}, k1 = /* @__PURE__ */ re({\n ...ev,\n props: {\n id: String,\n tag: {\n type: String,\n default: \"div\"\n },\n chips: {\n type: Array,\n default: () => []\n },\n label: String,\n labelClasses: String,\n placeholder: String,\n secondaryPlaceholder: String,\n chipSize: String,\n value: Array,\n editable: Boolean,\n modelValue: {\n type: Array,\n default: () => []\n }\n },\n emits: [\n \"delete-chip\",\n \"deleted-chip\",\n \"add-chip\",\n \"added-chip\",\n \"arrow-down\",\n \"arrow-up\",\n \"arrow-left\",\n \"arrow-right\",\n \"update:modelValue\"\n ],\n setup(t, { emit: e }) {\n const n = t, s = y([]), a = y(\"\"), i = y(null), o = y([]), l = y(null), r = y(!0), c = y(9), u = y(0), f = n.id || ut(\"MDBInput-\"), d = $t({\n count: 0,\n activeStep: void 0,\n prevStep: void 0\n });\n function h() {\n if (a.value === \"\" || s.value.find((ie) => ie.value === a.value)) {\n a.value = \"\";\n return;\n }\n const U = {\n value: a.value,\n id: ut(\"chip-\"),\n editable: null,\n closeBtn: !0,\n isActive: null\n };\n s.value.push(U), a.value = \"\", e(\"add-chip\", P.value), e(\"added-chip\", U);\n }\n function p(U) {\n var ve;\n const ie = U.target;\n ie.classList.contains(\"chip\") || ie.classList.contains(\"close\") || (ve = i.value) == null || ve.focus();\n }\n function v() {\n s.value.forEach((U) => U.isActive = null), m();\n }\n function m() {\n if (/^ *$/.test(a.value)) {\n a.value = \"\";\n return;\n }\n h();\n }\n function g() {\n if (!a.value && r.value) {\n const U = s.value.findIndex(\n (ve) => ve.isActive === !0\n );\n let ie;\n U > -1 ? (ie = s.value.splice(U, 1), d.count && d.activeStep && (d.prevStep && d.prevStep > d.activeStep ? d.count = d.prevStep - 1 : d.count = d.activeStep - 1), s.value[d.count] && (s.value[d.count].isActive = !0)) : (ie = s.value.pop(), d.count >= s.value.length - 1 && (d.count = s.value.length - 1)), e(\"delete-chip\", P.value), e(\"deleted-chip\", ie);\n }\n }\n function b(U) {\n const ie = s.value, ve = ie.indexOf(U), ye = ie.splice(ve, 1);\n d.count >= s.value.length - 1 && (d.count = s.value.length - 1), e(\"delete-chip\", P.value), e(\"deleted-chip\", ye);\n }\n function S() {\n M(), e(\"arrow-right\");\n }\n function w() {\n M(), e(\"arrow-up\");\n }\n function k() {\n V(), e(\"arrow-left\");\n }\n function C() {\n V(), e(\"arrow-down\");\n }\n function M() {\n d.activeStep === void 0 ? (s.value[d.count].isActive = !0, d.activeStep = d.count) : (d.count++, s.value[d.count - 1].isActive = null, d.count >= s.value.length && (d.count = 0), d.prevStep = d.activeStep, d.activeStep = d.count, s.value[d.count].isActive = !0);\n }\n function V() {\n d.activeStep === void 0 ? (d.count = s.value.length - 1, s.value[d.count].isActive = !0, d.activeStep = d.count) : (d.count--, s.value[d.count + 1].isActive = null, d.count <= -1 && (d.count = s.value.length - 1), d.prevStep = d.activeStep, d.activeStep = d.count, s.value[d.count].isActive = !0);\n }\n function B(U, ie) {\n if (n.editable) {\n const ve = s.value.find((ye) => ye.id === U);\n ve && (r.value = !1, ve.editable = !0, ve.closeBtn = !1), o.value[ie] && setTimeout(() => {\n o.value[ie].focus();\n }, 0);\n }\n }\n function D(U, ie) {\n if (n.editable) {\n r.value = !0;\n const ve = s.value.find((ye) => ye.id === U);\n ve && (ve.editable = !1, ve.closeBtn = !0), o.value[ie] && ve && (ve.value = o.value[ie].textContent.trim(), ve.value === \"\" && s.value.splice(ie, 1));\n }\n }\n function E() {\n l.value && (u.value = l.value.clientWidth * 0.8 + 8);\n }\n function X() {\n s.value = [], n.modelValue.length > 0 && n.modelValue.forEach((U) => {\n s.value.push({\n value: U,\n id: ut(\"chip-\"),\n editable: null,\n closeBtn: !0,\n isActive: null\n });\n });\n }\n const L = (U) => {\n U && o.value.push(U);\n };\n sr(() => o.value = []), Fe(() => X()), $i(() => E());\n const A = T(() => s.value.length > 0), P = T(\n () => s.value.map((U) => U.value)\n );\n pe(\n () => P.value,\n (U, ie) => {\n [...U].toString() !== [...ie].toString() && e(\"update:modelValue\", P.value);\n }\n ), pe(\n () => n.modelValue,\n (U, ie) => {\n [...U].toString() !== [...ie].toString() && X();\n }\n );\n const O = T(() => [\"chips\", \"chips-placeholder\"]), $ = (U) => {\n const ie = s.value.map((ve) => ve.isActive);\n return [\n \"chip\",\n n.chipSize && \"chip-\" + n.chipSize,\n ie[U] && \"active\"\n ];\n }, I = T(() => [\n A.value && \"chips-padding chips-transition\"\n ]), F = T(() => [A.value && \"active\"]), z = T(() => [\"form-label\", n.labelClasses]), G = T(() => {\n const U = !n.secondaryPlaceholder && n.placeholder ? n.placeholder : n.secondaryPlaceholder, ie = !n.placeholder && n.secondaryPlaceholder ? n.secondaryPlaceholder : n.placeholder;\n return s.value.length > 0 ? ie : U;\n });\n return (U, ie) => (x(), ee(ue(t.tag), {\n class: Y(O.value),\n onClick: p,\n onKeydown: ke(g, [\"delete\"])\n }, {\n default: Q(() => [\n H(\"div\", {\n class: Y([\"form-outline chips-input-wrapper\", I.value])\n }, [\n (x(!0), R(Ie, null, kt(s.value, (ve, ye) => je((x(), R(\"div\", {\n ref_for: !0,\n ref: (W) => L(W),\n key: ve.id,\n contenteditable: ve.editable ?? !1,\n class: Y($(ye)),\n onDblclick: (W) => B(ve.id, ye),\n onBlur: (W) => D(ve.id, ye),\n onKeydown: ke((W) => D(ve.id, ye), [\"enter\"])\n }, [\n et(se(ve.value) + \" \", 1),\n je(H(\"i\", {\n class: \"fas fa-times close\",\n onClick: (W) => b(ve)\n }, null, 8, Kp), [\n [Hn, ve.closeBtn]\n ])\n ], 42, qp)), [\n [_(Ct)]\n ])), 128)),\n je(H(\"input\", {\n id: _(f),\n ref_key: \"input\",\n ref: i,\n \"onUpdate:modelValue\": ie[0] || (ie[0] = (ve) => a.value = ve),\n class: Y([\"form-control chips-input\", F.value]),\n type: \"text\",\n placeholder: G.value,\n onBlur: v,\n onKeydown: [\n ke(_e(m, [\"prevent\"]), [\"enter\"]),\n ke(k, [\"left\"]),\n ke(S, [\"right\"]),\n ke(C, [\"down\"]),\n ke(w, [\"up\"])\n ]\n }, null, 42, Gp), [\n [Ic, a.value]\n ]),\n n.label ? (x(), R(\"label\", {\n key: 0,\n ref_key: \"labelRef\",\n ref: l,\n class: Y(z.value),\n for: _(f)\n }, se(n.label), 11, Zp)) : K(\"\", !0),\n H(\"div\", Jp, [\n H(\"div\", {\n class: \"form-notch-leading\",\n style: Ce({ width: `${c.value}px` })\n }, null, 4),\n H(\"div\", {\n class: \"form-notch-middle\",\n style: Ce({ width: `${u.value}px` })\n }, null, 4),\n Qp\n ])\n ], 2)\n ]),\n _: 1\n }, 40, [\"class\", \"onKeydown\"]));\n }\n}), tv = [\"for\"], nv = [\"id\", \"value\", \"min\", \"max\"], sv = { class: \"thumb-value\" }, av = [\"id\", \"value\", \"min\", \"max\"], iv = { class: \"thumb-value\" }, ov = {\n name: \"MDBMultiRange\",\n inheritAttrs: !1\n}, w1 = /* @__PURE__ */ re({\n ...ov,\n props: {\n id: String,\n secondId: String,\n inputClass: String,\n label: String,\n labelClass: String,\n max: {\n type: Number,\n default: 100\n },\n min: {\n type: Number,\n default: 0\n },\n firstValue: {\n type: Number,\n default: 0\n },\n secondValue: {\n type: Number,\n default: 100\n },\n tag: {\n type: String,\n default: \"div\"\n },\n thumb: {\n type: Boolean,\n default: !0\n },\n oneRange: {\n type: Boolean,\n default: !1\n },\n thumbClass: String,\n wrapperClass: String\n },\n emits: [\n \"update:firstValue\",\n \"update:secondValue\",\n \"start\",\n \"end\",\n \"slide\"\n ],\n setup(t, { emit: e }) {\n const n = t, s = y(n.firstValue), a = y(n.min), i = y(n.max), o = n.id || ut(\"MDBRange-\"), l = $t({ first: !1, second: !1 }), r = y(n.secondValue), c = n.secondId || ut(\"MDBRange-\"), u = T(() => [\"range multi-range-slider\", n.wrapperClass]), f = T(() => [\"form-range\", n.inputClass]), d = T(() => [\"form-range multi-range-input\", n.inputClass]), h = T(() => [\"form-label\", n.labelClass]), p = T(() => [\"thumb\", l.first && \"thumb-active\", n.thumbClass]), v = T(() => [\"thumb\", l.second && \"thumb-active\", n.thumbClass]), m = $t({\n first: 0,\n second: 0\n }), g = T(() => ({\n position: \"absolute\",\n left: 0\n })), b = (C) => {\n const M = C.target, V = parseFloat(M.value);\n if (V > r.value) {\n M.valueAsNumber = r.value;\n return;\n }\n s.value = V, e(\"update:firstValue\", s.value), k(\"first\");\n }, S = (C) => {\n const M = C.target, V = parseFloat(M.value);\n if (V < s.value) {\n M.valueAsNumber = s.value;\n return;\n }\n r.value = V, e(\"update:secondValue\", r.value), k(\"second\");\n }, w = (C, M) => {\n l[C] = M;\n }, k = (C) => {\n let M;\n const V = typeof a.value == \"string\" ? parseFloat(a.value) : a.value, B = typeof i.value == \"string\" ? parseFloat(i.value) : i.value;\n C === \"first\" ? M = ((typeof s.value == \"string\" ? parseFloat(s.value) : s.value) - V) * 100 / (B - V) : C === \"second\" && (M = ((typeof r.value == \"string\" ? parseFloat(r.value) : r.value) - V) * 100 / (B - V)), m[C] = `calc(${M}% + (${typeof M == \"number\" ? 8 - M * 0.15 : \"\"}px))`;\n };\n return Ge(() => {\n k(\"first\"), k(\"second\");\n }), pe(\n () => n.firstValue,\n (C) => {\n s.value = C, k(\"first\");\n }\n ), pe(\n () => n.secondValue,\n (C) => {\n r.value = C, k(\"second\");\n }\n ), (C, M) => (x(), R(Ie, null, [\n t.label ? (x(), R(\"label\", {\n key: 0,\n class: Y(h.value),\n for: _(o)\n }, se(t.label), 11, tv)) : K(\"\", !0),\n (x(), ee(ue(t.tag), {\n class: Y(u.value)\n }, {\n default: Q(() => [\n H(\"input\", $e({\n id: _(o),\n type: \"range\",\n class: f.value,\n value: s.value,\n min: a.value,\n max: i.value\n }, C.$attrs, {\n onInput: b,\n onMousedown: M[0] || (M[0] = (V) => (w(\"first\", !0), C.$emit(\"start\"))),\n onTouchstart: M[1] || (M[1] = (V) => (w(\"first\", !0), C.$emit(\"start\"))),\n onMouseup: M[2] || (M[2] = (V) => (w(\"first\", !1), C.$emit(\"end\"))),\n onTouchend: M[3] || (M[3] = (V) => (w(\"first\", !1), C.$emit(\"end\"))),\n onKeydown: [\n M[4] || (M[4] = ke((V) => C.$emit(\"slide\"), [\"left\"])),\n M[5] || (M[5] = ke((V) => C.$emit(\"slide\"), [\"right\"])),\n M[6] || (M[6] = ke((V) => C.$emit(\"slide\"), [\"up\"])),\n M[7] || (M[7] = ke((V) => C.$emit(\"slide\"), [\"down\"]))\n ],\n onFocus: M[8] || (M[8] = (V) => w(\"first\", !0)),\n onBlur: M[9] || (M[9] = (V) => w(\"first\", !1))\n }), null, 16, nv),\n t.thumb ? (x(), R(\"span\", {\n key: 0,\n class: Y(p.value),\n style: Ce({ left: m.first })\n }, [\n H(\"span\", sv, se(s.value), 1)\n ], 6)) : K(\"\", !0),\n n.oneRange ? K(\"\", !0) : (x(), R(\"input\", $e({\n key: 1,\n id: _(c),\n type: \"range\",\n class: d.value,\n value: r.value,\n min: a.value,\n max: i.value\n }, C.$attrs, {\n onInput: S,\n onMousedown: M[10] || (M[10] = (V) => (w(\"second\", !0), C.$emit(\"start\"))),\n onTouchstart: M[11] || (M[11] = (V) => (w(\"second\", !0), C.$emit(\"start\"))),\n onMouseup: M[12] || (M[12] = (V) => (w(\"second\", !1), C.$emit(\"end\"))),\n onTouchend: M[13] || (M[13] = (V) => (w(\"second\", !1), C.$emit(\"end\"))),\n onKeydown: [\n M[14] || (M[14] = ke((V) => C.$emit(\"slide\"), [\"left\"])),\n M[15] || (M[15] = ke((V) => C.$emit(\"slide\"), [\"right\"])),\n M[16] || (M[16] = ke((V) => C.$emit(\"slide\"), [\"up\"])),\n M[17] || (M[17] = ke((V) => C.$emit(\"slide\"), [\"down\"]))\n ],\n onFocus: M[18] || (M[18] = (V) => w(\"second\", !0)),\n onBlur: M[19] || (M[19] = (V) => w(\"second\", !1)),\n style: g.value\n }), null, 16, av)),\n t.thumb && !n.oneRange ? (x(), R(\"span\", {\n key: 2,\n class: Y(v.value),\n style: Ce({ left: m.second })\n }, [\n H(\"span\", iv, se(r.value), 1)\n ], 6)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\"]))\n ], 64));\n }\n});\n/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\nfunction Jt(t) {\n return getComputedStyle(t);\n}\nfunction Tt(t, e) {\n for (var n in e) {\n var s = e[n];\n typeof s == \"number\" && (s = s + \"px\"), t.style[n] = s;\n }\n return t;\n}\nfunction ea(t) {\n var e = document.createElement(\"div\");\n return e.className = t, e;\n}\nvar To = typeof Element < \"u\" && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector);\nfunction yn(t, e) {\n if (!To)\n throw new Error(\"No element matching method supported\");\n return To.call(t, e);\n}\nfunction Kn(t) {\n t.remove ? t.remove() : t.parentNode && t.parentNode.removeChild(t);\n}\nfunction Do(t, e) {\n return Array.prototype.filter.call(\n t.children,\n function(n) {\n return yn(n, e);\n }\n );\n}\nvar mt = {\n main: \"ps\",\n rtl: \"ps__rtl\",\n element: {\n thumb: function(t) {\n return \"ps__thumb-\" + t;\n },\n rail: function(t) {\n return \"ps__rail-\" + t;\n },\n consuming: \"ps__child--consume\"\n },\n state: {\n focus: \"ps--focus\",\n clicking: \"ps--clicking\",\n active: function(t) {\n return \"ps--active-\" + t;\n },\n scrolling: function(t) {\n return \"ps--scrolling-\" + t;\n }\n }\n}, br = { x: null, y: null };\nfunction yr(t, e) {\n var n = t.element.classList, s = mt.state.scrolling(e);\n n.contains(s) ? clearTimeout(br[e]) : n.add(s);\n}\nfunction xr(t, e) {\n br[e] = setTimeout(\n function() {\n return t.isAlive && t.element.classList.remove(mt.state.scrolling(e));\n },\n t.settings.scrollingThreshold\n );\n}\nfunction lv(t, e) {\n yr(t, e), xr(t, e);\n}\nvar Is = function(e) {\n this.element = e, this.handlers = {};\n}, kr = { isEmpty: { configurable: !0 } };\nIs.prototype.bind = function(e, n) {\n typeof this.handlers[e] > \"u\" && (this.handlers[e] = []), this.handlers[e].push(n), this.element.addEventListener(e, n, !1);\n};\nIs.prototype.unbind = function(e, n) {\n var s = this;\n this.handlers[e] = this.handlers[e].filter(function(a) {\n return n && a !== n ? !0 : (s.element.removeEventListener(e, a, !1), !1);\n });\n};\nIs.prototype.unbindAll = function() {\n for (var e in this.handlers)\n this.unbind(e);\n};\nkr.isEmpty.get = function() {\n var t = this;\n return Object.keys(this.handlers).every(\n function(e) {\n return t.handlers[e].length === 0;\n }\n );\n};\nObject.defineProperties(Is.prototype, kr);\nvar ls = function() {\n this.eventElements = [];\n};\nls.prototype.eventElement = function(e) {\n var n = this.eventElements.filter(function(s) {\n return s.element === e;\n })[0];\n return n || (n = new Is(e), this.eventElements.push(n)), n;\n};\nls.prototype.bind = function(e, n, s) {\n this.eventElement(e).bind(n, s);\n};\nls.prototype.unbind = function(e, n, s) {\n var a = this.eventElement(e);\n a.unbind(n, s), a.isEmpty && this.eventElements.splice(this.eventElements.indexOf(a), 1);\n};\nls.prototype.unbindAll = function() {\n this.eventElements.forEach(function(e) {\n return e.unbindAll();\n }), this.eventElements = [];\n};\nls.prototype.once = function(e, n, s) {\n var a = this.eventElement(e), i = function(o) {\n a.unbind(n, i), s(o);\n };\n a.bind(n, i);\n};\nfunction ta(t) {\n if (typeof window.CustomEvent == \"function\")\n return new CustomEvent(t);\n var e = document.createEvent(\"CustomEvent\");\n return e.initCustomEvent(t, !1, !1, void 0), e;\n}\nfunction Sa(t, e, n, s, a) {\n s === void 0 && (s = !0), a === void 0 && (a = !1);\n var i;\n if (e === \"top\")\n i = [\n \"contentHeight\",\n \"containerHeight\",\n \"scrollTop\",\n \"y\",\n \"up\",\n \"down\"\n ];\n else if (e === \"left\")\n i = [\n \"contentWidth\",\n \"containerWidth\",\n \"scrollLeft\",\n \"x\",\n \"left\",\n \"right\"\n ];\n else\n throw new Error(\"A proper axis should be provided\");\n rv(t, n, i, s, a);\n}\nfunction rv(t, e, n, s, a) {\n var i = n[0], o = n[1], l = n[2], r = n[3], c = n[4], u = n[5];\n s === void 0 && (s = !0), a === void 0 && (a = !1);\n var f = t.element;\n t.reach[r] = null, f[l] < 1 && (t.reach[r] = \"start\"), f[l] > t[i] - t[o] - 1 && (t.reach[r] = \"end\"), e && (f.dispatchEvent(ta(\"ps-scroll-\" + r)), e < 0 ? f.dispatchEvent(ta(\"ps-scroll-\" + c)) : e > 0 && f.dispatchEvent(ta(\"ps-scroll-\" + u)), s && lv(t, r)), t.reach[r] && (e || a) && f.dispatchEvent(ta(\"ps-\" + r + \"-reach-\" + t.reach[r]));\n}\nfunction ct(t) {\n return parseInt(t, 10) || 0;\n}\nfunction cv(t) {\n return yn(t, \"input,[contenteditable]\") || yn(t, \"select,[contenteditable]\") || yn(t, \"textarea,[contenteditable]\") || yn(t, \"button,[contenteditable]\");\n}\nfunction uv(t) {\n var e = Jt(t);\n return ct(e.width) + ct(e.paddingLeft) + ct(e.paddingRight) + ct(e.borderLeftWidth) + ct(e.borderRightWidth);\n}\nvar qn = {\n isWebKit: typeof document < \"u\" && \"WebkitAppearance\" in document.documentElement.style,\n supportsTouch: typeof window < \"u\" && (\"ontouchstart\" in window || \"maxTouchPoints\" in window.navigator && window.navigator.maxTouchPoints > 0 || window.DocumentTouch && document instanceof window.DocumentTouch),\n supportsIePointer: typeof navigator < \"u\" && navigator.msMaxTouchPoints,\n isChrome: typeof navigator < \"u\" && /Chrome/i.test(navigator && navigator.userAgent)\n};\nfunction mn(t) {\n var e = t.element, n = Math.floor(e.scrollTop), s = e.getBoundingClientRect();\n t.containerWidth = Math.round(s.width), t.containerHeight = Math.round(s.height), t.contentWidth = e.scrollWidth, t.contentHeight = e.scrollHeight, e.contains(t.scrollbarXRail) || (Do(e, mt.element.rail(\"x\")).forEach(\n function(a) {\n return Kn(a);\n }\n ), e.appendChild(t.scrollbarXRail)), e.contains(t.scrollbarYRail) || (Do(e, mt.element.rail(\"y\")).forEach(\n function(a) {\n return Kn(a);\n }\n ), e.appendChild(t.scrollbarYRail)), !t.settings.suppressScrollX && t.containerWidth + t.settings.scrollXMarginOffset < t.contentWidth ? (t.scrollbarXActive = !0, t.railXWidth = t.containerWidth - t.railXMarginWidth, t.railXRatio = t.containerWidth / t.railXWidth, t.scrollbarXWidth = Oo(\n t,\n ct(t.railXWidth * t.containerWidth / t.contentWidth)\n ), t.scrollbarXLeft = ct(\n (t.negativeScrollAdjustment + e.scrollLeft) * (t.railXWidth - t.scrollbarXWidth) / (t.contentWidth - t.containerWidth)\n )) : t.scrollbarXActive = !1, !t.settings.suppressScrollY && t.containerHeight + t.settings.scrollYMarginOffset < t.contentHeight ? (t.scrollbarYActive = !0, t.railYHeight = t.containerHeight - t.railYMarginHeight, t.railYRatio = t.containerHeight / t.railYHeight, t.scrollbarYHeight = Oo(\n t,\n ct(t.railYHeight * t.containerHeight / t.contentHeight)\n ), t.scrollbarYTop = ct(\n n * (t.railYHeight - t.scrollbarYHeight) / (t.contentHeight - t.containerHeight)\n )) : t.scrollbarYActive = !1, t.scrollbarXLeft >= t.railXWidth - t.scrollbarXWidth && (t.scrollbarXLeft = t.railXWidth - t.scrollbarXWidth), t.scrollbarYTop >= t.railYHeight - t.scrollbarYHeight && (t.scrollbarYTop = t.railYHeight - t.scrollbarYHeight), dv(e, t), t.scrollbarXActive ? e.classList.add(mt.state.active(\"x\")) : (e.classList.remove(mt.state.active(\"x\")), t.scrollbarXWidth = 0, t.scrollbarXLeft = 0, e.scrollLeft = t.isRtl === !0 ? t.contentWidth : 0), t.scrollbarYActive ? e.classList.add(mt.state.active(\"y\")) : (e.classList.remove(mt.state.active(\"y\")), t.scrollbarYHeight = 0, t.scrollbarYTop = 0, e.scrollTop = 0);\n}\nfunction Oo(t, e) {\n return t.settings.minScrollbarLength && (e = Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength && (e = Math.min(e, t.settings.maxScrollbarLength)), e;\n}\nfunction dv(t, e) {\n var n = { width: e.railXWidth }, s = Math.floor(t.scrollTop);\n e.isRtl ? n.left = e.negativeScrollAdjustment + t.scrollLeft + e.containerWidth - e.contentWidth : n.left = t.scrollLeft, e.isScrollbarXUsingBottom ? n.bottom = e.scrollbarXBottom - s : n.top = e.scrollbarXTop + s, Tt(e.scrollbarXRail, n);\n var a = { top: s, height: e.railYHeight };\n e.isScrollbarYUsingRight ? e.isRtl ? a.right = e.contentWidth - (e.negativeScrollAdjustment + t.scrollLeft) - e.scrollbarYRight - e.scrollbarYOuterWidth - 9 : a.right = e.scrollbarYRight - t.scrollLeft : e.isRtl ? a.left = e.negativeScrollAdjustment + t.scrollLeft + e.containerWidth * 2 - e.contentWidth - e.scrollbarYLeft - e.scrollbarYOuterWidth : a.left = e.scrollbarYLeft + t.scrollLeft, Tt(e.scrollbarYRail, a), Tt(e.scrollbarX, {\n left: e.scrollbarXLeft,\n width: e.scrollbarXWidth - e.railBorderXWidth\n }), Tt(e.scrollbarY, {\n top: e.scrollbarYTop,\n height: e.scrollbarYHeight - e.railBorderYWidth\n });\n}\nfunction fv(t) {\n t.element, t.event.bind(t.scrollbarY, \"mousedown\", function(e) {\n return e.stopPropagation();\n }), t.event.bind(t.scrollbarYRail, \"mousedown\", function(e) {\n var n = e.pageY - window.pageYOffset - t.scrollbarYRail.getBoundingClientRect().top, s = n > t.scrollbarYTop ? 1 : -1;\n t.element.scrollTop += s * t.containerHeight, mn(t), e.stopPropagation();\n }), t.event.bind(t.scrollbarX, \"mousedown\", function(e) {\n return e.stopPropagation();\n }), t.event.bind(t.scrollbarXRail, \"mousedown\", function(e) {\n var n = e.pageX - window.pageXOffset - t.scrollbarXRail.getBoundingClientRect().left, s = n > t.scrollbarXLeft ? 1 : -1;\n t.element.scrollLeft += s * t.containerWidth, mn(t), e.stopPropagation();\n });\n}\nfunction hv(t) {\n Lo(t, [\n \"containerWidth\",\n \"contentWidth\",\n \"pageX\",\n \"railXWidth\",\n \"scrollbarX\",\n \"scrollbarXWidth\",\n \"scrollLeft\",\n \"x\",\n \"scrollbarXRail\"\n ]), Lo(t, [\n \"containerHeight\",\n \"contentHeight\",\n \"pageY\",\n \"railYHeight\",\n \"scrollbarY\",\n \"scrollbarYHeight\",\n \"scrollTop\",\n \"y\",\n \"scrollbarYRail\"\n ]);\n}\nfunction Lo(t, e) {\n var n = e[0], s = e[1], a = e[2], i = e[3], o = e[4], l = e[5], r = e[6], c = e[7], u = e[8], f = t.element, d = null, h = null, p = null;\n function v(b) {\n b.touches && b.touches[0] && (b[a] = b.touches[0].pageY), f[r] = d + p * (b[a] - h), yr(t, c), mn(t), b.stopPropagation(), b.type.startsWith(\"touch\") && b.changedTouches.length > 1 && b.preventDefault();\n }\n function m() {\n xr(t, c), t[u].classList.remove(mt.state.clicking), t.event.unbind(t.ownerDocument, \"mousemove\", v);\n }\n function g(b, S) {\n d = f[r], S && b.touches && (b[a] = b.touches[0].pageY), h = b[a], p = (t[s] - t[n]) / (t[i] - t[l]), S ? t.event.bind(t.ownerDocument, \"touchmove\", v) : (t.event.bind(t.ownerDocument, \"mousemove\", v), t.event.once(t.ownerDocument, \"mouseup\", m), b.preventDefault()), t[u].classList.add(mt.state.clicking), b.stopPropagation();\n }\n t.event.bind(t[o], \"mousedown\", function(b) {\n g(b);\n }), t.event.bind(t[o], \"touchstart\", function(b) {\n g(b, !0);\n });\n}\nfunction pv(t) {\n var e = t.element, n = function() {\n return yn(e, \":hover\");\n }, s = function() {\n return yn(t.scrollbarX, \":focus\") || yn(t.scrollbarY, \":focus\");\n };\n function a(i, o) {\n var l = Math.floor(e.scrollTop);\n if (i === 0) {\n if (!t.scrollbarYActive)\n return !1;\n if (l === 0 && o > 0 || l >= t.contentHeight - t.containerHeight && o < 0)\n return !t.settings.wheelPropagation;\n }\n var r = e.scrollLeft;\n if (o === 0) {\n if (!t.scrollbarXActive)\n return !1;\n if (r === 0 && i < 0 || r >= t.contentWidth - t.containerWidth && i > 0)\n return !t.settings.wheelPropagation;\n }\n return !0;\n }\n t.event.bind(t.ownerDocument, \"keydown\", function(i) {\n if (!(i.isDefaultPrevented && i.isDefaultPrevented() || i.defaultPrevented) && !(!n() && !s())) {\n var o = document.activeElement ? document.activeElement : t.ownerDocument.activeElement;\n if (o) {\n if (o.tagName === \"IFRAME\")\n o = o.contentDocument.activeElement;\n else\n for (; o.shadowRoot; )\n o = o.shadowRoot.activeElement;\n if (cv(o))\n return;\n }\n var l = 0, r = 0;\n switch (i.which) {\n case 37:\n i.metaKey ? l = -t.contentWidth : i.altKey ? l = -t.containerWidth : l = -30;\n break;\n case 38:\n i.metaKey ? r = t.contentHeight : i.altKey ? r = t.containerHeight : r = 30;\n break;\n case 39:\n i.metaKey ? l = t.contentWidth : i.altKey ? l = t.containerWidth : l = 30;\n break;\n case 40:\n i.metaKey ? r = -t.contentHeight : i.altKey ? r = -t.containerHeight : r = -30;\n break;\n case 32:\n i.shiftKey ? r = t.containerHeight : r = -t.containerHeight;\n break;\n case 33:\n r = t.containerHeight;\n break;\n case 34:\n r = -t.containerHeight;\n break;\n case 36:\n r = t.contentHeight;\n break;\n case 35:\n r = -t.contentHeight;\n break;\n default:\n return;\n }\n t.settings.suppressScrollX && l !== 0 || t.settings.suppressScrollY && r !== 0 || (e.scrollTop -= r, e.scrollLeft += l, mn(t), a(l, r) && i.preventDefault());\n }\n });\n}\nfunction vv(t) {\n var e = t.element;\n function n(o, l) {\n var r = Math.floor(e.scrollTop), c = e.scrollTop === 0, u = r + e.offsetHeight === e.scrollHeight, f = e.scrollLeft === 0, d = e.scrollLeft + e.offsetWidth === e.scrollWidth, h;\n return Math.abs(l) > Math.abs(o) ? h = c || u : h = f || d, h ? !t.settings.wheelPropagation : !0;\n }\n function s(o) {\n var l = o.deltaX, r = -1 * o.deltaY;\n return (typeof l > \"u\" || typeof r > \"u\") && (l = -1 * o.wheelDeltaX / 6, r = o.wheelDeltaY / 6), o.deltaMode && o.deltaMode === 1 && (l *= 10, r *= 10), l !== l && r !== r && (l = 0, r = o.wheelDelta), o.shiftKey ? [-r, -l] : [l, r];\n }\n function a(o, l, r) {\n if (!qn.isWebKit && e.querySelector(\"select:focus\"))\n return !0;\n if (!e.contains(o))\n return !1;\n for (var c = o; c && c !== e; ) {\n if (c.classList.contains(mt.element.consuming))\n return !0;\n var u = Jt(c);\n if (r && u.overflowY.match(/(scroll|auto)/)) {\n var f = c.scrollHeight - c.clientHeight;\n if (f > 0 && (c.scrollTop > 0 && r < 0 || c.scrollTop < f && r > 0))\n return !0;\n }\n if (l && u.overflowX.match(/(scroll|auto)/)) {\n var d = c.scrollWidth - c.clientWidth;\n if (d > 0 && (c.scrollLeft > 0 && l < 0 || c.scrollLeft < d && l > 0))\n return !0;\n }\n c = c.parentNode;\n }\n return !1;\n }\n function i(o) {\n var l = s(o), r = l[0], c = l[1];\n if (!a(o.target, r, c)) {\n var u = !1;\n t.settings.useBothWheelAxes ? t.scrollbarYActive && !t.scrollbarXActive ? (c ? e.scrollTop -= c * t.settings.wheelSpeed : e.scrollTop += r * t.settings.wheelSpeed, u = !0) : t.scrollbarXActive && !t.scrollbarYActive && (r ? e.scrollLeft += r * t.settings.wheelSpeed : e.scrollLeft -= c * t.settings.wheelSpeed, u = !0) : (e.scrollTop -= c * t.settings.wheelSpeed, e.scrollLeft += r * t.settings.wheelSpeed), mn(t), u = u || n(r, c), u && !o.ctrlKey && (o.stopPropagation(), o.preventDefault());\n }\n }\n typeof window.onwheel < \"u\" ? t.event.bind(e, \"wheel\", i) : typeof window.onmousewheel < \"u\" && t.event.bind(e, \"mousewheel\", i);\n}\nfunction mv(t) {\n if (!qn.supportsTouch && !qn.supportsIePointer)\n return;\n var e = t.element;\n function n(p, v) {\n var m = Math.floor(e.scrollTop), g = e.scrollLeft, b = Math.abs(p), S = Math.abs(v);\n if (S > b) {\n if (v < 0 && m === t.contentHeight - t.containerHeight || v > 0 && m === 0)\n return window.scrollY === 0 && v > 0 && qn.isChrome;\n } else if (b > S && (p < 0 && g === t.contentWidth - t.containerWidth || p > 0 && g === 0))\n return !0;\n return !0;\n }\n function s(p, v) {\n e.scrollTop -= v, e.scrollLeft -= p, mn(t);\n }\n var a = {}, i = 0, o = {}, l = null;\n function r(p) {\n return p.targetTouches ? p.targetTouches[0] : p;\n }\n function c(p) {\n return p.pointerType && p.pointerType === \"pen\" && p.buttons === 0 ? !1 : !!(p.targetTouches && p.targetTouches.length === 1 || p.pointerType && p.pointerType !== \"mouse\" && p.pointerType !== p.MSPOINTER_TYPE_MOUSE);\n }\n function u(p) {\n if (c(p)) {\n var v = r(p);\n a.pageX = v.pageX, a.pageY = v.pageY, i = (/* @__PURE__ */ new Date()).getTime(), l !== null && clearInterval(l);\n }\n }\n function f(p, v, m) {\n if (!e.contains(p))\n return !1;\n for (var g = p; g && g !== e; ) {\n if (g.classList.contains(mt.element.consuming))\n return !0;\n var b = Jt(g);\n if (m && b.overflowY.match(/(scroll|auto)/)) {\n var S = g.scrollHeight - g.clientHeight;\n if (S > 0 && (g.scrollTop > 0 && m < 0 || g.scrollTop < S && m > 0))\n return !0;\n }\n if (v && b.overflowX.match(/(scroll|auto)/)) {\n var w = g.scrollWidth - g.clientWidth;\n if (w > 0 && (g.scrollLeft > 0 && v < 0 || g.scrollLeft < w && v > 0))\n return !0;\n }\n g = g.parentNode;\n }\n return !1;\n }\n function d(p) {\n if (c(p)) {\n var v = r(p), m = { pageX: v.pageX, pageY: v.pageY }, g = m.pageX - a.pageX, b = m.pageY - a.pageY;\n if (f(p.target, g, b))\n return;\n s(g, b), a = m;\n var S = (/* @__PURE__ */ new Date()).getTime(), w = S - i;\n w > 0 && (o.x = g / w, o.y = b / w, i = S), n(g, b) && p.preventDefault();\n }\n }\n function h() {\n t.settings.swipeEasing && (clearInterval(l), l = setInterval(function() {\n if (t.isInitialized) {\n clearInterval(l);\n return;\n }\n if (!o.x && !o.y) {\n clearInterval(l);\n return;\n }\n if (Math.abs(o.x) < 0.01 && Math.abs(o.y) < 0.01) {\n clearInterval(l);\n return;\n }\n if (!t.element) {\n clearInterval(l);\n return;\n }\n s(o.x * 30, o.y * 30), o.x *= 0.8, o.y *= 0.8;\n }, 10));\n }\n qn.supportsTouch ? (t.event.bind(e, \"touchstart\", u), t.event.bind(e, \"touchmove\", d), t.event.bind(e, \"touchend\", h)) : qn.supportsIePointer && (window.PointerEvent ? (t.event.bind(e, \"pointerdown\", u), t.event.bind(e, \"pointermove\", d), t.event.bind(e, \"pointerup\", h)) : window.MSPointerEvent && (t.event.bind(e, \"MSPointerDown\", u), t.event.bind(e, \"MSPointerMove\", d), t.event.bind(e, \"MSPointerUp\", h)));\n}\nvar gv = function() {\n return {\n handlers: [\"click-rail\", \"drag-thumb\", \"keyboard\", \"wheel\", \"touch\"],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollingThreshold: 1e3,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: !1,\n suppressScrollY: !1,\n swipeEasing: !0,\n useBothWheelAxes: !1,\n wheelPropagation: !0,\n wheelSpeed: 1\n };\n}, bv = {\n \"click-rail\": fv,\n \"drag-thumb\": hv,\n keyboard: pv,\n wheel: vv,\n touch: mv\n}, Fs = function(e, n) {\n var s = this;\n if (n === void 0 && (n = {}), typeof e == \"string\" && (e = document.querySelector(e)), !e || !e.nodeName)\n throw new Error(\"no element is specified to initialize PerfectScrollbar\");\n this.element = e, e.classList.add(mt.main), this.settings = gv();\n for (var a in n)\n this.settings[a] = n[a];\n this.containerWidth = null, this.containerHeight = null, this.contentWidth = null, this.contentHeight = null;\n var i = function() {\n return e.classList.add(mt.state.focus);\n }, o = function() {\n return e.classList.remove(mt.state.focus);\n };\n this.isRtl = Jt(e).direction === \"rtl\", this.isRtl === !0 && e.classList.add(mt.rtl), this.isNegativeScroll = function() {\n var c = e.scrollLeft, u = null;\n return e.scrollLeft = -1, u = e.scrollLeft < 0, e.scrollLeft = c, u;\n }(), this.negativeScrollAdjustment = this.isNegativeScroll ? e.scrollWidth - e.clientWidth : 0, this.event = new ls(), this.ownerDocument = e.ownerDocument || document, this.scrollbarXRail = ea(mt.element.rail(\"x\")), e.appendChild(this.scrollbarXRail), this.scrollbarX = ea(mt.element.thumb(\"x\")), this.scrollbarXRail.appendChild(this.scrollbarX), this.scrollbarX.setAttribute(\"tabindex\", 0), this.event.bind(this.scrollbarX, \"focus\", i), this.event.bind(this.scrollbarX, \"blur\", o), this.scrollbarXActive = null, this.scrollbarXWidth = null, this.scrollbarXLeft = null;\n var l = Jt(this.scrollbarXRail);\n this.scrollbarXBottom = parseInt(l.bottom, 10), isNaN(this.scrollbarXBottom) ? (this.isScrollbarXUsingBottom = !1, this.scrollbarXTop = ct(l.top)) : this.isScrollbarXUsingBottom = !0, this.railBorderXWidth = ct(l.borderLeftWidth) + ct(l.borderRightWidth), Tt(this.scrollbarXRail, { display: \"block\" }), this.railXMarginWidth = ct(l.marginLeft) + ct(l.marginRight), Tt(this.scrollbarXRail, { display: \"\" }), this.railXWidth = null, this.railXRatio = null, this.scrollbarYRail = ea(mt.element.rail(\"y\")), e.appendChild(this.scrollbarYRail), this.scrollbarY = ea(mt.element.thumb(\"y\")), this.scrollbarYRail.appendChild(this.scrollbarY), this.scrollbarY.setAttribute(\"tabindex\", 0), this.event.bind(this.scrollbarY, \"focus\", i), this.event.bind(this.scrollbarY, \"blur\", o), this.scrollbarYActive = null, this.scrollbarYHeight = null, this.scrollbarYTop = null;\n var r = Jt(this.scrollbarYRail);\n this.scrollbarYRight = parseInt(r.right, 10), isNaN(this.scrollbarYRight) ? (this.isScrollbarYUsingRight = !1, this.scrollbarYLeft = ct(r.left)) : this.isScrollbarYUsingRight = !0, this.scrollbarYOuterWidth = this.isRtl ? uv(this.scrollbarY) : null, this.railBorderYWidth = ct(r.borderTopWidth) + ct(r.borderBottomWidth), Tt(this.scrollbarYRail, { display: \"block\" }), this.railYMarginHeight = ct(r.marginTop) + ct(r.marginBottom), Tt(this.scrollbarYRail, { display: \"\" }), this.railYHeight = null, this.railYRatio = null, this.reach = {\n x: e.scrollLeft <= 0 ? \"start\" : e.scrollLeft >= this.contentWidth - this.containerWidth ? \"end\" : null,\n y: e.scrollTop <= 0 ? \"start\" : e.scrollTop >= this.contentHeight - this.containerHeight ? \"end\" : null\n }, this.isAlive = !0, this.settings.handlers.forEach(function(c) {\n return bv[c](s);\n }), this.lastScrollTop = Math.floor(e.scrollTop), this.lastScrollLeft = e.scrollLeft, this.event.bind(this.element, \"scroll\", function(c) {\n return s.onScroll(c);\n }), mn(this);\n};\nFs.prototype.update = function() {\n this.isAlive && (this.negativeScrollAdjustment = this.isNegativeScroll ? this.element.scrollWidth - this.element.clientWidth : 0, Tt(this.scrollbarXRail, { display: \"block\" }), Tt(this.scrollbarYRail, { display: \"block\" }), this.railXMarginWidth = ct(Jt(this.scrollbarXRail).marginLeft) + ct(Jt(this.scrollbarXRail).marginRight), this.railYMarginHeight = ct(Jt(this.scrollbarYRail).marginTop) + ct(Jt(this.scrollbarYRail).marginBottom), Tt(this.scrollbarXRail, { display: \"none\" }), Tt(this.scrollbarYRail, { display: \"none\" }), mn(this), Sa(this, \"top\", 0, !1, !0), Sa(this, \"left\", 0, !1, !0), Tt(this.scrollbarXRail, { display: \"\" }), Tt(this.scrollbarYRail, { display: \"\" }));\n};\nFs.prototype.onScroll = function(e) {\n this.isAlive && (mn(this), Sa(this, \"top\", this.element.scrollTop - this.lastScrollTop), Sa(\n this,\n \"left\",\n this.element.scrollLeft - this.lastScrollLeft\n ), this.lastScrollTop = Math.floor(this.element.scrollTop), this.lastScrollLeft = this.element.scrollLeft);\n};\nFs.prototype.destroy = function() {\n this.isAlive && (this.event.unbindAll(), Kn(this.scrollbarX), Kn(this.scrollbarY), Kn(this.scrollbarXRail), Kn(this.scrollbarYRail), this.removePsClasses(), this.element = null, this.scrollbarX = null, this.scrollbarY = null, this.scrollbarXRail = null, this.scrollbarYRail = null, this.isAlive = !1);\n};\nFs.prototype.removePsClasses = function() {\n this.element.className = this.element.className.split(\" \").filter(function(e) {\n return !e.match(/^ps([-_].+|)$/);\n }).join(\" \");\n};\nconst yv = {\n name: \"MDBPerfectScrollbar\"\n}, xv = /* @__PURE__ */ re({\n ...yv,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n options: {\n type: Object,\n default: () => ({})\n }\n },\n emits: [\n \"scroll\",\n \"ps-scroll-y\",\n \"ps-scroll-x\",\n \"ps-scroll-up\",\n \"ps-scroll-down\",\n \"ps-scroll-left\",\n \"ps-scroll-right\",\n \"ps-y-reach-start\",\n \"ps-y-reach-end\",\n \"ps-x-reach-start\",\n \"ps-x-reach-end\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = [\n \"scroll\",\n \"ps-scroll-y\",\n \"ps-scroll-x\",\n \"ps-scroll-up\",\n \"ps-scroll-down\",\n \"ps-scroll-left\",\n \"ps-scroll-right\",\n \"ps-y-reach-start\",\n \"ps-y-reach-end\",\n \"ps-x-reach-start\",\n \"ps-x-reach-end\"\n ], i = y(null), o = y(null), l = () => {\n i.value && (o.value = new Fs(i.value, s.options), u(), Ge(() => {\n var d;\n (d = i.value) == null || d.dispatchEvent(new Event(\"scroll\"));\n }));\n }, r = () => {\n o.value && (o.value.destroy(), o.value = null, f());\n }, c = (d) => {\n n(d);\n }, u = () => {\n a.forEach((d) => {\n i.value && Le(i.value, d, () => c(d));\n });\n }, f = () => {\n a.forEach((d) => {\n i.value && Me(i.value, d, () => c(d));\n });\n };\n return pe(\n () => s.options,\n () => {\n r(), l();\n },\n { deep: !0 }\n ), Fe(() => {\n i.value && l();\n }), dt(() => {\n o.value && r();\n }), e({\n psInstance: o\n }), (d, h) => (x(), ee(ue(t.tag), {\n ref_key: \"scrollbarRef\",\n ref: i,\n style: { position: \"relative\" }\n }, {\n default: Q(() => [\n oe(d.$slots, \"default\")\n ]),\n _: 3\n }, 512));\n }\n}), kv = {\n name: \"MDBScrollbar\",\n inheritAttrs: !1\n}, Ri = /* @__PURE__ */ re({\n ...kv,\n props: {\n wheelSpeed: {\n type: Number,\n default: 1\n },\n wheelPropagation: {\n type: Boolean,\n default: !0\n },\n swipeEasing: {\n type: Boolean,\n default: !0\n },\n minScrollbarLength: {\n type: Number,\n default: 0\n },\n maxScrollbarLength: {\n type: Number,\n default: 0\n },\n scrollingThreshold: {\n type: Number,\n default: 1e3\n },\n useBothWheelAxes: Boolean,\n suppressScrollX: Boolean,\n suppressScrollY: Boolean,\n scrollXMarginOffset: {\n type: Number,\n default: 0\n },\n scrollYMarginOffset: {\n type: Number,\n default: 0\n },\n scrollbarClass: String,\n scrollbarStyle: String,\n width: {\n type: String,\n default: \"100%\"\n },\n height: {\n type: String,\n default: \"100%\"\n },\n disableKeyboard: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = y(e.width), s = y(e.height), a = T(() => [e.scrollbarClass]), i = T(() => ({\n ...e.scrollbarStyle ? Object.fromEntries(\n e.scrollbarStyle.split(\";\").map((r) => r.trim().split(\":\"))\n ) : e.scrollbarStyle,\n width: n.value,\n height: s.value\n })), o = T(() => ({\n handlers: e.disableKeyboard ? [\"click-rail\", \"drag-thumb\", \"wheel\", \"touch\"] : [\"click-rail\", \"drag-thumb\", \"keyboard\", \"wheel\", \"touch\"],\n wheelSpeed: e.wheelSpeed,\n wheelPropagation: e.wheelPropagation,\n swipeEasing: e.swipeEasing,\n minScrollbarLength: e.minScrollbarLength,\n maxScrollbarLength: e.maxScrollbarLength,\n scrollingThreshold: e.scrollingThreshold,\n useBothWheelAxes: e.useBothWheelAxes,\n suppressScrollX: e.suppressScrollX,\n suppressScrollY: e.suppressScrollY,\n scrollXMarginOffset: e.scrollXMarginOffset,\n scrollYMarginOffset: e.scrollYMarginOffset\n }));\n return Ze(() => {\n s.value = e.height, n.value = e.width;\n }), (l, r) => (x(), ee(xv, $e({\n class: a.value,\n options: o.value,\n style: i.value\n }, l.$attrs), {\n default: Q(() => [\n oe(l.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\", \"options\", \"style\"]));\n }\n}), wv = {\n name: \"MDBLoading\",\n inheritAttrs: !1\n}, S1 = /* @__PURE__ */ re({\n ...wv,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n fullScreen: {\n type: Boolean,\n default: !0\n },\n parentSelector: String,\n modelValue: {\n type: Boolean,\n default: !0\n },\n icon: {\n type: String,\n default: \"spinner-border\"\n },\n loadingText: {\n type: String,\n default: \"Loading...\"\n },\n backdropColor: {\n type: String,\n default: \"black\"\n },\n backdropOpacity: {\n type: Number,\n default: 0.4\n },\n overflow: {\n type: Boolean,\n defeault: !0\n },\n spinnerClasses: String,\n textClasses: String\n },\n setup(t) {\n const e = t, n = T(() => [\n e.parentSelector ? \"loading position-absolute\" : \"loading-full position-fixed\",\n \"loading-spinner\"\n ]), s = T(() => [e.icon, \"loading-icon\", e.spinnerClasses]), a = T(() => [\"loading-text\", e.textClasses]), i = y(null), o = y(e.modelValue);\n return Ze(() => o.value = e.modelValue), pe(\n () => o.value,\n (l) => {\n e.fullScreen && e.overflow && (l ? document.body.style.overflow = \"hidden\" : document.body.style.overflow = \"\");\n },\n { immediate: !0 }\n ), Fe(() => {\n if (e.parentSelector) {\n const l = document.querySelector(e.parentSelector);\n l == null || l.classList.add(\"position-relative\");\n }\n }), (l, r) => (x(), R(Ie, null, [\n o.value && !t.parentSelector ? (x(), ee(Ut, {\n key: 0,\n to: \"body\"\n }, [\n (x(), ee(ue(t.tag), $e({\n ref_key: \"loadingRef\",\n ref: i,\n class: n.value\n }, l.$attrs), {\n default: Q(() => [\n H(\"div\", {\n class: Y(s.value),\n role: \"status\"\n }, null, 2),\n H(\"span\", {\n class: Y(a.value)\n }, se(t.loadingText), 3)\n ]),\n _: 1\n }, 16, [\"class\"])),\n H(\"div\", {\n class: \"loading-backdrop\",\n style: Ce({ opacity: t.backdropOpacity, backgroundColor: t.backdropColor })\n }, null, 4)\n ])) : t.parentSelector && o.value ? (x(), ee(ue(t.tag), $e({\n key: 1,\n ref_key: \"loadingRef\",\n ref: i,\n class: n.value\n }, l.$attrs), {\n default: Q(() => [\n H(\"div\", {\n class: Y(s.value),\n role: \"status\"\n }, null, 2),\n H(\"span\", {\n class: Y(a.value)\n }, se(t.loadingText), 3)\n ]),\n _: 1\n }, 16, [\"class\"])) : K(\"\", !0),\n t.parentSelector && o.value ? (x(), R(\"div\", {\n key: 2,\n class: \"loading-backdrop position-absolute\",\n style: Ce({ opacity: t.backdropOpacity, backgroundColor: t.backdropColor })\n }, null, 4)) : K(\"\", !0)\n ], 64));\n }\n}), _1 = /* @__PURE__ */ re({\n __name: \"MDBTransition\",\n props: {\n name: String,\n autoInit: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = [\"fade-in\", \"fade-in-out\", \"browse-out\"], s = T(() => {\n const a = e.name || \"\";\n return n.includes(a) ? e.name : \"transition-\" + e.name;\n });\n return (a, i) => (x(), ee(At, {\n appear: t.autoInit,\n name: s.value\n }, {\n default: Q(() => [\n oe(a.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"appear\", \"name\"]));\n }\n});\n/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nconst wr = function() {\n return typeof window > \"u\" ? function(t) {\n return t();\n } : window.requestAnimationFrame;\n}();\nfunction Sr(t, e, n) {\n const s = n || ((o) => Array.prototype.slice.call(o));\n let a = !1, i = [];\n return function(...o) {\n i = s(o), a || (a = !0, wr.call(window, () => {\n a = !1, t.apply(e, i);\n }));\n };\n}\nfunction Sv(t, e) {\n let n;\n return function(...s) {\n return e ? (clearTimeout(n), n = setTimeout(t, e, s)) : t.apply(this, s), e;\n };\n}\nconst Ii = (t) => t === \"start\" ? \"left\" : t === \"end\" ? \"right\" : \"center\", _t = (t, e, n) => t === \"start\" ? e : t === \"end\" ? n : (e + n) / 2, _v = (t, e, n, s) => t === (s ? \"left\" : \"right\") ? n : t === \"center\" ? (e + n) / 2 : e;\nfunction on() {\n}\nconst Mv = /* @__PURE__ */ function() {\n let t = 0;\n return function() {\n return t++;\n };\n}();\nfunction He(t) {\n return t === null || typeof t > \"u\";\n}\nfunction at(t) {\n if (Array.isArray && Array.isArray(t))\n return !0;\n const e = Object.prototype.toString.call(t);\n return e.slice(0, 7) === \"[object\" && e.slice(-6) === \"Array]\";\n}\nfunction Xe(t) {\n return t !== null && Object.prototype.toString.call(t) === \"[object Object]\";\n}\nconst vt = (t) => (typeof t == \"number\" || t instanceof Number) && isFinite(+t);\nfunction It(t, e) {\n return vt(t) ? t : e;\n}\nfunction Re(t, e) {\n return typeof t > \"u\" ? e : t;\n}\nconst Cv = (t, e) => typeof t == \"string\" && t.endsWith(\"%\") ? parseFloat(t) / 100 : t / e, _r = (t, e) => typeof t == \"string\" && t.endsWith(\"%\") ? parseFloat(t) / 100 * e : +t;\nfunction Qe(t, e, n) {\n if (t && typeof t.call == \"function\")\n return t.apply(n, e);\n}\nfunction Ke(t, e, n, s) {\n let a, i, o;\n if (at(t))\n for (i = t.length, a = 0; a < i; a++)\n e.call(n, t[a], a);\n else if (Xe(t))\n for (o = Object.keys(t), i = o.length, a = 0; a < i; a++)\n e.call(n, t[o[a]], o[a]);\n}\nfunction _a(t, e) {\n let n, s, a, i;\n if (!t || !e || t.length !== e.length)\n return !1;\n for (n = 0, s = t.length; n < s; ++n)\n if (a = t[n], i = e[n], a.datasetIndex !== i.datasetIndex || a.index !== i.index)\n return !1;\n return !0;\n}\nfunction Ma(t) {\n if (at(t))\n return t.map(Ma);\n if (Xe(t)) {\n const e = /* @__PURE__ */ Object.create(null), n = Object.keys(t), s = n.length;\n let a = 0;\n for (; a < s; ++a)\n e[n[a]] = Ma(t[n[a]]);\n return e;\n }\n return t;\n}\nfunction Mr(t) {\n return [\"__proto__\", \"prototype\", \"constructor\"].indexOf(t) === -1;\n}\nfunction $v(t, e, n, s) {\n if (!Mr(t))\n return;\n const a = e[t], i = n[t];\n Xe(a) && Xe(i) ? nn(a, i, s) : e[t] = Ma(i);\n}\nfunction nn(t, e, n) {\n const s = at(e) ? e : [e], a = s.length;\n if (!Xe(t))\n return t;\n n = n || {};\n const i = n.merger || $v;\n for (let o = 0; o < a; ++o) {\n if (e = s[o], !Xe(e))\n continue;\n const l = Object.keys(e);\n for (let r = 0, c = l.length; r < c; ++r)\n i(l[r], t, e, n);\n }\n return t;\n}\nfunction ks(t, e) {\n return nn(t, e, { merger: Bv });\n}\nfunction Bv(t, e, n) {\n if (!Mr(t))\n return;\n const s = e[t], a = n[t];\n Xe(s) && Xe(a) ? ks(s, a) : Object.prototype.hasOwnProperty.call(e, t) || (e[t] = Ma(a));\n}\nconst Tv = \"\", Dv = \".\";\nfunction Ao(t, e) {\n const n = t.indexOf(Dv, e);\n return n === -1 ? t.length : n;\n}\nfunction _n(t, e) {\n if (e === Tv)\n return t;\n let n = 0, s = Ao(e, n);\n for (; t && s > n; )\n t = t[e.slice(n, s)], n = s + 1, s = Ao(e, n);\n return t;\n}\nfunction Fi(t) {\n return t.charAt(0).toUpperCase() + t.slice(1);\n}\nconst Wt = (t) => typeof t < \"u\", Mn = (t) => typeof t == \"function\", Eo = (t, e) => {\n if (t.size !== e.size)\n return !1;\n for (const n of t)\n if (!e.has(n))\n return !1;\n return !0;\n};\nfunction Ov(t) {\n return t.type === \"mouseup\" || t.type === \"click\" || t.type === \"contextmenu\";\n}\nconst rt = Math.PI, tt = 2 * rt, Lv = tt + rt, Ca = Number.POSITIVE_INFINITY, Av = rt / 180, ft = rt / 2, us = rt / 4, Po = rt * 2 / 3, Ft = Math.log10, Qt = Math.sign;\nfunction Vo(t) {\n const e = Math.round(t);\n t = ws(t, e, t / 1e3) ? e : t;\n const n = Math.pow(10, Math.floor(Ft(t))), s = t / n;\n return (s <= 1 ? 1 : s <= 2 ? 2 : s <= 5 ? 5 : 10) * n;\n}\nfunction Ev(t) {\n const e = [], n = Math.sqrt(t);\n let s;\n for (s = 1; s < n; s++)\n t % s === 0 && (e.push(s), e.push(t / s));\n return n === (n | 0) && e.push(n), e.sort((a, i) => a - i).pop(), e;\n}\nfunction Ds(t) {\n return !isNaN(parseFloat(t)) && isFinite(t);\n}\nfunction ws(t, e, n) {\n return Math.abs(t - e) < n;\n}\nfunction Pv(t, e) {\n const n = Math.round(t);\n return n - e <= t && n + e >= t;\n}\nfunction Cr(t, e, n) {\n let s, a, i;\n for (s = 0, a = t.length; s < a; s++)\n i = t[s][n], isNaN(i) || (e.min = Math.min(e.min, i), e.max = Math.max(e.max, i));\n}\nfunction Yt(t) {\n return t * (rt / 180);\n}\nfunction Ni(t) {\n return t * (180 / rt);\n}\nfunction Ro(t) {\n if (!vt(t))\n return;\n let e = 1, n = 0;\n for (; Math.round(t * e) / e !== t; )\n e *= 10, n++;\n return n;\n}\nfunction $r(t, e) {\n const n = e.x - t.x, s = e.y - t.y, a = Math.sqrt(n * n + s * s);\n let i = Math.atan2(s, n);\n return i < -0.5 * rt && (i += tt), {\n angle: i,\n distance: a\n };\n}\nfunction vi(t, e) {\n return Math.sqrt(Math.pow(e.x - t.x, 2) + Math.pow(e.y - t.y, 2));\n}\nfunction Vv(t, e) {\n return (t - e + Lv) % tt - rt;\n}\nfunction Pt(t) {\n return (t % tt + tt) % tt;\n}\nfunction Os(t, e, n, s) {\n const a = Pt(t), i = Pt(e), o = Pt(n), l = Pt(i - a), r = Pt(o - a), c = Pt(a - i), u = Pt(a - o);\n return a === i || a === o || s && i === o || l > r && c < u;\n}\nfunction xt(t, e, n) {\n return Math.max(e, Math.min(n, t));\n}\nfunction Rv(t) {\n return xt(t, -32768, 32767);\n}\nfunction dn(t, e, n, s = 1e-6) {\n return t >= Math.min(e, n) - s && t <= Math.max(e, n) + s;\n}\nconst na = (t) => t === 0 || t === 1, Io = (t, e, n) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * tt / n)), Fo = (t, e, n) => Math.pow(2, -10 * t) * Math.sin((t - e) * tt / n) + 1, Ss = {\n linear: (t) => t,\n easeInQuad: (t) => t * t,\n easeOutQuad: (t) => -t * (t - 2),\n easeInOutQuad: (t) => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: (t) => t * t * t,\n easeOutCubic: (t) => (t -= 1) * t * t + 1,\n easeInOutCubic: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: (t) => t * t * t * t,\n easeOutQuart: (t) => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: (t) => t * t * t * t * t,\n easeOutQuint: (t) => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: (t) => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: (t) => -Math.cos(t * ft) + 1,\n easeOutSine: (t) => Math.sin(t * ft),\n easeInOutSine: (t) => -0.5 * (Math.cos(rt * t) - 1),\n easeInExpo: (t) => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: (t) => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: (t) => na(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: (t) => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: (t) => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: (t) => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: (t) => na(t) ? t : Io(t, 0.075, 0.3),\n easeOutElastic: (t) => na(t) ? t : Fo(t, 0.075, 0.3),\n easeInOutElastic(t) {\n return na(t) ? t : t < 0.5 ? 0.5 * Io(t * 2, 0.1125, 0.45) : 0.5 + 0.5 * Fo(t * 2 - 1, 0.1125, 0.45);\n },\n easeInBack(t) {\n return t * t * ((1.70158 + 1) * t - 1.70158);\n },\n easeOutBack(t) {\n return (t -= 1) * t * ((1.70158 + 1) * t + 1.70158) + 1;\n },\n easeInOutBack(t) {\n let e = 1.70158;\n return (t /= 0.5) < 1 ? 0.5 * (t * t * (((e *= 1.525) + 1) * t - e)) : 0.5 * ((t -= 2) * t * (((e *= 1.525) + 1) * t + e) + 2);\n },\n easeInBounce: (t) => 1 - Ss.easeOutBounce(1 - t),\n easeOutBounce(t) {\n return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + 0.75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + 0.9375 : 7.5625 * (t -= 2.625 / 2.75) * t + 0.984375;\n },\n easeInOutBounce: (t) => t < 0.5 ? Ss.easeInBounce(t * 2) * 0.5 : Ss.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction Ns(t) {\n return t + 0.5 | 0;\n}\nconst xn = (t, e, n) => Math.max(Math.min(t, n), e);\nfunction gs(t) {\n return xn(Ns(t * 2.55), 0, 255);\n}\nfunction wn(t) {\n return xn(Ns(t * 255), 0, 255);\n}\nfunction cn(t) {\n return xn(Ns(t / 2.55) / 100, 0, 1);\n}\nfunction No(t) {\n return xn(Ns(t * 100), 0, 100);\n}\nconst Rt = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15 }, mi = [...\"0123456789ABCDEF\"], Iv = (t) => mi[t & 15], Fv = (t) => mi[(t & 240) >> 4] + mi[t & 15], sa = (t) => (t & 240) >> 4 === (t & 15), Nv = (t) => sa(t.r) && sa(t.g) && sa(t.b) && sa(t.a);\nfunction Hv(t) {\n var e = t.length, n;\n return t[0] === \"#\" && (e === 4 || e === 5 ? n = {\n r: 255 & Rt[t[1]] * 17,\n g: 255 & Rt[t[2]] * 17,\n b: 255 & Rt[t[3]] * 17,\n a: e === 5 ? Rt[t[4]] * 17 : 255\n } : (e === 7 || e === 9) && (n = {\n r: Rt[t[1]] << 4 | Rt[t[2]],\n g: Rt[t[3]] << 4 | Rt[t[4]],\n b: Rt[t[5]] << 4 | Rt[t[6]],\n a: e === 9 ? Rt[t[7]] << 4 | Rt[t[8]] : 255\n })), n;\n}\nconst Wv = (t, e) => t < 255 ? e(t) : \"\";\nfunction zv(t) {\n var e = Nv(t) ? Iv : Fv;\n return t ? \"#\" + e(t.r) + e(t.g) + e(t.b) + Wv(t.a, e) : void 0;\n}\nconst Yv = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction Br(t, e, n) {\n const s = e * Math.min(n, 1 - n), a = (i, o = (i + t / 30) % 12) => n - s * Math.max(Math.min(o - 3, 9 - o, 1), -1);\n return [a(0), a(8), a(4)];\n}\nfunction jv(t, e, n) {\n const s = (a, i = (a + t / 60) % 6) => n - n * e * Math.max(Math.min(i, 4 - i, 1), 0);\n return [s(5), s(3), s(1)];\n}\nfunction Xv(t, e, n) {\n const s = Br(t, 1, 0.5);\n let a;\n for (e + n > 1 && (a = 1 / (e + n), e *= a, n *= a), a = 0; a < 3; a++)\n s[a] *= 1 - e - n, s[a] += e;\n return s;\n}\nfunction Uv(t, e, n, s, a) {\n return t === a ? (e - n) / s + (e < n ? 6 : 0) : e === a ? (n - t) / s + 2 : (t - e) / s + 4;\n}\nfunction Hi(t) {\n const n = t.r / 255, s = t.g / 255, a = t.b / 255, i = Math.max(n, s, a), o = Math.min(n, s, a), l = (i + o) / 2;\n let r, c, u;\n return i !== o && (u = i - o, c = l > 0.5 ? u / (2 - i - o) : u / (i + o), r = Uv(n, s, a, u, i), r = r * 60 + 0.5), [r | 0, c || 0, l];\n}\nfunction Wi(t, e, n, s) {\n return (Array.isArray(e) ? t(e[0], e[1], e[2]) : t(e, n, s)).map(wn);\n}\nfunction zi(t, e, n) {\n return Wi(Br, t, e, n);\n}\nfunction qv(t, e, n) {\n return Wi(Xv, t, e, n);\n}\nfunction Kv(t, e, n) {\n return Wi(jv, t, e, n);\n}\nfunction Tr(t) {\n return (t % 360 + 360) % 360;\n}\nfunction Gv(t) {\n const e = Yv.exec(t);\n let n = 255, s;\n if (!e)\n return;\n e[5] !== s && (n = e[6] ? gs(+e[5]) : wn(+e[5]));\n const a = Tr(+e[2]), i = +e[3] / 100, o = +e[4] / 100;\n return e[1] === \"hwb\" ? s = qv(a, i, o) : e[1] === \"hsv\" ? s = Kv(a, i, o) : s = zi(a, i, o), {\n r: s[0],\n g: s[1],\n b: s[2],\n a: n\n };\n}\nfunction Zv(t, e) {\n var n = Hi(t);\n n[0] = Tr(n[0] + e), n = zi(n), t.r = n[0], t.g = n[1], t.b = n[2];\n}\nfunction Jv(t) {\n if (!t)\n return;\n const e = Hi(t), n = e[0], s = No(e[1]), a = No(e[2]);\n return t.a < 255 ? `hsla(${n}, ${s}%, ${a}%, ${cn(t.a)})` : `hsl(${n}, ${s}%, ${a}%)`;\n}\nconst Ho = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n}, Wo = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction Qv() {\n const t = {}, e = Object.keys(Wo), n = Object.keys(Ho);\n let s, a, i, o, l;\n for (s = 0; s < e.length; s++) {\n for (o = l = e[s], a = 0; a < n.length; a++)\n i = n[a], l = l.replace(i, Ho[i]);\n i = parseInt(Wo[o], 16), t[l] = [i >> 16 & 255, i >> 8 & 255, i & 255];\n }\n return t;\n}\nlet aa;\nfunction em(t) {\n aa || (aa = Qv(), aa.transparent = [0, 0, 0, 0]);\n const e = aa[t.toLowerCase()];\n return e && {\n r: e[0],\n g: e[1],\n b: e[2],\n a: e.length === 4 ? e[3] : 255\n };\n}\nconst tm = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction nm(t) {\n const e = tm.exec(t);\n let n = 255, s, a, i;\n if (e) {\n if (e[7] !== s) {\n const o = +e[7];\n n = e[8] ? gs(o) : xn(o * 255, 0, 255);\n }\n return s = +e[1], a = +e[3], i = +e[5], s = 255 & (e[2] ? gs(s) : xn(s, 0, 255)), a = 255 & (e[4] ? gs(a) : xn(a, 0, 255)), i = 255 & (e[6] ? gs(i) : xn(i, 0, 255)), {\n r: s,\n g: a,\n b: i,\n a: n\n };\n }\n}\nfunction sm(t) {\n return t && (t.a < 255 ? `rgba(${t.r}, ${t.g}, ${t.b}, ${cn(t.a)})` : `rgb(${t.r}, ${t.g}, ${t.b})`);\n}\nconst Za = (t) => t <= 31308e-7 ? t * 12.92 : Math.pow(t, 1 / 2.4) * 1.055 - 0.055, jn = (t) => t <= 0.04045 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4);\nfunction am(t, e, n) {\n const s = jn(cn(t.r)), a = jn(cn(t.g)), i = jn(cn(t.b));\n return {\n r: wn(Za(s + n * (jn(cn(e.r)) - s))),\n g: wn(Za(a + n * (jn(cn(e.g)) - a))),\n b: wn(Za(i + n * (jn(cn(e.b)) - i))),\n a: t.a + n * (e.a - t.a)\n };\n}\nfunction ia(t, e, n) {\n if (t) {\n let s = Hi(t);\n s[e] = Math.max(0, Math.min(s[e] + s[e] * n, e === 0 ? 360 : 1)), s = zi(s), t.r = s[0], t.g = s[1], t.b = s[2];\n }\n}\nfunction Dr(t, e) {\n return t && Object.assign(e || {}, t);\n}\nfunction zo(t) {\n var e = { r: 0, g: 0, b: 0, a: 255 };\n return Array.isArray(t) ? t.length >= 3 && (e = { r: t[0], g: t[1], b: t[2], a: 255 }, t.length > 3 && (e.a = wn(t[3]))) : (e = Dr(t, { r: 0, g: 0, b: 0, a: 1 }), e.a = wn(e.a)), e;\n}\nfunction im(t) {\n return t.charAt(0) === \"r\" ? nm(t) : Gv(t);\n}\nclass $a {\n constructor(e) {\n if (e instanceof $a)\n return e;\n const n = typeof e;\n let s;\n n === \"object\" ? s = zo(e) : n === \"string\" && (s = Hv(e) || em(e) || im(e)), this._rgb = s, this._valid = !!s;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var e = Dr(this._rgb);\n return e && (e.a = cn(e.a)), e;\n }\n set rgb(e) {\n this._rgb = zo(e);\n }\n rgbString() {\n return this._valid ? sm(this._rgb) : void 0;\n }\n hexString() {\n return this._valid ? zv(this._rgb) : void 0;\n }\n hslString() {\n return this._valid ? Jv(this._rgb) : void 0;\n }\n mix(e, n) {\n if (e) {\n const s = this.rgb, a = e.rgb;\n let i;\n const o = n === i ? 0.5 : n, l = 2 * o - 1, r = s.a - a.a, c = ((l * r === -1 ? l : (l + r) / (1 + l * r)) + 1) / 2;\n i = 1 - c, s.r = 255 & c * s.r + i * a.r + 0.5, s.g = 255 & c * s.g + i * a.g + 0.5, s.b = 255 & c * s.b + i * a.b + 0.5, s.a = o * s.a + (1 - o) * a.a, this.rgb = s;\n }\n return this;\n }\n interpolate(e, n) {\n return e && (this._rgb = am(this._rgb, e._rgb, n)), this;\n }\n clone() {\n return new $a(this.rgb);\n }\n alpha(e) {\n return this._rgb.a = wn(e), this;\n }\n clearer(e) {\n const n = this._rgb;\n return n.a *= 1 - e, this;\n }\n greyscale() {\n const e = this._rgb, n = Ns(e.r * 0.3 + e.g * 0.59 + e.b * 0.11);\n return e.r = e.g = e.b = n, this;\n }\n opaquer(e) {\n const n = this._rgb;\n return n.a *= 1 + e, this;\n }\n negate() {\n const e = this._rgb;\n return e.r = 255 - e.r, e.g = 255 - e.g, e.b = 255 - e.b, this;\n }\n lighten(e) {\n return ia(this._rgb, 2, e), this;\n }\n darken(e) {\n return ia(this._rgb, 2, -e), this;\n }\n saturate(e) {\n return ia(this._rgb, 1, e), this;\n }\n desaturate(e) {\n return ia(this._rgb, 1, -e), this;\n }\n rotate(e) {\n return Zv(this._rgb, e), this;\n }\n}\nfunction Or(t) {\n return new $a(t);\n}\nfunction Lr(t) {\n if (t && typeof t == \"object\") {\n const e = t.toString();\n return e === \"[object CanvasPattern]\" || e === \"[object CanvasGradient]\";\n }\n return !1;\n}\nfunction Yo(t) {\n return Lr(t) ? t : Or(t);\n}\nfunction Ja(t) {\n return Lr(t) ? t : Or(t).saturate(0.5).darken(0.1).hexString();\n}\nconst Fn = /* @__PURE__ */ Object.create(null), gi = /* @__PURE__ */ Object.create(null);\nfunction _s(t, e) {\n if (!e)\n return t;\n const n = e.split(\".\");\n for (let s = 0, a = n.length; s < a; ++s) {\n const i = n[s];\n t = t[i] || (t[i] = /* @__PURE__ */ Object.create(null));\n }\n return t;\n}\nfunction Qa(t, e, n) {\n return typeof e == \"string\" ? nn(_s(t, e), n) : nn(_s(t, \"\"), e);\n}\nclass om {\n constructor(e) {\n this.animation = void 0, this.backgroundColor = \"rgba(0,0,0,0.1)\", this.borderColor = \"rgba(0,0,0,0.1)\", this.color = \"#666\", this.datasets = {}, this.devicePixelRatio = (n) => n.chart.platform.getDevicePixelRatio(), this.elements = {}, this.events = [\n \"mousemove\",\n \"mouseout\",\n \"click\",\n \"touchstart\",\n \"touchmove\"\n ], this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: \"normal\",\n lineHeight: 1.2,\n weight: null\n }, this.hover = {}, this.hoverBackgroundColor = (n, s) => Ja(s.backgroundColor), this.hoverBorderColor = (n, s) => Ja(s.borderColor), this.hoverColor = (n, s) => Ja(s.color), this.indexAxis = \"x\", this.interaction = {\n mode: \"nearest\",\n intersect: !0,\n includeInvisible: !1\n }, this.maintainAspectRatio = !0, this.onHover = null, this.onClick = null, this.parsing = !0, this.plugins = {}, this.responsive = !0, this.scale = void 0, this.scales = {}, this.showLine = !0, this.drawActiveElementsOnTop = !0, this.describe(e);\n }\n set(e, n) {\n return Qa(this, e, n);\n }\n get(e) {\n return _s(this, e);\n }\n describe(e, n) {\n return Qa(gi, e, n);\n }\n override(e, n) {\n return Qa(Fn, e, n);\n }\n route(e, n, s, a) {\n const i = _s(this, e), o = _s(this, s), l = \"_\" + n;\n Object.defineProperties(i, {\n [l]: {\n value: i[n],\n writable: !0\n },\n [n]: {\n enumerable: !0,\n get() {\n const r = this[l], c = o[a];\n return Xe(r) ? Object.assign({}, c, r) : Re(r, c);\n },\n set(r) {\n this[l] = r;\n }\n }\n });\n }\n}\nvar Ue = new om({\n _scriptable: (t) => !t.startsWith(\"on\"),\n _indexable: (t) => t !== \"events\",\n hover: {\n _fallback: \"interaction\"\n },\n interaction: {\n _scriptable: !1,\n _indexable: !1\n }\n});\nfunction lm(t) {\n return !t || He(t.size) || He(t.family) ? null : (t.style ? t.style + \" \" : \"\") + (t.weight ? t.weight + \" \" : \"\") + t.size + \"px \" + t.family;\n}\nfunction Ba(t, e, n, s, a) {\n let i = e[a];\n return i || (i = e[a] = t.measureText(a).width, n.push(a)), i > s && (s = i), s;\n}\nfunction rm(t, e, n, s) {\n s = s || {};\n let a = s.data = s.data || {}, i = s.garbageCollect = s.garbageCollect || [];\n s.font !== e && (a = s.data = {}, i = s.garbageCollect = [], s.font = e), t.save(), t.font = e;\n let o = 0;\n const l = n.length;\n let r, c, u, f, d;\n for (r = 0; r < l; r++)\n if (f = n[r], f != null && at(f) !== !0)\n o = Ba(t, a, i, o, f);\n else if (at(f))\n for (c = 0, u = f.length; c < u; c++)\n d = f[c], d != null && !at(d) && (o = Ba(t, a, i, o, d));\n t.restore();\n const h = i.length / 2;\n if (h > n.length) {\n for (r = 0; r < h; r++)\n delete a[i[r]];\n i.splice(0, h);\n }\n return o;\n}\nfunction Ln(t, e, n) {\n const s = t.currentDevicePixelRatio, a = n !== 0 ? Math.max(n / 2, 0.5) : 0;\n return Math.round((e - a) * s) / s + a;\n}\nfunction jo(t, e) {\n e = e || t.getContext(\"2d\"), e.save(), e.resetTransform(), e.clearRect(0, 0, t.width, t.height), e.restore();\n}\nfunction Ta(t, e, n, s) {\n let a, i, o, l, r;\n const c = e.pointStyle, u = e.rotation, f = e.radius;\n let d = (u || 0) * Av;\n if (c && typeof c == \"object\" && (a = c.toString(), a === \"[object HTMLImageElement]\" || a === \"[object HTMLCanvasElement]\")) {\n t.save(), t.translate(n, s), t.rotate(d), t.drawImage(c, -c.width / 2, -c.height / 2, c.width, c.height), t.restore();\n return;\n }\n if (!(isNaN(f) || f <= 0)) {\n switch (t.beginPath(), c) {\n default:\n t.arc(n, s, f, 0, tt), t.closePath();\n break;\n case \"triangle\":\n t.moveTo(n + Math.sin(d) * f, s - Math.cos(d) * f), d += Po, t.lineTo(n + Math.sin(d) * f, s - Math.cos(d) * f), d += Po, t.lineTo(n + Math.sin(d) * f, s - Math.cos(d) * f), t.closePath();\n break;\n case \"rectRounded\":\n r = f * 0.516, l = f - r, i = Math.cos(d + us) * l, o = Math.sin(d + us) * l, t.arc(n - i, s - o, r, d - rt, d - ft), t.arc(n + o, s - i, r, d - ft, d), t.arc(n + i, s + o, r, d, d + ft), t.arc(n - o, s + i, r, d + ft, d + rt), t.closePath();\n break;\n case \"rect\":\n if (!u) {\n l = Math.SQRT1_2 * f, t.rect(n - l, s - l, 2 * l, 2 * l);\n break;\n }\n d += us;\n case \"rectRot\":\n i = Math.cos(d) * f, o = Math.sin(d) * f, t.moveTo(n - i, s - o), t.lineTo(n + o, s - i), t.lineTo(n + i, s + o), t.lineTo(n - o, s + i), t.closePath();\n break;\n case \"crossRot\":\n d += us;\n case \"cross\":\n i = Math.cos(d) * f, o = Math.sin(d) * f, t.moveTo(n - i, s - o), t.lineTo(n + i, s + o), t.moveTo(n + o, s - i), t.lineTo(n - o, s + i);\n break;\n case \"star\":\n i = Math.cos(d) * f, o = Math.sin(d) * f, t.moveTo(n - i, s - o), t.lineTo(n + i, s + o), t.moveTo(n + o, s - i), t.lineTo(n - o, s + i), d += us, i = Math.cos(d) * f, o = Math.sin(d) * f, t.moveTo(n - i, s - o), t.lineTo(n + i, s + o), t.moveTo(n + o, s - i), t.lineTo(n - o, s + i);\n break;\n case \"line\":\n i = Math.cos(d) * f, o = Math.sin(d) * f, t.moveTo(n - i, s - o), t.lineTo(n + i, s + o);\n break;\n case \"dash\":\n t.moveTo(n, s), t.lineTo(n + Math.cos(d) * f, s + Math.sin(d) * f);\n break;\n }\n t.fill(), e.borderWidth > 0 && t.stroke();\n }\n}\nfunction Ls(t, e, n) {\n return n = n || 0.5, !e || t && t.x > e.left - n && t.x < e.right + n && t.y > e.top - n && t.y < e.bottom + n;\n}\nfunction Ia(t, e) {\n t.save(), t.beginPath(), t.rect(e.left, e.top, e.right - e.left, e.bottom - e.top), t.clip();\n}\nfunction Fa(t) {\n t.restore();\n}\nfunction cm(t, e, n, s, a) {\n if (!e)\n return t.lineTo(n.x, n.y);\n if (a === \"middle\") {\n const i = (e.x + n.x) / 2;\n t.lineTo(i, e.y), t.lineTo(i, n.y);\n } else a === \"after\" != !!s ? t.lineTo(e.x, n.y) : t.lineTo(n.x, e.y);\n t.lineTo(n.x, n.y);\n}\nfunction um(t, e, n, s) {\n if (!e)\n return t.lineTo(n.x, n.y);\n t.bezierCurveTo(\n s ? e.cp1x : e.cp2x,\n s ? e.cp1y : e.cp2y,\n s ? n.cp2x : n.cp1x,\n s ? n.cp2y : n.cp1y,\n n.x,\n n.y\n );\n}\nfunction Nn(t, e, n, s, a, i = {}) {\n const o = at(e) ? e : [e], l = i.strokeWidth > 0 && i.strokeColor !== \"\";\n let r, c;\n for (t.save(), t.font = a.string, dm(t, i), r = 0; r < o.length; ++r)\n c = o[r], l && (i.strokeColor && (t.strokeStyle = i.strokeColor), He(i.strokeWidth) || (t.lineWidth = i.strokeWidth), t.strokeText(c, n, s, i.maxWidth)), t.fillText(c, n, s, i.maxWidth), fm(t, n, s, c, i), s += a.lineHeight;\n t.restore();\n}\nfunction dm(t, e) {\n e.translation && t.translate(e.translation[0], e.translation[1]), He(e.rotation) || t.rotate(e.rotation), e.color && (t.fillStyle = e.color), e.textAlign && (t.textAlign = e.textAlign), e.textBaseline && (t.textBaseline = e.textBaseline);\n}\nfunction fm(t, e, n, s, a) {\n if (a.strikethrough || a.underline) {\n const i = t.measureText(s), o = e - i.actualBoundingBoxLeft, l = e + i.actualBoundingBoxRight, r = n - i.actualBoundingBoxAscent, c = n + i.actualBoundingBoxDescent, u = a.strikethrough ? (r + c) / 2 : c;\n t.strokeStyle = t.fillStyle, t.beginPath(), t.lineWidth = a.decorationWidth || 2, t.moveTo(o, u), t.lineTo(l, u), t.stroke();\n }\n}\nfunction As(t, e) {\n const { x: n, y: s, w: a, h: i, radius: o } = e;\n t.arc(n + o.topLeft, s + o.topLeft, o.topLeft, -ft, rt, !0), t.lineTo(n, s + i - o.bottomLeft), t.arc(n + o.bottomLeft, s + i - o.bottomLeft, o.bottomLeft, rt, ft, !0), t.lineTo(n + a - o.bottomRight, s + i), t.arc(n + a - o.bottomRight, s + i - o.bottomRight, o.bottomRight, ft, 0, !0), t.lineTo(n + a, s + o.topRight), t.arc(n + a - o.topRight, s + o.topRight, o.topRight, 0, -ft, !0), t.lineTo(n + o.topLeft, s);\n}\nconst hm = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/), pm = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction vm(t, e) {\n const n = (\"\" + t).match(hm);\n if (!n || n[1] === \"normal\")\n return e * 1.2;\n switch (t = +n[2], n[3]) {\n case \"px\":\n return t;\n case \"%\":\n t /= 100;\n break;\n }\n return e * t;\n}\nconst mm = (t) => +t || 0;\nfunction Yi(t, e) {\n const n = {}, s = Xe(e), a = s ? Object.keys(e) : e, i = Xe(t) ? s ? (o) => Re(t[o], t[e[o]]) : (o) => t[o] : () => t;\n for (const o of a)\n n[o] = mm(i(o));\n return n;\n}\nfunction Ar(t) {\n return Yi(t, { top: \"y\", right: \"x\", bottom: \"y\", left: \"x\" });\n}\nfunction Rn(t) {\n return Yi(t, [\"topLeft\", \"topRight\", \"bottomLeft\", \"bottomRight\"]);\n}\nfunction St(t) {\n const e = Ar(t);\n return e.width = e.left + e.right, e.height = e.top + e.bottom, e;\n}\nfunction gt(t, e) {\n t = t || {}, e = e || Ue.font;\n let n = Re(t.size, e.size);\n typeof n == \"string\" && (n = parseInt(n, 10));\n let s = Re(t.style, e.style);\n s && !(\"\" + s).match(pm) && (console.warn('Invalid font style specified: \"' + s + '\"'), s = \"\");\n const a = {\n family: Re(t.family, e.family),\n lineHeight: vm(Re(t.lineHeight, e.lineHeight), n),\n size: n,\n style: s,\n weight: Re(t.weight, e.weight),\n string: \"\"\n };\n return a.string = lm(a), a;\n}\nfunction ot(t, e, n, s) {\n let a, i, o;\n for (a = 0, i = t.length; a < i; ++a)\n if (o = t[a], o !== void 0 && (e !== void 0 && typeof o == \"function\" && (o = o(e)), n !== void 0 && at(o) && (o = o[n % o.length]), o !== void 0))\n return o;\n}\nfunction gm(t, e, n) {\n const { min: s, max: a } = t, i = _r(e, (a - s) / 2), o = (l, r) => n && l === 0 ? 0 : l + r;\n return {\n min: o(s, -Math.abs(i)),\n max: o(a, i)\n };\n}\nfunction Bn(t, e) {\n return Object.assign(Object.create(t), e);\n}\nfunction ji(t, e, n) {\n n = n || ((o) => t[o] < e);\n let s = t.length - 1, a = 0, i;\n for (; s - a > 1; )\n i = a + s >> 1, n(i) ? a = i : s = i;\n return { lo: a, hi: s };\n}\nconst fn = (t, e, n) => ji(t, n, (s) => t[s][e] < n), bm = (t, e, n) => ji(t, n, (s) => t[s][e] >= n);\nfunction ym(t, e, n) {\n let s = 0, a = t.length;\n for (; s < a && t[s] < e; )\n s++;\n for (; a > s && t[a - 1] > n; )\n a--;\n return s > 0 || a < t.length ? t.slice(s, a) : t;\n}\nconst Er = [\"push\", \"pop\", \"shift\", \"splice\", \"unshift\"];\nfunction xm(t, e) {\n if (t._chartjs) {\n t._chartjs.listeners.push(e);\n return;\n }\n Object.defineProperty(t, \"_chartjs\", {\n configurable: !0,\n enumerable: !1,\n value: {\n listeners: [e]\n }\n }), Er.forEach((n) => {\n const s = \"_onData\" + Fi(n), a = t[n];\n Object.defineProperty(t, n, {\n configurable: !0,\n enumerable: !1,\n value(...i) {\n const o = a.apply(this, i);\n return t._chartjs.listeners.forEach((l) => {\n typeof l[s] == \"function\" && l[s](...i);\n }), o;\n }\n });\n });\n}\nfunction Xo(t, e) {\n const n = t._chartjs;\n if (!n)\n return;\n const s = n.listeners, a = s.indexOf(e);\n a !== -1 && s.splice(a, 1), !(s.length > 0) && (Er.forEach((i) => {\n delete t[i];\n }), delete t._chartjs);\n}\nfunction Pr(t) {\n const e = /* @__PURE__ */ new Set();\n let n, s;\n for (n = 0, s = t.length; n < s; ++n)\n e.add(t[n]);\n return e.size === s ? t : Array.from(e);\n}\nfunction Xi(t, e = [\"\"], n = t, s, a = () => t[0]) {\n Wt(s) || (s = Fr(\"_fallback\", t));\n const i = {\n [Symbol.toStringTag]: \"Object\",\n _cacheable: !0,\n _scopes: t,\n _rootScopes: n,\n _fallback: s,\n _getTarget: a,\n override: (o) => Xi([o, ...t], e, n, s)\n };\n return new Proxy(i, {\n deleteProperty(o, l) {\n return delete o[l], delete o._keys, delete t[0][l], !0;\n },\n get(o, l) {\n return Rr(\n o,\n l,\n () => Bm(l, e, t, o)\n );\n },\n getOwnPropertyDescriptor(o, l) {\n return Reflect.getOwnPropertyDescriptor(o._scopes[0], l);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(t[0]);\n },\n has(o, l) {\n return qo(o).includes(l);\n },\n ownKeys(o) {\n return qo(o);\n },\n set(o, l, r) {\n const c = o._storage || (o._storage = a());\n return o[l] = c[l] = r, delete o._keys, !0;\n }\n });\n}\nfunction ss(t, e, n, s) {\n const a = {\n _cacheable: !1,\n _proxy: t,\n _context: e,\n _subProxy: n,\n _stack: /* @__PURE__ */ new Set(),\n _descriptors: Vr(t, s),\n setContext: (i) => ss(t, i, n, s),\n override: (i) => ss(t.override(i), e, n, s)\n };\n return new Proxy(a, {\n deleteProperty(i, o) {\n return delete i[o], delete t[o], !0;\n },\n get(i, o, l) {\n return Rr(\n i,\n o,\n () => wm(i, o, l)\n );\n },\n getOwnPropertyDescriptor(i, o) {\n return i._descriptors.allKeys ? Reflect.has(t, o) ? { enumerable: !0, configurable: !0 } : void 0 : Reflect.getOwnPropertyDescriptor(t, o);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(t);\n },\n has(i, o) {\n return Reflect.has(t, o);\n },\n ownKeys() {\n return Reflect.ownKeys(t);\n },\n set(i, o, l) {\n return t[o] = l, delete i[o], !0;\n }\n });\n}\nfunction Vr(t, e = { scriptable: !0, indexable: !0 }) {\n const { _scriptable: n = e.scriptable, _indexable: s = e.indexable, _allKeys: a = e.allKeys } = t;\n return {\n allKeys: a,\n scriptable: n,\n indexable: s,\n isScriptable: Mn(n) ? n : () => n,\n isIndexable: Mn(s) ? s : () => s\n };\n}\nconst km = (t, e) => t ? t + Fi(e) : e, Ui = (t, e) => Xe(e) && t !== \"adapters\" && (Object.getPrototypeOf(e) === null || e.constructor === Object);\nfunction Rr(t, e, n) {\n if (Object.prototype.hasOwnProperty.call(t, e))\n return t[e];\n const s = n();\n return t[e] = s, s;\n}\nfunction wm(t, e, n) {\n const { _proxy: s, _context: a, _subProxy: i, _descriptors: o } = t;\n let l = s[e];\n return Mn(l) && o.isScriptable(e) && (l = Sm(e, l, t, n)), at(l) && l.length && (l = _m(e, l, t, o.isIndexable)), Ui(e, l) && (l = ss(l, a, i && i[e], o)), l;\n}\nfunction Sm(t, e, n, s) {\n const { _proxy: a, _context: i, _subProxy: o, _stack: l } = n;\n if (l.has(t))\n throw new Error(\"Recursion detected: \" + Array.from(l).join(\"->\") + \"->\" + t);\n return l.add(t), e = e(i, o || s), l.delete(t), Ui(t, e) && (e = qi(a._scopes, a, t, e)), e;\n}\nfunction _m(t, e, n, s) {\n const { _proxy: a, _context: i, _subProxy: o, _descriptors: l } = n;\n if (Wt(i.index) && s(t))\n e = e[i.index % e.length];\n else if (Xe(e[0])) {\n const r = e, c = a._scopes.filter((u) => u !== r);\n e = [];\n for (const u of r) {\n const f = qi(c, a, t, u);\n e.push(ss(f, i, o && o[t], l));\n }\n }\n return e;\n}\nfunction Ir(t, e, n) {\n return Mn(t) ? t(e, n) : t;\n}\nconst Mm = (t, e) => t === !0 ? e : typeof t == \"string\" ? _n(e, t) : void 0;\nfunction Cm(t, e, n, s, a) {\n for (const i of e) {\n const o = Mm(n, i);\n if (o) {\n t.add(o);\n const l = Ir(o._fallback, n, a);\n if (Wt(l) && l !== n && l !== s)\n return l;\n } else if (o === !1 && Wt(s) && n !== s)\n return null;\n }\n return !1;\n}\nfunction qi(t, e, n, s) {\n const a = e._rootScopes, i = Ir(e._fallback, n, s), o = [...t, ...a], l = /* @__PURE__ */ new Set();\n l.add(s);\n let r = Uo(l, o, n, i || n, s);\n return r === null || Wt(i) && i !== n && (r = Uo(l, o, i, r, s), r === null) ? !1 : Xi(\n Array.from(l),\n [\"\"],\n a,\n i,\n () => $m(e, n, s)\n );\n}\nfunction Uo(t, e, n, s, a) {\n for (; n; )\n n = Cm(t, e, n, s, a);\n return n;\n}\nfunction $m(t, e, n) {\n const s = t._getTarget();\n e in s || (s[e] = {});\n const a = s[e];\n return at(a) && Xe(n) ? n : a;\n}\nfunction Bm(t, e, n, s) {\n let a;\n for (const i of e)\n if (a = Fr(km(i, t), n), Wt(a))\n return Ui(t, a) ? qi(n, s, t, a) : a;\n}\nfunction Fr(t, e) {\n for (const n of e) {\n if (!n)\n continue;\n const s = n[t];\n if (Wt(s))\n return s;\n }\n}\nfunction qo(t) {\n let e = t._keys;\n return e || (e = t._keys = Tm(t._scopes)), e;\n}\nfunction Tm(t) {\n const e = /* @__PURE__ */ new Set();\n for (const n of t)\n for (const s of Object.keys(n).filter((a) => !a.startsWith(\"_\")))\n e.add(s);\n return Array.from(e);\n}\nfunction Nr(t, e, n, s) {\n const { iScale: a } = t, { key: i = \"r\" } = this._parsing, o = new Array(s);\n let l, r, c, u;\n for (l = 0, r = s; l < r; ++l)\n c = l + n, u = e[c], o[l] = {\n r: a.parse(_n(u, i), c)\n };\n return o;\n}\nconst Dm = Number.EPSILON || 1e-14, as = (t, e) => e < t.length && !t[e].skip && t[e], Hr = (t) => t === \"x\" ? \"y\" : \"x\";\nfunction Om(t, e, n, s) {\n const a = t.skip ? e : t, i = e, o = n.skip ? e : n, l = vi(i, a), r = vi(o, i);\n let c = l / (l + r), u = r / (l + r);\n c = isNaN(c) ? 0 : c, u = isNaN(u) ? 0 : u;\n const f = s * c, d = s * u;\n return {\n previous: {\n x: i.x - f * (o.x - a.x),\n y: i.y - f * (o.y - a.y)\n },\n next: {\n x: i.x + d * (o.x - a.x),\n y: i.y + d * (o.y - a.y)\n }\n };\n}\nfunction Lm(t, e, n) {\n const s = t.length;\n let a, i, o, l, r, c = as(t, 0);\n for (let u = 0; u < s - 1; ++u)\n if (r = c, c = as(t, u + 1), !(!r || !c)) {\n if (ws(e[u], 0, Dm)) {\n n[u] = n[u + 1] = 0;\n continue;\n }\n a = n[u] / e[u], i = n[u + 1] / e[u], l = Math.pow(a, 2) + Math.pow(i, 2), !(l <= 9) && (o = 3 / Math.sqrt(l), n[u] = a * o * e[u], n[u + 1] = i * o * e[u]);\n }\n}\nfunction Am(t, e, n = \"x\") {\n const s = Hr(n), a = t.length;\n let i, o, l, r = as(t, 0);\n for (let c = 0; c < a; ++c) {\n if (o = l, l = r, r = as(t, c + 1), !l)\n continue;\n const u = l[n], f = l[s];\n o && (i = (u - o[n]) / 3, l[`cp1${n}`] = u - i, l[`cp1${s}`] = f - i * e[c]), r && (i = (r[n] - u) / 3, l[`cp2${n}`] = u + i, l[`cp2${s}`] = f + i * e[c]);\n }\n}\nfunction Em(t, e = \"x\") {\n const n = Hr(e), s = t.length, a = Array(s).fill(0), i = Array(s);\n let o, l, r, c = as(t, 0);\n for (o = 0; o < s; ++o)\n if (l = r, r = c, c = as(t, o + 1), !!r) {\n if (c) {\n const u = c[e] - r[e];\n a[o] = u !== 0 ? (c[n] - r[n]) / u : 0;\n }\n i[o] = l ? c ? Qt(a[o - 1]) !== Qt(a[o]) ? 0 : (a[o - 1] + a[o]) / 2 : a[o - 1] : a[o];\n }\n Lm(t, a, i), Am(t, i, e);\n}\nfunction oa(t, e, n) {\n return Math.max(Math.min(t, n), e);\n}\nfunction Pm(t, e) {\n let n, s, a, i, o, l = Ls(t[0], e);\n for (n = 0, s = t.length; n < s; ++n)\n o = i, i = l, l = n < s - 1 && Ls(t[n + 1], e), i && (a = t[n], o && (a.cp1x = oa(a.cp1x, e.left, e.right), a.cp1y = oa(a.cp1y, e.top, e.bottom)), l && (a.cp2x = oa(a.cp2x, e.left, e.right), a.cp2y = oa(a.cp2y, e.top, e.bottom)));\n}\nfunction Vm(t, e, n, s, a) {\n let i, o, l, r;\n if (e.spanGaps && (t = t.filter((c) => !c.skip)), e.cubicInterpolationMode === \"monotone\")\n Em(t, a);\n else {\n let c = s ? t[t.length - 1] : t[0];\n for (i = 0, o = t.length; i < o; ++i)\n l = t[i], r = Om(\n c,\n l,\n t[Math.min(i + 1, o - (s ? 0 : 1)) % o],\n e.tension\n ), l.cp1x = r.previous.x, l.cp1y = r.previous.y, l.cp2x = r.next.x, l.cp2y = r.next.y, c = l;\n }\n e.capBezierPoints && Pm(t, n);\n}\nfunction Wr() {\n return typeof window < \"u\" && typeof document < \"u\";\n}\nfunction Ki(t) {\n let e = t.parentNode;\n return e && e.toString() === \"[object ShadowRoot]\" && (e = e.host), e;\n}\nfunction Da(t, e, n) {\n let s;\n return typeof t == \"string\" ? (s = parseInt(t, 10), t.indexOf(\"%\") !== -1 && (s = s / 100 * e.parentNode[n])) : s = t, s;\n}\nconst Na = (t) => window.getComputedStyle(t, null);\nfunction Rm(t, e) {\n return Na(t).getPropertyValue(e);\n}\nconst Im = [\"top\", \"right\", \"bottom\", \"left\"];\nfunction In(t, e, n) {\n const s = {};\n n = n ? \"-\" + n : \"\";\n for (let a = 0; a < 4; a++) {\n const i = Im[a];\n s[i] = parseFloat(t[e + \"-\" + i + n]) || 0;\n }\n return s.width = s.left + s.right, s.height = s.top + s.bottom, s;\n}\nconst Fm = (t, e, n) => (t > 0 || e > 0) && (!n || !n.shadowRoot);\nfunction Nm(t, e) {\n const n = t.touches, s = n && n.length ? n[0] : t, { offsetX: a, offsetY: i } = s;\n let o = !1, l, r;\n if (Fm(a, i, t.target))\n l = a, r = i;\n else {\n const c = e.getBoundingClientRect();\n l = s.clientX - c.left, r = s.clientY - c.top, o = !0;\n }\n return { x: l, y: r, box: o };\n}\nfunction En(t, e) {\n if (\"native\" in t)\n return t;\n const { canvas: n, currentDevicePixelRatio: s } = e, a = Na(n), i = a.boxSizing === \"border-box\", o = In(a, \"padding\"), l = In(a, \"border\", \"width\"), { x: r, y: c, box: u } = Nm(t, n), f = o.left + (u && l.left), d = o.top + (u && l.top);\n let { width: h, height: p } = e;\n return i && (h -= o.width + l.width, p -= o.height + l.height), {\n x: Math.round((r - f) / h * n.width / s),\n y: Math.round((c - d) / p * n.height / s)\n };\n}\nfunction Hm(t, e, n) {\n let s, a;\n if (e === void 0 || n === void 0) {\n const i = Ki(t);\n if (!i)\n e = t.clientWidth, n = t.clientHeight;\n else {\n const o = i.getBoundingClientRect(), l = Na(i), r = In(l, \"border\", \"width\"), c = In(l, \"padding\");\n e = o.width - c.width - r.width, n = o.height - c.height - r.height, s = Da(l.maxWidth, i, \"clientWidth\"), a = Da(l.maxHeight, i, \"clientHeight\");\n }\n }\n return {\n width: e,\n height: n,\n maxWidth: s || Ca,\n maxHeight: a || Ca\n };\n}\nconst ei = (t) => Math.round(t * 10) / 10;\nfunction Wm(t, e, n, s) {\n const a = Na(t), i = In(a, \"margin\"), o = Da(a.maxWidth, t, \"clientWidth\") || Ca, l = Da(a.maxHeight, t, \"clientHeight\") || Ca, r = Hm(t, e, n);\n let { width: c, height: u } = r;\n if (a.boxSizing === \"content-box\") {\n const f = In(a, \"border\", \"width\"), d = In(a, \"padding\");\n c -= d.width + f.width, u -= d.height + f.height;\n }\n return c = Math.max(0, c - i.width), u = Math.max(0, s ? Math.floor(c / s) : u - i.height), c = ei(Math.min(c, o, r.maxWidth)), u = ei(Math.min(u, l, r.maxHeight)), c && !u && (u = ei(c / 2)), {\n width: c,\n height: u\n };\n}\nfunction Ko(t, e, n) {\n const s = e || 1, a = Math.floor(t.height * s), i = Math.floor(t.width * s);\n t.height = a / s, t.width = i / s;\n const o = t.canvas;\n return o.style && (n || !o.style.height && !o.style.width) && (o.style.height = `${t.height}px`, o.style.width = `${t.width}px`), t.currentDevicePixelRatio !== s || o.height !== a || o.width !== i ? (t.currentDevicePixelRatio = s, o.height = a, o.width = i, t.ctx.setTransform(s, 0, 0, s, 0, 0), !0) : !1;\n}\nconst zm = function() {\n let t = !1;\n try {\n const e = {\n get passive() {\n return t = !0, !1;\n }\n };\n window.addEventListener(\"test\", null, e), window.removeEventListener(\"test\", null, e);\n } catch {\n }\n return t;\n}();\nfunction Go(t, e) {\n const n = Rm(t, e), s = n && n.match(/^(\\d+)(\\.\\d+)?px$/);\n return s ? +s[1] : void 0;\n}\nfunction Pn(t, e, n, s) {\n return {\n x: t.x + n * (e.x - t.x),\n y: t.y + n * (e.y - t.y)\n };\n}\nfunction Ym(t, e, n, s) {\n return {\n x: t.x + n * (e.x - t.x),\n y: s === \"middle\" ? n < 0.5 ? t.y : e.y : s === \"after\" ? n < 1 ? t.y : e.y : n > 0 ? e.y : t.y\n };\n}\nfunction jm(t, e, n, s) {\n const a = { x: t.cp2x, y: t.cp2y }, i = { x: e.cp1x, y: e.cp1y }, o = Pn(t, a, n), l = Pn(a, i, n), r = Pn(i, e, n), c = Pn(o, l, n), u = Pn(l, r, n);\n return Pn(c, u, n);\n}\nconst Zo = /* @__PURE__ */ new Map();\nfunction Xm(t, e) {\n e = e || {};\n const n = t + JSON.stringify(e);\n let s = Zo.get(n);\n return s || (s = new Intl.NumberFormat(t, e), Zo.set(n, s)), s;\n}\nfunction Hs(t, e, n) {\n return Xm(e, n).format(t);\n}\nconst Um = function(t, e) {\n return {\n x(n) {\n return t + t + e - n;\n },\n setWidth(n) {\n e = n;\n },\n textAlign(n) {\n return n === \"center\" ? n : n === \"right\" ? \"left\" : \"right\";\n },\n xPlus(n, s) {\n return n - s;\n },\n leftForLtr(n, s) {\n return n - s;\n }\n };\n}, qm = function() {\n return {\n x(t) {\n return t;\n },\n setWidth(t) {\n },\n textAlign(t) {\n return t;\n },\n xPlus(t, e) {\n return t + e;\n },\n leftForLtr(t, e) {\n return t;\n }\n };\n};\nfunction Gn(t, e, n) {\n return t ? Um(e, n) : qm();\n}\nfunction zr(t, e) {\n let n, s;\n (e === \"ltr\" || e === \"rtl\") && (n = t.canvas.style, s = [\n n.getPropertyValue(\"direction\"),\n n.getPropertyPriority(\"direction\")\n ], n.setProperty(\"direction\", e, \"important\"), t.prevTextDirection = s);\n}\nfunction Yr(t, e) {\n e !== void 0 && (delete t.prevTextDirection, t.canvas.style.setProperty(\"direction\", e[0], e[1]));\n}\nfunction jr(t) {\n return t === \"angle\" ? {\n between: Os,\n compare: Vv,\n normalize: Pt\n } : {\n between: dn,\n compare: (e, n) => e - n,\n normalize: (e) => e\n };\n}\nfunction Jo({ start: t, end: e, count: n, loop: s, style: a }) {\n return {\n start: t % n,\n end: e % n,\n loop: s && (e - t + 1) % n === 0,\n style: a\n };\n}\nfunction Km(t, e, n) {\n const { property: s, start: a, end: i } = n, { between: o, normalize: l } = jr(s), r = e.length;\n let { start: c, end: u, loop: f } = t, d, h;\n if (f) {\n for (c += r, u += r, d = 0, h = r; d < h && o(l(e[c % r][s]), a, i); ++d)\n c--, u--;\n c %= r, u %= r;\n }\n return u < c && (u += r), { start: c, end: u, loop: f, style: t.style };\n}\nfunction Xr(t, e, n) {\n if (!n)\n return [t];\n const { property: s, start: a, end: i } = n, o = e.length, { compare: l, between: r, normalize: c } = jr(s), { start: u, end: f, loop: d, style: h } = Km(t, e, n), p = [];\n let v = !1, m = null, g, b, S;\n const w = () => r(a, S, g) && l(a, S) !== 0, k = () => l(i, g) === 0 || r(i, S, g), C = () => v || w(), M = () => !v || k();\n for (let V = u, B = u; V <= f; ++V)\n b = e[V % o], !b.skip && (g = c(b[s]), g !== S && (v = r(g, a, i), m === null && C() && (m = l(g, a) === 0 ? V : B), m !== null && M() && (p.push(Jo({ start: m, end: V, loop: d, count: o, style: h })), m = null), B = V, S = g));\n return m !== null && p.push(Jo({ start: m, end: f, loop: d, count: o, style: h })), p;\n}\nfunction Ur(t, e) {\n const n = [], s = t.segments;\n for (let a = 0; a < s.length; a++) {\n const i = Xr(s[a], t.points, e);\n i.length && n.push(...i);\n }\n return n;\n}\nfunction Gm(t, e, n, s) {\n let a = 0, i = e - 1;\n if (n && !s)\n for (; a < e && !t[a].skip; )\n a++;\n for (; a < e && t[a].skip; )\n a++;\n for (a %= e, n && (i += a); i > a && t[i % e].skip; )\n i--;\n return i %= e, { start: a, end: i };\n}\nfunction Zm(t, e, n, s) {\n const a = t.length, i = [];\n let o = e, l = t[e], r;\n for (r = e + 1; r <= n; ++r) {\n const c = t[r % a];\n c.skip || c.stop ? l.skip || (s = !1, i.push({ start: e % a, end: (r - 1) % a, loop: s }), e = o = c.stop ? r : null) : (o = r, l.skip && (e = r)), l = c;\n }\n return o !== null && i.push({ start: e % a, end: o % a, loop: s }), i;\n}\nfunction Jm(t, e) {\n const n = t.points, s = t.options.spanGaps, a = n.length;\n if (!a)\n return [];\n const i = !!t._loop, { start: o, end: l } = Gm(n, a, i, s);\n if (s === !0)\n return Qo(t, [{ start: o, end: l, loop: i }], n, e);\n const r = l < o ? l + a : l, c = !!t._fullLoop && o === 0 && l === a - 1;\n return Qo(t, Zm(n, o, r, c), n, e);\n}\nfunction Qo(t, e, n, s) {\n return !s || !s.setContext || !n ? e : Qm(t, e, n, s);\n}\nfunction Qm(t, e, n, s) {\n const a = t._chart.getContext(), i = el(t.options), { _datasetIndex: o, options: { spanGaps: l } } = t, r = n.length, c = [];\n let u = i, f = e[0].start, d = f;\n function h(p, v, m, g) {\n const b = l ? -1 : 1;\n if (p !== v) {\n for (p += r; n[p % r].skip; )\n p -= b;\n for (; n[v % r].skip; )\n v += b;\n p % r !== v % r && (c.push({ start: p % r, end: v % r, loop: m, style: g }), u = g, f = v % r);\n }\n }\n for (const p of e) {\n f = l ? f : p.start;\n let v = n[f % r], m;\n for (d = f + 1; d <= p.end; d++) {\n const g = n[d % r];\n m = el(s.setContext(Bn(a, {\n type: \"segment\",\n p0: v,\n p1: g,\n p0DataIndex: (d - 1) % r,\n p1DataIndex: d % r,\n datasetIndex: o\n }))), eg(m, u) && h(f, d - 1, p.loop, u), v = g, u = m;\n }\n f < d - 1 && h(f, d - 1, p.loop, u);\n }\n return c;\n}\nfunction el(t) {\n return {\n backgroundColor: t.backgroundColor,\n borderCapStyle: t.borderCapStyle,\n borderDash: t.borderDash,\n borderDashOffset: t.borderDashOffset,\n borderJoinStyle: t.borderJoinStyle,\n borderWidth: t.borderWidth,\n borderColor: t.borderColor\n };\n}\nfunction eg(t, e) {\n return e && JSON.stringify(t) !== JSON.stringify(e);\n}\n/*!\n * Chart.js v3.8.0\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nclass tg {\n constructor() {\n this._request = null, this._charts = /* @__PURE__ */ new Map(), this._running = !1, this._lastDate = void 0;\n }\n _notify(e, n, s, a) {\n const i = n.listeners[a], o = n.duration;\n i.forEach((l) => l({\n chart: e,\n initial: n.initial,\n numSteps: o,\n currentStep: Math.min(s - n.start, o)\n }));\n }\n _refresh() {\n this._request || (this._running = !0, this._request = wr.call(window, () => {\n this._update(), this._request = null, this._running && this._refresh();\n }));\n }\n _update(e = Date.now()) {\n let n = 0;\n this._charts.forEach((s, a) => {\n if (!s.running || !s.items.length)\n return;\n const i = s.items;\n let o = i.length - 1, l = !1, r;\n for (; o >= 0; --o)\n r = i[o], r._active ? (r._total > s.duration && (s.duration = r._total), r.tick(e), l = !0) : (i[o] = i[i.length - 1], i.pop());\n l && (a.draw(), this._notify(a, s, e, \"progress\")), i.length || (s.running = !1, this._notify(a, s, e, \"complete\"), s.initial = !1), n += i.length;\n }), this._lastDate = e, n === 0 && (this._running = !1);\n }\n _getAnims(e) {\n const n = this._charts;\n let s = n.get(e);\n return s || (s = {\n running: !1,\n initial: !0,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n }, n.set(e, s)), s;\n }\n listen(e, n, s) {\n this._getAnims(e).listeners[n].push(s);\n }\n add(e, n) {\n !n || !n.length || this._getAnims(e).items.push(...n);\n }\n has(e) {\n return this._getAnims(e).items.length > 0;\n }\n start(e) {\n const n = this._charts.get(e);\n n && (n.running = !0, n.start = Date.now(), n.duration = n.items.reduce((s, a) => Math.max(s, a._duration), 0), this._refresh());\n }\n running(e) {\n if (!this._running)\n return !1;\n const n = this._charts.get(e);\n return !(!n || !n.running || !n.items.length);\n }\n stop(e) {\n const n = this._charts.get(e);\n if (!n || !n.items.length)\n return;\n const s = n.items;\n let a = s.length - 1;\n for (; a >= 0; --a)\n s[a].cancel();\n n.items = [], this._notify(e, n, Date.now(), \"complete\");\n }\n remove(e) {\n return this._charts.delete(e);\n }\n}\nvar ln = new tg();\nconst tl = \"transparent\", ng = {\n boolean(t, e, n) {\n return n > 0.5 ? e : t;\n },\n color(t, e, n) {\n const s = Yo(t || tl), a = s.valid && Yo(e || tl);\n return a && a.valid ? a.mix(s, n).hexString() : e;\n },\n number(t, e, n) {\n return t + (e - t) * n;\n }\n};\nclass sg {\n constructor(e, n, s, a) {\n const i = n[s];\n a = ot([e.to, a, i, e.from]);\n const o = ot([e.from, i, a]);\n this._active = !0, this._fn = e.fn || ng[e.type || typeof o], this._easing = Ss[e.easing] || Ss.linear, this._start = Math.floor(Date.now() + (e.delay || 0)), this._duration = this._total = Math.floor(e.duration), this._loop = !!e.loop, this._target = n, this._prop = s, this._from = o, this._to = a, this._promises = void 0;\n }\n active() {\n return this._active;\n }\n update(e, n, s) {\n if (this._active) {\n this._notify(!1);\n const a = this._target[this._prop], i = s - this._start, o = this._duration - i;\n this._start = s, this._duration = Math.floor(Math.max(o, e.duration)), this._total += i, this._loop = !!e.loop, this._to = ot([e.to, n, a, e.from]), this._from = ot([e.from, a, n]);\n }\n }\n cancel() {\n this._active && (this.tick(Date.now()), this._active = !1, this._notify(!1));\n }\n tick(e) {\n const n = e - this._start, s = this._duration, a = this._prop, i = this._from, o = this._loop, l = this._to;\n let r;\n if (this._active = i !== l && (o || n < s), !this._active) {\n this._target[a] = l, this._notify(!0);\n return;\n }\n if (n < 0) {\n this._target[a] = i;\n return;\n }\n r = n / s % 2, r = o && r > 1 ? 2 - r : r, r = this._easing(Math.min(1, Math.max(0, r))), this._target[a] = this._fn(i, l, r);\n }\n wait() {\n const e = this._promises || (this._promises = []);\n return new Promise((n, s) => {\n e.push({ res: n, rej: s });\n });\n }\n _notify(e) {\n const n = e ? \"res\" : \"rej\", s = this._promises || [];\n for (let a = 0; a < s.length; a++)\n s[a][n]();\n }\n}\nconst ag = [\"x\", \"y\", \"borderWidth\", \"radius\", \"tension\"], ig = [\"color\", \"borderColor\", \"backgroundColor\"];\nUe.set(\"animation\", {\n delay: void 0,\n duration: 1e3,\n easing: \"easeOutQuart\",\n fn: void 0,\n from: void 0,\n loop: void 0,\n to: void 0,\n type: void 0\n});\nconst og = Object.keys(Ue.animation);\nUe.describe(\"animation\", {\n _fallback: !1,\n _indexable: !1,\n _scriptable: (t) => t !== \"onProgress\" && t !== \"onComplete\" && t !== \"fn\"\n});\nUe.set(\"animations\", {\n colors: {\n type: \"color\",\n properties: ig\n },\n numbers: {\n type: \"number\",\n properties: ag\n }\n});\nUe.describe(\"animations\", {\n _fallback: \"animation\"\n});\nUe.set(\"transitions\", {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: \"transparent\"\n },\n visible: {\n type: \"boolean\",\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: \"transparent\"\n },\n visible: {\n type: \"boolean\",\n easing: \"linear\",\n fn: (t) => t | 0\n }\n }\n }\n});\nclass qr {\n constructor(e, n) {\n this._chart = e, this._properties = /* @__PURE__ */ new Map(), this.configure(n);\n }\n configure(e) {\n if (!Xe(e))\n return;\n const n = this._properties;\n Object.getOwnPropertyNames(e).forEach((s) => {\n const a = e[s];\n if (!Xe(a))\n return;\n const i = {};\n for (const o of og)\n i[o] = a[o];\n (at(a.properties) && a.properties || [s]).forEach((o) => {\n (o === s || !n.has(o)) && n.set(o, i);\n });\n });\n }\n _animateOptions(e, n) {\n const s = n.options, a = rg(e, s);\n if (!a)\n return [];\n const i = this._createAnimations(a, s);\n return s.$shared && lg(e.options.$animations, s).then(() => {\n e.options = s;\n }, () => {\n }), i;\n }\n _createAnimations(e, n) {\n const s = this._properties, a = [], i = e.$animations || (e.$animations = {}), o = Object.keys(n), l = Date.now();\n let r;\n for (r = o.length - 1; r >= 0; --r) {\n const c = o[r];\n if (c.charAt(0) === \"$\")\n continue;\n if (c === \"options\") {\n a.push(...this._animateOptions(e, n));\n continue;\n }\n const u = n[c];\n let f = i[c];\n const d = s.get(c);\n if (f)\n if (d && f.active()) {\n f.update(d, u, l);\n continue;\n } else\n f.cancel();\n if (!d || !d.duration) {\n e[c] = u;\n continue;\n }\n i[c] = f = new sg(d, e, c, u), a.push(f);\n }\n return a;\n }\n update(e, n) {\n if (this._properties.size === 0) {\n Object.assign(e, n);\n return;\n }\n const s = this._createAnimations(e, n);\n if (s.length)\n return ln.add(this._chart, s), !0;\n }\n}\nfunction lg(t, e) {\n const n = [], s = Object.keys(e);\n for (let a = 0; a < s.length; a++) {\n const i = t[s[a]];\n i && i.active() && n.push(i.wait());\n }\n return Promise.all(n);\n}\nfunction rg(t, e) {\n if (!e)\n return;\n let n = t.options;\n if (!n) {\n t.options = e;\n return;\n }\n return n.$shared && (t.options = n = Object.assign({}, n, { $shared: !1, $animations: {} })), n;\n}\nfunction nl(t, e) {\n const n = t && t.options || {}, s = n.reverse, a = n.min === void 0 ? e : 0, i = n.max === void 0 ? e : 0;\n return {\n start: s ? i : a,\n end: s ? a : i\n };\n}\nfunction cg(t, e, n) {\n if (n === !1)\n return !1;\n const s = nl(t, n), a = nl(e, n);\n return {\n top: a.end,\n right: s.end,\n bottom: a.start,\n left: s.start\n };\n}\nfunction ug(t) {\n let e, n, s, a;\n return Xe(t) ? (e = t.top, n = t.right, s = t.bottom, a = t.left) : e = n = s = a = t, {\n top: e,\n right: n,\n bottom: s,\n left: a,\n disabled: t === !1\n };\n}\nfunction Kr(t, e) {\n const n = [], s = t._getSortedDatasetMetas(e);\n let a, i;\n for (a = 0, i = s.length; a < i; ++a)\n n.push(s[a].index);\n return n;\n}\nfunction sl(t, e, n, s = {}) {\n const a = t.keys, i = s.mode === \"single\";\n let o, l, r, c;\n if (e !== null) {\n for (o = 0, l = a.length; o < l; ++o) {\n if (r = +a[o], r === n) {\n if (s.all)\n continue;\n break;\n }\n c = t.values[r], vt(c) && (i || e === 0 || Qt(e) === Qt(c)) && (e += c);\n }\n return e;\n }\n}\nfunction dg(t) {\n const e = Object.keys(t), n = new Array(e.length);\n let s, a, i;\n for (s = 0, a = e.length; s < a; ++s)\n i = e[s], n[s] = {\n x: i,\n y: t[i]\n };\n return n;\n}\nfunction al(t, e) {\n const n = t && t.options.stacked;\n return n || n === void 0 && e.stack !== void 0;\n}\nfunction fg(t, e, n) {\n return `${t.id}.${e.id}.${n.stack || n.type}`;\n}\nfunction hg(t) {\n const { min: e, max: n, minDefined: s, maxDefined: a } = t.getUserBounds();\n return {\n min: s ? e : Number.NEGATIVE_INFINITY,\n max: a ? n : Number.POSITIVE_INFINITY\n };\n}\nfunction pg(t, e, n) {\n const s = t[e] || (t[e] = {});\n return s[n] || (s[n] = {});\n}\nfunction il(t, e, n, s) {\n for (const a of e.getMatchingVisibleMetas(s).reverse()) {\n const i = t[a.index];\n if (n && i > 0 || !n && i < 0)\n return a.index;\n }\n return null;\n}\nfunction ol(t, e) {\n const { chart: n, _cachedMeta: s } = t, a = n._stacks || (n._stacks = {}), { iScale: i, vScale: o, index: l } = s, r = i.axis, c = o.axis, u = fg(i, o, s), f = e.length;\n let d;\n for (let h = 0; h < f; ++h) {\n const p = e[h], { [r]: v, [c]: m } = p, g = p._stacks || (p._stacks = {});\n d = g[c] = pg(a, u, v), d[l] = m, d._top = il(d, o, !0, s.type), d._bottom = il(d, o, !1, s.type);\n }\n}\nfunction ti(t, e) {\n const n = t.scales;\n return Object.keys(n).filter((s) => n[s].axis === e).shift();\n}\nfunction vg(t, e) {\n return Bn(\n t,\n {\n active: !1,\n dataset: void 0,\n datasetIndex: e,\n index: e,\n mode: \"default\",\n type: \"dataset\"\n }\n );\n}\nfunction mg(t, e, n) {\n return Bn(t, {\n active: !1,\n dataIndex: e,\n parsed: void 0,\n raw: void 0,\n element: n,\n index: e,\n mode: \"default\",\n type: \"data\"\n });\n}\nfunction ds(t, e) {\n const n = t.controller.index, s = t.vScale && t.vScale.axis;\n if (s) {\n e = e || t._parsed;\n for (const a of e) {\n const i = a._stacks;\n if (!i || i[s] === void 0 || i[s][n] === void 0)\n return;\n delete i[s][n];\n }\n }\n}\nconst ni = (t) => t === \"reset\" || t === \"none\", ll = (t, e) => e ? t : Object.assign({}, t), gg = (t, e, n) => t && !e.hidden && e._stacked && { keys: Kr(n, !0), values: null };\nclass sn {\n constructor(e, n) {\n this.chart = e, this._ctx = e.ctx, this.index = n, this._cachedDataOpts = {}, this._cachedMeta = this.getMeta(), this._type = this._cachedMeta.type, this.options = void 0, this._parsing = !1, this._data = void 0, this._objectData = void 0, this._sharedOptions = void 0, this._drawStart = void 0, this._drawCount = void 0, this.enableOptionSharing = !1, this.supportsDecimation = !1, this.$context = void 0, this._syncList = [], this.initialize();\n }\n initialize() {\n const e = this._cachedMeta;\n this.configure(), this.linkScales(), e._stacked = al(e.vScale, e), this.addElements();\n }\n updateIndex(e) {\n this.index !== e && ds(this._cachedMeta), this.index = e;\n }\n linkScales() {\n const e = this.chart, n = this._cachedMeta, s = this.getDataset(), a = (f, d, h, p) => f === \"x\" ? d : f === \"r\" ? p : h, i = n.xAxisID = Re(s.xAxisID, ti(e, \"x\")), o = n.yAxisID = Re(s.yAxisID, ti(e, \"y\")), l = n.rAxisID = Re(s.rAxisID, ti(e, \"r\")), r = n.indexAxis, c = n.iAxisID = a(r, i, o, l), u = n.vAxisID = a(r, o, i, l);\n n.xScale = this.getScaleForId(i), n.yScale = this.getScaleForId(o), n.rScale = this.getScaleForId(l), n.iScale = this.getScaleForId(c), n.vScale = this.getScaleForId(u);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(e) {\n return this.chart.scales[e];\n }\n _getOtherScale(e) {\n const n = this._cachedMeta;\n return e === n.iScale ? n.vScale : n.iScale;\n }\n reset() {\n this._update(\"reset\");\n }\n _destroy() {\n const e = this._cachedMeta;\n this._data && Xo(this._data, this), e._stacked && ds(e);\n }\n _dataCheck() {\n const e = this.getDataset(), n = e.data || (e.data = []), s = this._data;\n if (Xe(n))\n this._data = dg(n);\n else if (s !== n) {\n if (s) {\n Xo(s, this);\n const a = this._cachedMeta;\n ds(a), a._parsed = [];\n }\n n && Object.isExtensible(n) && xm(n, this), this._syncList = [], this._data = n;\n }\n }\n addElements() {\n const e = this._cachedMeta;\n this._dataCheck(), this.datasetElementType && (e.dataset = new this.datasetElementType());\n }\n buildOrUpdateElements(e) {\n const n = this._cachedMeta, s = this.getDataset();\n let a = !1;\n this._dataCheck();\n const i = n._stacked;\n n._stacked = al(n.vScale, n), n.stack !== s.stack && (a = !0, ds(n), n.stack = s.stack), this._resyncElements(e), (a || i !== n._stacked) && ol(this, n._parsed);\n }\n configure() {\n const e = this.chart.config, n = e.datasetScopeKeys(this._type), s = e.getOptionScopes(this.getDataset(), n, !0);\n this.options = e.createResolver(s, this.getContext()), this._parsing = this.options.parsing, this._cachedDataOpts = {};\n }\n parse(e, n) {\n const { _cachedMeta: s, _data: a } = this, { iScale: i, _stacked: o } = s, l = i.axis;\n let r = e === 0 && n === a.length ? !0 : s._sorted, c = e > 0 && s._parsed[e - 1], u, f, d;\n if (this._parsing === !1)\n s._parsed = a, s._sorted = !0, d = a;\n else {\n at(a[e]) ? d = this.parseArrayData(s, a, e, n) : Xe(a[e]) ? d = this.parseObjectData(s, a, e, n) : d = this.parsePrimitiveData(s, a, e, n);\n const h = () => f[l] === null || c && f[l] < c[l];\n for (u = 0; u < n; ++u)\n s._parsed[u + e] = f = d[u], r && (h() && (r = !1), c = f);\n s._sorted = r;\n }\n o && ol(this, d);\n }\n parsePrimitiveData(e, n, s, a) {\n const { iScale: i, vScale: o } = e, l = i.axis, r = o.axis, c = i.getLabels(), u = i === o, f = new Array(a);\n let d, h, p;\n for (d = 0, h = a; d < h; ++d)\n p = d + s, f[d] = {\n [l]: u || i.parse(c[p], p),\n [r]: o.parse(n[p], p)\n };\n return f;\n }\n parseArrayData(e, n, s, a) {\n const { xScale: i, yScale: o } = e, l = new Array(a);\n let r, c, u, f;\n for (r = 0, c = a; r < c; ++r)\n u = r + s, f = n[u], l[r] = {\n x: i.parse(f[0], u),\n y: o.parse(f[1], u)\n };\n return l;\n }\n parseObjectData(e, n, s, a) {\n const { xScale: i, yScale: o } = e, { xAxisKey: l = \"x\", yAxisKey: r = \"y\" } = this._parsing, c = new Array(a);\n let u, f, d, h;\n for (u = 0, f = a; u < f; ++u)\n d = u + s, h = n[d], c[u] = {\n x: i.parse(_n(h, l), d),\n y: o.parse(_n(h, r), d)\n };\n return c;\n }\n getParsed(e) {\n return this._cachedMeta._parsed[e];\n }\n getDataElement(e) {\n return this._cachedMeta.data[e];\n }\n applyStack(e, n, s) {\n const a = this.chart, i = this._cachedMeta, o = n[e.axis], l = {\n keys: Kr(a, !0),\n values: n._stacks[e.axis]\n };\n return sl(l, o, i.index, { mode: s });\n }\n updateRangeFromParsed(e, n, s, a) {\n const i = s[n.axis];\n let o = i === null ? NaN : i;\n const l = a && s._stacks[n.axis];\n a && l && (a.values = l, o = sl(a, i, this._cachedMeta.index)), e.min = Math.min(e.min, o), e.max = Math.max(e.max, o);\n }\n getMinMax(e, n) {\n const s = this._cachedMeta, a = s._parsed, i = s._sorted && e === s.iScale, o = a.length, l = this._getOtherScale(e), r = gg(n, s, this.chart), c = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY }, { min: u, max: f } = hg(l);\n let d, h;\n function p() {\n h = a[d];\n const v = h[l.axis];\n return !vt(h[e.axis]) || u > v || f < v;\n }\n for (d = 0; d < o && !(!p() && (this.updateRangeFromParsed(c, e, h, r), i)); ++d)\n ;\n if (i) {\n for (d = o - 1; d >= 0; --d)\n if (!p()) {\n this.updateRangeFromParsed(c, e, h, r);\n break;\n }\n }\n return c;\n }\n getAllParsedValues(e) {\n const n = this._cachedMeta._parsed, s = [];\n let a, i, o;\n for (a = 0, i = n.length; a < i; ++a)\n o = n[a][e.axis], vt(o) && s.push(o);\n return s;\n }\n getMaxOverflow() {\n return !1;\n }\n getLabelAndValue(e) {\n const n = this._cachedMeta, s = n.iScale, a = n.vScale, i = this.getParsed(e);\n return {\n label: s ? \"\" + s.getLabelForValue(i[s.axis]) : \"\",\n value: a ? \"\" + a.getLabelForValue(i[a.axis]) : \"\"\n };\n }\n _update(e) {\n const n = this._cachedMeta;\n this.update(e || \"default\"), n._clip = ug(Re(this.options.clip, cg(n.xScale, n.yScale, this.getMaxOverflow())));\n }\n update(e) {\n }\n draw() {\n const e = this._ctx, n = this.chart, s = this._cachedMeta, a = s.data || [], i = n.chartArea, o = [], l = this._drawStart || 0, r = this._drawCount || a.length - l, c = this.options.drawActiveElementsOnTop;\n let u;\n for (s.dataset && s.dataset.draw(e, i, l, r), u = l; u < l + r; ++u) {\n const f = a[u];\n f.hidden || (f.active && c ? o.push(f) : f.draw(e, i));\n }\n for (u = 0; u < o.length; ++u)\n o[u].draw(e, i);\n }\n getStyle(e, n) {\n const s = n ? \"active\" : \"default\";\n return e === void 0 && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(s) : this.resolveDataElementOptions(e || 0, s);\n }\n getContext(e, n, s) {\n const a = this.getDataset();\n let i;\n if (e >= 0 && e < this._cachedMeta.data.length) {\n const o = this._cachedMeta.data[e];\n i = o.$context || (o.$context = mg(this.getContext(), e, o)), i.parsed = this.getParsed(e), i.raw = a.data[e], i.index = i.dataIndex = e;\n } else\n i = this.$context || (this.$context = vg(this.chart.getContext(), this.index)), i.dataset = a, i.index = i.datasetIndex = this.index;\n return i.active = !!n, i.mode = s, i;\n }\n resolveDatasetElementOptions(e) {\n return this._resolveElementOptions(this.datasetElementType.id, e);\n }\n resolveDataElementOptions(e, n) {\n return this._resolveElementOptions(this.dataElementType.id, n, e);\n }\n _resolveElementOptions(e, n = \"default\", s) {\n const a = n === \"active\", i = this._cachedDataOpts, o = e + \"-\" + n, l = i[o], r = this.enableOptionSharing && Wt(s);\n if (l)\n return ll(l, r);\n const c = this.chart.config, u = c.datasetElementScopeKeys(this._type, e), f = a ? [`${e}Hover`, \"hover\", e, \"\"] : [e, \"\"], d = c.getOptionScopes(this.getDataset(), u), h = Object.keys(Ue.elements[e]), p = () => this.getContext(s, a), v = c.resolveNamedOptions(d, h, p, f);\n return v.$shared && (v.$shared = r, i[o] = Object.freeze(ll(v, r))), v;\n }\n _resolveAnimations(e, n, s) {\n const a = this.chart, i = this._cachedDataOpts, o = `animation-${n}`, l = i[o];\n if (l)\n return l;\n let r;\n if (a.options.animation !== !1) {\n const u = this.chart.config, f = u.datasetAnimationScopeKeys(this._type, n), d = u.getOptionScopes(this.getDataset(), f);\n r = u.createResolver(d, this.getContext(e, s, n));\n }\n const c = new qr(a, r && r.animations);\n return r && r._cacheable && (i[o] = Object.freeze(c)), c;\n }\n getSharedOptions(e) {\n if (e.$shared)\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, e));\n }\n includeOptions(e, n) {\n return !n || ni(e) || this.chart._animationsDisabled;\n }\n updateElement(e, n, s, a) {\n ni(a) ? Object.assign(e, s) : this._resolveAnimations(n, a).update(e, s);\n }\n updateSharedOptions(e, n, s) {\n e && !ni(n) && this._resolveAnimations(void 0, n).update(e, s);\n }\n _setStyle(e, n, s, a) {\n e.active = a;\n const i = this.getStyle(n, a);\n this._resolveAnimations(n, s, a).update(e, {\n options: !a && this.getSharedOptions(i) || i\n });\n }\n removeHoverStyle(e, n, s) {\n this._setStyle(e, s, \"active\", !1);\n }\n setHoverStyle(e, n, s) {\n this._setStyle(e, s, \"active\", !0);\n }\n _removeDatasetHoverStyle() {\n const e = this._cachedMeta.dataset;\n e && this._setStyle(e, void 0, \"active\", !1);\n }\n _setDatasetHoverStyle() {\n const e = this._cachedMeta.dataset;\n e && this._setStyle(e, void 0, \"active\", !0);\n }\n _resyncElements(e) {\n const n = this._data, s = this._cachedMeta.data;\n for (const [l, r, c] of this._syncList)\n this[l](r, c);\n this._syncList = [];\n const a = s.length, i = n.length, o = Math.min(i, a);\n o && this.parse(0, o), i > a ? this._insertElements(a, i - a, e) : i < a && this._removeElements(i, a - i);\n }\n _insertElements(e, n, s = !0) {\n const a = this._cachedMeta, i = a.data, o = e + n;\n let l;\n const r = (c) => {\n for (c.length += n, l = c.length - 1; l >= o; l--)\n c[l] = c[l - n];\n };\n for (r(i), l = e; l < o; ++l)\n i[l] = new this.dataElementType();\n this._parsing && r(a._parsed), this.parse(e, n), s && this.updateElements(i, e, n, \"reset\");\n }\n updateElements(e, n, s, a) {\n }\n _removeElements(e, n) {\n const s = this._cachedMeta;\n if (this._parsing) {\n const a = s._parsed.splice(e, n);\n s._stacked && ds(s, a);\n }\n s.data.splice(e, n);\n }\n _sync(e) {\n if (this._parsing)\n this._syncList.push(e);\n else {\n const [n, s, a] = e;\n this[n](s, a);\n }\n this.chart._dataChanges.push([this.index, ...e]);\n }\n _onDataPush() {\n const e = arguments.length;\n this._sync([\"_insertElements\", this.getDataset().data.length - e, e]);\n }\n _onDataPop() {\n this._sync([\"_removeElements\", this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync([\"_removeElements\", 0, 1]);\n }\n _onDataSplice(e, n) {\n n && this._sync([\"_removeElements\", e, n]);\n const s = arguments.length - 2;\n s && this._sync([\"_insertElements\", e, s]);\n }\n _onDataUnshift() {\n this._sync([\"_insertElements\", 0, arguments.length]);\n }\n}\nsn.defaults = {};\nsn.prototype.datasetElementType = null;\nsn.prototype.dataElementType = null;\nfunction bg(t, e) {\n if (!t._cache.$bar) {\n const n = t.getMatchingVisibleMetas(e);\n let s = [];\n for (let a = 0, i = n.length; a < i; a++)\n s = s.concat(n[a].controller.getAllParsedValues(t));\n t._cache.$bar = Pr(s.sort((a, i) => a - i));\n }\n return t._cache.$bar;\n}\nfunction yg(t) {\n const e = t.iScale, n = bg(e, t.type);\n let s = e._length, a, i, o, l;\n const r = () => {\n o === 32767 || o === -32768 || (Wt(l) && (s = Math.min(s, Math.abs(o - l) || s)), l = o);\n };\n for (a = 0, i = n.length; a < i; ++a)\n o = e.getPixelForValue(n[a]), r();\n for (l = void 0, a = 0, i = e.ticks.length; a < i; ++a)\n o = e.getPixelForTick(a), r();\n return s;\n}\nfunction xg(t, e, n, s) {\n const a = n.barThickness;\n let i, o;\n return He(a) ? (i = e.min * n.categoryPercentage, o = n.barPercentage) : (i = a * s, o = 1), {\n chunk: i / s,\n ratio: o,\n start: e.pixels[t] - i / 2\n };\n}\nfunction kg(t, e, n, s) {\n const a = e.pixels, i = a[t];\n let o = t > 0 ? a[t - 1] : null, l = t < a.length - 1 ? a[t + 1] : null;\n const r = n.categoryPercentage;\n o === null && (o = i - (l === null ? e.end - e.start : l - i)), l === null && (l = i + i - o);\n const c = i - (i - Math.min(o, l)) / 2 * r;\n return {\n chunk: Math.abs(l - o) / 2 * r / s,\n ratio: n.barPercentage,\n start: c\n };\n}\nfunction wg(t, e, n, s) {\n const a = n.parse(t[0], s), i = n.parse(t[1], s), o = Math.min(a, i), l = Math.max(a, i);\n let r = o, c = l;\n Math.abs(o) > Math.abs(l) && (r = l, c = o), e[n.axis] = c, e._custom = {\n barStart: r,\n barEnd: c,\n start: a,\n end: i,\n min: o,\n max: l\n };\n}\nfunction Gr(t, e, n, s) {\n return at(t) ? wg(t, e, n, s) : e[n.axis] = n.parse(t, s), e;\n}\nfunction rl(t, e, n, s) {\n const a = t.iScale, i = t.vScale, o = a.getLabels(), l = a === i, r = [];\n let c, u, f, d;\n for (c = n, u = n + s; c < u; ++c)\n d = e[c], f = {}, f[a.axis] = l || a.parse(o[c], c), r.push(Gr(d, f, i, c));\n return r;\n}\nfunction si(t) {\n return t && t.barStart !== void 0 && t.barEnd !== void 0;\n}\nfunction Sg(t, e, n) {\n return t !== 0 ? Qt(t) : (e.isHorizontal() ? 1 : -1) * (e.min >= n ? 1 : -1);\n}\nfunction _g(t) {\n let e, n, s, a, i;\n return t.horizontal ? (e = t.base > t.x, n = \"left\", s = \"right\") : (e = t.base < t.y, n = \"bottom\", s = \"top\"), e ? (a = \"end\", i = \"start\") : (a = \"start\", i = \"end\"), { start: n, end: s, reverse: e, top: a, bottom: i };\n}\nfunction Mg(t, e, n, s) {\n let a = e.borderSkipped;\n const i = {};\n if (!a) {\n t.borderSkipped = i;\n return;\n }\n const { start: o, end: l, reverse: r, top: c, bottom: u } = _g(t);\n a === \"middle\" && n && (t.enableBorderRadius = !0, (n._top || 0) === s ? a = c : (n._bottom || 0) === s ? a = u : (i[cl(u, o, l, r)] = !0, a = c)), i[cl(a, o, l, r)] = !0, t.borderSkipped = i;\n}\nfunction cl(t, e, n, s) {\n return s ? (t = Cg(t, e, n), t = ul(t, n, e)) : t = ul(t, e, n), t;\n}\nfunction Cg(t, e, n) {\n return t === e ? n : t === n ? e : t;\n}\nfunction ul(t, e, n) {\n return t === \"start\" ? e : t === \"end\" ? n : t;\n}\nfunction $g(t, { inflateAmount: e }, n) {\n t.inflateAmount = e === \"auto\" ? n === 1 ? 0.33 : 0 : e;\n}\nclass Ha extends sn {\n parsePrimitiveData(e, n, s, a) {\n return rl(e, n, s, a);\n }\n parseArrayData(e, n, s, a) {\n return rl(e, n, s, a);\n }\n parseObjectData(e, n, s, a) {\n const { iScale: i, vScale: o } = e, { xAxisKey: l = \"x\", yAxisKey: r = \"y\" } = this._parsing, c = i.axis === \"x\" ? l : r, u = o.axis === \"x\" ? l : r, f = [];\n let d, h, p, v;\n for (d = s, h = s + a; d < h; ++d)\n v = n[d], p = {}, p[i.axis] = i.parse(_n(v, c), d), f.push(Gr(_n(v, u), p, o, d));\n return f;\n }\n updateRangeFromParsed(e, n, s, a) {\n super.updateRangeFromParsed(e, n, s, a);\n const i = s._custom;\n i && n === this._cachedMeta.vScale && (e.min = Math.min(e.min, i.min), e.max = Math.max(e.max, i.max));\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(e) {\n const n = this._cachedMeta, { iScale: s, vScale: a } = n, i = this.getParsed(e), o = i._custom, l = si(o) ? \"[\" + o.start + \", \" + o.end + \"]\" : \"\" + a.getLabelForValue(i[a.axis]);\n return {\n label: \"\" + s.getLabelForValue(i[s.axis]),\n value: l\n };\n }\n initialize() {\n this.enableOptionSharing = !0, super.initialize();\n const e = this._cachedMeta;\n e.stack = this.getDataset().stack;\n }\n update(e) {\n const n = this._cachedMeta;\n this.updateElements(n.data, 0, n.data.length, e);\n }\n updateElements(e, n, s, a) {\n const i = a === \"reset\", { index: o, _cachedMeta: { vScale: l } } = this, r = l.getBasePixel(), c = l.isHorizontal(), u = this._getRuler(), f = this.resolveDataElementOptions(n, a), d = this.getSharedOptions(f), h = this.includeOptions(a, d);\n this.updateSharedOptions(d, a, f);\n for (let p = n; p < n + s; p++) {\n const v = this.getParsed(p), m = i || He(v[l.axis]) ? { base: r, head: r } : this._calculateBarValuePixels(p), g = this._calculateBarIndexPixels(p, u), b = (v._stacks || {})[l.axis], S = {\n horizontal: c,\n base: m.base,\n enableBorderRadius: !b || si(v._custom) || o === b._top || o === b._bottom,\n x: c ? m.head : g.center,\n y: c ? g.center : m.head,\n height: c ? g.size : Math.abs(m.size),\n width: c ? Math.abs(m.size) : g.size\n };\n h && (S.options = d || this.resolveDataElementOptions(p, e[p].active ? \"active\" : a));\n const w = S.options || e[p].options;\n Mg(S, w, b, o), $g(S, w, u.ratio), this.updateElement(e[p], p, S, a);\n }\n }\n _getStacks(e, n) {\n const a = this._cachedMeta.iScale, i = a.getMatchingVisibleMetas(this._type), o = a.options.stacked, l = i.length, r = [];\n let c, u;\n for (c = 0; c < l; ++c)\n if (u = i[c], !!u.controller.options.grouped) {\n if (typeof n < \"u\") {\n const f = u.controller.getParsed(n)[u.controller._cachedMeta.vScale.axis];\n if (He(f) || isNaN(f))\n continue;\n }\n if ((o === !1 || r.indexOf(u.stack) === -1 || o === void 0 && u.stack === void 0) && r.push(u.stack), u.index === e)\n break;\n }\n return r.length || r.push(void 0), r;\n }\n _getStackCount(e) {\n return this._getStacks(void 0, e).length;\n }\n _getStackIndex(e, n, s) {\n const a = this._getStacks(e, s), i = n !== void 0 ? a.indexOf(n) : -1;\n return i === -1 ? a.length - 1 : i;\n }\n _getRuler() {\n const e = this.options, n = this._cachedMeta, s = n.iScale, a = [];\n let i, o;\n for (i = 0, o = n.data.length; i < o; ++i)\n a.push(s.getPixelForValue(this.getParsed(i)[s.axis], i));\n const l = e.barThickness;\n return {\n min: l || yg(n),\n pixels: a,\n start: s._startPixel,\n end: s._endPixel,\n stackCount: this._getStackCount(),\n scale: s,\n grouped: e.grouped,\n ratio: l ? 1 : e.categoryPercentage * e.barPercentage\n };\n }\n _calculateBarValuePixels(e) {\n const { _cachedMeta: { vScale: n, _stacked: s }, options: { base: a, minBarLength: i } } = this, o = a || 0, l = this.getParsed(e), r = l._custom, c = si(r);\n let u = l[n.axis], f = 0, d = s ? this.applyStack(n, l, s) : u, h, p;\n d !== u && (f = d - u, d = u), c && (u = r.barStart, d = r.barEnd - r.barStart, u !== 0 && Qt(u) !== Qt(r.barEnd) && (f = 0), f += u);\n const v = !He(a) && !c ? a : f;\n let m = n.getPixelForValue(v);\n if (this.chart.getDataVisibility(e) ? h = n.getPixelForValue(f + d) : h = m, p = h - m, Math.abs(p) < i) {\n p = Sg(p, n, o) * i, u === o && (m -= p / 2);\n const g = n.getPixelForDecimal(0), b = n.getPixelForDecimal(1), S = Math.min(g, b), w = Math.max(g, b);\n m = Math.max(Math.min(m, w), S), h = m + p;\n }\n if (m === n.getPixelForValue(o)) {\n const g = Qt(p) * n.getLineWidthForValue(o) / 2;\n m += g, p -= g;\n }\n return {\n size: p,\n base: m,\n head: h,\n center: h + p / 2\n };\n }\n _calculateBarIndexPixels(e, n) {\n const s = n.scale, a = this.options, i = a.skipNull, o = Re(a.maxBarThickness, 1 / 0);\n let l, r;\n if (n.grouped) {\n const c = i ? this._getStackCount(e) : n.stackCount, u = a.barThickness === \"flex\" ? kg(e, n, a, c) : xg(e, n, a, c), f = this._getStackIndex(this.index, this._cachedMeta.stack, i ? e : void 0);\n l = u.start + u.chunk * f + u.chunk / 2, r = Math.min(o, u.chunk * u.ratio);\n } else\n l = s.getPixelForValue(this.getParsed(e)[s.axis], e), r = Math.min(o, n.min * n.ratio);\n return {\n base: l - r / 2,\n head: l + r / 2,\n center: l,\n size: r\n };\n }\n draw() {\n const e = this._cachedMeta, n = e.vScale, s = e.data, a = s.length;\n let i = 0;\n for (; i < a; ++i)\n this.getParsed(i)[n.axis] !== null && s[i].draw(this._ctx);\n }\n}\nHa.id = \"bar\";\nHa.defaults = {\n datasetElementType: !1,\n dataElementType: \"bar\",\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: !0,\n animations: {\n numbers: {\n type: \"number\",\n properties: [\"x\", \"y\", \"base\", \"width\", \"height\"]\n }\n }\n};\nHa.overrides = {\n scales: {\n _index_: {\n type: \"category\",\n offset: !0,\n grid: {\n offset: !0\n }\n },\n _value_: {\n type: \"linear\",\n beginAtZero: !0\n }\n }\n};\nclass Wa extends sn {\n initialize() {\n this.enableOptionSharing = !0, super.initialize();\n }\n parsePrimitiveData(e, n, s, a) {\n const i = super.parsePrimitiveData(e, n, s, a);\n for (let o = 0; o < i.length; o++)\n i[o]._custom = this.resolveDataElementOptions(o + s).radius;\n return i;\n }\n parseArrayData(e, n, s, a) {\n const i = super.parseArrayData(e, n, s, a);\n for (let o = 0; o < i.length; o++) {\n const l = n[s + o];\n i[o]._custom = Re(l[2], this.resolveDataElementOptions(o + s).radius);\n }\n return i;\n }\n parseObjectData(e, n, s, a) {\n const i = super.parseObjectData(e, n, s, a);\n for (let o = 0; o < i.length; o++) {\n const l = n[s + o];\n i[o]._custom = Re(l && l.r && +l.r, this.resolveDataElementOptions(o + s).radius);\n }\n return i;\n }\n getMaxOverflow() {\n const e = this._cachedMeta.data;\n let n = 0;\n for (let s = e.length - 1; s >= 0; --s)\n n = Math.max(n, e[s].size(this.resolveDataElementOptions(s)) / 2);\n return n > 0 && n;\n }\n getLabelAndValue(e) {\n const n = this._cachedMeta, { xScale: s, yScale: a } = n, i = this.getParsed(e), o = s.getLabelForValue(i.x), l = a.getLabelForValue(i.y), r = i._custom;\n return {\n label: n.label,\n value: \"(\" + o + \", \" + l + (r ? \", \" + r : \"\") + \")\"\n };\n }\n update(e) {\n const n = this._cachedMeta.data;\n this.updateElements(n, 0, n.length, e);\n }\n updateElements(e, n, s, a) {\n const i = a === \"reset\", { iScale: o, vScale: l } = this._cachedMeta, r = this.resolveDataElementOptions(n, a), c = this.getSharedOptions(r), u = this.includeOptions(a, c), f = o.axis, d = l.axis;\n for (let h = n; h < n + s; h++) {\n const p = e[h], v = !i && this.getParsed(h), m = {}, g = m[f] = i ? o.getPixelForDecimal(0.5) : o.getPixelForValue(v[f]), b = m[d] = i ? l.getBasePixel() : l.getPixelForValue(v[d]);\n m.skip = isNaN(g) || isNaN(b), u && (m.options = this.resolveDataElementOptions(h, p.active ? \"active\" : a), i && (m.options.radius = 0)), this.updateElement(p, h, m, a);\n }\n this.updateSharedOptions(c, a, r);\n }\n resolveDataElementOptions(e, n) {\n const s = this.getParsed(e);\n let a = super.resolveDataElementOptions(e, n);\n a.$shared && (a = Object.assign({}, a, { $shared: !1 }));\n const i = a.radius;\n return n !== \"active\" && (a.radius = 0), a.radius += Re(s && s._custom, i), a;\n }\n}\nWa.id = \"bubble\";\nWa.defaults = {\n datasetElementType: !1,\n dataElementType: \"point\",\n animations: {\n numbers: {\n type: \"number\",\n properties: [\"x\", \"y\", \"borderWidth\", \"radius\"]\n }\n }\n};\nWa.overrides = {\n scales: {\n x: {\n type: \"linear\"\n },\n y: {\n type: \"linear\"\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return \"\";\n }\n }\n }\n }\n};\nfunction Bg(t, e, n) {\n let s = 1, a = 1, i = 0, o = 0;\n if (e < tt) {\n const l = t, r = l + e, c = Math.cos(l), u = Math.sin(l), f = Math.cos(r), d = Math.sin(r), h = (S, w, k) => Os(S, l, r, !0) ? 1 : Math.max(w, w * n, k, k * n), p = (S, w, k) => Os(S, l, r, !0) ? -1 : Math.min(w, w * n, k, k * n), v = h(0, c, f), m = h(ft, u, d), g = p(rt, c, f), b = p(rt + ft, u, d);\n s = (v - g) / 2, a = (m - b) / 2, i = -(v + g) / 2, o = -(m + b) / 2;\n }\n return { ratioX: s, ratioY: a, offsetX: i, offsetY: o };\n}\nclass rs extends sn {\n constructor(e, n) {\n super(e, n), this.enableOptionSharing = !0, this.innerRadius = void 0, this.outerRadius = void 0, this.offsetX = void 0, this.offsetY = void 0;\n }\n linkScales() {\n }\n parse(e, n) {\n const s = this.getDataset().data, a = this._cachedMeta;\n if (this._parsing === !1)\n a._parsed = s;\n else {\n let i = (r) => +s[r];\n if (Xe(s[e])) {\n const { key: r = \"value\" } = this._parsing;\n i = (c) => +_n(s[c], r);\n }\n let o, l;\n for (o = e, l = e + n; o < l; ++o)\n a._parsed[o] = i(o);\n }\n }\n _getRotation() {\n return Yt(this.options.rotation - 90);\n }\n _getCircumference() {\n return Yt(this.options.circumference);\n }\n _getRotationExtents() {\n let e = tt, n = -tt;\n for (let s = 0; s < this.chart.data.datasets.length; ++s)\n if (this.chart.isDatasetVisible(s)) {\n const a = this.chart.getDatasetMeta(s).controller, i = a._getRotation(), o = a._getCircumference();\n e = Math.min(e, i), n = Math.max(n, i + o);\n }\n return {\n rotation: e,\n circumference: n - e\n };\n }\n update(e) {\n const n = this.chart, { chartArea: s } = n, a = this._cachedMeta, i = a.data, o = this.getMaxBorderWidth() + this.getMaxOffset(i) + this.options.spacing, l = Math.max((Math.min(s.width, s.height) - o) / 2, 0), r = Math.min(Cv(this.options.cutout, l), 1), c = this._getRingWeight(this.index), { circumference: u, rotation: f } = this._getRotationExtents(), { ratioX: d, ratioY: h, offsetX: p, offsetY: v } = Bg(f, u, r), m = (s.width - o) / d, g = (s.height - o) / h, b = Math.max(Math.min(m, g) / 2, 0), S = _r(this.options.radius, b), w = Math.max(S * r, 0), k = (S - w) / this._getVisibleDatasetWeightTotal();\n this.offsetX = p * S, this.offsetY = v * S, a.total = this.calculateTotal(), this.outerRadius = S - k * this._getRingWeightOffset(this.index), this.innerRadius = Math.max(this.outerRadius - k * c, 0), this.updateElements(i, 0, i.length, e);\n }\n _circumference(e, n) {\n const s = this.options, a = this._cachedMeta, i = this._getCircumference();\n return n && s.animation.animateRotate || !this.chart.getDataVisibility(e) || a._parsed[e] === null || a.data[e].hidden ? 0 : this.calculateCircumference(a._parsed[e] * i / tt);\n }\n updateElements(e, n, s, a) {\n const i = a === \"reset\", o = this.chart, l = o.chartArea, c = o.options.animation, u = (l.left + l.right) / 2, f = (l.top + l.bottom) / 2, d = i && c.animateScale, h = d ? 0 : this.innerRadius, p = d ? 0 : this.outerRadius, v = this.resolveDataElementOptions(n, a), m = this.getSharedOptions(v), g = this.includeOptions(a, m);\n let b = this._getRotation(), S;\n for (S = 0; S < n; ++S)\n b += this._circumference(S, i);\n for (S = n; S < n + s; ++S) {\n const w = this._circumference(S, i), k = e[S], C = {\n x: u + this.offsetX,\n y: f + this.offsetY,\n startAngle: b,\n endAngle: b + w,\n circumference: w,\n outerRadius: p,\n innerRadius: h\n };\n g && (C.options = m || this.resolveDataElementOptions(S, k.active ? \"active\" : a)), b += w, this.updateElement(k, S, C, a);\n }\n this.updateSharedOptions(m, a, v);\n }\n calculateTotal() {\n const e = this._cachedMeta, n = e.data;\n let s = 0, a;\n for (a = 0; a < n.length; a++) {\n const i = e._parsed[a];\n i !== null && !isNaN(i) && this.chart.getDataVisibility(a) && !n[a].hidden && (s += Math.abs(i));\n }\n return s;\n }\n calculateCircumference(e) {\n const n = this._cachedMeta.total;\n return n > 0 && !isNaN(e) ? tt * (Math.abs(e) / n) : 0;\n }\n getLabelAndValue(e) {\n const n = this._cachedMeta, s = this.chart, a = s.data.labels || [], i = Hs(n._parsed[e], s.options.locale);\n return {\n label: a[e] || \"\",\n value: i\n };\n }\n getMaxBorderWidth(e) {\n let n = 0;\n const s = this.chart;\n let a, i, o, l, r;\n if (!e) {\n for (a = 0, i = s.data.datasets.length; a < i; ++a)\n if (s.isDatasetVisible(a)) {\n o = s.getDatasetMeta(a), e = o.data, l = o.controller;\n break;\n }\n }\n if (!e)\n return 0;\n for (a = 0, i = e.length; a < i; ++a)\n r = l.resolveDataElementOptions(a), r.borderAlign !== \"inner\" && (n = Math.max(n, r.borderWidth || 0, r.hoverBorderWidth || 0));\n return n;\n }\n getMaxOffset(e) {\n let n = 0;\n for (let s = 0, a = e.length; s < a; ++s) {\n const i = this.resolveDataElementOptions(s);\n n = Math.max(n, i.offset || 0, i.hoverOffset || 0);\n }\n return n;\n }\n _getRingWeightOffset(e) {\n let n = 0;\n for (let s = 0; s < e; ++s)\n this.chart.isDatasetVisible(s) && (n += this._getRingWeight(s));\n return n;\n }\n _getRingWeight(e) {\n return Math.max(Re(this.chart.data.datasets[e].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nrs.id = \"doughnut\";\nrs.defaults = {\n datasetElementType: !1,\n dataElementType: \"arc\",\n animation: {\n animateRotate: !0,\n animateScale: !1\n },\n animations: {\n numbers: {\n type: \"number\",\n properties: [\"circumference\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"startAngle\", \"x\", \"y\", \"offset\", \"borderWidth\", \"spacing\"]\n }\n },\n cutout: \"50%\",\n rotation: 0,\n circumference: 360,\n radius: \"100%\",\n spacing: 0,\n indexAxis: \"r\"\n};\nrs.descriptors = {\n _scriptable: (t) => t !== \"spacing\",\n _indexable: (t) => t !== \"spacing\"\n};\nrs.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(t) {\n const e = t.data;\n if (e.labels.length && e.datasets.length) {\n const { labels: { pointStyle: n } } = t.legend.options;\n return e.labels.map((s, a) => {\n const o = t.getDatasetMeta(0).controller.getStyle(a);\n return {\n text: s,\n fillStyle: o.backgroundColor,\n strokeStyle: o.borderColor,\n lineWidth: o.borderWidth,\n pointStyle: n,\n hidden: !t.getDataVisibility(a),\n index: a\n };\n });\n }\n return [];\n }\n },\n onClick(t, e, n) {\n n.chart.toggleDataVisibility(e.index), n.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return \"\";\n },\n label(t) {\n let e = t.label;\n const n = \": \" + t.formattedValue;\n return at(e) ? (e = e.slice(), e[0] += n) : e += n, e;\n }\n }\n }\n }\n};\nclass Ws extends sn {\n initialize() {\n this.enableOptionSharing = !0, this.supportsDecimation = !0, super.initialize();\n }\n update(e) {\n const n = this._cachedMeta, { dataset: s, data: a = [], _dataset: i } = n, o = this.chart._animationsDisabled;\n let { start: l, count: r } = Tg(n, a, o);\n this._drawStart = l, this._drawCount = r, Dg(n) && (l = 0, r = a.length), s._chart = this.chart, s._datasetIndex = this.index, s._decimated = !!i._decimated, s.points = a;\n const c = this.resolveDatasetElementOptions(e);\n this.options.showLine || (c.borderWidth = 0), c.segment = this.options.segment, this.updateElement(s, void 0, {\n animated: !o,\n options: c\n }, e), this.updateElements(a, l, r, e);\n }\n updateElements(e, n, s, a) {\n const i = a === \"reset\", { iScale: o, vScale: l, _stacked: r, _dataset: c } = this._cachedMeta, u = this.resolveDataElementOptions(n, a), f = this.getSharedOptions(u), d = this.includeOptions(a, f), h = o.axis, p = l.axis, { spanGaps: v, segment: m } = this.options, g = Ds(v) ? v : Number.POSITIVE_INFINITY, b = this.chart._animationsDisabled || i || a === \"none\";\n let S = n > 0 && this.getParsed(n - 1);\n for (let w = n; w < n + s; ++w) {\n const k = e[w], C = this.getParsed(w), M = b ? k : {}, V = He(C[p]), B = M[h] = o.getPixelForValue(C[h], w), D = M[p] = i || V ? l.getBasePixel() : l.getPixelForValue(r ? this.applyStack(l, C, r) : C[p], w);\n M.skip = isNaN(B) || isNaN(D) || V, M.stop = w > 0 && Math.abs(C[h] - S[h]) > g, m && (M.parsed = C, M.raw = c.data[w]), d && (M.options = f || this.resolveDataElementOptions(w, k.active ? \"active\" : a)), b || this.updateElement(k, w, M, a), S = C;\n }\n this.updateSharedOptions(f, a, u);\n }\n getMaxOverflow() {\n const e = this._cachedMeta, n = e.dataset, s = n.options && n.options.borderWidth || 0, a = e.data || [];\n if (!a.length)\n return s;\n const i = a[0].size(this.resolveDataElementOptions(0)), o = a[a.length - 1].size(this.resolveDataElementOptions(a.length - 1));\n return Math.max(s, i, o) / 2;\n }\n draw() {\n const e = this._cachedMeta;\n e.dataset.updateControlPoints(this.chart.chartArea, e.iScale.axis), super.draw();\n }\n}\nWs.id = \"line\";\nWs.defaults = {\n datasetElementType: \"line\",\n dataElementType: \"point\",\n showLine: !0,\n spanGaps: !1\n};\nWs.overrides = {\n scales: {\n _index_: {\n type: \"category\"\n },\n _value_: {\n type: \"linear\"\n }\n }\n};\nfunction Tg(t, e, n) {\n const s = e.length;\n let a = 0, i = s;\n if (t._sorted) {\n const { iScale: o, _parsed: l } = t, r = o.axis, { min: c, max: u, minDefined: f, maxDefined: d } = o.getUserBounds();\n f && (a = xt(\n Math.min(\n fn(l, o.axis, c).lo,\n n ? s : fn(e, r, o.getPixelForValue(c)).lo\n ),\n 0,\n s - 1\n )), d ? i = xt(\n Math.max(\n fn(l, o.axis, u).hi + 1,\n n ? 0 : fn(e, r, o.getPixelForValue(u)).hi + 1\n ),\n a,\n s\n ) - a : i = s - a;\n }\n return { start: a, count: i };\n}\nfunction Dg(t) {\n const { xScale: e, yScale: n, _scaleRanges: s } = t, a = {\n xmin: e.min,\n xmax: e.max,\n ymin: n.min,\n ymax: n.max\n };\n if (!s)\n return t._scaleRanges = a, !0;\n const i = s.xmin !== e.min || s.xmax !== e.max || s.ymin !== n.min || s.ymax !== n.max;\n return Object.assign(s, a), i;\n}\nclass za extends sn {\n constructor(e, n) {\n super(e, n), this.innerRadius = void 0, this.outerRadius = void 0;\n }\n getLabelAndValue(e) {\n const n = this._cachedMeta, s = this.chart, a = s.data.labels || [], i = Hs(n._parsed[e].r, s.options.locale);\n return {\n label: a[e] || \"\",\n value: i\n };\n }\n parseObjectData(e, n, s, a) {\n return Nr.bind(this)(e, n, s, a);\n }\n update(e) {\n const n = this._cachedMeta.data;\n this._updateRadius(), this.updateElements(n, 0, n.length, e);\n }\n getMinMax() {\n const e = this._cachedMeta, n = { min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY };\n return e.data.forEach((s, a) => {\n const i = this.getParsed(a).r;\n !isNaN(i) && this.chart.getDataVisibility(a) && (i < n.min && (n.min = i), i > n.max && (n.max = i));\n }), n;\n }\n _updateRadius() {\n const e = this.chart, n = e.chartArea, s = e.options, a = Math.min(n.right - n.left, n.bottom - n.top), i = Math.max(a / 2, 0), o = Math.max(s.cutoutPercentage ? i / 100 * s.cutoutPercentage : 1, 0), l = (i - o) / e.getVisibleDatasetCount();\n this.outerRadius = i - l * this.index, this.innerRadius = this.outerRadius - l;\n }\n updateElements(e, n, s, a) {\n const i = a === \"reset\", o = this.chart, r = o.options.animation, c = this._cachedMeta.rScale, u = c.xCenter, f = c.yCenter, d = c.getIndexAngle(0) - 0.5 * rt;\n let h = d, p;\n const v = 360 / this.countVisibleElements();\n for (p = 0; p < n; ++p)\n h += this._computeAngle(p, a, v);\n for (p = n; p < n + s; p++) {\n const m = e[p];\n let g = h, b = h + this._computeAngle(p, a, v), S = o.getDataVisibility(p) ? c.getDistanceFromCenterForValue(this.getParsed(p).r) : 0;\n h = b, i && (r.animateScale && (S = 0), r.animateRotate && (g = b = d));\n const w = {\n x: u,\n y: f,\n innerRadius: 0,\n outerRadius: S,\n startAngle: g,\n endAngle: b,\n options: this.resolveDataElementOptions(p, m.active ? \"active\" : a)\n };\n this.updateElement(m, p, w, a);\n }\n }\n countVisibleElements() {\n const e = this._cachedMeta;\n let n = 0;\n return e.data.forEach((s, a) => {\n !isNaN(this.getParsed(a).r) && this.chart.getDataVisibility(a) && n++;\n }), n;\n }\n _computeAngle(e, n, s) {\n return this.chart.getDataVisibility(e) ? Yt(this.resolveDataElementOptions(e, n).angle || s) : 0;\n }\n}\nza.id = \"polarArea\";\nza.defaults = {\n dataElementType: \"arc\",\n animation: {\n animateRotate: !0,\n animateScale: !0\n },\n animations: {\n numbers: {\n type: \"number\",\n properties: [\"x\", \"y\", \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\"]\n }\n },\n indexAxis: \"r\",\n startAngle: 0\n};\nza.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(t) {\n const e = t.data;\n if (e.labels.length && e.datasets.length) {\n const { labels: { pointStyle: n } } = t.legend.options;\n return e.labels.map((s, a) => {\n const o = t.getDatasetMeta(0).controller.getStyle(a);\n return {\n text: s,\n fillStyle: o.backgroundColor,\n strokeStyle: o.borderColor,\n lineWidth: o.borderWidth,\n pointStyle: n,\n hidden: !t.getDataVisibility(a),\n index: a\n };\n });\n }\n return [];\n }\n },\n onClick(t, e, n) {\n n.chart.toggleDataVisibility(e.index), n.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return \"\";\n },\n label(t) {\n return t.chart.data.labels[t.dataIndex] + \": \" + t.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: \"radialLinear\",\n angleLines: {\n display: !1\n },\n beginAtZero: !0,\n grid: {\n circular: !0\n },\n pointLabels: {\n display: !1\n },\n startAngle: 0\n }\n }\n};\nclass Gi extends rs {\n}\nGi.id = \"pie\";\nGi.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: \"100%\"\n};\nclass Ya extends sn {\n getLabelAndValue(e) {\n const n = this._cachedMeta.vScale, s = this.getParsed(e);\n return {\n label: n.getLabels()[e],\n value: \"\" + n.getLabelForValue(s[n.axis])\n };\n }\n parseObjectData(e, n, s, a) {\n return Nr.bind(this)(e, n, s, a);\n }\n update(e) {\n const n = this._cachedMeta, s = n.dataset, a = n.data || [], i = n.iScale.getLabels();\n if (s.points = a, e !== \"resize\") {\n const o = this.resolveDatasetElementOptions(e);\n this.options.showLine || (o.borderWidth = 0);\n const l = {\n _loop: !0,\n _fullLoop: i.length === a.length,\n options: o\n };\n this.updateElement(s, void 0, l, e);\n }\n this.updateElements(a, 0, a.length, e);\n }\n updateElements(e, n, s, a) {\n const i = this._cachedMeta.rScale, o = a === \"reset\";\n for (let l = n; l < n + s; l++) {\n const r = e[l], c = this.resolveDataElementOptions(l, r.active ? \"active\" : a), u = i.getPointPositionForValue(l, this.getParsed(l).r), f = o ? i.xCenter : u.x, d = o ? i.yCenter : u.y, h = {\n x: f,\n y: d,\n angle: u.angle,\n skip: isNaN(f) || isNaN(d),\n options: c\n };\n this.updateElement(r, l, h, a);\n }\n }\n}\nYa.id = \"radar\";\nYa.defaults = {\n datasetElementType: \"line\",\n dataElementType: \"point\",\n indexAxis: \"r\",\n showLine: !0,\n elements: {\n line: {\n fill: \"start\"\n }\n }\n};\nYa.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: \"radialLinear\"\n }\n }\n};\nclass ja extends Ws {\n}\nja.id = \"scatter\";\nja.defaults = {\n showLine: !1,\n fill: !1\n};\nja.overrides = {\n interaction: {\n mode: \"point\"\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return \"\";\n },\n label(t) {\n return \"(\" + t.label + \", \" + t.formattedValue + \")\";\n }\n }\n }\n },\n scales: {\n x: {\n type: \"linear\"\n },\n y: {\n type: \"linear\"\n }\n }\n};\nvar Og = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n BarController: Ha,\n BubbleController: Wa,\n DoughnutController: rs,\n LineController: Ws,\n PolarAreaController: za,\n PieController: Gi,\n RadarController: Ya,\n ScatterController: ja\n});\nfunction An() {\n throw new Error(\"This method is not implemented: Check that a complete date adapter is provided.\");\n}\nclass bi {\n constructor(e) {\n this.options = e || {};\n }\n formats() {\n return An();\n }\n parse(e, n) {\n return An();\n }\n format(e, n) {\n return An();\n }\n add(e, n, s) {\n return An();\n }\n diff(e, n, s) {\n return An();\n }\n startOf(e, n, s) {\n return An();\n }\n endOf(e, n) {\n return An();\n }\n}\nbi.override = function(t) {\n Object.assign(bi.prototype, t);\n};\nvar Lg = {\n _date: bi\n};\nfunction Ag(t, e, n, s) {\n const { controller: a, data: i, _sorted: o } = t, l = a._cachedMeta.iScale;\n if (l && e === l.axis && e !== \"r\" && o && i.length) {\n const r = l._reversePixels ? bm : fn;\n if (s) {\n if (a._sharedOptions) {\n const c = i[0], u = typeof c.getRange == \"function\" && c.getRange(e);\n if (u) {\n const f = r(i, e, n - u), d = r(i, e, n + u);\n return { lo: f.lo, hi: d.hi };\n }\n }\n } else return r(i, e, n);\n }\n return { lo: 0, hi: i.length - 1 };\n}\nfunction zs(t, e, n, s, a) {\n const i = t.getSortedVisibleDatasetMetas(), o = n[e];\n for (let l = 0, r = i.length; l < r; ++l) {\n const { index: c, data: u } = i[l], { lo: f, hi: d } = Ag(i[l], e, o, a);\n for (let h = f; h <= d; ++h) {\n const p = u[h];\n p.skip || s(p, c, h);\n }\n }\n}\nfunction Eg(t) {\n const e = t.indexOf(\"x\") !== -1, n = t.indexOf(\"y\") !== -1;\n return function(s, a) {\n const i = e ? Math.abs(s.x - a.x) : 0, o = n ? Math.abs(s.y - a.y) : 0;\n return Math.sqrt(Math.pow(i, 2) + Math.pow(o, 2));\n };\n}\nfunction ai(t, e, n, s, a) {\n const i = [];\n return !a && !t.isPointInArea(e) || zs(t, n, e, function(l, r, c) {\n !a && !Ls(l, t.chartArea, 0) || l.inRange(e.x, e.y, s) && i.push({ element: l, datasetIndex: r, index: c });\n }, !0), i;\n}\nfunction Pg(t, e, n, s) {\n let a = [];\n function i(o, l, r) {\n const { startAngle: c, endAngle: u } = o.getProps([\"startAngle\", \"endAngle\"], s), { angle: f } = $r(o, { x: e.x, y: e.y });\n Os(f, c, u) && a.push({ element: o, datasetIndex: l, index: r });\n }\n return zs(t, n, e, i), a;\n}\nfunction Vg(t, e, n, s, a, i) {\n let o = [];\n const l = Eg(n);\n let r = Number.POSITIVE_INFINITY;\n function c(u, f, d) {\n const h = u.inRange(e.x, e.y, a);\n if (s && !h)\n return;\n const p = u.getCenterPoint(a);\n if (!(!!i || t.isPointInArea(p)) && !h)\n return;\n const m = l(e, p);\n m < r ? (o = [{ element: u, datasetIndex: f, index: d }], r = m) : m === r && o.push({ element: u, datasetIndex: f, index: d });\n }\n return zs(t, n, e, c), o;\n}\nfunction ii(t, e, n, s, a, i) {\n return !i && !t.isPointInArea(e) ? [] : n === \"r\" && !s ? Pg(t, e, n, a) : Vg(t, e, n, s, a, i);\n}\nfunction dl(t, e, n, s, a) {\n const i = [], o = n === \"x\" ? \"inXRange\" : \"inYRange\";\n let l = !1;\n return zs(t, n, e, (r, c, u) => {\n r[o](e[n], a) && (i.push({ element: r, datasetIndex: c, index: u }), l = l || r.inRange(e.x, e.y, a));\n }), s && !l ? [] : i;\n}\nvar Rg = {\n evaluateInteractionItems: zs,\n modes: {\n index(t, e, n, s) {\n const a = En(e, t), i = n.axis || \"x\", o = n.includeInvisible || !1, l = n.intersect ? ai(t, a, i, s, o) : ii(t, a, i, !1, s, o), r = [];\n return l.length ? (t.getSortedVisibleDatasetMetas().forEach((c) => {\n const u = l[0].index, f = c.data[u];\n f && !f.skip && r.push({ element: f, datasetIndex: c.index, index: u });\n }), r) : [];\n },\n dataset(t, e, n, s) {\n const a = En(e, t), i = n.axis || \"xy\", o = n.includeInvisible || !1;\n let l = n.intersect ? ai(t, a, i, s, o) : ii(t, a, i, !1, s, o);\n if (l.length > 0) {\n const r = l[0].datasetIndex, c = t.getDatasetMeta(r).data;\n l = [];\n for (let u = 0; u < c.length; ++u)\n l.push({ element: c[u], datasetIndex: r, index: u });\n }\n return l;\n },\n point(t, e, n, s) {\n const a = En(e, t), i = n.axis || \"xy\", o = n.includeInvisible || !1;\n return ai(t, a, i, s, o);\n },\n nearest(t, e, n, s) {\n const a = En(e, t), i = n.axis || \"xy\", o = n.includeInvisible || !1;\n return ii(t, a, i, n.intersect, s, o);\n },\n x(t, e, n, s) {\n const a = En(e, t);\n return dl(t, a, \"x\", n.intersect, s);\n },\n y(t, e, n, s) {\n const a = En(e, t);\n return dl(t, a, \"y\", n.intersect, s);\n }\n }\n};\nconst Zr = [\"left\", \"top\", \"right\", \"bottom\"];\nfunction fs(t, e) {\n return t.filter((n) => n.pos === e);\n}\nfunction fl(t, e) {\n return t.filter((n) => Zr.indexOf(n.pos) === -1 && n.box.axis === e);\n}\nfunction hs(t, e) {\n return t.sort((n, s) => {\n const a = e ? s : n, i = e ? n : s;\n return a.weight === i.weight ? a.index - i.index : a.weight - i.weight;\n });\n}\nfunction Ig(t) {\n const e = [];\n let n, s, a, i, o, l;\n for (n = 0, s = (t || []).length; n < s; ++n)\n a = t[n], { position: i, options: { stack: o, stackWeight: l = 1 } } = a, e.push({\n index: n,\n box: a,\n pos: i,\n horizontal: a.isHorizontal(),\n weight: a.weight,\n stack: o && i + o,\n stackWeight: l\n });\n return e;\n}\nfunction Fg(t) {\n const e = {};\n for (const n of t) {\n const { stack: s, pos: a, stackWeight: i } = n;\n if (!s || !Zr.includes(a))\n continue;\n const o = e[s] || (e[s] = { count: 0, placed: 0, weight: 0, size: 0 });\n o.count++, o.weight += i;\n }\n return e;\n}\nfunction Ng(t, e) {\n const n = Fg(t), { vBoxMaxWidth: s, hBoxMaxHeight: a } = e;\n let i, o, l;\n for (i = 0, o = t.length; i < o; ++i) {\n l = t[i];\n const { fullSize: r } = l.box, c = n[l.stack], u = c && l.stackWeight / c.weight;\n l.horizontal ? (l.width = u ? u * s : r && e.availableWidth, l.height = a) : (l.width = s, l.height = u ? u * a : r && e.availableHeight);\n }\n return n;\n}\nfunction Hg(t) {\n const e = Ig(t), n = hs(e.filter((c) => c.box.fullSize), !0), s = hs(fs(e, \"left\"), !0), a = hs(fs(e, \"right\")), i = hs(fs(e, \"top\"), !0), o = hs(fs(e, \"bottom\")), l = fl(e, \"x\"), r = fl(e, \"y\");\n return {\n fullSize: n,\n leftAndTop: s.concat(i),\n rightAndBottom: a.concat(r).concat(o).concat(l),\n chartArea: fs(e, \"chartArea\"),\n vertical: s.concat(a).concat(r),\n horizontal: i.concat(o).concat(l)\n };\n}\nfunction hl(t, e, n, s) {\n return Math.max(t[n], e[n]) + Math.max(t[s], e[s]);\n}\nfunction Jr(t, e) {\n t.top = Math.max(t.top, e.top), t.left = Math.max(t.left, e.left), t.bottom = Math.max(t.bottom, e.bottom), t.right = Math.max(t.right, e.right);\n}\nfunction Wg(t, e, n, s) {\n const { pos: a, box: i } = n, o = t.maxPadding;\n if (!Xe(a)) {\n n.size && (t[a] -= n.size);\n const f = s[n.stack] || { size: 0, count: 1 };\n f.size = Math.max(f.size, n.horizontal ? i.height : i.width), n.size = f.size / f.count, t[a] += n.size;\n }\n i.getPadding && Jr(o, i.getPadding());\n const l = Math.max(0, e.outerWidth - hl(o, t, \"left\", \"right\")), r = Math.max(0, e.outerHeight - hl(o, t, \"top\", \"bottom\")), c = l !== t.w, u = r !== t.h;\n return t.w = l, t.h = r, n.horizontal ? { same: c, other: u } : { same: u, other: c };\n}\nfunction zg(t) {\n const e = t.maxPadding;\n function n(s) {\n const a = Math.max(e[s] - t[s], 0);\n return t[s] += a, a;\n }\n t.y += n(\"top\"), t.x += n(\"left\"), n(\"right\"), n(\"bottom\");\n}\nfunction Yg(t, e) {\n const n = e.maxPadding;\n function s(a) {\n const i = { left: 0, top: 0, right: 0, bottom: 0 };\n return a.forEach((o) => {\n i[o] = Math.max(e[o], n[o]);\n }), i;\n }\n return s(t ? [\"left\", \"right\"] : [\"top\", \"bottom\"]);\n}\nfunction bs(t, e, n, s) {\n const a = [];\n let i, o, l, r, c, u;\n for (i = 0, o = t.length, c = 0; i < o; ++i) {\n l = t[i], r = l.box, r.update(\n l.width || e.w,\n l.height || e.h,\n Yg(l.horizontal, e)\n );\n const { same: f, other: d } = Wg(e, n, l, s);\n c |= f && a.length, u = u || d, r.fullSize || a.push(l);\n }\n return c && bs(a, e, n, s) || u;\n}\nfunction la(t, e, n, s, a) {\n t.top = n, t.left = e, t.right = e + s, t.bottom = n + a, t.width = s, t.height = a;\n}\nfunction pl(t, e, n, s) {\n const a = n.padding;\n let { x: i, y: o } = e;\n for (const l of t) {\n const r = l.box, c = s[l.stack] || { count: 1, placed: 0, weight: 1 }, u = l.stackWeight / c.weight || 1;\n if (l.horizontal) {\n const f = e.w * u, d = c.size || r.height;\n Wt(c.start) && (o = c.start), r.fullSize ? la(r, a.left, o, n.outerWidth - a.right - a.left, d) : la(r, e.left + c.placed, o, f, d), c.start = o, c.placed += f, o = r.bottom;\n } else {\n const f = e.h * u, d = c.size || r.width;\n Wt(c.start) && (i = c.start), r.fullSize ? la(r, i, a.top, d, n.outerHeight - a.bottom - a.top) : la(r, i, e.top + c.placed, d, f), c.start = i, c.placed += f, i = r.right;\n }\n }\n e.x = i, e.y = o;\n}\nUe.set(\"layout\", {\n autoPadding: !0,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar Mt = {\n addBox(t, e) {\n t.boxes || (t.boxes = []), e.fullSize = e.fullSize || !1, e.position = e.position || \"top\", e.weight = e.weight || 0, e._layers = e._layers || function() {\n return [{\n z: 0,\n draw(n) {\n e.draw(n);\n }\n }];\n }, t.boxes.push(e);\n },\n removeBox(t, e) {\n const n = t.boxes ? t.boxes.indexOf(e) : -1;\n n !== -1 && t.boxes.splice(n, 1);\n },\n configure(t, e, n) {\n e.fullSize = n.fullSize, e.position = n.position, e.weight = n.weight;\n },\n update(t, e, n, s) {\n if (!t)\n return;\n const a = St(t.options.layout.padding), i = Math.max(e - a.width, 0), o = Math.max(n - a.height, 0), l = Hg(t.boxes), r = l.vertical, c = l.horizontal;\n Ke(t.boxes, (v) => {\n typeof v.beforeLayout == \"function\" && v.beforeLayout();\n });\n const u = r.reduce((v, m) => m.box.options && m.box.options.display === !1 ? v : v + 1, 0) || 1, f = Object.freeze({\n outerWidth: e,\n outerHeight: n,\n padding: a,\n availableWidth: i,\n availableHeight: o,\n vBoxMaxWidth: i / 2 / u,\n hBoxMaxHeight: o / 2\n }), d = Object.assign({}, a);\n Jr(d, St(s));\n const h = Object.assign({\n maxPadding: d,\n w: i,\n h: o,\n x: a.left,\n y: a.top\n }, a), p = Ng(r.concat(c), f);\n bs(l.fullSize, h, f, p), bs(r, h, f, p), bs(c, h, f, p) && bs(r, h, f, p), zg(h), pl(l.leftAndTop, h, f, p), h.x += h.w, h.y += h.h, pl(l.rightAndBottom, h, f, p), t.chartArea = {\n left: h.left,\n top: h.top,\n right: h.left + h.w,\n bottom: h.top + h.h,\n height: h.h,\n width: h.w\n }, Ke(l.chartArea, (v) => {\n const m = v.box;\n Object.assign(m, t.chartArea), m.update(h.w, h.h, { left: 0, top: 0, right: 0, bottom: 0 });\n });\n }\n};\nclass Qr {\n acquireContext(e, n) {\n }\n releaseContext(e) {\n return !1;\n }\n addEventListener(e, n, s) {\n }\n removeEventListener(e, n, s) {\n }\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(e, n, s, a) {\n return n = Math.max(0, n || e.width), s = s || e.height, {\n width: n,\n height: Math.max(0, a ? Math.floor(n / a) : s)\n };\n }\n isAttached(e) {\n return !0;\n }\n updateConfig(e) {\n }\n}\nclass jg extends Qr {\n acquireContext(e) {\n return e && e.getContext && e.getContext(\"2d\") || null;\n }\n updateConfig(e) {\n e.options.animation = !1;\n }\n}\nconst xa = \"$chartjs\", Xg = {\n touchstart: \"mousedown\",\n touchmove: \"mousemove\",\n touchend: \"mouseup\",\n pointerenter: \"mouseenter\",\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointerleave: \"mouseout\",\n pointerout: \"mouseout\"\n}, vl = (t) => t === null || t === \"\";\nfunction Ug(t, e) {\n const n = t.style, s = t.getAttribute(\"height\"), a = t.getAttribute(\"width\");\n if (t[xa] = {\n initial: {\n height: s,\n width: a,\n style: {\n display: n.display,\n height: n.height,\n width: n.width\n }\n }\n }, n.display = n.display || \"block\", n.boxSizing = n.boxSizing || \"border-box\", vl(a)) {\n const i = Go(t, \"width\");\n i !== void 0 && (t.width = i);\n }\n if (vl(s))\n if (t.style.height === \"\")\n t.height = t.width / (e || 2);\n else {\n const i = Go(t, \"height\");\n i !== void 0 && (t.height = i);\n }\n return t;\n}\nconst ec = zm ? { passive: !0 } : !1;\nfunction qg(t, e, n) {\n t.addEventListener(e, n, ec);\n}\nfunction Kg(t, e, n) {\n t.canvas.removeEventListener(e, n, ec);\n}\nfunction Gg(t, e) {\n const n = Xg[t.type] || t.type, { x: s, y: a } = En(t, e);\n return {\n type: n,\n chart: e,\n native: t,\n x: s !== void 0 ? s : null,\n y: a !== void 0 ? a : null\n };\n}\nfunction Oa(t, e) {\n for (const n of t)\n if (n === e || n.contains(e))\n return !0;\n}\nfunction Zg(t, e, n) {\n const s = t.canvas, a = new MutationObserver((i) => {\n let o = !1;\n for (const l of i)\n o = o || Oa(l.addedNodes, s), o = o && !Oa(l.removedNodes, s);\n o && n();\n });\n return a.observe(document, { childList: !0, subtree: !0 }), a;\n}\nfunction Jg(t, e, n) {\n const s = t.canvas, a = new MutationObserver((i) => {\n let o = !1;\n for (const l of i)\n o = o || Oa(l.removedNodes, s), o = o && !Oa(l.addedNodes, s);\n o && n();\n });\n return a.observe(document, { childList: !0, subtree: !0 }), a;\n}\nconst Es = /* @__PURE__ */ new Map();\nlet ml = 0;\nfunction tc() {\n const t = window.devicePixelRatio;\n t !== ml && (ml = t, Es.forEach((e, n) => {\n n.currentDevicePixelRatio !== t && e();\n }));\n}\nfunction Qg(t, e) {\n Es.size || window.addEventListener(\"resize\", tc), Es.set(t, e);\n}\nfunction eb(t) {\n Es.delete(t), Es.size || window.removeEventListener(\"resize\", tc);\n}\nfunction tb(t, e, n) {\n const s = t.canvas, a = s && Ki(s);\n if (!a)\n return;\n const i = Sr((l, r) => {\n const c = a.clientWidth;\n n(l, r), c < a.clientWidth && n();\n }, window), o = new ResizeObserver((l) => {\n const r = l[0], c = r.contentRect.width, u = r.contentRect.height;\n c === 0 && u === 0 || i(c, u);\n });\n return o.observe(a), Qg(t, i), o;\n}\nfunction oi(t, e, n) {\n n && n.disconnect(), e === \"resize\" && eb(t);\n}\nfunction nb(t, e, n) {\n const s = t.canvas, a = Sr((i) => {\n t.ctx !== null && n(Gg(i, t));\n }, t, (i) => {\n const o = i[0];\n return [o, o.offsetX, o.offsetY];\n });\n return qg(s, e, a), a;\n}\nclass sb extends Qr {\n acquireContext(e, n) {\n const s = e && e.getContext && e.getContext(\"2d\");\n return s && s.canvas === e ? (Ug(e, n), s) : null;\n }\n releaseContext(e) {\n const n = e.canvas;\n if (!n[xa])\n return !1;\n const s = n[xa].initial;\n [\"height\", \"width\"].forEach((i) => {\n const o = s[i];\n He(o) ? n.removeAttribute(i) : n.setAttribute(i, o);\n });\n const a = s.style || {};\n return Object.keys(a).forEach((i) => {\n n.style[i] = a[i];\n }), n.width = n.width, delete n[xa], !0;\n }\n addEventListener(e, n, s) {\n this.removeEventListener(e, n);\n const a = e.$proxies || (e.$proxies = {}), o = {\n attach: Zg,\n detach: Jg,\n resize: tb\n }[n] || nb;\n a[n] = o(e, n, s);\n }\n removeEventListener(e, n) {\n const s = e.$proxies || (e.$proxies = {}), a = s[n];\n if (!a)\n return;\n ({\n attach: oi,\n detach: oi,\n resize: oi\n }[n] || Kg)(e, n, a), s[n] = void 0;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(e, n, s, a) {\n return Wm(e, n, s, a);\n }\n isAttached(e) {\n const n = Ki(e);\n return !!(n && n.isConnected);\n }\n}\nfunction ab(t) {\n return !Wr() || typeof OffscreenCanvas < \"u\" && t instanceof OffscreenCanvas ? jg : sb;\n}\nlet Kt = class {\n constructor() {\n this.x = void 0, this.y = void 0, this.active = !1, this.options = void 0, this.$animations = void 0;\n }\n tooltipPosition(e) {\n const { x: n, y: s } = this.getProps([\"x\", \"y\"], e);\n return { x: n, y: s };\n }\n hasValue() {\n return Ds(this.x) && Ds(this.y);\n }\n getProps(e, n) {\n const s = this.$animations;\n if (!n || !s)\n return this;\n const a = {};\n return e.forEach((i) => {\n a[i] = s[i] && s[i].active() ? s[i]._to : this[i];\n }), a;\n }\n};\nKt.defaults = {};\nKt.defaultRoutes = void 0;\nconst nc = {\n values(t) {\n return at(t) ? t : \"\" + t;\n },\n numeric(t, e, n) {\n if (t === 0)\n return \"0\";\n const s = this.chart.options.locale;\n let a, i = t;\n if (n.length > 1) {\n const c = Math.max(Math.abs(n[0].value), Math.abs(n[n.length - 1].value));\n (c < 1e-4 || c > 1e15) && (a = \"scientific\"), i = ib(t, n);\n }\n const o = Ft(Math.abs(i)), l = Math.max(Math.min(-1 * Math.floor(o), 20), 0), r = { notation: a, minimumFractionDigits: l, maximumFractionDigits: l };\n return Object.assign(r, this.options.ticks.format), Hs(t, s, r);\n },\n logarithmic(t, e, n) {\n if (t === 0)\n return \"0\";\n const s = t / Math.pow(10, Math.floor(Ft(t)));\n return s === 1 || s === 2 || s === 5 ? nc.numeric.call(this, t, e, n) : \"\";\n }\n};\nfunction ib(t, e) {\n let n = e.length > 3 ? e[2].value - e[1].value : e[1].value - e[0].value;\n return Math.abs(n) >= 1 && t !== Math.floor(t) && (n = t - Math.floor(t)), n;\n}\nvar Xa = { formatters: nc };\nUe.set(\"scale\", {\n display: !0,\n offset: !1,\n reverse: !1,\n beginAtZero: !1,\n bounds: \"ticks\",\n grace: 0,\n grid: {\n display: !0,\n lineWidth: 1,\n drawBorder: !0,\n drawOnChartArea: !0,\n drawTicks: !0,\n tickLength: 8,\n tickWidth: (t, e) => e.lineWidth,\n tickColor: (t, e) => e.color,\n offset: !1,\n borderDash: [],\n borderDashOffset: 0,\n borderWidth: 1\n },\n title: {\n display: !1,\n text: \"\",\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: !1,\n textStrokeWidth: 0,\n textStrokeColor: \"\",\n padding: 3,\n display: !0,\n autoSkip: !0,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Xa.formatters.values,\n minor: {},\n major: {},\n align: \"center\",\n crossAlign: \"near\",\n showLabelBackdrop: !1,\n backdropColor: \"rgba(255, 255, 255, 0.75)\",\n backdropPadding: 2\n }\n});\nUe.route(\"scale.ticks\", \"color\", \"\", \"color\");\nUe.route(\"scale.grid\", \"color\", \"\", \"borderColor\");\nUe.route(\"scale.grid\", \"borderColor\", \"\", \"borderColor\");\nUe.route(\"scale.title\", \"color\", \"\", \"color\");\nUe.describe(\"scale\", {\n _fallback: !1,\n _scriptable: (t) => !t.startsWith(\"before\") && !t.startsWith(\"after\") && t !== \"callback\" && t !== \"parser\",\n _indexable: (t) => t !== \"borderDash\" && t !== \"tickBorderDash\"\n});\nUe.describe(\"scales\", {\n _fallback: \"scale\"\n});\nUe.describe(\"scale.ticks\", {\n _scriptable: (t) => t !== \"backdropPadding\" && t !== \"callback\",\n _indexable: (t) => t !== \"backdropPadding\"\n});\nfunction ob(t, e) {\n const n = t.options.ticks, s = n.maxTicksLimit || lb(t), a = n.major.enabled ? cb(e) : [], i = a.length, o = a[0], l = a[i - 1], r = [];\n if (i > s)\n return ub(e, r, a, i / s), r;\n const c = rb(a, e, s);\n if (i > 0) {\n let u, f;\n const d = i > 1 ? Math.round((l - o) / (i - 1)) : null;\n for (ra(e, r, c, He(d) ? 0 : o - d, o), u = 0, f = i - 1; u < f; u++)\n ra(e, r, c, a[u], a[u + 1]);\n return ra(e, r, c, l, He(d) ? e.length : l + d), r;\n }\n return ra(e, r, c), r;\n}\nfunction lb(t) {\n const e = t.options.offset, n = t._tickSize(), s = t._length / n + (e ? 0 : 1), a = t._maxLength / n;\n return Math.floor(Math.min(s, a));\n}\nfunction rb(t, e, n) {\n const s = db(t), a = e.length / n;\n if (!s)\n return Math.max(a, 1);\n const i = Ev(s);\n for (let o = 0, l = i.length - 1; o < l; o++) {\n const r = i[o];\n if (r > a)\n return r;\n }\n return Math.max(a, 1);\n}\nfunction cb(t) {\n const e = [];\n let n, s;\n for (n = 0, s = t.length; n < s; n++)\n t[n].major && e.push(n);\n return e;\n}\nfunction ub(t, e, n, s) {\n let a = 0, i = n[0], o;\n for (s = Math.ceil(s), o = 0; o < t.length; o++)\n o === i && (e.push(t[o]), a++, i = n[a * s]);\n}\nfunction ra(t, e, n, s, a) {\n const i = Re(s, 0), o = Math.min(Re(a, t.length), t.length);\n let l = 0, r, c, u;\n for (n = Math.ceil(n), a && (r = a - s, n = r / Math.floor(r / n)), u = i; u < 0; )\n l++, u = Math.round(i + l * n);\n for (c = Math.max(i, 0); c < o; c++)\n c === u && (e.push(t[c]), l++, u = Math.round(i + l * n));\n}\nfunction db(t) {\n const e = t.length;\n let n, s;\n if (e < 2)\n return !1;\n for (s = t[0], n = 1; n < e; ++n)\n if (t[n] - t[n - 1] !== s)\n return !1;\n return s;\n}\nconst fb = (t) => t === \"left\" ? \"right\" : t === \"right\" ? \"left\" : t, gl = (t, e, n) => e === \"top\" || e === \"left\" ? t[e] + n : t[e] - n;\nfunction bl(t, e) {\n const n = [], s = t.length / e, a = t.length;\n let i = 0;\n for (; i < a; i += s)\n n.push(t[Math.floor(i)]);\n return n;\n}\nfunction hb(t, e, n) {\n const s = t.ticks.length, a = Math.min(e, s - 1), i = t._startPixel, o = t._endPixel, l = 1e-6;\n let r = t.getPixelForTick(a), c;\n if (!(n && (s === 1 ? c = Math.max(r - i, o - r) : e === 0 ? c = (t.getPixelForTick(1) - r) / 2 : c = (r - t.getPixelForTick(a - 1)) / 2, r += a < e ? c : -c, r < i - l || r > o + l)))\n return r;\n}\nfunction pb(t, e) {\n Ke(t, (n) => {\n const s = n.gc, a = s.length / 2;\n let i;\n if (a > e) {\n for (i = 0; i < a; ++i)\n delete n.data[s[i]];\n s.splice(0, a);\n }\n });\n}\nfunction ps(t) {\n return t.drawTicks ? t.tickLength : 0;\n}\nfunction yl(t, e) {\n if (!t.display)\n return 0;\n const n = gt(t.font, e), s = St(t.padding);\n return (at(t.text) ? t.text.length : 1) * n.lineHeight + s.height;\n}\nfunction vb(t, e) {\n return Bn(t, {\n scale: e,\n type: \"scale\"\n });\n}\nfunction mb(t, e, n) {\n return Bn(t, {\n tick: n,\n index: e,\n type: \"tick\"\n });\n}\nfunction gb(t, e, n) {\n let s = Ii(t);\n return (n && e !== \"right\" || !n && e === \"right\") && (s = fb(s)), s;\n}\nfunction bb(t, e, n, s) {\n const { top: a, left: i, bottom: o, right: l, chart: r } = t, { chartArea: c, scales: u } = r;\n let f = 0, d, h, p;\n const v = o - a, m = l - i;\n if (t.isHorizontal()) {\n if (h = _t(s, i, l), Xe(n)) {\n const g = Object.keys(n)[0], b = n[g];\n p = u[g].getPixelForValue(b) + v - e;\n } else n === \"center\" ? p = (c.bottom + c.top) / 2 + v - e : p = gl(t, n, e);\n d = l - i;\n } else {\n if (Xe(n)) {\n const g = Object.keys(n)[0], b = n[g];\n h = u[g].getPixelForValue(b) - m + e;\n } else n === \"center\" ? h = (c.left + c.right) / 2 - m + e : h = gl(t, n, e);\n p = _t(s, o, a), f = n === \"left\" ? -ft : ft;\n }\n return { titleX: h, titleY: p, maxWidth: d, rotation: f };\n}\nclass Wn extends Kt {\n constructor(e) {\n super(), this.id = e.id, this.type = e.type, this.options = void 0, this.ctx = e.ctx, this.chart = e.chart, this.top = void 0, this.bottom = void 0, this.left = void 0, this.right = void 0, this.width = void 0, this.height = void 0, this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, this.maxWidth = void 0, this.maxHeight = void 0, this.paddingTop = void 0, this.paddingBottom = void 0, this.paddingLeft = void 0, this.paddingRight = void 0, this.axis = void 0, this.labelRotation = void 0, this.min = void 0, this.max = void 0, this._range = void 0, this.ticks = [], this._gridLineItems = null, this._labelItems = null, this._labelSizes = null, this._length = 0, this._maxLength = 0, this._longestTextCache = {}, this._startPixel = void 0, this._endPixel = void 0, this._reversePixels = !1, this._userMax = void 0, this._userMin = void 0, this._suggestedMax = void 0, this._suggestedMin = void 0, this._ticksLength = 0, this._borderValue = 0, this._cache = {}, this._dataLimitsCached = !1, this.$context = void 0;\n }\n init(e) {\n this.options = e.setContext(this.getContext()), this.axis = e.axis, this._userMin = this.parse(e.min), this._userMax = this.parse(e.max), this._suggestedMin = this.parse(e.suggestedMin), this._suggestedMax = this.parse(e.suggestedMax);\n }\n parse(e, n) {\n return e;\n }\n getUserBounds() {\n let { _userMin: e, _userMax: n, _suggestedMin: s, _suggestedMax: a } = this;\n return e = It(e, Number.POSITIVE_INFINITY), n = It(n, Number.NEGATIVE_INFINITY), s = It(s, Number.POSITIVE_INFINITY), a = It(a, Number.NEGATIVE_INFINITY), {\n min: It(e, s),\n max: It(n, a),\n minDefined: vt(e),\n maxDefined: vt(n)\n };\n }\n getMinMax(e) {\n let { min: n, max: s, minDefined: a, maxDefined: i } = this.getUserBounds(), o;\n if (a && i)\n return { min: n, max: s };\n const l = this.getMatchingVisibleMetas();\n for (let r = 0, c = l.length; r < c; ++r)\n o = l[r].controller.getMinMax(this, e), a || (n = Math.min(n, o.min)), i || (s = Math.max(s, o.max));\n return n = i && n > s ? s : n, s = a && n > s ? n : s, {\n min: It(n, It(s, n)),\n max: It(s, It(n, s))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const e = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? e.xLabels : e.yLabels) || e.labels || [];\n }\n beforeLayout() {\n this._cache = {}, this._dataLimitsCached = !1;\n }\n beforeUpdate() {\n Qe(this.options.beforeUpdate, [this]);\n }\n update(e, n, s) {\n const { beginAtZero: a, grace: i, ticks: o } = this.options, l = o.sampleSize;\n this.beforeUpdate(), this.maxWidth = e, this.maxHeight = n, this._margins = s = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, s), this.ticks = null, this._labelSizes = null, this._gridLineItems = null, this._labelItems = null, this.beforeSetDimensions(), this.setDimensions(), this.afterSetDimensions(), this._maxLength = this.isHorizontal() ? this.width + s.left + s.right : this.height + s.top + s.bottom, this._dataLimitsCached || (this.beforeDataLimits(), this.determineDataLimits(), this.afterDataLimits(), this._range = gm(this, i, a), this._dataLimitsCached = !0), this.beforeBuildTicks(), this.ticks = this.buildTicks() || [], this.afterBuildTicks();\n const r = l < this.ticks.length;\n this._convertTicksToLabels(r ? bl(this.ticks, l) : this.ticks), this.configure(), this.beforeCalculateLabelRotation(), this.calculateLabelRotation(), this.afterCalculateLabelRotation(), o.display && (o.autoSkip || o.source === \"auto\") && (this.ticks = ob(this, this.ticks), this._labelSizes = null, this.afterAutoSkip()), r && this._convertTicksToLabels(this.ticks), this.beforeFit(), this.fit(), this.afterFit(), this.afterUpdate();\n }\n configure() {\n let e = this.options.reverse, n, s;\n this.isHorizontal() ? (n = this.left, s = this.right) : (n = this.top, s = this.bottom, e = !e), this._startPixel = n, this._endPixel = s, this._reversePixels = e, this._length = s - n, this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n Qe(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n Qe(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n this.isHorizontal() ? (this.width = this.maxWidth, this.left = 0, this.right = this.width) : (this.height = this.maxHeight, this.top = 0, this.bottom = this.height), this.paddingLeft = 0, this.paddingTop = 0, this.paddingRight = 0, this.paddingBottom = 0;\n }\n afterSetDimensions() {\n Qe(this.options.afterSetDimensions, [this]);\n }\n _callHooks(e) {\n this.chart.notifyPlugins(e, this.getContext()), Qe(this.options[e], [this]);\n }\n beforeDataLimits() {\n this._callHooks(\"beforeDataLimits\");\n }\n determineDataLimits() {\n }\n afterDataLimits() {\n this._callHooks(\"afterDataLimits\");\n }\n beforeBuildTicks() {\n this._callHooks(\"beforeBuildTicks\");\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks(\"afterBuildTicks\");\n }\n beforeTickToLabelConversion() {\n Qe(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(e) {\n const n = this.options.ticks;\n let s, a, i;\n for (s = 0, a = e.length; s < a; s++)\n i = e[s], i.label = Qe(n.callback, [i.value, s, e], this);\n }\n afterTickToLabelConversion() {\n Qe(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n Qe(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const e = this.options, n = e.ticks, s = this.ticks.length, a = n.minRotation || 0, i = n.maxRotation;\n let o = a, l, r, c;\n if (!this._isVisible() || !n.display || a >= i || s <= 1 || !this.isHorizontal()) {\n this.labelRotation = a;\n return;\n }\n const u = this._getLabelSizes(), f = u.widest.width, d = u.highest.height, h = xt(this.chart.width - f, 0, this.maxWidth);\n l = e.offset ? this.maxWidth / s : h / (s - 1), f + 6 > l && (l = h / (s - (e.offset ? 0.5 : 1)), r = this.maxHeight - ps(e.grid) - n.padding - yl(e.title, this.chart.options.font), c = Math.sqrt(f * f + d * d), o = Ni(Math.min(\n Math.asin(xt((u.highest.height + 6) / l, -1, 1)),\n Math.asin(xt(r / c, -1, 1)) - Math.asin(xt(d / c, -1, 1))\n )), o = Math.max(a, Math.min(i, o))), this.labelRotation = o;\n }\n afterCalculateLabelRotation() {\n Qe(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {\n }\n beforeFit() {\n Qe(this.options.beforeFit, [this]);\n }\n fit() {\n const e = {\n width: 0,\n height: 0\n }, { chart: n, options: { ticks: s, title: a, grid: i } } = this, o = this._isVisible(), l = this.isHorizontal();\n if (o) {\n const r = yl(a, n.options.font);\n if (l ? (e.width = this.maxWidth, e.height = ps(i) + r) : (e.height = this.maxHeight, e.width = ps(i) + r), s.display && this.ticks.length) {\n const { first: c, last: u, widest: f, highest: d } = this._getLabelSizes(), h = s.padding * 2, p = Yt(this.labelRotation), v = Math.cos(p), m = Math.sin(p);\n if (l) {\n const g = s.mirror ? 0 : m * f.width + v * d.height;\n e.height = Math.min(this.maxHeight, e.height + g + h);\n } else {\n const g = s.mirror ? 0 : v * f.width + m * d.height;\n e.width = Math.min(this.maxWidth, e.width + g + h);\n }\n this._calculatePadding(c, u, m, v);\n }\n }\n this._handleMargins(), l ? (this.width = this._length = n.width - this._margins.left - this._margins.right, this.height = e.height) : (this.width = e.width, this.height = this._length = n.height - this._margins.top - this._margins.bottom);\n }\n _calculatePadding(e, n, s, a) {\n const { ticks: { align: i, padding: o }, position: l } = this.options, r = this.labelRotation !== 0, c = l !== \"top\" && this.axis === \"x\";\n if (this.isHorizontal()) {\n const u = this.getPixelForTick(0) - this.left, f = this.right - this.getPixelForTick(this.ticks.length - 1);\n let d = 0, h = 0;\n r ? c ? (d = a * e.width, h = s * n.height) : (d = s * e.height, h = a * n.width) : i === \"start\" ? h = n.width : i === \"end\" ? d = e.width : i !== \"inner\" && (d = e.width / 2, h = n.width / 2), this.paddingLeft = Math.max((d - u + o) * this.width / (this.width - u), 0), this.paddingRight = Math.max((h - f + o) * this.width / (this.width - f), 0);\n } else {\n let u = n.height / 2, f = e.height / 2;\n i === \"start\" ? (u = 0, f = e.height) : i === \"end\" && (u = n.height, f = 0), this.paddingTop = u + o, this.paddingBottom = f + o;\n }\n }\n _handleMargins() {\n this._margins && (this._margins.left = Math.max(this.paddingLeft, this._margins.left), this._margins.top = Math.max(this.paddingTop, this._margins.top), this._margins.right = Math.max(this.paddingRight, this._margins.right), this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom));\n }\n afterFit() {\n Qe(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const { axis: e, position: n } = this.options;\n return n === \"top\" || n === \"bottom\" || e === \"x\";\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(e) {\n this.beforeTickToLabelConversion(), this.generateTickLabels(e);\n let n, s;\n for (n = 0, s = e.length; n < s; n++)\n He(e[n].label) && (e.splice(n, 1), s--, n--);\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let e = this._labelSizes;\n if (!e) {\n const n = this.options.ticks.sampleSize;\n let s = this.ticks;\n n < s.length && (s = bl(s, n)), this._labelSizes = e = this._computeLabelSizes(s, s.length);\n }\n return e;\n }\n _computeLabelSizes(e, n) {\n const { ctx: s, _longestTextCache: a } = this, i = [], o = [];\n let l = 0, r = 0, c, u, f, d, h, p, v, m, g, b, S;\n for (c = 0; c < n; ++c) {\n if (d = e[c].label, h = this._resolveTickFontOptions(c), s.font = p = h.string, v = a[p] = a[p] || { data: {}, gc: [] }, m = h.lineHeight, g = b = 0, !He(d) && !at(d))\n g = Ba(s, v.data, v.gc, g, d), b = m;\n else if (at(d))\n for (u = 0, f = d.length; u < f; ++u)\n S = d[u], !He(S) && !at(S) && (g = Ba(s, v.data, v.gc, g, S), b += m);\n i.push(g), o.push(b), l = Math.max(g, l), r = Math.max(b, r);\n }\n pb(a, n);\n const w = i.indexOf(l), k = o.indexOf(r), C = (M) => ({ width: i[M] || 0, height: o[M] || 0 });\n return {\n first: C(0),\n last: C(n - 1),\n widest: C(w),\n highest: C(k),\n widths: i,\n heights: o\n };\n }\n getLabelForValue(e) {\n return e;\n }\n getPixelForValue(e, n) {\n return NaN;\n }\n getValueForPixel(e) {\n }\n getPixelForTick(e) {\n const n = this.ticks;\n return e < 0 || e > n.length - 1 ? null : this.getPixelForValue(n[e].value);\n }\n getPixelForDecimal(e) {\n this._reversePixels && (e = 1 - e);\n const n = this._startPixel + e * this._length;\n return Rv(this._alignToPixels ? Ln(this.chart, n, 0) : n);\n }\n getDecimalForPixel(e) {\n const n = (e - this._startPixel) / this._length;\n return this._reversePixels ? 1 - n : n;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const { min: e, max: n } = this;\n return e < 0 && n < 0 ? n : e > 0 && n > 0 ? e : 0;\n }\n getContext(e) {\n const n = this.ticks || [];\n if (e >= 0 && e < n.length) {\n const s = n[e];\n return s.$context || (s.$context = mb(this.getContext(), e, s));\n }\n return this.$context || (this.$context = vb(this.chart.getContext(), this));\n }\n _tickSize() {\n const e = this.options.ticks, n = Yt(this.labelRotation), s = Math.abs(Math.cos(n)), a = Math.abs(Math.sin(n)), i = this._getLabelSizes(), o = e.autoSkipPadding || 0, l = i ? i.widest.width + o : 0, r = i ? i.highest.height + o : 0;\n return this.isHorizontal() ? r * s > l * a ? l / s : r / a : r * a < l * s ? r / s : l / a;\n }\n _isVisible() {\n const e = this.options.display;\n return e !== \"auto\" ? !!e : this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(e) {\n const n = this.axis, s = this.chart, a = this.options, { grid: i, position: o } = a, l = i.offset, r = this.isHorizontal(), u = this.ticks.length + (l ? 1 : 0), f = ps(i), d = [], h = i.setContext(this.getContext()), p = h.drawBorder ? h.borderWidth : 0, v = p / 2, m = function(P) {\n return Ln(s, P, p);\n };\n let g, b, S, w, k, C, M, V, B, D, E, X;\n if (o === \"top\")\n g = m(this.bottom), C = this.bottom - f, V = g - v, D = m(e.top) + v, X = e.bottom;\n else if (o === \"bottom\")\n g = m(this.top), D = e.top, X = m(e.bottom) - v, C = g + v, V = this.top + f;\n else if (o === \"left\")\n g = m(this.right), k = this.right - f, M = g - v, B = m(e.left) + v, E = e.right;\n else if (o === \"right\")\n g = m(this.left), B = e.left, E = m(e.right) - v, k = g + v, M = this.left + f;\n else if (n === \"x\") {\n if (o === \"center\")\n g = m((e.top + e.bottom) / 2 + 0.5);\n else if (Xe(o)) {\n const P = Object.keys(o)[0], O = o[P];\n g = m(this.chart.scales[P].getPixelForValue(O));\n }\n D = e.top, X = e.bottom, C = g + v, V = C + f;\n } else if (n === \"y\") {\n if (o === \"center\")\n g = m((e.left + e.right) / 2);\n else if (Xe(o)) {\n const P = Object.keys(o)[0], O = o[P];\n g = m(this.chart.scales[P].getPixelForValue(O));\n }\n k = g - v, M = k - f, B = e.left, E = e.right;\n }\n const L = Re(a.ticks.maxTicksLimit, u), A = Math.max(1, Math.ceil(u / L));\n for (b = 0; b < u; b += A) {\n const P = i.setContext(this.getContext(b)), O = P.lineWidth, $ = P.color, I = i.borderDash || [], F = P.borderDashOffset, z = P.tickWidth, G = P.tickColor, U = P.tickBorderDash || [], ie = P.tickBorderDashOffset;\n S = hb(this, b, l), S !== void 0 && (w = Ln(s, S, O), r ? k = M = B = E = w : C = V = D = X = w, d.push({\n tx1: k,\n ty1: C,\n tx2: M,\n ty2: V,\n x1: B,\n y1: D,\n x2: E,\n y2: X,\n width: O,\n color: $,\n borderDash: I,\n borderDashOffset: F,\n tickWidth: z,\n tickColor: G,\n tickBorderDash: U,\n tickBorderDashOffset: ie\n }));\n }\n return this._ticksLength = u, this._borderValue = g, d;\n }\n _computeLabelItems(e) {\n const n = this.axis, s = this.options, { position: a, ticks: i } = s, o = this.isHorizontal(), l = this.ticks, { align: r, crossAlign: c, padding: u, mirror: f } = i, d = ps(s.grid), h = d + u, p = f ? -u : h, v = -Yt(this.labelRotation), m = [];\n let g, b, S, w, k, C, M, V, B, D, E, X, L = \"middle\";\n if (a === \"top\")\n C = this.bottom - p, M = this._getXAxisLabelAlignment();\n else if (a === \"bottom\")\n C = this.top + p, M = this._getXAxisLabelAlignment();\n else if (a === \"left\") {\n const P = this._getYAxisLabelAlignment(d);\n M = P.textAlign, k = P.x;\n } else if (a === \"right\") {\n const P = this._getYAxisLabelAlignment(d);\n M = P.textAlign, k = P.x;\n } else if (n === \"x\") {\n if (a === \"center\")\n C = (e.top + e.bottom) / 2 + h;\n else if (Xe(a)) {\n const P = Object.keys(a)[0], O = a[P];\n C = this.chart.scales[P].getPixelForValue(O) + h;\n }\n M = this._getXAxisLabelAlignment();\n } else if (n === \"y\") {\n if (a === \"center\")\n k = (e.left + e.right) / 2 - h;\n else if (Xe(a)) {\n const P = Object.keys(a)[0], O = a[P];\n k = this.chart.scales[P].getPixelForValue(O);\n }\n M = this._getYAxisLabelAlignment(d).textAlign;\n }\n n === \"y\" && (r === \"start\" ? L = \"top\" : r === \"end\" && (L = \"bottom\"));\n const A = this._getLabelSizes();\n for (g = 0, b = l.length; g < b; ++g) {\n S = l[g], w = S.label;\n const P = i.setContext(this.getContext(g));\n V = this.getPixelForTick(g) + i.labelOffset, B = this._resolveTickFontOptions(g), D = B.lineHeight, E = at(w) ? w.length : 1;\n const O = E / 2, $ = P.color, I = P.textStrokeColor, F = P.textStrokeWidth;\n let z = M;\n o ? (k = V, M === \"inner\" && (g === b - 1 ? z = this.options.reverse ? \"left\" : \"right\" : g === 0 ? z = this.options.reverse ? \"right\" : \"left\" : z = \"center\"), a === \"top\" ? c === \"near\" || v !== 0 ? X = -E * D + D / 2 : c === \"center\" ? X = -A.highest.height / 2 - O * D + D : X = -A.highest.height + D / 2 : c === \"near\" || v !== 0 ? X = D / 2 : c === \"center\" ? X = A.highest.height / 2 - O * D : X = A.highest.height - E * D, f && (X *= -1)) : (C = V, X = (1 - E) * D / 2);\n let G;\n if (P.showLabelBackdrop) {\n const U = St(P.backdropPadding), ie = A.heights[g], ve = A.widths[g];\n let ye = C + X - U.top, W = k - U.left;\n switch (L) {\n case \"middle\":\n ye -= ie / 2;\n break;\n case \"bottom\":\n ye -= ie;\n break;\n }\n switch (M) {\n case \"center\":\n W -= ve / 2;\n break;\n case \"right\":\n W -= ve;\n break;\n }\n G = {\n left: W,\n top: ye,\n width: ve + U.width,\n height: ie + U.height,\n color: P.backdropColor\n };\n }\n m.push({\n rotation: v,\n label: w,\n font: B,\n color: $,\n strokeColor: I,\n strokeWidth: F,\n textOffset: X,\n textAlign: z,\n textBaseline: L,\n translation: [k, C],\n backdrop: G\n });\n }\n return m;\n }\n _getXAxisLabelAlignment() {\n const { position: e, ticks: n } = this.options;\n if (-Yt(this.labelRotation))\n return e === \"top\" ? \"left\" : \"right\";\n let a = \"center\";\n return n.align === \"start\" ? a = \"left\" : n.align === \"end\" ? a = \"right\" : n.align === \"inner\" && (a = \"inner\"), a;\n }\n _getYAxisLabelAlignment(e) {\n const { position: n, ticks: { crossAlign: s, mirror: a, padding: i } } = this.options, o = this._getLabelSizes(), l = e + i, r = o.widest.width;\n let c, u;\n return n === \"left\" ? a ? (u = this.right + i, s === \"near\" ? c = \"left\" : s === \"center\" ? (c = \"center\", u += r / 2) : (c = \"right\", u += r)) : (u = this.right - l, s === \"near\" ? c = \"right\" : s === \"center\" ? (c = \"center\", u -= r / 2) : (c = \"left\", u = this.left)) : n === \"right\" ? a ? (u = this.left + i, s === \"near\" ? c = \"right\" : s === \"center\" ? (c = \"center\", u -= r / 2) : (c = \"left\", u -= r)) : (u = this.left + l, s === \"near\" ? c = \"left\" : s === \"center\" ? (c = \"center\", u += r / 2) : (c = \"right\", u = this.right)) : c = \"right\", { textAlign: c, x: u };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror)\n return;\n const e = this.chart, n = this.options.position;\n if (n === \"left\" || n === \"right\")\n return { top: 0, left: this.left, bottom: e.height, right: this.right };\n if (n === \"top\" || n === \"bottom\")\n return { top: this.top, left: 0, bottom: this.bottom, right: e.width };\n }\n drawBackground() {\n const { ctx: e, options: { backgroundColor: n }, left: s, top: a, width: i, height: o } = this;\n n && (e.save(), e.fillStyle = n, e.fillRect(s, a, i, o), e.restore());\n }\n getLineWidthForValue(e) {\n const n = this.options.grid;\n if (!this._isVisible() || !n.display)\n return 0;\n const a = this.ticks.findIndex((i) => i.value === e);\n return a >= 0 ? n.setContext(this.getContext(a)).lineWidth : 0;\n }\n drawGrid(e) {\n const n = this.options.grid, s = this.ctx, a = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(e));\n let i, o;\n const l = (r, c, u) => {\n !u.width || !u.color || (s.save(), s.lineWidth = u.width, s.strokeStyle = u.color, s.setLineDash(u.borderDash || []), s.lineDashOffset = u.borderDashOffset, s.beginPath(), s.moveTo(r.x, r.y), s.lineTo(c.x, c.y), s.stroke(), s.restore());\n };\n if (n.display)\n for (i = 0, o = a.length; i < o; ++i) {\n const r = a[i];\n n.drawOnChartArea && l(\n { x: r.x1, y: r.y1 },\n { x: r.x2, y: r.y2 },\n r\n ), n.drawTicks && l(\n { x: r.tx1, y: r.ty1 },\n { x: r.tx2, y: r.ty2 },\n {\n color: r.tickColor,\n width: r.tickWidth,\n borderDash: r.tickBorderDash,\n borderDashOffset: r.tickBorderDashOffset\n }\n );\n }\n }\n drawBorder() {\n const { chart: e, ctx: n, options: { grid: s } } = this, a = s.setContext(this.getContext()), i = s.drawBorder ? a.borderWidth : 0;\n if (!i)\n return;\n const o = s.setContext(this.getContext(0)).lineWidth, l = this._borderValue;\n let r, c, u, f;\n this.isHorizontal() ? (r = Ln(e, this.left, i) - i / 2, c = Ln(e, this.right, o) + o / 2, u = f = l) : (u = Ln(e, this.top, i) - i / 2, f = Ln(e, this.bottom, o) + o / 2, r = c = l), n.save(), n.lineWidth = a.borderWidth, n.strokeStyle = a.borderColor, n.beginPath(), n.moveTo(r, u), n.lineTo(c, f), n.stroke(), n.restore();\n }\n drawLabels(e) {\n if (!this.options.ticks.display)\n return;\n const s = this.ctx, a = this._computeLabelArea();\n a && Ia(s, a);\n const i = this._labelItems || (this._labelItems = this._computeLabelItems(e));\n let o, l;\n for (o = 0, l = i.length; o < l; ++o) {\n const r = i[o], c = r.font, u = r.label;\n r.backdrop && (s.fillStyle = r.backdrop.color, s.fillRect(r.backdrop.left, r.backdrop.top, r.backdrop.width, r.backdrop.height));\n let f = r.textOffset;\n Nn(s, u, 0, f, c, r);\n }\n a && Fa(s);\n }\n drawTitle() {\n const { ctx: e, options: { position: n, title: s, reverse: a } } = this;\n if (!s.display)\n return;\n const i = gt(s.font), o = St(s.padding), l = s.align;\n let r = i.lineHeight / 2;\n n === \"bottom\" || n === \"center\" || Xe(n) ? (r += o.bottom, at(s.text) && (r += i.lineHeight * (s.text.length - 1))) : r += o.top;\n const { titleX: c, titleY: u, maxWidth: f, rotation: d } = bb(this, r, n, l);\n Nn(e, s.text, 0, 0, i, {\n color: s.color,\n maxWidth: f,\n rotation: d,\n textAlign: gb(l, n, a),\n textBaseline: \"middle\",\n translation: [c, u]\n });\n }\n draw(e) {\n this._isVisible() && (this.drawBackground(), this.drawGrid(e), this.drawBorder(), this.drawTitle(), this.drawLabels(e));\n }\n _layers() {\n const e = this.options, n = e.ticks && e.ticks.z || 0, s = Re(e.grid && e.grid.z, -1);\n return !this._isVisible() || this.draw !== Wn.prototype.draw ? [{\n z: n,\n draw: (a) => {\n this.draw(a);\n }\n }] : [{\n z: s,\n draw: (a) => {\n this.drawBackground(), this.drawGrid(a), this.drawTitle();\n }\n }, {\n z: s + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: n,\n draw: (a) => {\n this.drawLabels(a);\n }\n }];\n }\n getMatchingVisibleMetas(e) {\n const n = this.chart.getSortedVisibleDatasetMetas(), s = this.axis + \"AxisID\", a = [];\n let i, o;\n for (i = 0, o = n.length; i < o; ++i) {\n const l = n[i];\n l[s] === this.id && (!e || l.type === e) && a.push(l);\n }\n return a;\n }\n _resolveTickFontOptions(e) {\n const n = this.options.ticks.setContext(this.getContext(e));\n return gt(n.font);\n }\n _maxDigits() {\n const e = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / e;\n }\n}\nclass ca {\n constructor(e, n, s) {\n this.type = e, this.scope = n, this.override = s, this.items = /* @__PURE__ */ Object.create(null);\n }\n isForType(e) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, e.prototype);\n }\n register(e) {\n const n = Object.getPrototypeOf(e);\n let s;\n kb(n) && (s = this.register(n));\n const a = this.items, i = e.id, o = this.scope + \".\" + i;\n if (!i)\n throw new Error(\"class does not have id: \" + e);\n return i in a || (a[i] = e, yb(e, o, s), this.override && Ue.override(e.id, e.overrides)), o;\n }\n get(e) {\n return this.items[e];\n }\n unregister(e) {\n const n = this.items, s = e.id, a = this.scope;\n s in n && delete n[s], a && s in Ue[a] && (delete Ue[a][s], this.override && delete Fn[s]);\n }\n}\nfunction yb(t, e, n) {\n const s = nn(/* @__PURE__ */ Object.create(null), [\n n ? Ue.get(n) : {},\n Ue.get(e),\n t.defaults\n ]);\n Ue.set(e, s), t.defaultRoutes && xb(e, t.defaultRoutes), t.descriptors && Ue.describe(e, t.descriptors);\n}\nfunction xb(t, e) {\n Object.keys(e).forEach((n) => {\n const s = n.split(\".\"), a = s.pop(), i = [t].concat(s).join(\".\"), o = e[n].split(\".\"), l = o.pop(), r = o.join(\".\");\n Ue.route(i, a, r, l);\n });\n}\nfunction kb(t) {\n return \"id\" in t && \"defaults\" in t;\n}\nclass wb {\n constructor() {\n this.controllers = new ca(sn, \"datasets\", !0), this.elements = new ca(Kt, \"elements\"), this.plugins = new ca(Object, \"plugins\"), this.scales = new ca(Wn, \"scales\"), this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...e) {\n this._each(\"register\", e);\n }\n remove(...e) {\n this._each(\"unregister\", e);\n }\n addControllers(...e) {\n this._each(\"register\", e, this.controllers);\n }\n addElements(...e) {\n this._each(\"register\", e, this.elements);\n }\n addPlugins(...e) {\n this._each(\"register\", e, this.plugins);\n }\n addScales(...e) {\n this._each(\"register\", e, this.scales);\n }\n getController(e) {\n return this._get(e, this.controllers, \"controller\");\n }\n getElement(e) {\n return this._get(e, this.elements, \"element\");\n }\n getPlugin(e) {\n return this._get(e, this.plugins, \"plugin\");\n }\n getScale(e) {\n return this._get(e, this.scales, \"scale\");\n }\n removeControllers(...e) {\n this._each(\"unregister\", e, this.controllers);\n }\n removeElements(...e) {\n this._each(\"unregister\", e, this.elements);\n }\n removePlugins(...e) {\n this._each(\"unregister\", e, this.plugins);\n }\n removeScales(...e) {\n this._each(\"unregister\", e, this.scales);\n }\n _each(e, n, s) {\n [...n].forEach((a) => {\n const i = s || this._getRegistryForType(a);\n s || i.isForType(a) || i === this.plugins && a.id ? this._exec(e, i, a) : Ke(a, (o) => {\n const l = s || this._getRegistryForType(o);\n this._exec(e, l, o);\n });\n });\n }\n _exec(e, n, s) {\n const a = Fi(e);\n Qe(s[\"before\" + a], [], s), n[e](s), Qe(s[\"after\" + a], [], s);\n }\n _getRegistryForType(e) {\n for (let n = 0; n < this._typedRegistries.length; n++) {\n const s = this._typedRegistries[n];\n if (s.isForType(e))\n return s;\n }\n return this.plugins;\n }\n _get(e, n, s) {\n const a = n.get(e);\n if (a === void 0)\n throw new Error('\"' + e + '\" is not a registered ' + s + \".\");\n return a;\n }\n}\nvar hn = new wb();\nclass Sb {\n constructor() {\n this._init = [];\n }\n notify(e, n, s, a) {\n n === \"beforeInit\" && (this._init = this._createDescriptors(e, !0), this._notify(this._init, e, \"install\"));\n const i = a ? this._descriptors(e).filter(a) : this._descriptors(e), o = this._notify(i, e, n, s);\n return n === \"afterDestroy\" && (this._notify(i, e, \"stop\"), this._notify(this._init, e, \"uninstall\")), o;\n }\n _notify(e, n, s, a) {\n a = a || {};\n for (const i of e) {\n const o = i.plugin, l = o[s], r = [n, a, i.options];\n if (Qe(l, r, o) === !1 && a.cancelable)\n return !1;\n }\n return !0;\n }\n invalidate() {\n He(this._cache) || (this._oldCache = this._cache, this._cache = void 0);\n }\n _descriptors(e) {\n if (this._cache)\n return this._cache;\n const n = this._cache = this._createDescriptors(e);\n return this._notifyStateChanges(e), n;\n }\n _createDescriptors(e, n) {\n const s = e && e.config, a = Re(s.options && s.options.plugins, {}), i = _b(s);\n return a === !1 && !n ? [] : Cb(e, i, a, n);\n }\n _notifyStateChanges(e) {\n const n = this._oldCache || [], s = this._cache, a = (i, o) => i.filter((l) => !o.some((r) => l.plugin.id === r.plugin.id));\n this._notify(a(n, s), e, \"stop\"), this._notify(a(s, n), e, \"start\");\n }\n}\nfunction _b(t) {\n const e = [], n = Object.keys(hn.plugins.items);\n for (let a = 0; a < n.length; a++)\n e.push(hn.getPlugin(n[a]));\n const s = t.plugins || [];\n for (let a = 0; a < s.length; a++) {\n const i = s[a];\n e.indexOf(i) === -1 && e.push(i);\n }\n return e;\n}\nfunction Mb(t, e) {\n return !e && t === !1 ? null : t === !0 ? {} : t;\n}\nfunction Cb(t, e, n, s) {\n const a = [], i = t.getContext();\n for (let o = 0; o < e.length; o++) {\n const l = e[o], r = l.id, c = Mb(n[r], s);\n c !== null && a.push({\n plugin: l,\n options: $b(t.config, l, c, i)\n });\n }\n return a;\n}\nfunction $b(t, e, n, s) {\n const a = t.pluginScopeKeys(e), i = t.getOptionScopes(n, a);\n return t.createResolver(i, s, [\"\"], { scriptable: !1, indexable: !1, allKeys: !0 });\n}\nfunction yi(t, e) {\n const n = Ue.datasets[t] || {};\n return ((e.datasets || {})[t] || {}).indexAxis || e.indexAxis || n.indexAxis || \"x\";\n}\nfunction Bb(t, e) {\n let n = t;\n return t === \"_index_\" ? n = e : t === \"_value_\" && (n = e === \"x\" ? \"y\" : \"x\"), n;\n}\nfunction Tb(t, e) {\n return t === e ? \"_index_\" : \"_value_\";\n}\nfunction Db(t) {\n if (t === \"top\" || t === \"bottom\")\n return \"x\";\n if (t === \"left\" || t === \"right\")\n return \"y\";\n}\nfunction xi(t, e) {\n return t === \"x\" || t === \"y\" ? t : e.axis || Db(e.position) || t.charAt(0).toLowerCase();\n}\nfunction Ob(t, e) {\n const n = Fn[t.type] || { scales: {} }, s = e.scales || {}, a = yi(t.type, e), i = /* @__PURE__ */ Object.create(null), o = /* @__PURE__ */ Object.create(null);\n return Object.keys(s).forEach((l) => {\n const r = s[l];\n if (!Xe(r))\n return console.error(`Invalid scale configuration for scale: ${l}`);\n if (r._proxy)\n return console.warn(`Ignoring resolver passed as options for scale: ${l}`);\n const c = xi(l, r), u = Tb(c, a), f = n.scales || {};\n i[c] = i[c] || l, o[l] = ks(/* @__PURE__ */ Object.create(null), [{ axis: c }, r, f[c], f[u]]);\n }), t.data.datasets.forEach((l) => {\n const r = l.type || t.type, c = l.indexAxis || yi(r, e), f = (Fn[r] || {}).scales || {};\n Object.keys(f).forEach((d) => {\n const h = Bb(d, c), p = l[h + \"AxisID\"] || i[h] || h;\n o[p] = o[p] || /* @__PURE__ */ Object.create(null), ks(o[p], [{ axis: h }, s[p], f[d]]);\n });\n }), Object.keys(o).forEach((l) => {\n const r = o[l];\n ks(r, [Ue.scales[r.type], Ue.scale]);\n }), o;\n}\nfunction sc(t) {\n const e = t.options || (t.options = {});\n e.plugins = Re(e.plugins, {}), e.scales = Ob(t, e);\n}\nfunction ac(t) {\n return t = t || {}, t.datasets = t.datasets || [], t.labels = t.labels || [], t;\n}\nfunction Lb(t) {\n return t = t || {}, t.data = ac(t.data), sc(t), t;\n}\nconst xl = /* @__PURE__ */ new Map(), ic = /* @__PURE__ */ new Set();\nfunction ua(t, e) {\n let n = xl.get(t);\n return n || (n = e(), xl.set(t, n), ic.add(n)), n;\n}\nconst vs = (t, e, n) => {\n const s = _n(e, n);\n s !== void 0 && t.add(s);\n};\nclass Ab {\n constructor(e) {\n this._config = Lb(e), this._scopeCache = /* @__PURE__ */ new Map(), this._resolverCache = /* @__PURE__ */ new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(e) {\n this._config.type = e;\n }\n get data() {\n return this._config.data;\n }\n set data(e) {\n this._config.data = ac(e);\n }\n get options() {\n return this._config.options;\n }\n set options(e) {\n this._config.options = e;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const e = this._config;\n this.clearCache(), sc(e);\n }\n clearCache() {\n this._scopeCache.clear(), this._resolverCache.clear();\n }\n datasetScopeKeys(e) {\n return ua(\n e,\n () => [[\n `datasets.${e}`,\n \"\"\n ]]\n );\n }\n datasetAnimationScopeKeys(e, n) {\n return ua(\n `${e}.transition.${n}`,\n () => [\n [\n `datasets.${e}.transitions.${n}`,\n `transitions.${n}`\n ],\n [\n `datasets.${e}`,\n \"\"\n ]\n ]\n );\n }\n datasetElementScopeKeys(e, n) {\n return ua(\n `${e}-${n}`,\n () => [[\n `datasets.${e}.elements.${n}`,\n `datasets.${e}`,\n `elements.${n}`,\n \"\"\n ]]\n );\n }\n pluginScopeKeys(e) {\n const n = e.id, s = this.type;\n return ua(\n `${s}-plugin-${n}`,\n () => [[\n `plugins.${n}`,\n ...e.additionalOptionScopes || []\n ]]\n );\n }\n _cachedScopes(e, n) {\n const s = this._scopeCache;\n let a = s.get(e);\n return (!a || n) && (a = /* @__PURE__ */ new Map(), s.set(e, a)), a;\n }\n getOptionScopes(e, n, s) {\n const { options: a, type: i } = this, o = this._cachedScopes(e, s), l = o.get(n);\n if (l)\n return l;\n const r = /* @__PURE__ */ new Set();\n n.forEach((u) => {\n e && (r.add(e), u.forEach((f) => vs(r, e, f))), u.forEach((f) => vs(r, a, f)), u.forEach((f) => vs(r, Fn[i] || {}, f)), u.forEach((f) => vs(r, Ue, f)), u.forEach((f) => vs(r, gi, f));\n });\n const c = Array.from(r);\n return c.length === 0 && c.push(/* @__PURE__ */ Object.create(null)), ic.has(n) && o.set(n, c), c;\n }\n chartOptionScopes() {\n const { options: e, type: n } = this;\n return [\n e,\n Fn[n] || {},\n Ue.datasets[n] || {},\n { type: n },\n Ue,\n gi\n ];\n }\n resolveNamedOptions(e, n, s, a = [\"\"]) {\n const i = { $shared: !0 }, { resolver: o, subPrefixes: l } = kl(this._resolverCache, e, a);\n let r = o;\n if (Pb(o, n)) {\n i.$shared = !1, s = Mn(s) ? s() : s;\n const c = this.createResolver(e, s, l);\n r = ss(o, s, c);\n }\n for (const c of n)\n i[c] = r[c];\n return i;\n }\n createResolver(e, n, s = [\"\"], a) {\n const { resolver: i } = kl(this._resolverCache, e, s);\n return Xe(n) ? ss(i, n, void 0, a) : i;\n }\n}\nfunction kl(t, e, n) {\n let s = t.get(e);\n s || (s = /* @__PURE__ */ new Map(), t.set(e, s));\n const a = n.join();\n let i = s.get(a);\n return i || (i = {\n resolver: Xi(e, n),\n subPrefixes: n.filter((l) => !l.toLowerCase().includes(\"hover\"))\n }, s.set(a, i)), i;\n}\nconst Eb = (t) => Xe(t) && Object.getOwnPropertyNames(t).reduce((e, n) => e || Mn(t[n]), !1);\nfunction Pb(t, e) {\n const { isScriptable: n, isIndexable: s } = Vr(t);\n for (const a of e) {\n const i = n(a), o = s(a), l = (o || i) && t[a];\n if (i && (Mn(l) || Eb(l)) || o && at(l))\n return !0;\n }\n return !1;\n}\nvar Vb = \"3.8.0\";\nconst Rb = [\"top\", \"bottom\", \"left\", \"right\", \"chartArea\"];\nfunction wl(t, e) {\n return t === \"top\" || t === \"bottom\" || Rb.indexOf(t) === -1 && e === \"x\";\n}\nfunction Sl(t, e) {\n return function(n, s) {\n return n[t] === s[t] ? n[e] - s[e] : n[t] - s[t];\n };\n}\nfunction _l(t) {\n const e = t.chart, n = e.options.animation;\n e.notifyPlugins(\"afterRender\"), Qe(n && n.onComplete, [t], e);\n}\nfunction Ib(t) {\n const e = t.chart, n = e.options.animation;\n Qe(n && n.onProgress, [t], e);\n}\nfunction oc(t) {\n return Wr() && typeof t == \"string\" ? t = document.getElementById(t) : t && t.length && (t = t[0]), t && t.canvas && (t = t.canvas), t;\n}\nconst La = {}, lc = (t) => {\n const e = oc(t);\n return Object.values(La).filter((n) => n.canvas === e).pop();\n};\nfunction Fb(t, e, n) {\n const s = Object.keys(t);\n for (const a of s) {\n const i = +a;\n if (i >= e) {\n const o = t[a];\n delete t[a], (n > 0 || i > e) && (t[i + n] = o);\n }\n }\n}\nfunction Nb(t, e, n, s) {\n return !n || t.type === \"mouseout\" ? null : s ? e : t;\n}\nclass Ys {\n constructor(e, n) {\n const s = this.config = new Ab(n), a = oc(e), i = lc(a);\n if (i)\n throw new Error(\n \"Canvas is already in use. Chart with ID '\" + i.id + \"' must be destroyed before the canvas can be reused.\"\n );\n const o = s.createResolver(s.chartOptionScopes(), this.getContext());\n this.platform = new (s.platform || ab(a))(), this.platform.updateConfig(s);\n const l = this.platform.acquireContext(a, o.aspectRatio), r = l && l.canvas, c = r && r.height, u = r && r.width;\n if (this.id = Mv(), this.ctx = l, this.canvas = r, this.width = u, this.height = c, this._options = o, this._aspectRatio = this.aspectRatio, this._layers = [], this._metasets = [], this._stacks = void 0, this.boxes = [], this.currentDevicePixelRatio = void 0, this.chartArea = void 0, this._active = [], this._lastEvent = void 0, this._listeners = {}, this._responsiveListeners = void 0, this._sortedMetasets = [], this.scales = {}, this._plugins = new Sb(), this.$proxies = {}, this._hiddenIndices = {}, this.attached = !1, this._animationsDisabled = void 0, this.$context = void 0, this._doResize = Sv((f) => this.update(f), o.resizeDelay || 0), this._dataChanges = [], La[this.id] = this, !l || !r) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n ln.listen(this, \"complete\", _l), ln.listen(this, \"progress\", Ib), this._initialize(), this.attached && this.update();\n }\n get aspectRatio() {\n const { options: { aspectRatio: e, maintainAspectRatio: n }, width: s, height: a, _aspectRatio: i } = this;\n return He(e) ? n && i ? i : a ? s / a : null : e;\n }\n get data() {\n return this.config.data;\n }\n set data(e) {\n this.config.data = e;\n }\n get options() {\n return this._options;\n }\n set options(e) {\n this.config.options = e;\n }\n _initialize() {\n return this.notifyPlugins(\"beforeInit\"), this.options.responsive ? this.resize() : Ko(this, this.options.devicePixelRatio), this.bindEvents(), this.notifyPlugins(\"afterInit\"), this;\n }\n clear() {\n return jo(this.canvas, this.ctx), this;\n }\n stop() {\n return ln.stop(this), this;\n }\n resize(e, n) {\n ln.running(this) ? this._resizeBeforeDraw = { width: e, height: n } : this._resize(e, n);\n }\n _resize(e, n) {\n const s = this.options, a = this.canvas, i = s.maintainAspectRatio && this.aspectRatio, o = this.platform.getMaximumSize(a, e, n, i), l = s.devicePixelRatio || this.platform.getDevicePixelRatio(), r = this.width ? \"resize\" : \"attach\";\n this.width = o.width, this.height = o.height, this._aspectRatio = this.aspectRatio, Ko(this, l, !0) && (this.notifyPlugins(\"resize\", { size: o }), Qe(s.onResize, [this, o], this), this.attached && this._doResize(r) && this.render());\n }\n ensureScalesHaveIDs() {\n const n = this.options.scales || {};\n Ke(n, (s, a) => {\n s.id = a;\n });\n }\n buildOrUpdateScales() {\n const e = this.options, n = e.scales, s = this.scales, a = Object.keys(s).reduce((o, l) => (o[l] = !1, o), {});\n let i = [];\n n && (i = i.concat(\n Object.keys(n).map((o) => {\n const l = n[o], r = xi(o, l), c = r === \"r\", u = r === \"x\";\n return {\n options: l,\n dposition: c ? \"chartArea\" : u ? \"bottom\" : \"left\",\n dtype: c ? \"radialLinear\" : u ? \"category\" : \"linear\"\n };\n })\n )), Ke(i, (o) => {\n const l = o.options, r = l.id, c = xi(r, l), u = Re(l.type, o.dtype);\n (l.position === void 0 || wl(l.position, c) !== wl(o.dposition)) && (l.position = o.dposition), a[r] = !0;\n let f = null;\n if (r in s && s[r].type === u)\n f = s[r];\n else {\n const d = hn.getScale(u);\n f = new d({\n id: r,\n type: u,\n ctx: this.ctx,\n chart: this\n }), s[f.id] = f;\n }\n f.init(l, e);\n }), Ke(a, (o, l) => {\n o || delete s[l];\n }), Ke(s, (o) => {\n Mt.configure(this, o, o.options), Mt.addBox(this, o);\n });\n }\n _updateMetasets() {\n const e = this._metasets, n = this.data.datasets.length, s = e.length;\n if (e.sort((a, i) => a.index - i.index), s > n) {\n for (let a = n; a < s; ++a)\n this._destroyDatasetMeta(a);\n e.splice(n, s - n);\n }\n this._sortedMetasets = e.slice(0).sort(Sl(\"order\", \"index\"));\n }\n _removeUnreferencedMetasets() {\n const { _metasets: e, data: { datasets: n } } = this;\n e.length > n.length && delete this._stacks, e.forEach((s, a) => {\n n.filter((i) => i === s._dataset).length === 0 && this._destroyDatasetMeta(a);\n });\n }\n buildOrUpdateControllers() {\n const e = [], n = this.data.datasets;\n let s, a;\n for (this._removeUnreferencedMetasets(), s = 0, a = n.length; s < a; s++) {\n const i = n[s];\n let o = this.getDatasetMeta(s);\n const l = i.type || this.config.type;\n if (o.type && o.type !== l && (this._destroyDatasetMeta(s), o = this.getDatasetMeta(s)), o.type = l, o.indexAxis = i.indexAxis || yi(l, this.options), o.order = i.order || 0, o.index = s, o.label = \"\" + i.label, o.visible = this.isDatasetVisible(s), o.controller)\n o.controller.updateIndex(s), o.controller.linkScales();\n else {\n const r = hn.getController(l), { datasetElementType: c, dataElementType: u } = Ue.datasets[l];\n Object.assign(r.prototype, {\n dataElementType: hn.getElement(u),\n datasetElementType: c && hn.getElement(c)\n }), o.controller = new r(this, s), e.push(o.controller);\n }\n }\n return this._updateMetasets(), e;\n }\n _resetElements() {\n Ke(this.data.datasets, (e, n) => {\n this.getDatasetMeta(n).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements(), this.notifyPlugins(\"reset\");\n }\n update(e) {\n const n = this.config;\n n.update();\n const s = this._options = n.createResolver(n.chartOptionScopes(), this.getContext()), a = this._animationsDisabled = !s.animation;\n if (this._updateScales(), this._checkEventBindings(), this._updateHiddenIndices(), this._plugins.invalidate(), this.notifyPlugins(\"beforeUpdate\", { mode: e, cancelable: !0 }) === !1)\n return;\n const i = this.buildOrUpdateControllers();\n this.notifyPlugins(\"beforeElementsUpdate\");\n let o = 0;\n for (let c = 0, u = this.data.datasets.length; c < u; c++) {\n const { controller: f } = this.getDatasetMeta(c), d = !a && i.indexOf(f) === -1;\n f.buildOrUpdateElements(d), o = Math.max(+f.getMaxOverflow(), o);\n }\n o = this._minPadding = s.layout.autoPadding ? o : 0, this._updateLayout(o), a || Ke(i, (c) => {\n c.reset();\n }), this._updateDatasets(e), this.notifyPlugins(\"afterUpdate\", { mode: e }), this._layers.sort(Sl(\"z\", \"_idx\"));\n const { _active: l, _lastEvent: r } = this;\n r ? this._eventHandler(r, !0) : l.length && this._updateHoverStyles(l, l, !0), this.render();\n }\n _updateScales() {\n Ke(this.scales, (e) => {\n Mt.removeBox(this, e);\n }), this.ensureScalesHaveIDs(), this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const e = this.options, n = new Set(Object.keys(this._listeners)), s = new Set(e.events);\n (!Eo(n, s) || !!this._responsiveListeners !== e.responsive) && (this.unbindEvents(), this.bindEvents());\n }\n _updateHiddenIndices() {\n const { _hiddenIndices: e } = this, n = this._getUniformDataChanges() || [];\n for (const { method: s, start: a, count: i } of n) {\n const o = s === \"_removeElements\" ? -i : i;\n Fb(e, a, o);\n }\n }\n _getUniformDataChanges() {\n const e = this._dataChanges;\n if (!e || !e.length)\n return;\n this._dataChanges = [];\n const n = this.data.datasets.length, s = (i) => new Set(\n e.filter((o) => o[0] === i).map((o, l) => l + \",\" + o.splice(1).join(\",\"))\n ), a = s(0);\n for (let i = 1; i < n; i++)\n if (!Eo(a, s(i)))\n return;\n return Array.from(a).map((i) => i.split(\",\")).map((i) => ({ method: i[1], start: +i[2], count: +i[3] }));\n }\n _updateLayout(e) {\n if (this.notifyPlugins(\"beforeLayout\", { cancelable: !0 }) === !1)\n return;\n Mt.update(this, this.width, this.height, e);\n const n = this.chartArea, s = n.width <= 0 || n.height <= 0;\n this._layers = [], Ke(this.boxes, (a) => {\n s && a.position === \"chartArea\" || (a.configure && a.configure(), this._layers.push(...a._layers()));\n }, this), this._layers.forEach((a, i) => {\n a._idx = i;\n }), this.notifyPlugins(\"afterLayout\");\n }\n _updateDatasets(e) {\n if (this.notifyPlugins(\"beforeDatasetsUpdate\", { mode: e, cancelable: !0 }) !== !1) {\n for (let n = 0, s = this.data.datasets.length; n < s; ++n)\n this.getDatasetMeta(n).controller.configure();\n for (let n = 0, s = this.data.datasets.length; n < s; ++n)\n this._updateDataset(n, Mn(e) ? e({ datasetIndex: n }) : e);\n this.notifyPlugins(\"afterDatasetsUpdate\", { mode: e });\n }\n }\n _updateDataset(e, n) {\n const s = this.getDatasetMeta(e), a = { meta: s, index: e, mode: n, cancelable: !0 };\n this.notifyPlugins(\"beforeDatasetUpdate\", a) !== !1 && (s.controller._update(n), a.cancelable = !1, this.notifyPlugins(\"afterDatasetUpdate\", a));\n }\n render() {\n this.notifyPlugins(\"beforeRender\", { cancelable: !0 }) !== !1 && (ln.has(this) ? this.attached && !ln.running(this) && ln.start(this) : (this.draw(), _l({ chart: this })));\n }\n draw() {\n let e;\n if (this._resizeBeforeDraw) {\n const { width: s, height: a } = this._resizeBeforeDraw;\n this._resize(s, a), this._resizeBeforeDraw = null;\n }\n if (this.clear(), this.width <= 0 || this.height <= 0 || this.notifyPlugins(\"beforeDraw\", { cancelable: !0 }) === !1)\n return;\n const n = this._layers;\n for (e = 0; e < n.length && n[e].z <= 0; ++e)\n n[e].draw(this.chartArea);\n for (this._drawDatasets(); e < n.length; ++e)\n n[e].draw(this.chartArea);\n this.notifyPlugins(\"afterDraw\");\n }\n _getSortedDatasetMetas(e) {\n const n = this._sortedMetasets, s = [];\n let a, i;\n for (a = 0, i = n.length; a < i; ++a) {\n const o = n[a];\n (!e || o.visible) && s.push(o);\n }\n return s;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(!0);\n }\n _drawDatasets() {\n if (this.notifyPlugins(\"beforeDatasetsDraw\", { cancelable: !0 }) === !1)\n return;\n const e = this.getSortedVisibleDatasetMetas();\n for (let n = e.length - 1; n >= 0; --n)\n this._drawDataset(e[n]);\n this.notifyPlugins(\"afterDatasetsDraw\");\n }\n _drawDataset(e) {\n const n = this.ctx, s = e._clip, a = !s.disabled, i = this.chartArea, o = {\n meta: e,\n index: e.index,\n cancelable: !0\n };\n this.notifyPlugins(\"beforeDatasetDraw\", o) !== !1 && (a && Ia(n, {\n left: s.left === !1 ? 0 : i.left - s.left,\n right: s.right === !1 ? this.width : i.right + s.right,\n top: s.top === !1 ? 0 : i.top - s.top,\n bottom: s.bottom === !1 ? this.height : i.bottom + s.bottom\n }), e.controller.draw(), a && Fa(n), o.cancelable = !1, this.notifyPlugins(\"afterDatasetDraw\", o));\n }\n isPointInArea(e) {\n return Ls(e, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, n, s, a) {\n const i = Rg.modes[n];\n return typeof i == \"function\" ? i(this, e, s, a) : [];\n }\n getDatasetMeta(e) {\n const n = this.data.datasets[e], s = this._metasets;\n let a = s.filter((i) => i && i._dataset === n).pop();\n return a || (a = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: n && n.order || 0,\n index: e,\n _dataset: n,\n _parsed: [],\n _sorted: !1\n }, s.push(a)), a;\n }\n getContext() {\n return this.$context || (this.$context = Bn(null, { chart: this, type: \"chart\" }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(e) {\n const n = this.data.datasets[e];\n if (!n)\n return !1;\n const s = this.getDatasetMeta(e);\n return typeof s.hidden == \"boolean\" ? !s.hidden : !n.hidden;\n }\n setDatasetVisibility(e, n) {\n const s = this.getDatasetMeta(e);\n s.hidden = !n;\n }\n toggleDataVisibility(e) {\n this._hiddenIndices[e] = !this._hiddenIndices[e];\n }\n getDataVisibility(e) {\n return !this._hiddenIndices[e];\n }\n _updateVisibility(e, n, s) {\n const a = s ? \"show\" : \"hide\", i = this.getDatasetMeta(e), o = i.controller._resolveAnimations(void 0, a);\n Wt(n) ? (i.data[n].hidden = !s, this.update()) : (this.setDatasetVisibility(e, s), o.update(i, { visible: s }), this.update((l) => l.datasetIndex === e ? a : void 0));\n }\n hide(e, n) {\n this._updateVisibility(e, n, !1);\n }\n show(e, n) {\n this._updateVisibility(e, n, !0);\n }\n _destroyDatasetMeta(e) {\n const n = this._metasets[e];\n n && n.controller && n.controller._destroy(), delete this._metasets[e];\n }\n _stop() {\n let e, n;\n for (this.stop(), ln.remove(this), e = 0, n = this.data.datasets.length; e < n; ++e)\n this._destroyDatasetMeta(e);\n }\n destroy() {\n this.notifyPlugins(\"beforeDestroy\");\n const { canvas: e, ctx: n } = this;\n this._stop(), this.config.clearCache(), e && (this.unbindEvents(), jo(e, n), this.platform.releaseContext(n), this.canvas = null, this.ctx = null), this.notifyPlugins(\"destroy\"), delete La[this.id], this.notifyPlugins(\"afterDestroy\");\n }\n toBase64Image(...e) {\n return this.canvas.toDataURL(...e);\n }\n bindEvents() {\n this.bindUserEvents(), this.options.responsive ? this.bindResponsiveEvents() : this.attached = !0;\n }\n bindUserEvents() {\n const e = this._listeners, n = this.platform, s = (i, o) => {\n n.addEventListener(this, i, o), e[i] = o;\n }, a = (i, o, l) => {\n i.offsetX = o, i.offsetY = l, this._eventHandler(i);\n };\n Ke(this.options.events, (i) => s(i, a));\n }\n bindResponsiveEvents() {\n this._responsiveListeners || (this._responsiveListeners = {});\n const e = this._responsiveListeners, n = this.platform, s = (r, c) => {\n n.addEventListener(this, r, c), e[r] = c;\n }, a = (r, c) => {\n e[r] && (n.removeEventListener(this, r, c), delete e[r]);\n }, i = (r, c) => {\n this.canvas && this.resize(r, c);\n };\n let o;\n const l = () => {\n a(\"attach\", l), this.attached = !0, this.resize(), s(\"resize\", i), s(\"detach\", o);\n };\n o = () => {\n this.attached = !1, a(\"resize\", i), this._stop(), this._resize(0, 0), s(\"attach\", l);\n }, n.isAttached(this.canvas) ? l() : o();\n }\n unbindEvents() {\n Ke(this._listeners, (e, n) => {\n this.platform.removeEventListener(this, n, e);\n }), this._listeners = {}, Ke(this._responsiveListeners, (e, n) => {\n this.platform.removeEventListener(this, n, e);\n }), this._responsiveListeners = void 0;\n }\n updateHoverStyle(e, n, s) {\n const a = s ? \"set\" : \"remove\";\n let i, o, l, r;\n for (n === \"dataset\" && (i = this.getDatasetMeta(e[0].datasetIndex), i.controller[\"_\" + a + \"DatasetHoverStyle\"]()), l = 0, r = e.length; l < r; ++l) {\n o = e[l];\n const c = o && this.getDatasetMeta(o.datasetIndex).controller;\n c && c[a + \"HoverStyle\"](o.element, o.datasetIndex, o.index);\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(e) {\n const n = this._active || [], s = e.map(({ datasetIndex: i, index: o }) => {\n const l = this.getDatasetMeta(i);\n if (!l)\n throw new Error(\"No dataset found at index \" + i);\n return {\n datasetIndex: i,\n element: l.data[o],\n index: o\n };\n });\n !_a(s, n) && (this._active = s, this._lastEvent = null, this._updateHoverStyles(s, n));\n }\n notifyPlugins(e, n, s) {\n return this._plugins.notify(this, e, n, s);\n }\n _updateHoverStyles(e, n, s) {\n const a = this.options.hover, i = (r, c) => r.filter((u) => !c.some((f) => u.datasetIndex === f.datasetIndex && u.index === f.index)), o = i(n, e), l = s ? e : i(e, n);\n o.length && this.updateHoverStyle(o, a.mode, !1), l.length && a.mode && this.updateHoverStyle(l, a.mode, !0);\n }\n _eventHandler(e, n) {\n const s = {\n event: e,\n replay: n,\n cancelable: !0,\n inChartArea: this.isPointInArea(e)\n }, a = (o) => (o.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins(\"beforeEvent\", s, a) === !1)\n return;\n const i = this._handleEvent(e, n, s.inChartArea);\n return s.cancelable = !1, this.notifyPlugins(\"afterEvent\", s, a), (i || s.changed) && this.render(), this;\n }\n _handleEvent(e, n, s) {\n const { _active: a = [], options: i } = this, o = n, l = this._getActiveElements(e, a, s, o), r = Ov(e), c = Nb(e, this._lastEvent, s, r);\n s && (this._lastEvent = null, Qe(i.onHover, [e, l, this], this), r && Qe(i.onClick, [e, l, this], this));\n const u = !_a(l, a);\n return (u || n) && (this._active = l, this._updateHoverStyles(l, a, n)), this._lastEvent = c, u;\n }\n _getActiveElements(e, n, s, a) {\n if (e.type === \"mouseout\")\n return [];\n if (!s)\n return n;\n const i = this.options.hover;\n return this.getElementsAtEventForMode(e, i.mode, i, a);\n }\n}\nconst Ml = () => Ke(Ys.instances, (t) => t._plugins.invalidate()), bn = !0;\nObject.defineProperties(Ys, {\n defaults: {\n enumerable: bn,\n value: Ue\n },\n instances: {\n enumerable: bn,\n value: La\n },\n overrides: {\n enumerable: bn,\n value: Fn\n },\n registry: {\n enumerable: bn,\n value: hn\n },\n version: {\n enumerable: bn,\n value: Vb\n },\n getChart: {\n enumerable: bn,\n value: lc\n },\n register: {\n enumerable: bn,\n value: (...t) => {\n hn.add(...t), Ml();\n }\n },\n unregister: {\n enumerable: bn,\n value: (...t) => {\n hn.remove(...t), Ml();\n }\n }\n});\nfunction rc(t, e, n) {\n const { startAngle: s, pixelMargin: a, x: i, y: o, outerRadius: l, innerRadius: r } = e;\n let c = a / l;\n t.beginPath(), t.arc(i, o, l, s - c, n + c), r > a ? (c = a / r, t.arc(i, o, r, n + c, s - c, !0)) : t.arc(i, o, a, n + ft, s - ft), t.closePath(), t.clip();\n}\nfunction Hb(t) {\n return Yi(t, [\"outerStart\", \"outerEnd\", \"innerStart\", \"innerEnd\"]);\n}\nfunction Wb(t, e, n, s) {\n const a = Hb(t.options.borderRadius), i = (n - e) / 2, o = Math.min(i, s * e / 2), l = (r) => {\n const c = (n - Math.min(i, r)) * s / 2;\n return xt(r, 0, Math.min(i, c));\n };\n return {\n outerStart: l(a.outerStart),\n outerEnd: l(a.outerEnd),\n innerStart: xt(a.innerStart, 0, o),\n innerEnd: xt(a.innerEnd, 0, o)\n };\n}\nfunction Xn(t, e, n, s) {\n return {\n x: n + t * Math.cos(e),\n y: s + t * Math.sin(e)\n };\n}\nfunction ki(t, e, n, s, a) {\n const { x: i, y: o, startAngle: l, pixelMargin: r, innerRadius: c } = e, u = Math.max(e.outerRadius + s + n - r, 0), f = c > 0 ? c + s + n + r : 0;\n let d = 0;\n const h = a - l;\n if (s) {\n const O = c > 0 ? c - s : 0, $ = u > 0 ? u - s : 0, I = (O + $) / 2, F = I !== 0 ? h * I / (I + s) : h;\n d = (h - F) / 2;\n }\n const p = Math.max(1e-3, h * u - n / rt) / u, v = (h - p) / 2, m = l + v + d, g = a - v - d, { outerStart: b, outerEnd: S, innerStart: w, innerEnd: k } = Wb(e, f, u, g - m), C = u - b, M = u - S, V = m + b / C, B = g - S / M, D = f + w, E = f + k, X = m + w / D, L = g - k / E;\n if (t.beginPath(), t.arc(i, o, u, V, B), S > 0) {\n const O = Xn(M, B, i, o);\n t.arc(O.x, O.y, S, B, g + ft);\n }\n const A = Xn(E, g, i, o);\n if (t.lineTo(A.x, A.y), k > 0) {\n const O = Xn(E, L, i, o);\n t.arc(O.x, O.y, k, g + ft, L + Math.PI);\n }\n if (t.arc(i, o, f, g - k / f, m + w / f, !0), w > 0) {\n const O = Xn(D, X, i, o);\n t.arc(O.x, O.y, w, X + Math.PI, m - ft);\n }\n const P = Xn(C, m, i, o);\n if (t.lineTo(P.x, P.y), b > 0) {\n const O = Xn(C, V, i, o);\n t.arc(O.x, O.y, b, m - ft, V);\n }\n t.closePath();\n}\nfunction zb(t, e, n, s) {\n const { fullCircles: a, startAngle: i, circumference: o } = e;\n let l = e.endAngle;\n if (a) {\n ki(t, e, n, s, i + tt);\n for (let r = 0; r < a; ++r)\n t.fill();\n isNaN(o) || (l = i + o % tt, o % tt === 0 && (l += tt));\n }\n return ki(t, e, n, s, l), t.fill(), l;\n}\nfunction Yb(t, e, n) {\n const { x: s, y: a, startAngle: i, pixelMargin: o, fullCircles: l } = e, r = Math.max(e.outerRadius - o, 0), c = e.innerRadius + o;\n let u;\n for (n && rc(t, e, i + tt), t.beginPath(), t.arc(s, a, c, i + tt, i, !0), u = 0; u < l; ++u)\n t.stroke();\n for (t.beginPath(), t.arc(s, a, r, i, i + tt), u = 0; u < l; ++u)\n t.stroke();\n}\nfunction jb(t, e, n, s, a) {\n const { options: i } = e, { borderWidth: o, borderJoinStyle: l } = i, r = i.borderAlign === \"inner\";\n o && (r ? (t.lineWidth = o * 2, t.lineJoin = l || \"round\") : (t.lineWidth = o, t.lineJoin = l || \"bevel\"), e.fullCircles && Yb(t, e, r), r && rc(t, e, a), ki(t, e, n, s, a), t.stroke());\n}\nclass js extends Kt {\n constructor(e) {\n super(), this.options = void 0, this.circumference = void 0, this.startAngle = void 0, this.endAngle = void 0, this.innerRadius = void 0, this.outerRadius = void 0, this.pixelMargin = 0, this.fullCircles = 0, e && Object.assign(this, e);\n }\n inRange(e, n, s) {\n const a = this.getProps([\"x\", \"y\"], s), { angle: i, distance: o } = $r(a, { x: e, y: n }), { startAngle: l, endAngle: r, innerRadius: c, outerRadius: u, circumference: f } = this.getProps([\n \"startAngle\",\n \"endAngle\",\n \"innerRadius\",\n \"outerRadius\",\n \"circumference\"\n ], s), d = this.options.spacing / 2, p = Re(f, r - l) >= tt || Os(i, l, r), v = dn(o, c + d, u + d);\n return p && v;\n }\n getCenterPoint(e) {\n const { x: n, y: s, startAngle: a, endAngle: i, innerRadius: o, outerRadius: l } = this.getProps([\n \"x\",\n \"y\",\n \"startAngle\",\n \"endAngle\",\n \"innerRadius\",\n \"outerRadius\",\n \"circumference\"\n ], e), { offset: r, spacing: c } = this.options, u = (a + i) / 2, f = (o + l + c + r) / 2;\n return {\n x: n + Math.cos(u) * f,\n y: s + Math.sin(u) * f\n };\n }\n tooltipPosition(e) {\n return this.getCenterPoint(e);\n }\n draw(e) {\n const { options: n, circumference: s } = this, a = (n.offset || 0) / 2, i = (n.spacing || 0) / 2;\n if (this.pixelMargin = n.borderAlign === \"inner\" ? 0.33 : 0, this.fullCircles = s > tt ? Math.floor(s / tt) : 0, s === 0 || this.innerRadius < 0 || this.outerRadius < 0)\n return;\n e.save();\n let o = 0;\n if (a) {\n o = a / 2;\n const r = (this.startAngle + this.endAngle) / 2;\n e.translate(Math.cos(r) * o, Math.sin(r) * o), this.circumference >= rt && (o = a);\n }\n e.fillStyle = n.backgroundColor, e.strokeStyle = n.borderColor;\n const l = zb(e, this, o, i);\n jb(e, this, o, i, l), e.restore();\n }\n}\njs.id = \"arc\";\njs.defaults = {\n borderAlign: \"center\",\n borderColor: \"#fff\",\n borderJoinStyle: void 0,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: void 0\n};\njs.defaultRoutes = {\n backgroundColor: \"backgroundColor\"\n};\nfunction cc(t, e, n = e) {\n t.lineCap = Re(n.borderCapStyle, e.borderCapStyle), t.setLineDash(Re(n.borderDash, e.borderDash)), t.lineDashOffset = Re(n.borderDashOffset, e.borderDashOffset), t.lineJoin = Re(n.borderJoinStyle, e.borderJoinStyle), t.lineWidth = Re(n.borderWidth, e.borderWidth), t.strokeStyle = Re(n.borderColor, e.borderColor);\n}\nfunction Xb(t, e, n) {\n t.lineTo(n.x, n.y);\n}\nfunction Ub(t) {\n return t.stepped ? cm : t.tension || t.cubicInterpolationMode === \"monotone\" ? um : Xb;\n}\nfunction uc(t, e, n = {}) {\n const s = t.length, { start: a = 0, end: i = s - 1 } = n, { start: o, end: l } = e, r = Math.max(a, o), c = Math.min(i, l), u = a < o && i < o || a > l && i > l;\n return {\n count: s,\n start: r,\n loop: e.loop,\n ilen: c < r && !u ? s + c - r : c - r\n };\n}\nfunction qb(t, e, n, s) {\n const { points: a, options: i } = e, { count: o, start: l, loop: r, ilen: c } = uc(a, n, s), u = Ub(i);\n let { move: f = !0, reverse: d } = s || {}, h, p, v;\n for (h = 0; h <= c; ++h)\n p = a[(l + (d ? c - h : h)) % o], !p.skip && (f ? (t.moveTo(p.x, p.y), f = !1) : u(t, v, p, d, i.stepped), v = p);\n return r && (p = a[(l + (d ? c : 0)) % o], u(t, v, p, d, i.stepped)), !!r;\n}\nfunction Kb(t, e, n, s) {\n const a = e.points, { count: i, start: o, ilen: l } = uc(a, n, s), { move: r = !0, reverse: c } = s || {};\n let u = 0, f = 0, d, h, p, v, m, g;\n const b = (w) => (o + (c ? l - w : w)) % i, S = () => {\n v !== m && (t.lineTo(u, m), t.lineTo(u, v), t.lineTo(u, g));\n };\n for (r && (h = a[b(0)], t.moveTo(h.x, h.y)), d = 0; d <= l; ++d) {\n if (h = a[b(d)], h.skip)\n continue;\n const w = h.x, k = h.y, C = w | 0;\n C === p ? (k < v ? v = k : k > m && (m = k), u = (f * u + w) / ++f) : (S(), t.lineTo(w, k), p = C, f = 0, v = m = k), g = k;\n }\n S();\n}\nfunction wi(t) {\n const e = t.options, n = e.borderDash && e.borderDash.length;\n return !t._decimated && !t._loop && !e.tension && e.cubicInterpolationMode !== \"monotone\" && !e.stepped && !n ? Kb : qb;\n}\nfunction Gb(t) {\n return t.stepped ? Ym : t.tension || t.cubicInterpolationMode === \"monotone\" ? jm : Pn;\n}\nfunction Zb(t, e, n, s) {\n let a = e._path;\n a || (a = e._path = new Path2D(), e.path(a, n, s) && a.closePath()), cc(t, e.options), t.stroke(a);\n}\nfunction Jb(t, e, n, s) {\n const { segments: a, options: i } = e, o = wi(e);\n for (const l of a)\n cc(t, i, l.style), t.beginPath(), o(t, e, l, { start: n, end: n + s - 1 }) && t.closePath(), t.stroke();\n}\nconst Qb = typeof Path2D == \"function\";\nfunction ey(t, e, n, s) {\n Qb && !e.options.segment ? Zb(t, e, n, s) : Jb(t, e, n, s);\n}\nclass Tn extends Kt {\n constructor(e) {\n super(), this.animated = !0, this.options = void 0, this._chart = void 0, this._loop = void 0, this._fullLoop = void 0, this._path = void 0, this._points = void 0, this._segments = void 0, this._decimated = !1, this._pointsUpdated = !1, this._datasetIndex = void 0, e && Object.assign(this, e);\n }\n updateControlPoints(e, n) {\n const s = this.options;\n if ((s.tension || s.cubicInterpolationMode === \"monotone\") && !s.stepped && !this._pointsUpdated) {\n const a = s.spanGaps ? this._loop : this._fullLoop;\n Vm(this._points, s, e, a, n), this._pointsUpdated = !0;\n }\n }\n set points(e) {\n this._points = e, delete this._segments, delete this._path, this._pointsUpdated = !1;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = Jm(this, this.options.segment));\n }\n first() {\n const e = this.segments, n = this.points;\n return e.length && n[e[0].start];\n }\n last() {\n const e = this.segments, n = this.points, s = e.length;\n return s && n[e[s - 1].end];\n }\n interpolate(e, n) {\n const s = this.options, a = e[n], i = this.points, o = Ur(this, { property: n, start: a, end: a });\n if (!o.length)\n return;\n const l = [], r = Gb(s);\n let c, u;\n for (c = 0, u = o.length; c < u; ++c) {\n const { start: f, end: d } = o[c], h = i[f], p = i[d];\n if (h === p) {\n l.push(h);\n continue;\n }\n const v = Math.abs((a - h[n]) / (p[n] - h[n])), m = r(h, p, v, s.stepped);\n m[n] = e[n], l.push(m);\n }\n return l.length === 1 ? l[0] : l;\n }\n pathSegment(e, n, s) {\n return wi(this)(e, this, n, s);\n }\n path(e, n, s) {\n const a = this.segments, i = wi(this);\n let o = this._loop;\n n = n || 0, s = s || this.points.length - n;\n for (const l of a)\n o &= i(e, this, l, { start: n, end: n + s - 1 });\n return !!o;\n }\n draw(e, n, s, a) {\n const i = this.options || {};\n (this.points || []).length && i.borderWidth && (e.save(), ey(e, this, s, a), e.restore()), this.animated && (this._pointsUpdated = !1, this._path = void 0);\n }\n}\nTn.id = \"line\";\nTn.defaults = {\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n borderWidth: 3,\n capBezierPoints: !0,\n cubicInterpolationMode: \"default\",\n fill: !1,\n spanGaps: !1,\n stepped: !1,\n tension: 0\n};\nTn.defaultRoutes = {\n backgroundColor: \"backgroundColor\",\n borderColor: \"borderColor\"\n};\nTn.descriptors = {\n _scriptable: !0,\n _indexable: (t) => t !== \"borderDash\" && t !== \"fill\"\n};\nfunction Cl(t, e, n, s) {\n const a = t.options, { [n]: i } = t.getProps([n], s);\n return Math.abs(e - i) < a.radius + a.hitRadius;\n}\nclass Xs extends Kt {\n constructor(e) {\n super(), this.options = void 0, this.parsed = void 0, this.skip = void 0, this.stop = void 0, e && Object.assign(this, e);\n }\n inRange(e, n, s) {\n const a = this.options, { x: i, y: o } = this.getProps([\"x\", \"y\"], s);\n return Math.pow(e - i, 2) + Math.pow(n - o, 2) < Math.pow(a.hitRadius + a.radius, 2);\n }\n inXRange(e, n) {\n return Cl(this, e, \"x\", n);\n }\n inYRange(e, n) {\n return Cl(this, e, \"y\", n);\n }\n getCenterPoint(e) {\n const { x: n, y: s } = this.getProps([\"x\", \"y\"], e);\n return { x: n, y: s };\n }\n size(e) {\n e = e || this.options || {};\n let n = e.radius || 0;\n n = Math.max(n, n && e.hoverRadius || 0);\n const s = n && e.borderWidth || 0;\n return (n + s) * 2;\n }\n draw(e, n) {\n const s = this.options;\n this.skip || s.radius < 0.1 || !Ls(this, n, this.size(s) / 2) || (e.strokeStyle = s.borderColor, e.lineWidth = s.borderWidth, e.fillStyle = s.backgroundColor, Ta(e, s, this.x, this.y));\n }\n getRange() {\n const e = this.options || {};\n return e.radius + e.hitRadius;\n }\n}\nXs.id = \"point\";\nXs.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: \"circle\",\n radius: 3,\n rotation: 0\n};\nXs.defaultRoutes = {\n backgroundColor: \"backgroundColor\",\n borderColor: \"borderColor\"\n};\nfunction dc(t, e) {\n const { x: n, y: s, base: a, width: i, height: o } = t.getProps([\"x\", \"y\", \"base\", \"width\", \"height\"], e);\n let l, r, c, u, f;\n return t.horizontal ? (f = o / 2, l = Math.min(n, a), r = Math.max(n, a), c = s - f, u = s + f) : (f = i / 2, l = n - f, r = n + f, c = Math.min(s, a), u = Math.max(s, a)), { left: l, top: c, right: r, bottom: u };\n}\nfunction kn(t, e, n, s) {\n return t ? 0 : xt(e, n, s);\n}\nfunction ty(t, e, n) {\n const s = t.options.borderWidth, a = t.borderSkipped, i = Ar(s);\n return {\n t: kn(a.top, i.top, 0, n),\n r: kn(a.right, i.right, 0, e),\n b: kn(a.bottom, i.bottom, 0, n),\n l: kn(a.left, i.left, 0, e)\n };\n}\nfunction ny(t, e, n) {\n const { enableBorderRadius: s } = t.getProps([\"enableBorderRadius\"]), a = t.options.borderRadius, i = Rn(a), o = Math.min(e, n), l = t.borderSkipped, r = s || Xe(a);\n return {\n topLeft: kn(!r || l.top || l.left, i.topLeft, 0, o),\n topRight: kn(!r || l.top || l.right, i.topRight, 0, o),\n bottomLeft: kn(!r || l.bottom || l.left, i.bottomLeft, 0, o),\n bottomRight: kn(!r || l.bottom || l.right, i.bottomRight, 0, o)\n };\n}\nfunction sy(t) {\n const e = dc(t), n = e.right - e.left, s = e.bottom - e.top, a = ty(t, n / 2, s / 2), i = ny(t, n / 2, s / 2);\n return {\n outer: {\n x: e.left,\n y: e.top,\n w: n,\n h: s,\n radius: i\n },\n inner: {\n x: e.left + a.l,\n y: e.top + a.t,\n w: n - a.l - a.r,\n h: s - a.t - a.b,\n radius: {\n topLeft: Math.max(0, i.topLeft - Math.max(a.t, a.l)),\n topRight: Math.max(0, i.topRight - Math.max(a.t, a.r)),\n bottomLeft: Math.max(0, i.bottomLeft - Math.max(a.b, a.l)),\n bottomRight: Math.max(0, i.bottomRight - Math.max(a.b, a.r))\n }\n }\n };\n}\nfunction li(t, e, n, s) {\n const a = e === null, i = n === null, l = t && !(a && i) && dc(t, s);\n return l && (a || dn(e, l.left, l.right)) && (i || dn(n, l.top, l.bottom));\n}\nfunction ay(t) {\n return t.topLeft || t.topRight || t.bottomLeft || t.bottomRight;\n}\nfunction iy(t, e) {\n t.rect(e.x, e.y, e.w, e.h);\n}\nfunction ri(t, e, n = {}) {\n const s = t.x !== n.x ? -e : 0, a = t.y !== n.y ? -e : 0, i = (t.x + t.w !== n.x + n.w ? e : 0) - s, o = (t.y + t.h !== n.y + n.h ? e : 0) - a;\n return {\n x: t.x + s,\n y: t.y + a,\n w: t.w + i,\n h: t.h + o,\n radius: t.radius\n };\n}\nclass Us extends Kt {\n constructor(e) {\n super(), this.options = void 0, this.horizontal = void 0, this.base = void 0, this.width = void 0, this.height = void 0, this.inflateAmount = void 0, e && Object.assign(this, e);\n }\n draw(e) {\n const { inflateAmount: n, options: { borderColor: s, backgroundColor: a } } = this, { inner: i, outer: o } = sy(this), l = ay(o.radius) ? As : iy;\n e.save(), (o.w !== i.w || o.h !== i.h) && (e.beginPath(), l(e, ri(o, n, i)), e.clip(), l(e, ri(i, -n, o)), e.fillStyle = s, e.fill(\"evenodd\")), e.beginPath(), l(e, ri(i, n)), e.fillStyle = a, e.fill(), e.restore();\n }\n inRange(e, n, s) {\n return li(this, e, n, s);\n }\n inXRange(e, n) {\n return li(this, e, null, n);\n }\n inYRange(e, n) {\n return li(this, null, e, n);\n }\n getCenterPoint(e) {\n const { x: n, y: s, base: a, horizontal: i } = this.getProps([\"x\", \"y\", \"base\", \"horizontal\"], e);\n return {\n x: i ? (n + a) / 2 : n,\n y: i ? s : (s + a) / 2\n };\n }\n getRange(e) {\n return e === \"x\" ? this.width / 2 : this.height / 2;\n }\n}\nUs.id = \"bar\";\nUs.defaults = {\n borderSkipped: \"start\",\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: \"auto\",\n pointStyle: void 0\n};\nUs.defaultRoutes = {\n backgroundColor: \"backgroundColor\",\n borderColor: \"borderColor\"\n};\nvar oy = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n ArcElement: js,\n LineElement: Tn,\n PointElement: Xs,\n BarElement: Us\n});\nfunction ly(t, e, n, s, a) {\n const i = a.samples || s;\n if (i >= n)\n return t.slice(e, e + n);\n const o = [], l = (n - 2) / (i - 2);\n let r = 0;\n const c = e + n - 1;\n let u = e, f, d, h, p, v;\n for (o[r++] = t[u], f = 0; f < i - 2; f++) {\n let m = 0, g = 0, b;\n const S = Math.floor((f + 1) * l) + 1 + e, w = Math.min(Math.floor((f + 2) * l) + 1, n) + e, k = w - S;\n for (b = S; b < w; b++)\n m += t[b].x, g += t[b].y;\n m /= k, g /= k;\n const C = Math.floor(f * l) + 1 + e, M = Math.min(Math.floor((f + 1) * l) + 1, n) + e, { x: V, y: B } = t[u];\n for (h = p = -1, b = C; b < M; b++)\n p = 0.5 * Math.abs(\n (V - m) * (t[b].y - B) - (V - t[b].x) * (g - B)\n ), p > h && (h = p, d = t[b], v = b);\n o[r++] = d, u = v;\n }\n return o[r++] = t[c], o;\n}\nfunction ry(t, e, n, s) {\n let a = 0, i = 0, o, l, r, c, u, f, d, h, p, v;\n const m = [], g = e + n - 1, b = t[e].x, w = t[g].x - b;\n for (o = e; o < e + n; ++o) {\n l = t[o], r = (l.x - b) / w * s, c = l.y;\n const k = r | 0;\n if (k === u)\n c < p ? (p = c, f = o) : c > v && (v = c, d = o), a = (i * a + l.x) / ++i;\n else {\n const C = o - 1;\n if (!He(f) && !He(d)) {\n const M = Math.min(f, d), V = Math.max(f, d);\n M !== h && M !== C && m.push({\n ...t[M],\n x: a\n }), V !== h && V !== C && m.push({\n ...t[V],\n x: a\n });\n }\n o > 0 && C !== h && m.push(t[C]), m.push(l), u = k, i = 0, p = v = c, f = d = h = o;\n }\n }\n return m;\n}\nfunction fc(t) {\n if (t._decimated) {\n const e = t._data;\n delete t._decimated, delete t._data, Object.defineProperty(t, \"data\", { value: e });\n }\n}\nfunction $l(t) {\n t.data.datasets.forEach((e) => {\n fc(e);\n });\n}\nfunction cy(t, e) {\n const n = e.length;\n let s = 0, a;\n const { iScale: i } = t, { min: o, max: l, minDefined: r, maxDefined: c } = i.getUserBounds();\n return r && (s = xt(fn(e, i.axis, o).lo, 0, n - 1)), c ? a = xt(fn(e, i.axis, l).hi + 1, s, n) - s : a = n - s, { start: s, count: a };\n}\nvar uy = {\n id: \"decimation\",\n defaults: {\n algorithm: \"min-max\",\n enabled: !1\n },\n beforeElementsUpdate: (t, e, n) => {\n if (!n.enabled) {\n $l(t);\n return;\n }\n const s = t.width;\n t.data.datasets.forEach((a, i) => {\n const { _data: o, indexAxis: l } = a, r = t.getDatasetMeta(i), c = o || a.data;\n if (ot([l, t.options.indexAxis]) === \"y\" || !r.controller.supportsDecimation)\n return;\n const u = t.scales[r.xAxisID];\n if (u.type !== \"linear\" && u.type !== \"time\" || t.options.parsing)\n return;\n let { start: f, count: d } = cy(r, c);\n const h = n.threshold || 4 * s;\n if (d <= h) {\n fc(a);\n return;\n }\n He(o) && (a._data = c, delete a.data, Object.defineProperty(a, \"data\", {\n configurable: !0,\n enumerable: !0,\n get: function() {\n return this._decimated;\n },\n set: function(v) {\n this._data = v;\n }\n }));\n let p;\n switch (n.algorithm) {\n case \"lttb\":\n p = ly(c, f, d, s, n);\n break;\n case \"min-max\":\n p = ry(c, f, d, s);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`);\n }\n a._decimated = p;\n });\n },\n destroy(t) {\n $l(t);\n }\n};\nfunction dy(t, e, n) {\n const s = t.segments, a = t.points, i = e.points, o = [];\n for (const l of s) {\n let { start: r, end: c } = l;\n c = Zi(r, c, a);\n const u = Si(n, a[r], a[c], l.loop);\n if (!e.segments) {\n o.push({\n source: l,\n target: u,\n start: a[r],\n end: a[c]\n });\n continue;\n }\n const f = Ur(e, u);\n for (const d of f) {\n const h = Si(n, i[d.start], i[d.end], d.loop), p = Xr(l, a, h);\n for (const v of p)\n o.push({\n source: v,\n target: d,\n start: {\n [n]: Bl(u, h, \"start\", Math.max)\n },\n end: {\n [n]: Bl(u, h, \"end\", Math.min)\n }\n });\n }\n }\n return o;\n}\nfunction Si(t, e, n, s) {\n if (s)\n return;\n let a = e[t], i = n[t];\n return t === \"angle\" && (a = Pt(a), i = Pt(i)), { property: t, start: a, end: i };\n}\nfunction fy(t, e) {\n const { x: n = null, y: s = null } = t || {}, a = e.points, i = [];\n return e.segments.forEach(({ start: o, end: l }) => {\n l = Zi(o, l, a);\n const r = a[o], c = a[l];\n s !== null ? (i.push({ x: r.x, y: s }), i.push({ x: c.x, y: s })) : n !== null && (i.push({ x: n, y: r.y }), i.push({ x: n, y: c.y }));\n }), i;\n}\nfunction Zi(t, e, n) {\n for (; e > t; e--) {\n const s = n[e];\n if (!isNaN(s.x) && !isNaN(s.y))\n break;\n }\n return e;\n}\nfunction Bl(t, e, n, s) {\n return t && e ? s(t[n], e[n]) : t ? t[n] : e ? e[n] : 0;\n}\nfunction hc(t, e) {\n let n = [], s = !1;\n return at(t) ? (s = !0, n = t) : n = fy(t, e), n.length ? new Tn({\n points: n,\n options: { tension: 0 },\n _loop: s,\n _fullLoop: s\n }) : null;\n}\nfunction hy(t, e, n) {\n let a = t[e].fill;\n const i = [e];\n let o;\n if (!n)\n return a;\n for (; a !== !1 && i.indexOf(a) === -1; ) {\n if (!vt(a))\n return a;\n if (o = t[a], !o)\n return !1;\n if (o.visible)\n return a;\n i.push(a), a = o.fill;\n }\n return !1;\n}\nfunction py(t, e, n) {\n const s = by(t);\n if (Xe(s))\n return isNaN(s.value) ? !1 : s;\n let a = parseFloat(s);\n return vt(a) && Math.floor(a) === a ? vy(s[0], e, a, n) : [\"origin\", \"start\", \"end\", \"stack\", \"shape\"].indexOf(s) >= 0 && s;\n}\nfunction vy(t, e, n, s) {\n return (t === \"-\" || t === \"+\") && (n = e + n), n === e || n < 0 || n >= s ? !1 : n;\n}\nfunction my(t, e) {\n let n = null;\n return t === \"start\" ? n = e.bottom : t === \"end\" ? n = e.top : Xe(t) ? n = e.getPixelForValue(t.value) : e.getBasePixel && (n = e.getBasePixel()), n;\n}\nfunction gy(t, e, n) {\n let s;\n return t === \"start\" ? s = n : t === \"end\" ? s = e.options.reverse ? e.min : e.max : Xe(t) ? s = t.value : s = e.getBaseValue(), s;\n}\nfunction by(t) {\n const e = t.options, n = e.fill;\n let s = Re(n && n.target, n);\n return s === void 0 && (s = !!e.backgroundColor), s === !1 || s === null ? !1 : s === !0 ? \"origin\" : s;\n}\nfunction yy(t) {\n const { scale: e, index: n, line: s } = t, a = [], i = s.segments, o = s.points, l = xy(e, n);\n l.push(hc({ x: null, y: e.bottom }, s));\n for (let r = 0; r < i.length; r++) {\n const c = i[r];\n for (let u = c.start; u <= c.end; u++)\n ky(a, o[u], l);\n }\n return new Tn({ points: a, options: {} });\n}\nfunction xy(t, e) {\n const n = [], s = t.getMatchingVisibleMetas(\"line\");\n for (let a = 0; a < s.length; a++) {\n const i = s[a];\n if (i.index === e)\n break;\n i.hidden || n.unshift(i.dataset);\n }\n return n;\n}\nfunction ky(t, e, n) {\n const s = [];\n for (let a = 0; a < n.length; a++) {\n const i = n[a], { first: o, last: l, point: r } = wy(i, e, \"x\");\n if (!(!r || o && l)) {\n if (o)\n s.unshift(r);\n else if (t.push(r), !l)\n break;\n }\n }\n t.push(...s);\n}\nfunction wy(t, e, n) {\n const s = t.interpolate(e, n);\n if (!s)\n return {};\n const a = s[n], i = t.segments, o = t.points;\n let l = !1, r = !1;\n for (let c = 0; c < i.length; c++) {\n const u = i[c], f = o[u.start][n], d = o[u.end][n];\n if (dn(a, f, d)) {\n l = a === f, r = a === d;\n break;\n }\n }\n return { first: l, last: r, point: s };\n}\nclass pc {\n constructor(e) {\n this.x = e.x, this.y = e.y, this.radius = e.radius;\n }\n pathSegment(e, n, s) {\n const { x: a, y: i, radius: o } = this;\n return n = n || { start: 0, end: tt }, e.arc(a, i, o, n.end, n.start, !0), !s.bounds;\n }\n interpolate(e) {\n const { x: n, y: s, radius: a } = this, i = e.angle;\n return {\n x: n + Math.cos(i) * a,\n y: s + Math.sin(i) * a,\n angle: i\n };\n }\n}\nfunction Sy(t) {\n const { chart: e, fill: n, line: s } = t;\n if (vt(n))\n return _y(e, n);\n if (n === \"stack\")\n return yy(t);\n if (n === \"shape\")\n return !0;\n const a = My(t);\n return a instanceof pc ? a : hc(a, s);\n}\nfunction _y(t, e) {\n const n = t.getDatasetMeta(e);\n return n && t.isDatasetVisible(e) ? n.dataset : null;\n}\nfunction My(t) {\n return (t.scale || {}).getPointPositionForValue ? $y(t) : Cy(t);\n}\nfunction Cy(t) {\n const { scale: e = {}, fill: n } = t, s = my(n, e);\n if (vt(s)) {\n const a = e.isHorizontal();\n return {\n x: a ? s : null,\n y: a ? null : s\n };\n }\n return null;\n}\nfunction $y(t) {\n const { scale: e, fill: n } = t, s = e.options, a = e.getLabels().length, i = s.reverse ? e.max : e.min, o = gy(n, e, i), l = [];\n if (s.grid.circular) {\n const r = e.getPointPositionForValue(0, i);\n return new pc({\n x: r.x,\n y: r.y,\n radius: e.getDistanceFromCenterForValue(o)\n });\n }\n for (let r = 0; r < a; ++r)\n l.push(e.getPointPositionForValue(r, o));\n return l;\n}\nfunction ci(t, e, n) {\n const s = Sy(e), { line: a, scale: i, axis: o } = e, l = a.options, r = l.fill, c = l.backgroundColor, { above: u = c, below: f = c } = r || {};\n s && a.points.length && (Ia(t, n), By(t, { line: a, target: s, above: u, below: f, area: n, scale: i, axis: o }), Fa(t));\n}\nfunction By(t, e) {\n const { line: n, target: s, above: a, below: i, area: o, scale: l } = e, r = n._loop ? \"angle\" : e.axis;\n t.save(), r === \"x\" && i !== a && (Tl(t, s, o.top), Dl(t, { line: n, target: s, color: a, scale: l, property: r }), t.restore(), t.save(), Tl(t, s, o.bottom)), Dl(t, { line: n, target: s, color: i, scale: l, property: r }), t.restore();\n}\nfunction Tl(t, e, n) {\n const { segments: s, points: a } = e;\n let i = !0, o = !1;\n t.beginPath();\n for (const l of s) {\n const { start: r, end: c } = l, u = a[r], f = a[Zi(r, c, a)];\n i ? (t.moveTo(u.x, u.y), i = !1) : (t.lineTo(u.x, n), t.lineTo(u.x, u.y)), o = !!e.pathSegment(t, l, { move: o }), o ? t.closePath() : t.lineTo(f.x, n);\n }\n t.lineTo(e.first().x, n), t.closePath(), t.clip();\n}\nfunction Dl(t, e) {\n const { line: n, target: s, property: a, color: i, scale: o } = e, l = dy(n, s, a);\n for (const { source: r, target: c, start: u, end: f } of l) {\n const { style: { backgroundColor: d = i } = {} } = r, h = s !== !0;\n t.save(), t.fillStyle = d, Ty(t, o, h && Si(a, u, f)), t.beginPath();\n const p = !!n.pathSegment(t, r);\n let v;\n if (h) {\n p ? t.closePath() : Ol(t, s, f, a);\n const m = !!s.pathSegment(t, c, { move: p, reverse: !0 });\n v = p && m, v || Ol(t, s, u, a);\n }\n t.closePath(), t.fill(v ? \"evenodd\" : \"nonzero\"), t.restore();\n }\n}\nfunction Ty(t, e, n) {\n const { top: s, bottom: a } = e.chart.chartArea, { property: i, start: o, end: l } = n || {};\n i === \"x\" && (t.beginPath(), t.rect(o, s, l - o, a - s), t.clip());\n}\nfunction Ol(t, e, n, s) {\n const a = e.interpolate(n, s);\n a && t.lineTo(a.x, a.y);\n}\nvar Dy = {\n id: \"filler\",\n afterDatasetsUpdate(t, e, n) {\n const s = (t.data.datasets || []).length, a = [];\n let i, o, l, r;\n for (o = 0; o < s; ++o)\n i = t.getDatasetMeta(o), l = i.dataset, r = null, l && l.options && l instanceof Tn && (r = {\n visible: t.isDatasetVisible(o),\n index: o,\n fill: py(l, o, s),\n chart: t,\n axis: i.controller.options.indexAxis,\n scale: i.vScale,\n line: l\n }), i.$filler = r, a.push(r);\n for (o = 0; o < s; ++o)\n r = a[o], !(!r || r.fill === !1) && (r.fill = hy(a, o, n.propagate));\n },\n beforeDraw(t, e, n) {\n const s = n.drawTime === \"beforeDraw\", a = t.getSortedVisibleDatasetMetas(), i = t.chartArea;\n for (let o = a.length - 1; o >= 0; --o) {\n const l = a[o].$filler;\n l && (l.line.updateControlPoints(i, l.axis), s && ci(t.ctx, l, i));\n }\n },\n beforeDatasetsDraw(t, e, n) {\n if (n.drawTime !== \"beforeDatasetsDraw\")\n return;\n const s = t.getSortedVisibleDatasetMetas();\n for (let a = s.length - 1; a >= 0; --a) {\n const i = s[a].$filler;\n i && ci(t.ctx, i, t.chartArea);\n }\n },\n beforeDatasetDraw(t, e, n) {\n const s = e.meta.$filler;\n !s || s.fill === !1 || n.drawTime !== \"beforeDatasetDraw\" || ci(t.ctx, s, t.chartArea);\n },\n defaults: {\n propagate: !0,\n drawTime: \"beforeDatasetDraw\"\n }\n};\nconst Ll = (t, e) => {\n let { boxHeight: n = e, boxWidth: s = e } = t;\n return t.usePointStyle && (n = Math.min(n, e), s = Math.min(s, e)), {\n boxWidth: s,\n boxHeight: n,\n itemHeight: Math.max(e, n)\n };\n}, Oy = (t, e) => t !== null && e !== null && t.datasetIndex === e.datasetIndex && t.index === e.index;\nclass Al extends Kt {\n constructor(e) {\n super(), this._added = !1, this.legendHitBoxes = [], this._hoveredItem = null, this.doughnutMode = !1, this.chart = e.chart, this.options = e.options, this.ctx = e.ctx, this.legendItems = void 0, this.columnSizes = void 0, this.lineWidths = void 0, this.maxHeight = void 0, this.maxWidth = void 0, this.top = void 0, this.bottom = void 0, this.left = void 0, this.right = void 0, this.height = void 0, this.width = void 0, this._margins = void 0, this.position = void 0, this.weight = void 0, this.fullSize = void 0;\n }\n update(e, n, s) {\n this.maxWidth = e, this.maxHeight = n, this._margins = s, this.setDimensions(), this.buildLabels(), this.fit();\n }\n setDimensions() {\n this.isHorizontal() ? (this.width = this.maxWidth, this.left = this._margins.left, this.right = this.width) : (this.height = this.maxHeight, this.top = this._margins.top, this.bottom = this.height);\n }\n buildLabels() {\n const e = this.options.labels || {};\n let n = Qe(e.generateLabels, [this.chart], this) || [];\n e.filter && (n = n.filter((s) => e.filter(s, this.chart.data))), e.sort && (n = n.sort((s, a) => e.sort(s, a, this.chart.data))), this.options.reverse && n.reverse(), this.legendItems = n;\n }\n fit() {\n const { options: e, ctx: n } = this;\n if (!e.display) {\n this.width = this.height = 0;\n return;\n }\n const s = e.labels, a = gt(s.font), i = a.size, o = this._computeTitleHeight(), { boxWidth: l, itemHeight: r } = Ll(s, i);\n let c, u;\n n.font = a.string, this.isHorizontal() ? (c = this.maxWidth, u = this._fitRows(o, i, l, r) + 10) : (u = this.maxHeight, c = this._fitCols(o, i, l, r) + 10), this.width = Math.min(c, e.maxWidth || this.maxWidth), this.height = Math.min(u, e.maxHeight || this.maxHeight);\n }\n _fitRows(e, n, s, a) {\n const { ctx: i, maxWidth: o, options: { labels: { padding: l } } } = this, r = this.legendHitBoxes = [], c = this.lineWidths = [0], u = a + l;\n let f = e;\n i.textAlign = \"left\", i.textBaseline = \"middle\";\n let d = -1, h = -u;\n return this.legendItems.forEach((p, v) => {\n const m = s + n / 2 + i.measureText(p.text).width;\n (v === 0 || c[c.length - 1] + m + 2 * l > o) && (f += u, c[c.length - (v > 0 ? 0 : 1)] = 0, h += u, d++), r[v] = { left: 0, top: h, row: d, width: m, height: a }, c[c.length - 1] += m + l;\n }), f;\n }\n _fitCols(e, n, s, a) {\n const { ctx: i, maxHeight: o, options: { labels: { padding: l } } } = this, r = this.legendHitBoxes = [], c = this.columnSizes = [], u = o - e;\n let f = l, d = 0, h = 0, p = 0, v = 0;\n return this.legendItems.forEach((m, g) => {\n const b = s + n / 2 + i.measureText(m.text).width;\n g > 0 && h + a + 2 * l > u && (f += d + l, c.push({ width: d, height: h }), p += d + l, v++, d = h = 0), r[g] = { left: p, top: h, col: v, width: b, height: a }, d = Math.max(d, b), h += a + l;\n }), f += d, c.push({ width: d, height: h }), f;\n }\n adjustHitBoxes() {\n if (!this.options.display)\n return;\n const e = this._computeTitleHeight(), { legendHitBoxes: n, options: { align: s, labels: { padding: a }, rtl: i } } = this, o = Gn(i, this.left, this.width);\n if (this.isHorizontal()) {\n let l = 0, r = _t(s, this.left + a, this.right - this.lineWidths[l]);\n for (const c of n)\n l !== c.row && (l = c.row, r = _t(s, this.left + a, this.right - this.lineWidths[l])), c.top += this.top + e + a, c.left = o.leftForLtr(o.x(r), c.width), r += c.width + a;\n } else {\n let l = 0, r = _t(s, this.top + e + a, this.bottom - this.columnSizes[l].height);\n for (const c of n)\n c.col !== l && (l = c.col, r = _t(s, this.top + e + a, this.bottom - this.columnSizes[l].height)), c.top = r, c.left += this.left + a, c.left = o.leftForLtr(o.x(c.left), c.width), r += c.height + a;\n }\n }\n isHorizontal() {\n return this.options.position === \"top\" || this.options.position === \"bottom\";\n }\n draw() {\n if (this.options.display) {\n const e = this.ctx;\n Ia(e, this), this._draw(), Fa(e);\n }\n }\n _draw() {\n const { options: e, columnSizes: n, lineWidths: s, ctx: a } = this, { align: i, labels: o } = e, l = Ue.color, r = Gn(e.rtl, this.left, this.width), c = gt(o.font), { color: u, padding: f } = o, d = c.size, h = d / 2;\n let p;\n this.drawTitle(), a.textAlign = r.textAlign(\"left\"), a.textBaseline = \"middle\", a.lineWidth = 0.5, a.font = c.string;\n const { boxWidth: v, boxHeight: m, itemHeight: g } = Ll(o, d), b = function(M, V, B) {\n if (isNaN(v) || v <= 0 || isNaN(m) || m < 0)\n return;\n a.save();\n const D = Re(B.lineWidth, 1);\n if (a.fillStyle = Re(B.fillStyle, l), a.lineCap = Re(B.lineCap, \"butt\"), a.lineDashOffset = Re(B.lineDashOffset, 0), a.lineJoin = Re(B.lineJoin, \"miter\"), a.lineWidth = D, a.strokeStyle = Re(B.strokeStyle, l), a.setLineDash(Re(B.lineDash, [])), o.usePointStyle) {\n const E = {\n radius: v * Math.SQRT2 / 2,\n pointStyle: B.pointStyle,\n rotation: B.rotation,\n borderWidth: D\n }, X = r.xPlus(M, v / 2), L = V + h;\n Ta(a, E, X, L);\n } else {\n const E = V + Math.max((d - m) / 2, 0), X = r.leftForLtr(M, v), L = Rn(B.borderRadius);\n a.beginPath(), Object.values(L).some((A) => A !== 0) ? As(a, {\n x: X,\n y: E,\n w: v,\n h: m,\n radius: L\n }) : a.rect(X, E, v, m), a.fill(), D !== 0 && a.stroke();\n }\n a.restore();\n }, S = function(M, V, B) {\n Nn(a, B.text, M, V + g / 2, c, {\n strikethrough: B.hidden,\n textAlign: r.textAlign(B.textAlign)\n });\n }, w = this.isHorizontal(), k = this._computeTitleHeight();\n w ? p = {\n x: _t(i, this.left + f, this.right - s[0]),\n y: this.top + f + k,\n line: 0\n } : p = {\n x: this.left + f,\n y: _t(i, this.top + k + f, this.bottom - n[0].height),\n line: 0\n }, zr(this.ctx, e.textDirection);\n const C = g + f;\n this.legendItems.forEach((M, V) => {\n a.strokeStyle = M.fontColor || u, a.fillStyle = M.fontColor || u;\n const B = a.measureText(M.text).width, D = r.textAlign(M.textAlign || (M.textAlign = o.textAlign)), E = v + h + B;\n let X = p.x, L = p.y;\n r.setWidth(this.width), w ? V > 0 && X + E + f > this.right && (L = p.y += C, p.line++, X = p.x = _t(i, this.left + f, this.right - s[p.line])) : V > 0 && L + C > this.bottom && (X = p.x = X + n[p.line].width + f, p.line++, L = p.y = _t(i, this.top + k + f, this.bottom - n[p.line].height));\n const A = r.x(X);\n b(A, L, M), X = _v(D, X + v + h, w ? X + E : this.right, e.rtl), S(r.x(X), L, M), w ? p.x += E + f : p.y += C;\n }), Yr(this.ctx, e.textDirection);\n }\n drawTitle() {\n const e = this.options, n = e.title, s = gt(n.font), a = St(n.padding);\n if (!n.display)\n return;\n const i = Gn(e.rtl, this.left, this.width), o = this.ctx, l = n.position, r = s.size / 2, c = a.top + r;\n let u, f = this.left, d = this.width;\n if (this.isHorizontal())\n d = Math.max(...this.lineWidths), u = this.top + c, f = _t(e.align, f, this.right - d);\n else {\n const p = this.columnSizes.reduce((v, m) => Math.max(v, m.height), 0);\n u = c + _t(e.align, this.top, this.bottom - p - e.labels.padding - this._computeTitleHeight());\n }\n const h = _t(l, f, f + d);\n o.textAlign = i.textAlign(Ii(l)), o.textBaseline = \"middle\", o.strokeStyle = n.color, o.fillStyle = n.color, o.font = s.string, Nn(o, n.text, h, u, s);\n }\n _computeTitleHeight() {\n const e = this.options.title, n = gt(e.font), s = St(e.padding);\n return e.display ? n.lineHeight + s.height : 0;\n }\n _getLegendItemAt(e, n) {\n let s, a, i;\n if (dn(e, this.left, this.right) && dn(n, this.top, this.bottom)) {\n for (i = this.legendHitBoxes, s = 0; s < i.length; ++s)\n if (a = i[s], dn(e, a.left, a.left + a.width) && dn(n, a.top, a.top + a.height))\n return this.legendItems[s];\n }\n return null;\n }\n handleEvent(e) {\n const n = this.options;\n if (!Ly(e.type, n))\n return;\n const s = this._getLegendItemAt(e.x, e.y);\n if (e.type === \"mousemove\" || e.type === \"mouseout\") {\n const a = this._hoveredItem, i = Oy(a, s);\n a && !i && Qe(n.onLeave, [e, a, this], this), this._hoveredItem = s, s && !i && Qe(n.onHover, [e, s, this], this);\n } else s && Qe(n.onClick, [e, s, this], this);\n }\n}\nfunction Ly(t, e) {\n return !!((t === \"mousemove\" || t === \"mouseout\") && (e.onHover || e.onLeave) || e.onClick && (t === \"click\" || t === \"mouseup\"));\n}\nvar Ay = {\n id: \"legend\",\n _element: Al,\n start(t, e, n) {\n const s = t.legend = new Al({ ctx: t.ctx, options: n, chart: t });\n Mt.configure(t, s, n), Mt.addBox(t, s);\n },\n stop(t) {\n Mt.removeBox(t, t.legend), delete t.legend;\n },\n beforeUpdate(t, e, n) {\n const s = t.legend;\n Mt.configure(t, s, n), s.options = n;\n },\n afterUpdate(t) {\n const e = t.legend;\n e.buildLabels(), e.adjustHitBoxes();\n },\n afterEvent(t, e) {\n e.replay || t.legend.handleEvent(e.event);\n },\n defaults: {\n display: !0,\n position: \"top\",\n align: \"center\",\n fullSize: !0,\n reverse: !1,\n weight: 1e3,\n onClick(t, e, n) {\n const s = e.datasetIndex, a = n.chart;\n a.isDatasetVisible(s) ? (a.hide(s), e.hidden = !0) : (a.show(s), e.hidden = !1);\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (t) => t.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(t) {\n const e = t.data.datasets, { labels: { usePointStyle: n, pointStyle: s, textAlign: a, color: i } } = t.legend.options;\n return t._getSortedDatasetMetas().map((o) => {\n const l = o.controller.getStyle(n ? 0 : void 0), r = St(l.borderWidth);\n return {\n text: e[o.index].label,\n fillStyle: l.backgroundColor,\n fontColor: i,\n hidden: !o.visible,\n lineCap: l.borderCapStyle,\n lineDash: l.borderDash,\n lineDashOffset: l.borderDashOffset,\n lineJoin: l.borderJoinStyle,\n lineWidth: (r.width + r.height) / 4,\n strokeStyle: l.borderColor,\n pointStyle: s || l.pointStyle,\n rotation: l.rotation,\n textAlign: a || l.textAlign,\n borderRadius: 0,\n datasetIndex: o.index\n };\n }, this);\n }\n },\n title: {\n color: (t) => t.chart.options.color,\n display: !1,\n position: \"center\",\n text: \"\"\n }\n },\n descriptors: {\n _scriptable: (t) => !t.startsWith(\"on\"),\n labels: {\n _scriptable: (t) => ![\"generateLabels\", \"filter\", \"sort\"].includes(t)\n }\n }\n};\nclass Ji extends Kt {\n constructor(e) {\n super(), this.chart = e.chart, this.options = e.options, this.ctx = e.ctx, this._padding = void 0, this.top = void 0, this.bottom = void 0, this.left = void 0, this.right = void 0, this.width = void 0, this.height = void 0, this.position = void 0, this.weight = void 0, this.fullSize = void 0;\n }\n update(e, n) {\n const s = this.options;\n if (this.left = 0, this.top = 0, !s.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = e, this.height = this.bottom = n;\n const a = at(s.text) ? s.text.length : 1;\n this._padding = St(s.padding);\n const i = a * gt(s.font).lineHeight + this._padding.height;\n this.isHorizontal() ? this.height = i : this.width = i;\n }\n isHorizontal() {\n const e = this.options.position;\n return e === \"top\" || e === \"bottom\";\n }\n _drawArgs(e) {\n const { top: n, left: s, bottom: a, right: i, options: o } = this, l = o.align;\n let r = 0, c, u, f;\n return this.isHorizontal() ? (u = _t(l, s, i), f = n + e, c = i - s) : (o.position === \"left\" ? (u = s + e, f = _t(l, a, n), r = rt * -0.5) : (u = i - e, f = _t(l, n, a), r = rt * 0.5), c = a - n), { titleX: u, titleY: f, maxWidth: c, rotation: r };\n }\n draw() {\n const e = this.ctx, n = this.options;\n if (!n.display)\n return;\n const s = gt(n.font), i = s.lineHeight / 2 + this._padding.top, { titleX: o, titleY: l, maxWidth: r, rotation: c } = this._drawArgs(i);\n Nn(e, n.text, 0, 0, s, {\n color: n.color,\n maxWidth: r,\n rotation: c,\n textAlign: Ii(n.align),\n textBaseline: \"middle\",\n translation: [o, l]\n });\n }\n}\nfunction Ey(t, e) {\n const n = new Ji({\n ctx: t.ctx,\n options: e,\n chart: t\n });\n Mt.configure(t, n, e), Mt.addBox(t, n), t.titleBlock = n;\n}\nvar Py = {\n id: \"title\",\n _element: Ji,\n start(t, e, n) {\n Ey(t, n);\n },\n stop(t) {\n const e = t.titleBlock;\n Mt.removeBox(t, e), delete t.titleBlock;\n },\n beforeUpdate(t, e, n) {\n const s = t.titleBlock;\n Mt.configure(t, s, n), s.options = n;\n },\n defaults: {\n align: \"center\",\n display: !1,\n font: {\n weight: \"bold\"\n },\n fullSize: !0,\n padding: 10,\n position: \"top\",\n text: \"\",\n weight: 2e3\n },\n defaultRoutes: {\n color: \"color\"\n },\n descriptors: {\n _scriptable: !0,\n _indexable: !1\n }\n};\nconst da = /* @__PURE__ */ new WeakMap();\nvar Vy = {\n id: \"subtitle\",\n start(t, e, n) {\n const s = new Ji({\n ctx: t.ctx,\n options: n,\n chart: t\n });\n Mt.configure(t, s, n), Mt.addBox(t, s), da.set(t, s);\n },\n stop(t) {\n Mt.removeBox(t, da.get(t)), da.delete(t);\n },\n beforeUpdate(t, e, n) {\n const s = da.get(t);\n Mt.configure(t, s, n), s.options = n;\n },\n defaults: {\n align: \"center\",\n display: !1,\n font: {\n weight: \"normal\"\n },\n fullSize: !0,\n padding: 0,\n position: \"top\",\n text: \"\",\n weight: 1500\n },\n defaultRoutes: {\n color: \"color\"\n },\n descriptors: {\n _scriptable: !0,\n _indexable: !1\n }\n};\nconst Ms = {\n average(t) {\n if (!t.length)\n return !1;\n let e, n, s = 0, a = 0, i = 0;\n for (e = 0, n = t.length; e < n; ++e) {\n const o = t[e].element;\n if (o && o.hasValue()) {\n const l = o.tooltipPosition();\n s += l.x, a += l.y, ++i;\n }\n }\n return {\n x: s / i,\n y: a / i\n };\n },\n nearest(t, e) {\n if (!t.length)\n return !1;\n let n = e.x, s = e.y, a = Number.POSITIVE_INFINITY, i, o, l;\n for (i = 0, o = t.length; i < o; ++i) {\n const r = t[i].element;\n if (r && r.hasValue()) {\n const c = r.getCenterPoint(), u = vi(e, c);\n u < a && (a = u, l = r);\n }\n }\n if (l) {\n const r = l.tooltipPosition();\n n = r.x, s = r.y;\n }\n return {\n x: n,\n y: s\n };\n }\n};\nfunction Zt(t, e) {\n return e && (at(e) ? Array.prototype.push.apply(t, e) : t.push(e)), t;\n}\nfunction rn(t) {\n return (typeof t == \"string\" || t instanceof String) && t.indexOf(`\n`) > -1 ? t.split(`\n`) : t;\n}\nfunction Ry(t, e) {\n const { element: n, datasetIndex: s, index: a } = e, i = t.getDatasetMeta(s).controller, { label: o, value: l } = i.getLabelAndValue(a);\n return {\n chart: t,\n label: o,\n parsed: i.getParsed(a),\n raw: t.data.datasets[s].data[a],\n formattedValue: l,\n dataset: i.getDataset(),\n dataIndex: a,\n datasetIndex: s,\n element: n\n };\n}\nfunction El(t, e) {\n const n = t.chart.ctx, { body: s, footer: a, title: i } = t, { boxWidth: o, boxHeight: l } = e, r = gt(e.bodyFont), c = gt(e.titleFont), u = gt(e.footerFont), f = i.length, d = a.length, h = s.length, p = St(e.padding);\n let v = p.height, m = 0, g = s.reduce((w, k) => w + k.before.length + k.lines.length + k.after.length, 0);\n if (g += t.beforeBody.length + t.afterBody.length, f && (v += f * c.lineHeight + (f - 1) * e.titleSpacing + e.titleMarginBottom), g) {\n const w = e.displayColors ? Math.max(l, r.lineHeight) : r.lineHeight;\n v += h * w + (g - h) * r.lineHeight + (g - 1) * e.bodySpacing;\n }\n d && (v += e.footerMarginTop + d * u.lineHeight + (d - 1) * e.footerSpacing);\n let b = 0;\n const S = function(w) {\n m = Math.max(m, n.measureText(w).width + b);\n };\n return n.save(), n.font = c.string, Ke(t.title, S), n.font = r.string, Ke(t.beforeBody.concat(t.afterBody), S), b = e.displayColors ? o + 2 + e.boxPadding : 0, Ke(s, (w) => {\n Ke(w.before, S), Ke(w.lines, S), Ke(w.after, S);\n }), b = 0, n.font = u.string, Ke(t.footer, S), n.restore(), m += p.width, { width: m, height: v };\n}\nfunction Iy(t, e) {\n const { y: n, height: s } = e;\n return n < s / 2 ? \"top\" : n > t.height - s / 2 ? \"bottom\" : \"center\";\n}\nfunction Fy(t, e, n, s) {\n const { x: a, width: i } = s, o = n.caretSize + n.caretPadding;\n if (t === \"left\" && a + i + o > e.width || t === \"right\" && a - i - o < 0)\n return !0;\n}\nfunction Ny(t, e, n, s) {\n const { x: a, width: i } = n, { width: o, chartArea: { left: l, right: r } } = t;\n let c = \"center\";\n return s === \"center\" ? c = a <= (l + r) / 2 ? \"left\" : \"right\" : a <= i / 2 ? c = \"left\" : a >= o - i / 2 && (c = \"right\"), Fy(c, t, e, n) && (c = \"center\"), c;\n}\nfunction Pl(t, e, n) {\n const s = n.yAlign || e.yAlign || Iy(t, n);\n return {\n xAlign: n.xAlign || e.xAlign || Ny(t, e, n, s),\n yAlign: s\n };\n}\nfunction Hy(t, e) {\n let { x: n, width: s } = t;\n return e === \"right\" ? n -= s : e === \"center\" && (n -= s / 2), n;\n}\nfunction Wy(t, e, n) {\n let { y: s, height: a } = t;\n return e === \"top\" ? s += n : e === \"bottom\" ? s -= a + n : s -= a / 2, s;\n}\nfunction Vl(t, e, n, s) {\n const { caretSize: a, caretPadding: i, cornerRadius: o } = t, { xAlign: l, yAlign: r } = n, c = a + i, { topLeft: u, topRight: f, bottomLeft: d, bottomRight: h } = Rn(o);\n let p = Hy(e, l);\n const v = Wy(e, r, c);\n return r === \"center\" ? l === \"left\" ? p += c : l === \"right\" && (p -= c) : l === \"left\" ? p -= Math.max(u, d) + a : l === \"right\" && (p += Math.max(f, h) + a), {\n x: xt(p, 0, s.width - e.width),\n y: xt(v, 0, s.height - e.height)\n };\n}\nfunction fa(t, e, n) {\n const s = St(n.padding);\n return e === \"center\" ? t.x + t.width / 2 : e === \"right\" ? t.x + t.width - s.right : t.x + s.left;\n}\nfunction Rl(t) {\n return Zt([], rn(t));\n}\nfunction zy(t, e, n) {\n return Bn(t, {\n tooltip: e,\n tooltipItems: n,\n type: \"tooltip\"\n });\n}\nfunction Il(t, e) {\n const n = e && e.dataset && e.dataset.tooltip && e.dataset.tooltip.callbacks;\n return n ? t.override(n) : t;\n}\nclass _i extends Kt {\n constructor(e) {\n super(), this.opacity = 0, this._active = [], this._eventPosition = void 0, this._size = void 0, this._cachedAnimations = void 0, this._tooltipItems = [], this.$animations = void 0, this.$context = void 0, this.chart = e.chart || e._chart, this._chart = this.chart, this.options = e.options, this.dataPoints = void 0, this.title = void 0, this.beforeBody = void 0, this.body = void 0, this.afterBody = void 0, this.footer = void 0, this.xAlign = void 0, this.yAlign = void 0, this.x = void 0, this.y = void 0, this.height = void 0, this.width = void 0, this.caretX = void 0, this.caretY = void 0, this.labelColors = void 0, this.labelPointStyles = void 0, this.labelTextColors = void 0;\n }\n initialize(e) {\n this.options = e, this._cachedAnimations = void 0, this.$context = void 0;\n }\n _resolveAnimations() {\n const e = this._cachedAnimations;\n if (e)\n return e;\n const n = this.chart, s = this.options.setContext(this.getContext()), a = s.enabled && n.options.animation && s.animations, i = new qr(this.chart, a);\n return a._cacheable && (this._cachedAnimations = Object.freeze(i)), i;\n }\n getContext() {\n return this.$context || (this.$context = zy(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(e, n) {\n const { callbacks: s } = n, a = s.beforeTitle.apply(this, [e]), i = s.title.apply(this, [e]), o = s.afterTitle.apply(this, [e]);\n let l = [];\n return l = Zt(l, rn(a)), l = Zt(l, rn(i)), l = Zt(l, rn(o)), l;\n }\n getBeforeBody(e, n) {\n return Rl(n.callbacks.beforeBody.apply(this, [e]));\n }\n getBody(e, n) {\n const { callbacks: s } = n, a = [];\n return Ke(e, (i) => {\n const o = {\n before: [],\n lines: [],\n after: []\n }, l = Il(s, i);\n Zt(o.before, rn(l.beforeLabel.call(this, i))), Zt(o.lines, l.label.call(this, i)), Zt(o.after, rn(l.afterLabel.call(this, i))), a.push(o);\n }), a;\n }\n getAfterBody(e, n) {\n return Rl(n.callbacks.afterBody.apply(this, [e]));\n }\n getFooter(e, n) {\n const { callbacks: s } = n, a = s.beforeFooter.apply(this, [e]), i = s.footer.apply(this, [e]), o = s.afterFooter.apply(this, [e]);\n let l = [];\n return l = Zt(l, rn(a)), l = Zt(l, rn(i)), l = Zt(l, rn(o)), l;\n }\n _createItems(e) {\n const n = this._active, s = this.chart.data, a = [], i = [], o = [];\n let l = [], r, c;\n for (r = 0, c = n.length; r < c; ++r)\n l.push(Ry(this.chart, n[r]));\n return e.filter && (l = l.filter((u, f, d) => e.filter(u, f, d, s))), e.itemSort && (l = l.sort((u, f) => e.itemSort(u, f, s))), Ke(l, (u) => {\n const f = Il(e.callbacks, u);\n a.push(f.labelColor.call(this, u)), i.push(f.labelPointStyle.call(this, u)), o.push(f.labelTextColor.call(this, u));\n }), this.labelColors = a, this.labelPointStyles = i, this.labelTextColors = o, this.dataPoints = l, l;\n }\n update(e, n) {\n const s = this.options.setContext(this.getContext()), a = this._active;\n let i, o = [];\n if (!a.length)\n this.opacity !== 0 && (i = {\n opacity: 0\n });\n else {\n const l = Ms[s.position].call(this, a, this._eventPosition);\n o = this._createItems(s), this.title = this.getTitle(o, s), this.beforeBody = this.getBeforeBody(o, s), this.body = this.getBody(o, s), this.afterBody = this.getAfterBody(o, s), this.footer = this.getFooter(o, s);\n const r = this._size = El(this, s), c = Object.assign({}, l, r), u = Pl(this.chart, s, c), f = Vl(s, c, u, this.chart);\n this.xAlign = u.xAlign, this.yAlign = u.yAlign, i = {\n opacity: 1,\n x: f.x,\n y: f.y,\n width: r.width,\n height: r.height,\n caretX: l.x,\n caretY: l.y\n };\n }\n this._tooltipItems = o, this.$context = void 0, i && this._resolveAnimations().update(this, i), e && s.external && s.external.call(this, { chart: this.chart, tooltip: this, replay: n });\n }\n drawCaret(e, n, s, a) {\n const i = this.getCaretPosition(e, s, a);\n n.lineTo(i.x1, i.y1), n.lineTo(i.x2, i.y2), n.lineTo(i.x3, i.y3);\n }\n getCaretPosition(e, n, s) {\n const { xAlign: a, yAlign: i } = this, { caretSize: o, cornerRadius: l } = s, { topLeft: r, topRight: c, bottomLeft: u, bottomRight: f } = Rn(l), { x: d, y: h } = e, { width: p, height: v } = n;\n let m, g, b, S, w, k;\n return i === \"center\" ? (w = h + v / 2, a === \"left\" ? (m = d, g = m - o, S = w + o, k = w - o) : (m = d + p, g = m + o, S = w - o, k = w + o), b = m) : (a === \"left\" ? g = d + Math.max(r, u) + o : a === \"right\" ? g = d + p - Math.max(c, f) - o : g = this.caretX, i === \"top\" ? (S = h, w = S - o, m = g - o, b = g + o) : (S = h + v, w = S + o, m = g + o, b = g - o), k = S), { x1: m, x2: g, x3: b, y1: S, y2: w, y3: k };\n }\n drawTitle(e, n, s) {\n const a = this.title, i = a.length;\n let o, l, r;\n if (i) {\n const c = Gn(s.rtl, this.x, this.width);\n for (e.x = fa(this, s.titleAlign, s), n.textAlign = c.textAlign(s.titleAlign), n.textBaseline = \"middle\", o = gt(s.titleFont), l = s.titleSpacing, n.fillStyle = s.titleColor, n.font = o.string, r = 0; r < i; ++r)\n n.fillText(a[r], c.x(e.x), e.y + o.lineHeight / 2), e.y += o.lineHeight + l, r + 1 === i && (e.y += s.titleMarginBottom - l);\n }\n }\n _drawColorBox(e, n, s, a, i) {\n const o = this.labelColors[s], l = this.labelPointStyles[s], { boxHeight: r, boxWidth: c, boxPadding: u } = i, f = gt(i.bodyFont), d = fa(this, \"left\", i), h = a.x(d), p = r < f.lineHeight ? (f.lineHeight - r) / 2 : 0, v = n.y + p;\n if (i.usePointStyle) {\n const m = {\n radius: Math.min(c, r) / 2,\n pointStyle: l.pointStyle,\n rotation: l.rotation,\n borderWidth: 1\n }, g = a.leftForLtr(h, c) + c / 2, b = v + r / 2;\n e.strokeStyle = i.multiKeyBackground, e.fillStyle = i.multiKeyBackground, Ta(e, m, g, b), e.strokeStyle = o.borderColor, e.fillStyle = o.backgroundColor, Ta(e, m, g, b);\n } else {\n e.lineWidth = o.borderWidth || 1, e.strokeStyle = o.borderColor, e.setLineDash(o.borderDash || []), e.lineDashOffset = o.borderDashOffset || 0;\n const m = a.leftForLtr(h, c - u), g = a.leftForLtr(a.xPlus(h, 1), c - u - 2), b = Rn(o.borderRadius);\n Object.values(b).some((S) => S !== 0) ? (e.beginPath(), e.fillStyle = i.multiKeyBackground, As(e, {\n x: m,\n y: v,\n w: c,\n h: r,\n radius: b\n }), e.fill(), e.stroke(), e.fillStyle = o.backgroundColor, e.beginPath(), As(e, {\n x: g,\n y: v + 1,\n w: c - 2,\n h: r - 2,\n radius: b\n }), e.fill()) : (e.fillStyle = i.multiKeyBackground, e.fillRect(m, v, c, r), e.strokeRect(m, v, c, r), e.fillStyle = o.backgroundColor, e.fillRect(g, v + 1, c - 2, r - 2));\n }\n e.fillStyle = this.labelTextColors[s];\n }\n drawBody(e, n, s) {\n const { body: a } = this, { bodySpacing: i, bodyAlign: o, displayColors: l, boxHeight: r, boxWidth: c, boxPadding: u } = s, f = gt(s.bodyFont);\n let d = f.lineHeight, h = 0;\n const p = Gn(s.rtl, this.x, this.width), v = function(V) {\n n.fillText(V, p.x(e.x + h), e.y + d / 2), e.y += d + i;\n }, m = p.textAlign(o);\n let g, b, S, w, k, C, M;\n for (n.textAlign = o, n.textBaseline = \"middle\", n.font = f.string, e.x = fa(this, m, s), n.fillStyle = s.bodyColor, Ke(this.beforeBody, v), h = l && m !== \"right\" ? o === \"center\" ? c / 2 + u : c + 2 + u : 0, w = 0, C = a.length; w < C; ++w) {\n for (g = a[w], b = this.labelTextColors[w], n.fillStyle = b, Ke(g.before, v), S = g.lines, l && S.length && (this._drawColorBox(n, e, w, p, s), d = Math.max(f.lineHeight, r)), k = 0, M = S.length; k < M; ++k)\n v(S[k]), d = f.lineHeight;\n Ke(g.after, v);\n }\n h = 0, d = f.lineHeight, Ke(this.afterBody, v), e.y -= i;\n }\n drawFooter(e, n, s) {\n const a = this.footer, i = a.length;\n let o, l;\n if (i) {\n const r = Gn(s.rtl, this.x, this.width);\n for (e.x = fa(this, s.footerAlign, s), e.y += s.footerMarginTop, n.textAlign = r.textAlign(s.footerAlign), n.textBaseline = \"middle\", o = gt(s.footerFont), n.fillStyle = s.footerColor, n.font = o.string, l = 0; l < i; ++l)\n n.fillText(a[l], r.x(e.x), e.y + o.lineHeight / 2), e.y += o.lineHeight + s.footerSpacing;\n }\n }\n drawBackground(e, n, s, a) {\n const { xAlign: i, yAlign: o } = this, { x: l, y: r } = e, { width: c, height: u } = s, { topLeft: f, topRight: d, bottomLeft: h, bottomRight: p } = Rn(a.cornerRadius);\n n.fillStyle = a.backgroundColor, n.strokeStyle = a.borderColor, n.lineWidth = a.borderWidth, n.beginPath(), n.moveTo(l + f, r), o === \"top\" && this.drawCaret(e, n, s, a), n.lineTo(l + c - d, r), n.quadraticCurveTo(l + c, r, l + c, r + d), o === \"center\" && i === \"right\" && this.drawCaret(e, n, s, a), n.lineTo(l + c, r + u - p), n.quadraticCurveTo(l + c, r + u, l + c - p, r + u), o === \"bottom\" && this.drawCaret(e, n, s, a), n.lineTo(l + h, r + u), n.quadraticCurveTo(l, r + u, l, r + u - h), o === \"center\" && i === \"left\" && this.drawCaret(e, n, s, a), n.lineTo(l, r + f), n.quadraticCurveTo(l, r, l + f, r), n.closePath(), n.fill(), a.borderWidth > 0 && n.stroke();\n }\n _updateAnimationTarget(e) {\n const n = this.chart, s = this.$animations, a = s && s.x, i = s && s.y;\n if (a || i) {\n const o = Ms[e.position].call(this, this._active, this._eventPosition);\n if (!o)\n return;\n const l = this._size = El(this, e), r = Object.assign({}, o, this._size), c = Pl(n, e, r), u = Vl(e, r, c, n);\n (a._to !== u.x || i._to !== u.y) && (this.xAlign = c.xAlign, this.yAlign = c.yAlign, this.width = l.width, this.height = l.height, this.caretX = o.x, this.caretY = o.y, this._resolveAnimations().update(this, u));\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(e) {\n const n = this.options.setContext(this.getContext());\n let s = this.opacity;\n if (!s)\n return;\n this._updateAnimationTarget(n);\n const a = {\n width: this.width,\n height: this.height\n }, i = {\n x: this.x,\n y: this.y\n };\n s = Math.abs(s) < 1e-3 ? 0 : s;\n const o = St(n.padding), l = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n n.enabled && l && (e.save(), e.globalAlpha = s, this.drawBackground(i, e, a, n), zr(e, n.textDirection), i.y += o.top, this.drawTitle(i, e, n), this.drawBody(i, e, n), this.drawFooter(i, e, n), Yr(e, n.textDirection), e.restore());\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(e, n) {\n const s = this._active, a = e.map(({ datasetIndex: l, index: r }) => {\n const c = this.chart.getDatasetMeta(l);\n if (!c)\n throw new Error(\"Cannot find a dataset at index \" + l);\n return {\n datasetIndex: l,\n element: c.data[r],\n index: r\n };\n }), i = !_a(s, a), o = this._positionChanged(a, n);\n (i || o) && (this._active = a, this._eventPosition = n, this._ignoreReplayEvents = !0, this.update(!0));\n }\n handleEvent(e, n, s = !0) {\n if (n && this._ignoreReplayEvents)\n return !1;\n this._ignoreReplayEvents = !1;\n const a = this.options, i = this._active || [], o = this._getActiveElements(e, i, n, s), l = this._positionChanged(o, e), r = n || !_a(o, i) || l;\n return r && (this._active = o, (a.enabled || a.external) && (this._eventPosition = {\n x: e.x,\n y: e.y\n }, this.update(!0, n))), r;\n }\n _getActiveElements(e, n, s, a) {\n const i = this.options;\n if (e.type === \"mouseout\")\n return [];\n if (!a)\n return n;\n const o = this.chart.getElementsAtEventForMode(e, i.mode, i, s);\n return i.reverse && o.reverse(), o;\n }\n _positionChanged(e, n) {\n const { caretX: s, caretY: a, options: i } = this, o = Ms[i.position].call(this, e, n);\n return o !== !1 && (s !== o.x || a !== o.y);\n }\n}\n_i.positioners = Ms;\nvar Yy = {\n id: \"tooltip\",\n _element: _i,\n positioners: Ms,\n afterInit(t, e, n) {\n n && (t.tooltip = new _i({ chart: t, options: n }));\n },\n beforeUpdate(t, e, n) {\n t.tooltip && t.tooltip.initialize(n);\n },\n reset(t, e, n) {\n t.tooltip && t.tooltip.initialize(n);\n },\n afterDraw(t) {\n const e = t.tooltip;\n if (e && e._willRender()) {\n const n = {\n tooltip: e\n };\n if (t.notifyPlugins(\"beforeTooltipDraw\", n) === !1)\n return;\n e.draw(t.ctx), t.notifyPlugins(\"afterTooltipDraw\", n);\n }\n },\n afterEvent(t, e) {\n if (t.tooltip) {\n const n = e.replay;\n t.tooltip.handleEvent(e.event, n, e.inChartArea) && (e.changed = !0);\n }\n },\n defaults: {\n enabled: !0,\n external: null,\n position: \"average\",\n backgroundColor: \"rgba(0,0,0,0.8)\",\n titleColor: \"#fff\",\n titleFont: {\n weight: \"bold\"\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: \"left\",\n bodyColor: \"#fff\",\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: \"left\",\n footerColor: \"#fff\",\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: \"bold\"\n },\n footerAlign: \"left\",\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (t, e) => e.bodyFont.size,\n boxWidth: (t, e) => e.bodyFont.size,\n multiKeyBackground: \"#fff\",\n displayColors: !0,\n boxPadding: 0,\n borderColor: \"rgba(0,0,0,0)\",\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: \"easeOutQuart\"\n },\n animations: {\n numbers: {\n type: \"number\",\n properties: [\"x\", \"y\", \"width\", \"height\", \"caretX\", \"caretY\"]\n },\n opacity: {\n easing: \"linear\",\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: on,\n title(t) {\n if (t.length > 0) {\n const e = t[0], n = e.chart.data.labels, s = n ? n.length : 0;\n if (this && this.options && this.options.mode === \"dataset\")\n return e.dataset.label || \"\";\n if (e.label)\n return e.label;\n if (s > 0 && e.dataIndex < s)\n return n[e.dataIndex];\n }\n return \"\";\n },\n afterTitle: on,\n beforeBody: on,\n beforeLabel: on,\n label(t) {\n if (this && this.options && this.options.mode === \"dataset\")\n return t.label + \": \" + t.formattedValue || t.formattedValue;\n let e = t.dataset.label || \"\";\n e && (e += \": \");\n const n = t.formattedValue;\n return He(n) || (e += n), e;\n },\n labelColor(t) {\n const n = t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);\n return {\n borderColor: n.borderColor,\n backgroundColor: n.backgroundColor,\n borderWidth: n.borderWidth,\n borderDash: n.borderDash,\n borderDashOffset: n.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(t) {\n const n = t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);\n return {\n pointStyle: n.pointStyle,\n rotation: n.rotation\n };\n },\n afterLabel: on,\n afterBody: on,\n beforeFooter: on,\n footer: on,\n afterFooter: on\n }\n },\n defaultRoutes: {\n bodyFont: \"font\",\n footerFont: \"font\",\n titleFont: \"font\"\n },\n descriptors: {\n _scriptable: (t) => t !== \"filter\" && t !== \"itemSort\" && t !== \"external\",\n _indexable: !1,\n callbacks: {\n _scriptable: !1,\n _indexable: !1\n },\n animation: {\n _fallback: !1\n },\n animations: {\n _fallback: \"animation\"\n }\n },\n additionalOptionScopes: [\"interaction\"]\n}, jy = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n Decimation: uy,\n Filler: Dy,\n Legend: Ay,\n SubTitle: Vy,\n Title: Py,\n Tooltip: Yy\n});\nconst Xy = (t, e, n, s) => (typeof e == \"string\" ? (n = t.push(e) - 1, s.unshift({ index: n, label: e })) : isNaN(e) && (n = null), n);\nfunction Uy(t, e, n, s) {\n const a = t.indexOf(e);\n if (a === -1)\n return Xy(t, e, n, s);\n const i = t.lastIndexOf(e);\n return a !== i ? n : a;\n}\nconst qy = (t, e) => t === null ? null : xt(Math.round(t), 0, e);\nclass Aa extends Wn {\n constructor(e) {\n super(e), this._startValue = void 0, this._valueRange = 0, this._addedLabels = [];\n }\n init(e) {\n const n = this._addedLabels;\n if (n.length) {\n const s = this.getLabels();\n for (const { index: a, label: i } of n)\n s[a] === i && s.splice(a, 1);\n this._addedLabels = [];\n }\n super.init(e);\n }\n parse(e, n) {\n if (He(e))\n return null;\n const s = this.getLabels();\n return n = isFinite(n) && s[n] === e ? n : Uy(s, e, Re(n, e), this._addedLabels), qy(n, s.length - 1);\n }\n determineDataLimits() {\n const { minDefined: e, maxDefined: n } = this.getUserBounds();\n let { min: s, max: a } = this.getMinMax(!0);\n this.options.bounds === \"ticks\" && (e || (s = 0), n || (a = this.getLabels().length - 1)), this.min = s, this.max = a;\n }\n buildTicks() {\n const e = this.min, n = this.max, s = this.options.offset, a = [];\n let i = this.getLabels();\n i = e === 0 && n === i.length - 1 ? i : i.slice(e, n + 1), this._valueRange = Math.max(i.length - (s ? 0 : 1), 1), this._startValue = this.min - (s ? 0.5 : 0);\n for (let o = e; o <= n; o++)\n a.push({ value: o });\n return a;\n }\n getLabelForValue(e) {\n const n = this.getLabels();\n return e >= 0 && e < n.length ? n[e] : e;\n }\n configure() {\n super.configure(), this.isHorizontal() || (this._reversePixels = !this._reversePixels);\n }\n getPixelForValue(e) {\n return typeof e != \"number\" && (e = this.parse(e)), e === null ? NaN : this.getPixelForDecimal((e - this._startValue) / this._valueRange);\n }\n getPixelForTick(e) {\n const n = this.ticks;\n return e < 0 || e > n.length - 1 ? null : this.getPixelForValue(n[e].value);\n }\n getValueForPixel(e) {\n return Math.round(this._startValue + this.getDecimalForPixel(e) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nAa.id = \"category\";\nAa.defaults = {\n ticks: {\n callback: Aa.prototype.getLabelForValue\n }\n};\nfunction Ky(t, e) {\n const n = [], { bounds: a, step: i, min: o, max: l, precision: r, count: c, maxTicks: u, maxDigits: f, includeBounds: d } = t, h = i || 1, p = u - 1, { min: v, max: m } = e, g = !He(o), b = !He(l), S = !He(c), w = (m - v) / (f + 1);\n let k = Vo((m - v) / p / h) * h, C, M, V, B;\n if (k < 1e-14 && !g && !b)\n return [{ value: v }, { value: m }];\n B = Math.ceil(m / k) - Math.floor(v / k), B > p && (k = Vo(B * k / p / h) * h), He(r) || (C = Math.pow(10, r), k = Math.ceil(k * C) / C), a === \"ticks\" ? (M = Math.floor(v / k) * k, V = Math.ceil(m / k) * k) : (M = v, V = m), g && b && i && Pv((l - o) / i, k / 1e3) ? (B = Math.round(Math.min((l - o) / k, u)), k = (l - o) / B, M = o, V = l) : S ? (M = g ? o : M, V = b ? l : V, B = c - 1, k = (V - M) / B) : (B = (V - M) / k, ws(B, Math.round(B), k / 1e3) ? B = Math.round(B) : B = Math.ceil(B));\n const D = Math.max(\n Ro(k),\n Ro(M)\n );\n C = Math.pow(10, He(r) ? D : r), M = Math.round(M * C) / C, V = Math.round(V * C) / C;\n let E = 0;\n for (g && (d && M !== o ? (n.push({ value: o }), M < o && E++, ws(Math.round((M + E * k) * C) / C, o, Fl(o, w, t)) && E++) : M < o && E++); E < B; ++E)\n n.push({ value: Math.round((M + E * k) * C) / C });\n return b && d && V !== l ? n.length && ws(n[n.length - 1].value, l, Fl(l, w, t)) ? n[n.length - 1].value = l : n.push({ value: l }) : (!b || V === l) && n.push({ value: V }), n;\n}\nfunction Fl(t, e, { horizontal: n, minRotation: s }) {\n const a = Yt(s), i = (n ? Math.sin(a) : Math.cos(a)) || 1e-3, o = 0.75 * e * (\"\" + t).length;\n return Math.min(e / i, o);\n}\nclass Ea extends Wn {\n constructor(e) {\n super(e), this.start = void 0, this.end = void 0, this._startValue = void 0, this._endValue = void 0, this._valueRange = 0;\n }\n parse(e, n) {\n return He(e) || (typeof e == \"number\" || e instanceof Number) && !isFinite(+e) ? null : +e;\n }\n handleTickRangeOptions() {\n const { beginAtZero: e } = this.options, { minDefined: n, maxDefined: s } = this.getUserBounds();\n let { min: a, max: i } = this;\n const o = (r) => a = n ? a : r, l = (r) => i = s ? i : r;\n if (e) {\n const r = Qt(a), c = Qt(i);\n r < 0 && c < 0 ? l(0) : r > 0 && c > 0 && o(0);\n }\n if (a === i) {\n let r = 1;\n (i >= Number.MAX_SAFE_INTEGER || a <= Number.MIN_SAFE_INTEGER) && (r = Math.abs(i * 0.05)), l(i + r), e || o(a - r);\n }\n this.min = a, this.max = i;\n }\n getTickLimit() {\n const e = this.options.ticks;\n let { maxTicksLimit: n, stepSize: s } = e, a;\n return s ? (a = Math.ceil(this.max / s) - Math.floor(this.min / s) + 1, a > 1e3 && (console.warn(`scales.${this.id}.ticks.stepSize: ${s} would result generating up to ${a} ticks. Limiting to 1000.`), a = 1e3)) : (a = this.computeTickLimit(), n = n || 11), n && (a = Math.min(n, a)), a;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const e = this.options, n = e.ticks;\n let s = this.getTickLimit();\n s = Math.max(2, s);\n const a = {\n maxTicks: s,\n bounds: e.bounds,\n min: e.min,\n max: e.max,\n precision: n.precision,\n step: n.stepSize,\n count: n.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: n.minRotation || 0,\n includeBounds: n.includeBounds !== !1\n }, i = this._range || this, o = Ky(a, i);\n return e.bounds === \"ticks\" && Cr(o, this, \"value\"), e.reverse ? (o.reverse(), this.start = this.max, this.end = this.min) : (this.start = this.min, this.end = this.max), o;\n }\n configure() {\n const e = this.ticks;\n let n = this.min, s = this.max;\n if (super.configure(), this.options.offset && e.length) {\n const a = (s - n) / Math.max(e.length - 1, 1) / 2;\n n -= a, s += a;\n }\n this._startValue = n, this._endValue = s, this._valueRange = s - n;\n }\n getLabelForValue(e) {\n return Hs(e, this.chart.options.locale, this.options.ticks.format);\n }\n}\nclass Qi extends Ea {\n determineDataLimits() {\n const { min: e, max: n } = this.getMinMax(!0);\n this.min = vt(e) ? e : 0, this.max = vt(n) ? n : 1, this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const e = this.isHorizontal(), n = e ? this.width : this.height, s = Yt(this.options.ticks.minRotation), a = (e ? Math.sin(s) : Math.cos(s)) || 1e-3, i = this._resolveTickFontOptions(0);\n return Math.ceil(n / Math.min(40, i.lineHeight / a));\n }\n getPixelForValue(e) {\n return e === null ? NaN : this.getPixelForDecimal((e - this._startValue) / this._valueRange);\n }\n getValueForPixel(e) {\n return this._startValue + this.getDecimalForPixel(e) * this._valueRange;\n }\n}\nQi.id = \"linear\";\nQi.defaults = {\n ticks: {\n callback: Xa.formatters.numeric\n }\n};\nfunction Nl(t) {\n return t / Math.pow(10, Math.floor(Ft(t))) === 1;\n}\nfunction Gy(t, e) {\n const n = Math.floor(Ft(e.max)), s = Math.ceil(e.max / Math.pow(10, n)), a = [];\n let i = It(t.min, Math.pow(10, Math.floor(Ft(e.min)))), o = Math.floor(Ft(i)), l = Math.floor(i / Math.pow(10, o)), r = o < 0 ? Math.pow(10, Math.abs(o)) : 1;\n do\n a.push({ value: i, major: Nl(i) }), ++l, l === 10 && (l = 1, ++o, r = o >= 0 ? 1 : r), i = Math.round(l * Math.pow(10, o) * r) / r;\n while (o < n || o === n && l < s);\n const c = It(t.max, i);\n return a.push({ value: c, major: Nl(i) }), a;\n}\nclass eo extends Wn {\n constructor(e) {\n super(e), this.start = void 0, this.end = void 0, this._startValue = void 0, this._valueRange = 0;\n }\n parse(e, n) {\n const s = Ea.prototype.parse.apply(this, [e, n]);\n if (s === 0) {\n this._zero = !0;\n return;\n }\n return vt(s) && s > 0 ? s : null;\n }\n determineDataLimits() {\n const { min: e, max: n } = this.getMinMax(!0);\n this.min = vt(e) ? Math.max(0, e) : null, this.max = vt(n) ? Math.max(0, n) : null, this.options.beginAtZero && (this._zero = !0), this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const { minDefined: e, maxDefined: n } = this.getUserBounds();\n let s = this.min, a = this.max;\n const i = (r) => s = e ? s : r, o = (r) => a = n ? a : r, l = (r, c) => Math.pow(10, Math.floor(Ft(r)) + c);\n s === a && (s <= 0 ? (i(1), o(10)) : (i(l(s, -1)), o(l(a, 1)))), s <= 0 && i(l(a, -1)), a <= 0 && o(l(s, 1)), this._zero && this.min !== this._suggestedMin && s === l(this.min, 0) && i(l(s, -1)), this.min = s, this.max = a;\n }\n buildTicks() {\n const e = this.options, n = {\n min: this._userMin,\n max: this._userMax\n }, s = Gy(n, this);\n return e.bounds === \"ticks\" && Cr(s, this, \"value\"), e.reverse ? (s.reverse(), this.start = this.max, this.end = this.min) : (this.start = this.min, this.end = this.max), s;\n }\n getLabelForValue(e) {\n return e === void 0 ? \"0\" : Hs(e, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const e = this.min;\n super.configure(), this._startValue = Ft(e), this._valueRange = Ft(this.max) - Ft(e);\n }\n getPixelForValue(e) {\n return (e === void 0 || e === 0) && (e = this.min), e === null || isNaN(e) ? NaN : this.getPixelForDecimal(e === this.min ? 0 : (Ft(e) - this._startValue) / this._valueRange);\n }\n getValueForPixel(e) {\n const n = this.getDecimalForPixel(e);\n return Math.pow(10, this._startValue + n * this._valueRange);\n }\n}\neo.id = \"logarithmic\";\neo.defaults = {\n ticks: {\n callback: Xa.formatters.logarithmic,\n major: {\n enabled: !0\n }\n }\n};\nfunction Mi(t) {\n const e = t.ticks;\n if (e.display && t.display) {\n const n = St(e.backdropPadding);\n return Re(e.font && e.font.size, Ue.font.size) + n.height;\n }\n return 0;\n}\nfunction Zy(t, e, n) {\n return n = at(n) ? n : [n], {\n w: rm(t, e.string, n),\n h: n.length * e.lineHeight\n };\n}\nfunction Hl(t, e, n, s, a) {\n return t === s || t === a ? {\n start: e - n / 2,\n end: e + n / 2\n } : t < s || t > a ? {\n start: e - n,\n end: e\n } : {\n start: e,\n end: e + n\n };\n}\nfunction Jy(t) {\n const e = {\n l: t.left + t._padding.left,\n r: t.right - t._padding.right,\n t: t.top + t._padding.top,\n b: t.bottom - t._padding.bottom\n }, n = Object.assign({}, e), s = [], a = [], i = t._pointLabels.length, o = t.options.pointLabels, l = o.centerPointLabels ? rt / i : 0;\n for (let r = 0; r < i; r++) {\n const c = o.setContext(t.getPointLabelContext(r));\n a[r] = c.padding;\n const u = t.getPointPosition(r, t.drawingArea + a[r], l), f = gt(c.font), d = Zy(t.ctx, f, t._pointLabels[r]);\n s[r] = d;\n const h = Pt(t.getIndexAngle(r) + l), p = Math.round(Ni(h)), v = Hl(p, u.x, d.w, 0, 180), m = Hl(p, u.y, d.h, 90, 270);\n Qy(n, e, h, v, m);\n }\n t.setCenterPoint(\n e.l - n.l,\n n.r - e.r,\n e.t - n.t,\n n.b - e.b\n ), t._pointLabelItems = e0(t, s, a);\n}\nfunction Qy(t, e, n, s, a) {\n const i = Math.abs(Math.sin(n)), o = Math.abs(Math.cos(n));\n let l = 0, r = 0;\n s.start < e.l ? (l = (e.l - s.start) / i, t.l = Math.min(t.l, e.l - l)) : s.end > e.r && (l = (s.end - e.r) / i, t.r = Math.max(t.r, e.r + l)), a.start < e.t ? (r = (e.t - a.start) / o, t.t = Math.min(t.t, e.t - r)) : a.end > e.b && (r = (a.end - e.b) / o, t.b = Math.max(t.b, e.b + r));\n}\nfunction e0(t, e, n) {\n const s = [], a = t._pointLabels.length, i = t.options, o = Mi(i) / 2, l = t.drawingArea, r = i.pointLabels.centerPointLabels ? rt / a : 0;\n for (let c = 0; c < a; c++) {\n const u = t.getPointPosition(c, l + o + n[c], r), f = Math.round(Ni(Pt(u.angle + ft))), d = e[c], h = s0(u.y, d.h, f), p = t0(f), v = n0(u.x, d.w, p);\n s.push({\n x: u.x,\n y: h,\n textAlign: p,\n left: v,\n top: h,\n right: v + d.w,\n bottom: h + d.h\n });\n }\n return s;\n}\nfunction t0(t) {\n return t === 0 || t === 180 ? \"center\" : t < 180 ? \"left\" : \"right\";\n}\nfunction n0(t, e, n) {\n return n === \"right\" ? t -= e : n === \"center\" && (t -= e / 2), t;\n}\nfunction s0(t, e, n) {\n return n === 90 || n === 270 ? t -= e / 2 : (n > 270 || n < 90) && (t -= e), t;\n}\nfunction a0(t, e) {\n const { ctx: n, options: { pointLabels: s } } = t;\n for (let a = e - 1; a >= 0; a--) {\n const i = s.setContext(t.getPointLabelContext(a)), o = gt(i.font), { x: l, y: r, textAlign: c, left: u, top: f, right: d, bottom: h } = t._pointLabelItems[a], { backdropColor: p } = i;\n if (!He(p)) {\n const v = Rn(i.borderRadius), m = St(i.backdropPadding);\n n.fillStyle = p;\n const g = u - m.left, b = f - m.top, S = d - u + m.width, w = h - f + m.height;\n Object.values(v).some((k) => k !== 0) ? (n.beginPath(), As(n, {\n x: g,\n y: b,\n w: S,\n h: w,\n radius: v\n }), n.fill()) : n.fillRect(g, b, S, w);\n }\n Nn(\n n,\n t._pointLabels[a],\n l,\n r + o.lineHeight / 2,\n o,\n {\n color: i.color,\n textAlign: c,\n textBaseline: \"middle\"\n }\n );\n }\n}\nfunction vc(t, e, n, s) {\n const { ctx: a } = t;\n if (n)\n a.arc(t.xCenter, t.yCenter, e, 0, tt);\n else {\n let i = t.getPointPosition(0, e);\n a.moveTo(i.x, i.y);\n for (let o = 1; o < s; o++)\n i = t.getPointPosition(o, e), a.lineTo(i.x, i.y);\n }\n}\nfunction i0(t, e, n, s) {\n const a = t.ctx, i = e.circular, { color: o, lineWidth: l } = e;\n !i && !s || !o || !l || n < 0 || (a.save(), a.strokeStyle = o, a.lineWidth = l, a.setLineDash(e.borderDash), a.lineDashOffset = e.borderDashOffset, a.beginPath(), vc(t, n, i, s), a.closePath(), a.stroke(), a.restore());\n}\nfunction o0(t, e, n) {\n return Bn(t, {\n label: n,\n index: e,\n type: \"pointLabel\"\n });\n}\nclass qs extends Ea {\n constructor(e) {\n super(e), this.xCenter = void 0, this.yCenter = void 0, this.drawingArea = void 0, this._pointLabels = [], this._pointLabelItems = [];\n }\n setDimensions() {\n const e = this._padding = St(Mi(this.options) / 2), n = this.width = this.maxWidth - e.width, s = this.height = this.maxHeight - e.height;\n this.xCenter = Math.floor(this.left + n / 2 + e.left), this.yCenter = Math.floor(this.top + s / 2 + e.top), this.drawingArea = Math.floor(Math.min(n, s) / 2);\n }\n determineDataLimits() {\n const { min: e, max: n } = this.getMinMax(!1);\n this.min = vt(e) && !isNaN(e) ? e : 0, this.max = vt(n) && !isNaN(n) ? n : 0, this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / Mi(this.options));\n }\n generateTickLabels(e) {\n Ea.prototype.generateTickLabels.call(this, e), this._pointLabels = this.getLabels().map((n, s) => {\n const a = Qe(this.options.pointLabels.callback, [n, s], this);\n return a || a === 0 ? a : \"\";\n }).filter((n, s) => this.chart.getDataVisibility(s));\n }\n fit() {\n const e = this.options;\n e.display && e.pointLabels.display ? Jy(this) : this.setCenterPoint(0, 0, 0, 0);\n }\n setCenterPoint(e, n, s, a) {\n this.xCenter += Math.floor((e - n) / 2), this.yCenter += Math.floor((s - a) / 2), this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(e, n, s, a));\n }\n getIndexAngle(e) {\n const n = tt / (this._pointLabels.length || 1), s = this.options.startAngle || 0;\n return Pt(e * n + Yt(s));\n }\n getDistanceFromCenterForValue(e) {\n if (He(e))\n return NaN;\n const n = this.drawingArea / (this.max - this.min);\n return this.options.reverse ? (this.max - e) * n : (e - this.min) * n;\n }\n getValueForDistanceFromCenter(e) {\n if (He(e))\n return NaN;\n const n = e / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - n : this.min + n;\n }\n getPointLabelContext(e) {\n const n = this._pointLabels || [];\n if (e >= 0 && e < n.length) {\n const s = n[e];\n return o0(this.getContext(), e, s);\n }\n }\n getPointPosition(e, n, s = 0) {\n const a = this.getIndexAngle(e) - ft + s;\n return {\n x: Math.cos(a) * n + this.xCenter,\n y: Math.sin(a) * n + this.yCenter,\n angle: a\n };\n }\n getPointPositionForValue(e, n) {\n return this.getPointPosition(e, this.getDistanceFromCenterForValue(n));\n }\n getBasePosition(e) {\n return this.getPointPositionForValue(e || 0, this.getBaseValue());\n }\n getPointLabelPosition(e) {\n const { left: n, top: s, right: a, bottom: i } = this._pointLabelItems[e];\n return {\n left: n,\n top: s,\n right: a,\n bottom: i\n };\n }\n drawBackground() {\n const { backgroundColor: e, grid: { circular: n } } = this.options;\n if (e) {\n const s = this.ctx;\n s.save(), s.beginPath(), vc(this, this.getDistanceFromCenterForValue(this._endValue), n, this._pointLabels.length), s.closePath(), s.fillStyle = e, s.fill(), s.restore();\n }\n }\n drawGrid() {\n const e = this.ctx, n = this.options, { angleLines: s, grid: a } = n, i = this._pointLabels.length;\n let o, l, r;\n if (n.pointLabels.display && a0(this, i), a.display && this.ticks.forEach((c, u) => {\n if (u !== 0) {\n l = this.getDistanceFromCenterForValue(c.value);\n const f = a.setContext(this.getContext(u - 1));\n i0(this, f, l, i);\n }\n }), s.display) {\n for (e.save(), o = i - 1; o >= 0; o--) {\n const c = s.setContext(this.getPointLabelContext(o)), { color: u, lineWidth: f } = c;\n !f || !u || (e.lineWidth = f, e.strokeStyle = u, e.setLineDash(c.borderDash), e.lineDashOffset = c.borderDashOffset, l = this.getDistanceFromCenterForValue(n.ticks.reverse ? this.min : this.max), r = this.getPointPosition(o, l), e.beginPath(), e.moveTo(this.xCenter, this.yCenter), e.lineTo(r.x, r.y), e.stroke());\n }\n e.restore();\n }\n }\n drawBorder() {\n }\n drawLabels() {\n const e = this.ctx, n = this.options, s = n.ticks;\n if (!s.display)\n return;\n const a = this.getIndexAngle(0);\n let i, o;\n e.save(), e.translate(this.xCenter, this.yCenter), e.rotate(a), e.textAlign = \"center\", e.textBaseline = \"middle\", this.ticks.forEach((l, r) => {\n if (r === 0 && !n.reverse)\n return;\n const c = s.setContext(this.getContext(r)), u = gt(c.font);\n if (i = this.getDistanceFromCenterForValue(this.ticks[r].value), c.showLabelBackdrop) {\n e.font = u.string, o = e.measureText(l.label).width, e.fillStyle = c.backdropColor;\n const f = St(c.backdropPadding);\n e.fillRect(\n -o / 2 - f.left,\n -i - u.size / 2 - f.top,\n o + f.width,\n u.size + f.height\n );\n }\n Nn(e, l.label, 0, -i, u, {\n color: c.color\n });\n }), e.restore();\n }\n drawTitle() {\n }\n}\nqs.id = \"radialLinear\";\nqs.defaults = {\n display: !0,\n animate: !0,\n position: \"chartArea\",\n angleLines: {\n display: !0,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0\n },\n grid: {\n circular: !1\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: !0,\n callback: Xa.formatters.numeric\n },\n pointLabels: {\n backdropColor: void 0,\n backdropPadding: 2,\n display: !0,\n font: {\n size: 10\n },\n callback(t) {\n return t;\n },\n padding: 5,\n centerPointLabels: !1\n }\n};\nqs.defaultRoutes = {\n \"angleLines.color\": \"borderColor\",\n \"pointLabels.color\": \"color\",\n \"ticks.color\": \"color\"\n};\nqs.descriptors = {\n angleLines: {\n _fallback: \"grid\"\n }\n};\nconst Ua = {\n millisecond: { common: !0, size: 1, steps: 1e3 },\n second: { common: !0, size: 1e3, steps: 60 },\n minute: { common: !0, size: 6e4, steps: 60 },\n hour: { common: !0, size: 36e5, steps: 24 },\n day: { common: !0, size: 864e5, steps: 30 },\n week: { common: !1, size: 6048e5, steps: 4 },\n month: { common: !0, size: 2628e6, steps: 12 },\n quarter: { common: !1, size: 7884e6, steps: 4 },\n year: { common: !0, size: 3154e7 }\n}, Dt = Object.keys(Ua);\nfunction l0(t, e) {\n return t - e;\n}\nfunction Wl(t, e) {\n if (He(e))\n return null;\n const n = t._adapter, { parser: s, round: a, isoWeekday: i } = t._parseOpts;\n let o = e;\n return typeof s == \"function\" && (o = s(o)), vt(o) || (o = typeof s == \"string\" ? n.parse(o, s) : n.parse(o)), o === null ? null : (a && (o = a === \"week\" && (Ds(i) || i === !0) ? n.startOf(o, \"isoWeek\", i) : n.startOf(o, a)), +o);\n}\nfunction zl(t, e, n, s) {\n const a = Dt.length;\n for (let i = Dt.indexOf(t); i < a - 1; ++i) {\n const o = Ua[Dt[i]], l = o.steps ? o.steps : Number.MAX_SAFE_INTEGER;\n if (o.common && Math.ceil((n - e) / (l * o.size)) <= s)\n return Dt[i];\n }\n return Dt[a - 1];\n}\nfunction r0(t, e, n, s, a) {\n for (let i = Dt.length - 1; i >= Dt.indexOf(n); i--) {\n const o = Dt[i];\n if (Ua[o].common && t._adapter.diff(a, s, o) >= e - 1)\n return o;\n }\n return Dt[n ? Dt.indexOf(n) : 0];\n}\nfunction c0(t) {\n for (let e = Dt.indexOf(t) + 1, n = Dt.length; e < n; ++e)\n if (Ua[Dt[e]].common)\n return Dt[e];\n}\nfunction Yl(t, e, n) {\n if (!n)\n t[e] = !0;\n else if (n.length) {\n const { lo: s, hi: a } = ji(n, e), i = n[s] >= e ? n[s] : n[a];\n t[i] = !0;\n }\n}\nfunction u0(t, e, n, s) {\n const a = t._adapter, i = +a.startOf(e[0].value, s), o = e[e.length - 1].value;\n let l, r;\n for (l = i; l <= o; l = +a.add(l, 1, s))\n r = n[l], r >= 0 && (e[r].major = !0);\n return e;\n}\nfunction jl(t, e, n) {\n const s = [], a = {}, i = e.length;\n let o, l;\n for (o = 0; o < i; ++o)\n l = e[o], a[l] = o, s.push({\n value: l,\n major: !1\n });\n return i === 0 || !n ? s : u0(t, s, a, n);\n}\nclass Ks extends Wn {\n constructor(e) {\n super(e), this._cache = {\n data: [],\n labels: [],\n all: []\n }, this._unit = \"day\", this._majorUnit = void 0, this._offsets = {}, this._normalized = !1, this._parseOpts = void 0;\n }\n init(e, n) {\n const s = e.time || (e.time = {}), a = this._adapter = new Lg._date(e.adapters.date);\n ks(s.displayFormats, a.formats()), this._parseOpts = {\n parser: s.parser,\n round: s.round,\n isoWeekday: s.isoWeekday\n }, super.init(e), this._normalized = n.normalized;\n }\n parse(e, n) {\n return e === void 0 ? null : Wl(this, e);\n }\n beforeLayout() {\n super.beforeLayout(), this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const e = this.options, n = this._adapter, s = e.time.unit || \"day\";\n let { min: a, max: i, minDefined: o, maxDefined: l } = this.getUserBounds();\n function r(c) {\n !o && !isNaN(c.min) && (a = Math.min(a, c.min)), !l && !isNaN(c.max) && (i = Math.max(i, c.max));\n }\n (!o || !l) && (r(this._getLabelBounds()), (e.bounds !== \"ticks\" || e.ticks.source !== \"labels\") && r(this.getMinMax(!1))), a = vt(a) && !isNaN(a) ? a : +n.startOf(Date.now(), s), i = vt(i) && !isNaN(i) ? i : +n.endOf(Date.now(), s) + 1, this.min = Math.min(a, i - 1), this.max = Math.max(a + 1, i);\n }\n _getLabelBounds() {\n const e = this.getLabelTimestamps();\n let n = Number.POSITIVE_INFINITY, s = Number.NEGATIVE_INFINITY;\n return e.length && (n = e[0], s = e[e.length - 1]), { min: n, max: s };\n }\n buildTicks() {\n const e = this.options, n = e.time, s = e.ticks, a = s.source === \"labels\" ? this.getLabelTimestamps() : this._generate();\n e.bounds === \"ticks\" && a.length && (this.min = this._userMin || a[0], this.max = this._userMax || a[a.length - 1]);\n const i = this.min, o = this.max, l = ym(a, i, o);\n return this._unit = n.unit || (s.autoSkip ? zl(n.minUnit, this.min, this.max, this._getLabelCapacity(i)) : r0(this, l.length, n.minUnit, this.min, this.max)), this._majorUnit = !s.major.enabled || this._unit === \"year\" ? void 0 : c0(this._unit), this.initOffsets(a), e.reverse && l.reverse(), jl(this, l, this._majorUnit);\n }\n afterAutoSkip() {\n this.options.offsetAfterAutoskip && this.initOffsets(this.ticks.map((e) => +e.value));\n }\n initOffsets(e) {\n let n = 0, s = 0, a, i;\n this.options.offset && e.length && (a = this.getDecimalForValue(e[0]), e.length === 1 ? n = 1 - a : n = (this.getDecimalForValue(e[1]) - a) / 2, i = this.getDecimalForValue(e[e.length - 1]), e.length === 1 ? s = i : s = (i - this.getDecimalForValue(e[e.length - 2])) / 2);\n const o = e.length < 3 ? 0.5 : 0.25;\n n = xt(n, 0, o), s = xt(s, 0, o), this._offsets = { start: n, end: s, factor: 1 / (n + 1 + s) };\n }\n _generate() {\n const e = this._adapter, n = this.min, s = this.max, a = this.options, i = a.time, o = i.unit || zl(i.minUnit, n, s, this._getLabelCapacity(n)), l = Re(i.stepSize, 1), r = o === \"week\" ? i.isoWeekday : !1, c = Ds(r) || r === !0, u = {};\n let f = n, d, h;\n if (c && (f = +e.startOf(f, \"isoWeek\", r)), f = +e.startOf(f, c ? \"day\" : o), e.diff(s, n, o) > 1e5 * l)\n throw new Error(n + \" and \" + s + \" are too far apart with stepSize of \" + l + \" \" + o);\n const p = a.ticks.source === \"data\" && this.getDataTimestamps();\n for (d = f, h = 0; d < s; d = +e.add(d, l, o), h++)\n Yl(u, d, p);\n return (d === s || a.bounds === \"ticks\" || h === 1) && Yl(u, d, p), Object.keys(u).sort((v, m) => v - m).map((v) => +v);\n }\n getLabelForValue(e) {\n const n = this._adapter, s = this.options.time;\n return s.tooltipFormat ? n.format(e, s.tooltipFormat) : n.format(e, s.displayFormats.datetime);\n }\n _tickFormatFunction(e, n, s, a) {\n const i = this.options, o = i.time.displayFormats, l = this._unit, r = this._majorUnit, c = l && o[l], u = r && o[r], f = s[n], d = r && u && f && f.major, h = this._adapter.format(e, a || (d ? u : c)), p = i.ticks.callback;\n return p ? Qe(p, [h, n, s], this) : h;\n }\n generateTickLabels(e) {\n let n, s, a;\n for (n = 0, s = e.length; n < s; ++n)\n a = e[n], a.label = this._tickFormatFunction(a.value, n, e);\n }\n getDecimalForValue(e) {\n return e === null ? NaN : (e - this.min) / (this.max - this.min);\n }\n getPixelForValue(e) {\n const n = this._offsets, s = this.getDecimalForValue(e);\n return this.getPixelForDecimal((n.start + s) * n.factor);\n }\n getValueForPixel(e) {\n const n = this._offsets, s = this.getDecimalForPixel(e) / n.factor - n.end;\n return this.min + s * (this.max - this.min);\n }\n _getLabelSize(e) {\n const n = this.options.ticks, s = this.ctx.measureText(e).width, a = Yt(this.isHorizontal() ? n.maxRotation : n.minRotation), i = Math.cos(a), o = Math.sin(a), l = this._resolveTickFontOptions(0).size;\n return {\n w: s * i + l * o,\n h: s * o + l * i\n };\n }\n _getLabelCapacity(e) {\n const n = this.options.time, s = n.displayFormats, a = s[n.unit] || s.millisecond, i = this._tickFormatFunction(e, 0, jl(this, [e], this._majorUnit), a), o = this._getLabelSize(i), l = Math.floor(this.isHorizontal() ? this.width / o.w : this.height / o.h) - 1;\n return l > 0 ? l : 1;\n }\n getDataTimestamps() {\n let e = this._cache.data || [], n, s;\n if (e.length)\n return e;\n const a = this.getMatchingVisibleMetas();\n if (this._normalized && a.length)\n return this._cache.data = a[0].controller.getAllParsedValues(this);\n for (n = 0, s = a.length; n < s; ++n)\n e = e.concat(a[n].controller.getAllParsedValues(this));\n return this._cache.data = this.normalize(e);\n }\n getLabelTimestamps() {\n const e = this._cache.labels || [];\n let n, s;\n if (e.length)\n return e;\n const a = this.getLabels();\n for (n = 0, s = a.length; n < s; ++n)\n e.push(Wl(this, a[n]));\n return this._cache.labels = this._normalized ? e : this.normalize(e);\n }\n normalize(e) {\n return Pr(e.sort(l0));\n }\n}\nKs.id = \"time\";\nKs.defaults = {\n bounds: \"data\",\n adapters: {},\n time: {\n parser: !1,\n unit: !1,\n round: !1,\n isoWeekday: !1,\n minUnit: \"millisecond\",\n displayFormats: {}\n },\n ticks: {\n source: \"auto\",\n major: {\n enabled: !1\n }\n }\n};\nfunction ha(t, e, n) {\n let s = 0, a = t.length - 1, i, o, l, r;\n n ? (e >= t[s].pos && e <= t[a].pos && ({ lo: s, hi: a } = fn(t, \"pos\", e)), { pos: i, time: l } = t[s], { pos: o, time: r } = t[a]) : (e >= t[s].time && e <= t[a].time && ({ lo: s, hi: a } = fn(t, \"time\", e)), { time: i, pos: l } = t[s], { time: o, pos: r } = t[a]);\n const c = o - i;\n return c ? l + (r - l) * (e - i) / c : l;\n}\nclass to extends Ks {\n constructor(e) {\n super(e), this._table = [], this._minPos = void 0, this._tableRange = void 0;\n }\n initOffsets() {\n const e = this._getTimestampsForTable(), n = this._table = this.buildLookupTable(e);\n this._minPos = ha(n, this.min), this._tableRange = ha(n, this.max) - this._minPos, super.initOffsets(e);\n }\n buildLookupTable(e) {\n const { min: n, max: s } = this, a = [], i = [];\n let o, l, r, c, u;\n for (o = 0, l = e.length; o < l; ++o)\n c = e[o], c >= n && c <= s && a.push(c);\n if (a.length < 2)\n return [\n { time: n, pos: 0 },\n { time: s, pos: 1 }\n ];\n for (o = 0, l = a.length; o < l; ++o)\n u = a[o + 1], r = a[o - 1], c = a[o], Math.round((u + r) / 2) !== c && i.push({ time: c, pos: o / (l - 1) });\n return i;\n }\n _getTimestampsForTable() {\n let e = this._cache.all || [];\n if (e.length)\n return e;\n const n = this.getDataTimestamps(), s = this.getLabelTimestamps();\n return n.length && s.length ? e = this.normalize(n.concat(s)) : e = n.length ? n : s, e = this._cache.all = e, e;\n }\n getDecimalForValue(e) {\n return (ha(this._table, e) - this._minPos) / this._tableRange;\n }\n getValueForPixel(e) {\n const n = this._offsets, s = this.getDecimalForPixel(e) / n.factor - n.end;\n return ha(this._table, s * this._tableRange + this._minPos, !0);\n }\n}\nto.id = \"timeseries\";\nto.defaults = Ks.defaults;\nvar d0 = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n CategoryScale: Aa,\n LinearScale: Qi,\n LogarithmicScale: eo,\n RadialLinearScale: qs,\n TimeScale: Ks,\n TimeSeriesScale: to\n});\nconst f0 = [\n Og,\n oy,\n jy,\n d0\n];\nYs.register(...f0);\n/*!\n * chartjs-plugin-datalabels v2.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nvar Xl = function() {\n if (typeof window < \"u\") {\n if (window.devicePixelRatio)\n return window.devicePixelRatio;\n var t = window.screen;\n if (t)\n return (t.deviceXDPI || 1) / (t.logicalXDPI || 1);\n }\n return 1;\n}(), Cs = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(t) {\n var e = [], n;\n for (t = [].concat(t); t.length; )\n n = t.pop(), typeof n == \"string\" ? e.unshift.apply(e, n.split(`\n`)) : Array.isArray(n) ? t.push.apply(t, n) : He(t) || e.unshift(\"\" + n);\n return e;\n },\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(t, e, n) {\n var s = [].concat(e), a = s.length, i = t.font, o = 0, l;\n for (t.font = n.string, l = 0; l < a; ++l)\n o = Math.max(t.measureText(s[l]).width, o);\n return t.font = i, {\n height: a * n.lineHeight,\n width: o\n };\n },\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(t, e, n) {\n return Math.max(t, Math.min(e, n));\n },\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(t, e) {\n var n = t.slice(), s = [], a, i, o, l;\n for (a = 0, o = e.length; a < o; ++a)\n l = e[a], i = n.indexOf(l), i === -1 ? s.push([l, 1]) : n.splice(i, 1);\n for (a = 0, o = n.length; a < o; ++a)\n s.push([n[a], -1]);\n return s;\n },\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(t) {\n return Math.round(t * Xl) / Xl;\n }\n};\nfunction ui(t, e) {\n var n = e.x, s = e.y;\n if (n === null)\n return { x: 0, y: -1 };\n if (s === null)\n return { x: 1, y: 0 };\n var a = t.x - n, i = t.y - s, o = Math.sqrt(a * a + i * i);\n return {\n x: o ? a / o : 0,\n y: o ? i / o : -1\n };\n}\nfunction h0(t, e, n, s, a) {\n switch (a) {\n case \"center\":\n n = s = 0;\n break;\n case \"bottom\":\n n = 0, s = 1;\n break;\n case \"right\":\n n = 1, s = 0;\n break;\n case \"left\":\n n = -1, s = 0;\n break;\n case \"top\":\n n = 0, s = -1;\n break;\n case \"start\":\n n = -n, s = -s;\n break;\n case \"end\":\n break;\n default:\n a *= Math.PI / 180, n = Math.cos(a), s = Math.sin(a);\n break;\n }\n return {\n x: t,\n y: e,\n vx: n,\n vy: s\n };\n}\nvar p0 = 0, mc = 1, gc = 2, bc = 4, yc = 8;\nfunction pa(t, e, n) {\n var s = p0;\n return t < n.left ? s |= mc : t > n.right && (s |= gc), e < n.top ? s |= yc : e > n.bottom && (s |= bc), s;\n}\nfunction v0(t, e) {\n for (var n = t.x0, s = t.y0, a = t.x1, i = t.y1, o = pa(n, s, e), l = pa(a, i, e), r, c, u; !(!(o | l) || o & l); )\n r = o || l, r & yc ? (c = n + (a - n) * (e.top - s) / (i - s), u = e.top) : r & bc ? (c = n + (a - n) * (e.bottom - s) / (i - s), u = e.bottom) : r & gc ? (u = s + (i - s) * (e.right - n) / (a - n), c = e.right) : r & mc && (u = s + (i - s) * (e.left - n) / (a - n), c = e.left), r === o ? (n = c, s = u, o = pa(n, s, e)) : (a = c, i = u, l = pa(a, i, e));\n return {\n x0: n,\n x1: a,\n y0: s,\n y1: i\n };\n}\nfunction va(t, e) {\n var n = e.anchor, s = t, a, i;\n return e.clamp && (s = v0(s, e.area)), n === \"start\" ? (a = s.x0, i = s.y0) : n === \"end\" ? (a = s.x1, i = s.y1) : (a = (s.x0 + s.x1) / 2, i = (s.y0 + s.y1) / 2), h0(a, i, t.vx, t.vy, e.align);\n}\nvar ma = {\n arc: function(t, e) {\n var n = (t.startAngle + t.endAngle) / 2, s = Math.cos(n), a = Math.sin(n), i = t.innerRadius, o = t.outerRadius;\n return va({\n x0: t.x + s * i,\n y0: t.y + a * i,\n x1: t.x + s * o,\n y1: t.y + a * o,\n vx: s,\n vy: a\n }, e);\n },\n point: function(t, e) {\n var n = ui(t, e.origin), s = n.x * t.options.radius, a = n.y * t.options.radius;\n return va({\n x0: t.x - s,\n y0: t.y - a,\n x1: t.x + s,\n y1: t.y + a,\n vx: n.x,\n vy: n.y\n }, e);\n },\n bar: function(t, e) {\n var n = ui(t, e.origin), s = t.x, a = t.y, i = 0, o = 0;\n return t.horizontal ? (s = Math.min(t.x, t.base), i = Math.abs(t.base - t.x)) : (a = Math.min(t.y, t.base), o = Math.abs(t.base - t.y)), va({\n x0: s,\n y0: a + o,\n x1: s + i,\n y1: a,\n vx: n.x,\n vy: n.y\n }, e);\n },\n fallback: function(t, e) {\n var n = ui(t, e.origin);\n return va({\n x0: t.x,\n y0: t.y,\n x1: t.x,\n y1: t.y,\n vx: n.x,\n vy: n.y\n }, e);\n }\n}, pn = Cs.rasterize;\nfunction m0(t) {\n var e = t.borderWidth || 0, n = t.padding, s = t.size.height, a = t.size.width, i = -a / 2, o = -s / 2;\n return {\n frame: {\n x: i - n.left - e,\n y: o - n.top - e,\n w: a + n.width + e * 2,\n h: s + n.height + e * 2\n },\n text: {\n x: i,\n y: o,\n w: a,\n h: s\n }\n };\n}\nfunction g0(t, e) {\n var n = e.chart.getDatasetMeta(e.datasetIndex).vScale;\n if (!n)\n return null;\n if (n.xCenter !== void 0 && n.yCenter !== void 0)\n return { x: n.xCenter, y: n.yCenter };\n var s = n.getBasePixel();\n return t.horizontal ? { x: s, y: null } : { x: null, y: s };\n}\nfunction b0(t) {\n return t instanceof js ? ma.arc : t instanceof Xs ? ma.point : t instanceof Us ? ma.bar : ma.fallback;\n}\nfunction y0(t, e, n, s, a, i) {\n var o = Math.PI / 2;\n if (i) {\n var l = Math.min(i, a / 2, s / 2), r = e + l, c = n + l, u = e + s - l, f = n + a - l;\n t.moveTo(e, c), r < u && c < f ? (t.arc(r, c, l, -Math.PI, -o), t.arc(u, c, l, -o, 0), t.arc(u, f, l, 0, o), t.arc(r, f, l, o, Math.PI)) : r < u ? (t.moveTo(r, n), t.arc(u, c, l, -o, o), t.arc(r, c, l, o, Math.PI + o)) : c < f ? (t.arc(r, c, l, -Math.PI, 0), t.arc(r, f, l, 0, Math.PI)) : t.arc(r, c, l, -Math.PI, Math.PI), t.closePath(), t.moveTo(e, n);\n } else\n t.rect(e, n, s, a);\n}\nfunction x0(t, e, n) {\n var s = n.backgroundColor, a = n.borderColor, i = n.borderWidth;\n !s && (!a || !i) || (t.beginPath(), y0(\n t,\n pn(e.x) + i / 2,\n pn(e.y) + i / 2,\n pn(e.w) - i,\n pn(e.h) - i,\n n.borderRadius\n ), t.closePath(), s && (t.fillStyle = s, t.fill()), a && i && (t.strokeStyle = a, t.lineWidth = i, t.lineJoin = \"miter\", t.stroke()));\n}\nfunction k0(t, e, n) {\n var s = n.lineHeight, a = t.w, i = t.x, o = t.y + s / 2;\n return e === \"center\" ? i += a / 2 : (e === \"end\" || e === \"right\") && (i += a), {\n h: s,\n w: a,\n x: i,\n y: o\n };\n}\nfunction w0(t, e, n) {\n var s = t.shadowBlur, a = n.stroked, i = pn(n.x), o = pn(n.y), l = pn(n.w);\n a && t.strokeText(e, i, o, l), n.filled && (s && a && (t.shadowBlur = 0), t.fillText(e, i, o, l), s && a && (t.shadowBlur = s));\n}\nfunction S0(t, e, n, s) {\n var a = s.textAlign, i = s.color, o = !!i, l = s.font, r = e.length, c = s.textStrokeColor, u = s.textStrokeWidth, f = c && u, d;\n if (!(!r || !o && !f))\n for (n = k0(n, a, l), t.font = l.string, t.textAlign = a, t.textBaseline = \"middle\", t.shadowBlur = s.textShadowBlur, t.shadowColor = s.textShadowColor, o && (t.fillStyle = i), f && (t.lineJoin = \"round\", t.lineWidth = u, t.strokeStyle = c), d = 0, r = e.length; d < r; ++d)\n w0(t, e[d], {\n stroked: f,\n filled: o,\n w: n.w,\n x: n.x,\n y: n.y + n.h * d\n });\n}\nvar xc = function(t, e, n, s) {\n var a = this;\n a._config = t, a._index = s, a._model = null, a._rects = null, a._ctx = e, a._el = n;\n};\nnn(xc.prototype, {\n /**\n * @private\n */\n _modelize: function(t, e, n, s) {\n var a = this, i = a._index, o = gt(ot([n.font, {}], s, i)), l = ot([n.color, Ue.color], s, i);\n return {\n align: ot([n.align, \"center\"], s, i),\n anchor: ot([n.anchor, \"center\"], s, i),\n area: s.chart.chartArea,\n backgroundColor: ot([n.backgroundColor, null], s, i),\n borderColor: ot([n.borderColor, null], s, i),\n borderRadius: ot([n.borderRadius, 0], s, i),\n borderWidth: ot([n.borderWidth, 0], s, i),\n clamp: ot([n.clamp, !1], s, i),\n clip: ot([n.clip, !1], s, i),\n color: l,\n display: t,\n font: o,\n lines: e,\n offset: ot([n.offset, 0], s, i),\n opacity: ot([n.opacity, 1], s, i),\n origin: g0(a._el, s),\n padding: St(ot([n.padding, 0], s, i)),\n positioner: b0(a._el),\n rotation: ot([n.rotation, 0], s, i) * (Math.PI / 180),\n size: Cs.textSize(a._ctx, e, o),\n textAlign: ot([n.textAlign, \"start\"], s, i),\n textShadowBlur: ot([n.textShadowBlur, 0], s, i),\n textShadowColor: ot([n.textShadowColor, l], s, i),\n textStrokeColor: ot([n.textStrokeColor, l], s, i),\n textStrokeWidth: ot([n.textStrokeWidth, 0], s, i)\n };\n },\n update: function(t) {\n var e = this, n = null, s = null, a = e._index, i = e._config, o, l, r, c = ot([i.display, !0], t, a);\n c && (o = t.dataset.data[a], l = Re(Qe(i.formatter, [o, t]), o), r = He(l) ? [] : Cs.toTextLines(l), r.length && (n = e._modelize(c, r, i, t), s = m0(n))), e._model = n, e._rects = s;\n },\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n visible: function() {\n return this._model && this._model.opacity;\n },\n model: function() {\n return this._model;\n },\n draw: function(t, e) {\n var n = this, s = t.ctx, a = n._model, i = n._rects, o;\n this.visible() && (s.save(), a.clip && (o = a.area, s.beginPath(), s.rect(\n o.left,\n o.top,\n o.right - o.left,\n o.bottom - o.top\n ), s.clip()), s.globalAlpha = Cs.bound(0, a.opacity, 1), s.translate(pn(e.x), pn(e.y)), s.rotate(a.rotation), x0(s, i.frame, a), S0(s, a.lines, i.text, a), s.restore());\n }\n});\nvar _0 = Number.MIN_SAFE_INTEGER || -9007199254740991, M0 = Number.MAX_SAFE_INTEGER || 9007199254740991;\nfunction ms(t, e, n) {\n var s = Math.cos(n), a = Math.sin(n), i = e.x, o = e.y;\n return {\n x: i + s * (t.x - i) - a * (t.y - o),\n y: o + a * (t.x - i) + s * (t.y - o)\n };\n}\nfunction Ul(t, e) {\n var n = M0, s = _0, a = e.origin, i, o, l, r, c;\n for (i = 0; i < t.length; ++i)\n o = t[i], l = o.x - a.x, r = o.y - a.y, c = e.vx * l + e.vy * r, n = Math.min(n, c), s = Math.max(s, c);\n return {\n min: n,\n max: s\n };\n}\nfunction ga(t, e) {\n var n = e.x - t.x, s = e.y - t.y, a = Math.sqrt(n * n + s * s);\n return {\n vx: (e.x - t.x) / a,\n vy: (e.y - t.y) / a,\n origin: t,\n ln: a\n };\n}\nvar kc = function() {\n this._rotation = 0, this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\nnn(kc.prototype, {\n center: function() {\n var t = this._rect;\n return {\n x: t.x + t.w / 2,\n y: t.y + t.h / 2\n };\n },\n update: function(t, e, n) {\n this._rotation = n, this._rect = {\n x: e.x + t.x,\n y: e.y + t.y,\n w: e.w,\n h: e.h\n };\n },\n contains: function(t) {\n var e = this, n = 1, s = e._rect;\n return t = ms(t, e.center(), -e._rotation), !(t.x < s.x - n || t.y < s.y - n || t.x > s.x + s.w + n * 2 || t.y > s.y + s.h + n * 2);\n },\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(t) {\n var e = this._points(), n = t._points(), s = [\n ga(e[0], e[1]),\n ga(e[0], e[3])\n ], a, i, o;\n for (this._rotation !== t._rotation && s.push(\n ga(n[0], n[1]),\n ga(n[0], n[3])\n ), a = 0; a < s.length; ++a)\n if (i = Ul(e, s[a]), o = Ul(n, s[a]), i.max < o.min || o.max < i.min)\n return !1;\n return !0;\n },\n /**\n * @private\n */\n _points: function() {\n var t = this, e = t._rect, n = t._rotation, s = t.center();\n return [\n ms({ x: e.x, y: e.y }, s, n),\n ms({ x: e.x + e.w, y: e.y }, s, n),\n ms({ x: e.x + e.w, y: e.y + e.h }, s, n),\n ms({ x: e.x, y: e.y + e.h }, s, n)\n ];\n }\n});\nfunction wc(t, e, n) {\n var s = e.positioner(t, e), a = s.vx, i = s.vy;\n if (!a && !i)\n return { x: s.x, y: s.y };\n var o = n.w, l = n.h, r = e.rotation, c = Math.abs(o / 2 * Math.cos(r)) + Math.abs(l / 2 * Math.sin(r)), u = Math.abs(o / 2 * Math.sin(r)) + Math.abs(l / 2 * Math.cos(r)), f = 1 / Math.max(Math.abs(a), Math.abs(i));\n return c *= a * f, u *= i * f, c += e.offset * a, u += e.offset * i, {\n x: s.x + c,\n y: s.y + u\n };\n}\nfunction C0(t, e) {\n var n, s, a, i;\n for (n = t.length - 1; n >= 0; --n)\n for (a = t[n].$layout, s = n - 1; s >= 0 && a._visible; --s)\n i = t[s].$layout, i._visible && a._box.intersects(i._box) && e(a, i);\n return t;\n}\nfunction $0(t) {\n var e, n, s, a, i, o, l;\n for (e = 0, n = t.length; e < n; ++e)\n s = t[e], a = s.$layout, a._visible && (l = new Proxy(s._el, { get: (r, c) => r.getProps([c], !0)[c] }), i = s.geometry(), o = wc(l, s.model(), i), a._box.update(o, i, s.rotation()));\n return C0(t, function(r, c) {\n var u = r._hidable, f = c._hidable;\n u && f || f ? c._visible = !1 : u && (r._visible = !1);\n });\n}\nvar $s = {\n prepare: function(t) {\n var e = [], n, s, a, i, o;\n for (n = 0, a = t.length; n < a; ++n)\n for (s = 0, i = t[n].length; s < i; ++s)\n o = t[n][s], e.push(o), o.$layout = {\n _box: new kc(),\n _hidable: !1,\n _visible: !0,\n _set: n,\n _idx: s\n };\n return e.sort(function(l, r) {\n var c = l.$layout, u = r.$layout;\n return c._idx === u._idx ? u._set - c._set : u._idx - c._idx;\n }), this.update(e), e;\n },\n update: function(t) {\n var e = !1, n, s, a, i, o;\n for (n = 0, s = t.length; n < s; ++n)\n a = t[n], i = a.model(), o = a.$layout, o._hidable = i && i.display === \"auto\", o._visible = a.visible(), e |= o._hidable;\n e && $0(t);\n },\n lookup: function(t, e) {\n var n, s;\n for (n = t.length - 1; n >= 0; --n)\n if (s = t[n].$layout, s && s._visible && s._box.contains(e))\n return t[n];\n return null;\n },\n draw: function(t, e) {\n var n, s, a, i, o, l;\n for (n = 0, s = e.length; n < s; ++n)\n a = e[n], i = a.$layout, i._visible && (o = a.geometry(), l = wc(a._el, a.model(), o), i._box.update(l, o, a.rotation()), a.draw(t, l));\n }\n}, B0 = function(t) {\n if (He(t))\n return null;\n var e = t, n, s, a;\n if (Xe(t))\n if (!He(t.label))\n e = t.label;\n else if (!He(t.r))\n e = t.r;\n else\n for (e = \"\", n = Object.keys(t), a = 0, s = n.length; a < s; ++a)\n e += (a !== 0 ? \", \" : \"\") + n[a] + \": \" + t[n[a]];\n return \"\" + e;\n}, T0 = {\n align: \"center\",\n anchor: \"center\",\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: !1,\n clip: !1,\n color: void 0,\n display: !0,\n font: {\n family: void 0,\n lineHeight: 1.2,\n size: void 0,\n style: void 0,\n weight: null\n },\n formatter: B0,\n labels: void 0,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: \"start\",\n textStrokeColor: void 0,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: void 0\n}, Bt = \"$datalabels\", Sc = \"$default\";\nfunction D0(t, e) {\n var n = t.datalabels, s = {}, a = [], i, o;\n return n === !1 ? null : (n === !0 && (n = {}), e = nn({}, [e, n]), i = e.labels || {}, o = Object.keys(i), delete e.labels, o.length ? o.forEach(function(l) {\n i[l] && a.push(nn({}, [\n e,\n i[l],\n { _key: l }\n ]));\n }) : a.push(e), s = a.reduce(function(l, r) {\n return Ke(r.listeners || {}, function(c, u) {\n l[u] = l[u] || {}, l[u][r._key || Sc] = c;\n }), delete r.listeners, l;\n }, {}), {\n labels: a,\n listeners: s\n });\n}\nfunction Ci(t, e, n) {\n if (e) {\n var s = n.$context, a = n.$groups, i;\n e[a._set] && (i = e[a._set][a._key], i && Qe(i, [s]) === !0 && (t[Bt]._dirty = !0, n.update(s)));\n }\n}\nfunction O0(t, e, n, s) {\n var a, i;\n !n && !s || (n ? s ? n !== s && (i = a = !0) : i = !0 : a = !0, i && Ci(t, e.leave, n), a && Ci(t, e.enter, s));\n}\nfunction L0(t, e) {\n var n = t[Bt], s = n._listeners, a, i;\n if (!(!s.enter && !s.leave)) {\n if (e.type === \"mousemove\")\n i = $s.lookup(n._labels, e);\n else if (e.type !== \"mouseout\")\n return;\n a = n._hovered, n._hovered = i, O0(t, s, a, i);\n }\n}\nfunction A0(t, e) {\n var n = t[Bt], s = n._listeners.click, a = s && $s.lookup(n._labels, e);\n a && Ci(t, s, a);\n}\nvar E0 = {\n id: \"datalabels\",\n defaults: T0,\n beforeInit: function(t) {\n t[Bt] = {\n _actives: []\n };\n },\n beforeUpdate: function(t) {\n var e = t[Bt];\n e._listened = !1, e._listeners = {}, e._datasets = [], e._labels = [];\n },\n afterDatasetUpdate: function(t, e, n) {\n var s = e.index, a = t[Bt], i = a._datasets[s] = [], o = t.isDatasetVisible(s), l = t.data.datasets[s], r = D0(l, n), c = e.meta.data || [], u = t.ctx, f, d, h, p, v, m, g, b;\n for (u.save(), f = 0, h = c.length; f < h; ++f)\n if (g = c[f], g[Bt] = [], o && g && t.getDataVisibility(f) && !g.skip)\n for (d = 0, p = r.labels.length; d < p; ++d)\n v = r.labels[d], m = v._key, b = new xc(v, u, g, f), b.$groups = {\n _set: s,\n _key: m || Sc\n }, b.$context = {\n active: !1,\n chart: t,\n dataIndex: f,\n dataset: l,\n datasetIndex: s\n }, b.update(b.$context), g[Bt].push(b), i.push(b);\n u.restore(), nn(a._listeners, r.listeners, {\n merger: function(S, w, k) {\n w[S] = w[S] || {}, w[S][e.index] = k[S], a._listened = !0;\n }\n });\n },\n afterUpdate: function(t, e) {\n t[Bt]._labels = $s.prepare(\n t[Bt]._datasets,\n e\n );\n },\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(t) {\n $s.draw(t, t[Bt]._labels);\n },\n beforeEvent: function(t, e) {\n if (t[Bt]._listened) {\n var n = e.event;\n switch (n.type) {\n case \"mousemove\":\n case \"mouseout\":\n L0(t, n);\n break;\n case \"click\":\n A0(t, n);\n break;\n }\n }\n },\n afterEvent: function(t) {\n var e = t[Bt], n = e._actives, s = e._actives = t.getActiveElements(), a = Cs.arrayDiff(n, s), i, o, l, r, c, u, f;\n for (i = 0, o = a.length; i < o; ++i)\n if (c = a[i], c[1])\n for (f = c[0].element[Bt] || [], l = 0, r = f.length; l < r; ++l)\n u = f[l], u.$context.active = c[1] === 1, u.update(u.$context);\n (e._dirty || a.length) && ($s.update(e._labels), t.render()), delete e._dirty;\n }\n};\nconst ql = {\n line: {\n elements: {\n line: {\n backgroundColor: \"rgba(66, 133, 244, 0.0)\",\n borderColor: \"rgb(66, 133, 244)\",\n borderWidth: 2,\n tension: 0\n },\n point: {\n borderColor: \"rgb(66, 133, 244)\",\n backgroundColor: \"rgb(66, 133, 244)\"\n }\n },\n responsive: !0,\n plugins: {\n tooltip: {\n intersect: !1,\n mode: \"index\"\n },\n legend: {\n display: !0\n }\n },\n scales: {\n x: {\n stacked: !1,\n grid: {\n display: !1,\n drawBorder: !1\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n },\n y: {\n stacked: !1,\n grid: {\n borderDash: [2],\n drawBorder: !1,\n tickBorderDash: [2],\n tickBorderDashOffset: [2]\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n }\n }\n },\n bar: {\n elements: {\n line: {\n backgroundColor: \"rgb(66, 133, 244)\"\n },\n bar: {\n backgroundColor: \"rgb(66, 133, 244)\"\n }\n },\n responsive: !0,\n plugins: {\n tooltip: {\n intersect: !1,\n mode: \"index\"\n },\n legend: {\n display: !0\n }\n },\n scales: {\n x: {\n stacked: !1,\n grid: {\n display: !1,\n drawBorder: !1\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n },\n y: {\n stacked: !1,\n grid: {\n borderDash: [2],\n drawBorder: !1,\n color: function(t) {\n return t.tick && t.tick.value === 0 ? \"rgba(0,0,0, 0)\" : Ys.defaults.borderColor;\n },\n tickBorderDash: [2],\n tickBorderDashOffset: [2]\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n }\n }\n },\n pie: {\n elements: {\n arc: { backgroundColor: \"rgb(66, 133, 244)\" }\n },\n responsive: !0,\n plugins: {\n legend: {\n display: !0\n }\n }\n },\n doughnut: {\n elements: {\n arc: { backgroundColor: \"rgb(66, 133, 244)\" }\n },\n responsive: !0,\n plugins: {\n legend: {\n display: !0\n }\n }\n },\n polarArea: {\n elements: {\n arc: { backgroundColor: \"rgba(66, 133, 244, 0.5)\" }\n },\n responsive: !0,\n plugins: {\n legend: {\n display: !0\n }\n }\n },\n radar: {\n elements: {\n line: {\n backgroundColor: \"rgba(66, 133, 244, 0.5)\",\n borderColor: \"rgb(66, 133, 244)\",\n borderWidth: 2\n },\n point: {\n borderColor: \"rgb(66, 133, 244)\",\n backgroundColor: \"rgb(66, 133, 244)\"\n }\n },\n responsive: !0,\n plugins: {\n legend: {\n display: !0\n }\n }\n },\n scatter: {\n elements: {\n line: {\n backgroundColor: \"rgba(66, 133, 244, 0.5)\",\n borderColor: \"rgb(66, 133, 244)\",\n borderWidth: 2,\n tension: 0\n },\n point: {\n borderColor: \"rgb(66, 133, 244)\",\n backgroundColor: \"rgba(66, 133, 244, 0.5)\"\n }\n },\n responsive: !0,\n plugins: {\n tooltip: {\n intersect: !1,\n mode: \"index\"\n },\n legend: {\n display: !0\n }\n },\n datasets: {\n borderColor: \"red\"\n },\n scales: {\n x: {\n stacked: !1,\n grid: {\n display: !1,\n drawBorder: !1\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n },\n y: {\n stacked: !1,\n grid: {\n borderDash: [2],\n drawBorder: !1,\n tickBorderDash: [2],\n tickBorderDashOffset: [2]\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n }\n }\n },\n bubble: {\n elements: {\n point: {\n borderColor: \"rgb(66, 133, 244)\",\n backgroundColor: \"rgba(66, 133, 244, 0.5)\"\n }\n },\n responsive: !0,\n plugins: {\n legend: {\n display: !0\n }\n },\n scales: {\n x: {\n grid: {\n display: !1,\n drawBorder: !1\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n },\n y: {\n grid: {\n borderDash: [2],\n drawBorder: !1,\n tickBorderDash: [2],\n tickBorderDashOffset: [2]\n },\n ticks: {\n color: \"rgba(0,0,0, 0.5)\"\n }\n }\n }\n }\n};\nvar zn = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Dn(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar P0 = function(e) {\n return V0(e) && !R0(e);\n};\nfunction V0(t) {\n return !!t && typeof t == \"object\";\n}\nfunction R0(t) {\n var e = Object.prototype.toString.call(t);\n return e === \"[object RegExp]\" || e === \"[object Date]\" || N0(t);\n}\nvar I0 = typeof Symbol == \"function\" && Symbol.for, F0 = I0 ? Symbol.for(\"react.element\") : 60103;\nfunction N0(t) {\n return t.$$typeof === F0;\n}\nfunction H0(t) {\n return Array.isArray(t) ? [] : {};\n}\nfunction Ps(t, e) {\n return e.clone !== !1 && e.isMergeableObject(t) ? is(H0(t), t, e) : t;\n}\nfunction W0(t, e, n) {\n return t.concat(e).map(function(s) {\n return Ps(s, n);\n });\n}\nfunction z0(t, e) {\n if (!e.customMerge)\n return is;\n var n = e.customMerge(t);\n return typeof n == \"function\" ? n : is;\n}\nfunction Y0(t) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(t).filter(function(e) {\n return t.propertyIsEnumerable(e);\n }) : [];\n}\nfunction Kl(t) {\n return Object.keys(t).concat(Y0(t));\n}\nfunction _c(t, e) {\n try {\n return e in t;\n } catch {\n return !1;\n }\n}\nfunction j0(t, e) {\n return _c(t, e) && !(Object.hasOwnProperty.call(t, e) && Object.propertyIsEnumerable.call(t, e));\n}\nfunction X0(t, e, n) {\n var s = {};\n return n.isMergeableObject(t) && Kl(t).forEach(function(a) {\n s[a] = Ps(t[a], n);\n }), Kl(e).forEach(function(a) {\n j0(t, a) || (_c(t, a) && n.isMergeableObject(e[a]) ? s[a] = z0(a, n)(t[a], e[a], n) : s[a] = Ps(e[a], n));\n }), s;\n}\nfunction is(t, e, n) {\n n = n || {}, n.arrayMerge = n.arrayMerge || W0, n.isMergeableObject = n.isMergeableObject || P0, n.cloneUnlessOtherwiseSpecified = Ps;\n var s = Array.isArray(e), a = Array.isArray(t), i = s === a;\n return i ? s ? n.arrayMerge(t, e, n) : X0(t, e, n) : Ps(e, n);\n}\nis.all = function(e, n) {\n if (!Array.isArray(e))\n throw new Error(\"first argument should be an array\");\n return e.reduce(function(s, a) {\n return is(s, a, n);\n }, {});\n};\nvar U0 = is, q0 = U0;\nconst Gl = /* @__PURE__ */ Dn(q0);\nfunction K0(t, e, n = { datasets: [] }, s = {}) {\n const a = y(n), i = y(null), o = y(null), l = y(null);\n r();\n function r() {\n o.value = c(s, e, ql);\n }\n function c(p, v, m) {\n p || (p = {});\n const g = (b, S, w) => {\n const k = b.slice();\n return S.forEach((C, M) => {\n var B;\n const V = C;\n if (typeof k[M] > \"u\")\n k[M] = w.cloneUnlessOtherwiseSpecified(\n V,\n w\n );\n else if ((B = w.isMergeableObject) != null && B.call(w, V)) {\n const D = b[M] || {};\n k[M] = Gl(D, V, w);\n } else b.indexOf(C) === -1 && k.push(C);\n }), k;\n };\n return Gl(m[v], p, {\n arrayMerge: g\n });\n }\n function u() {\n l.value = [E0];\n }\n function f() {\n if (h(), t instanceof HTMLCanvasElement) {\n const p = {\n type: e,\n data: a.value,\n options: o.value,\n plugins: l.value\n }, v = t.getContext(\"2d\");\n if (v) {\n const m = new Ys(v, p);\n i.value = m;\n }\n }\n }\n function d(p, v) {\n o.value = c(v, e, ql), a.value = p, f();\n }\n function h() {\n i.value && (i.value.destroy(), i.value = null);\n }\n return {\n setupCharts: r,\n renderChart: f,\n addDataLabels: u,\n destroyChart: h,\n updateChart: d\n };\n}\nconst G0 = {\n name: \"MDBChart\"\n}, C1 = /* @__PURE__ */ re({\n ...G0,\n props: {\n tag: {\n type: String,\n default: \"canvas\"\n },\n type: String,\n data: Object,\n options: Object,\n datalabels: {\n type: Boolean,\n default: !1\n },\n id: String,\n canvasClass: String\n },\n setup(t) {\n const e = t, n = y(null), s = e.id || ut(\"MDBChart-\"), a = y(null), i = y(null), o = y(null), l = y(null), r = ({\n setupCharts: c,\n renderChart: u,\n addDataLabels: f,\n updateChart: d\n }) => {\n a.value = c, i.value = u, o.value = f, l.value = d;\n };\n return pe(\n () => e.data,\n (c) => {\n var u;\n (u = l.value) == null || u.call(l, c, e.options || {});\n }\n ), pe(\n () => e.options,\n (c) => {\n var f;\n const u = e.data || {};\n (f = l.value) == null || f.call(l, u, c);\n }\n ), Fe(() => {\n var c, u;\n if (n.value) {\n const f = K0(\n n.value,\n e.type,\n e.data,\n e.options\n );\n r(f), e.datalabels && ((c = o.value) == null || c.call(o)), (u = i.value) == null || u.call(i);\n }\n }), (c, u) => (x(), ee(ue(t.tag), {\n id: _(s),\n ref_key: \"canvasRef\",\n ref: n,\n class: Y(t.canvasClass)\n }, null, 8, [\"id\", \"class\"]));\n }\n}), Z0 = { class: \"valid-feedback\" }, J0 = { class: \"invalid-feedback\" }, Q0 = [\"onClick\", \"onKeydown\"], ex = {\n key: 1,\n class: \"select-arrow\"\n}, tx = [\"id\"], nx = [\"tabindex\"], sx = [\"placeholder\", \"onKeydown\"], ax = { class: \"select-options-list\" }, ix = [\"onClick\"], ox = { class: \"select-option-text\" }, lx = { class: \"form-check\" }, rx = [\"checked\"], cx = [\"onClick\", \"aria-selected\", \"aria-disabled\", \"hidden\"], ux = {\n key: 0,\n class: \"select-option-text\"\n}, dx = { class: \"form-check\" }, fx = [\"checked\", \"disabled\"], hx = {\n key: 0,\n class: \"select-option-secondary-text\"\n}, px = {\n key: 1,\n class: \"select-option-text\"\n}, vx = {\n key: 0,\n class: \"select-option-secondary-text\"\n}, mx = {\n key: 2,\n class: \"select-option-icon-container\"\n}, gx = [\"src\"], bx = {\n name: \"MDBSelect\",\n inheritAttrs: !1\n}, yx = /* @__PURE__ */ re({\n ...bx,\n props: {\n options: {\n type: Array,\n required: !0\n },\n selected: [String, Array, Number],\n preselect: {\n type: Boolean,\n default: !0\n },\n label: String,\n placeholder: String,\n disabled: Boolean,\n optionHeight: {\n type: Number,\n default: 38\n },\n visibleOptions: {\n type: Number,\n default: 5\n },\n optionsSelectedLabel: {\n type: String,\n default: \"options selected\"\n },\n displayedLabels: {\n type: Number,\n default: 5\n },\n selectAll: {\n type: Boolean,\n default: !0\n },\n selectAllLabel: {\n type: String,\n default: \"Select all\"\n },\n required: Boolean,\n size: String,\n clearButton: Boolean,\n multiple: Boolean,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n filter: Boolean,\n searchPlaceholder: {\n type: String,\n default: \"Search...\"\n },\n noResultsText: {\n type: String,\n default: \"No results\"\n },\n filterDebounce: {\n type: Number,\n default: 300\n },\n tag: {\n type: String,\n default: \"div\"\n },\n arrow: {\n type: Boolean,\n default: !0\n },\n autoSelect: Boolean,\n tabindex: {\n type: Number,\n default: 0\n },\n white: {\n type: Boolean,\n default: !1\n },\n autocomplete: String,\n filterFn: Function,\n excludeOptGroupsInFilter: Boolean\n },\n emits: [\n \"update:options\",\n \"update:selected\",\n \"update:modelValue\",\n \"change\",\n \"open\",\n \"opened\",\n \"close\",\n \"closed\",\n \"clear\",\n \"search\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = T(() => [\n \"select-wrapper\",\n De.value && We.value ? \"is-valid\" : \"\",\n De.value && !We.value ? \"is-invalid\" : \"\"\n ]), i = T(() => [\n B.value && \"focused\",\n S.value && !be.value || B.value ? \"active\" : null\n ]), o = T(() => ({\n width: d.value\n })), l = T(() => ({\n maxHeight: `${s.visibleOptions * s.optionHeight}px`\n })), r = y(null), c = y(null), u = y(null), f = ut(\"MDBSelectDropdown-\"), d = y(\"200px\"), h = y(!1), p = y(null);\n let v = !1;\n const m = {\n placement: \"bottom-start\",\n eventsEnabled: !0,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 1]\n }\n }\n ]\n }, g = y(s.options), b = y(g.value), S = y(s.selected), w = y(g.value.some((ce) => ce.optgroup));\n g.value.map((ce, we) => ce.mdbKey = we);\n let k = 0, C = \"\";\n const M = y(0), { setPopper: V, isPopperActive: B, closePopper: D, openPopper: E } = $n(), X = () => {\n B.value ? L() : A();\n }, L = () => {\n B.value && (M.value = -1, D(), n(\"close\"), z(), setTimeout(() => {\n h.value = !1, wt.value = \"\", b.value = g.value, n(\"closed\");\n }, 300));\n }, A = () => {\n s.disabled || B.value || (M.value = 0, h.value = !0, z(), Ge(() => {\n G(), n(\"opened\");\n }), s.filter && setTimeout(() => {\n U(), ve();\n }, 100));\n }, P = (ce) => {\n if (s.multiple) {\n if (ce === -1)\n return I();\n g.value[ce].disabled || (g.value[ce].selected = !g.value[ce].selected);\n } else\n g.value.forEach((we) => {\n we.selected = !1;\n }), g.value[ce].selected = !0;\n }, O = () => {\n s.disabled || (g.value.forEach((ce) => {\n ce.selected = !1;\n }), p.value = null, n(\"clear\"));\n }, $ = (ce) => {\n if (O(), s.multiple && Array.isArray(ce))\n ce.forEach((we) => {\n const j = g.value.findIndex(\n (ze) => ze.value === we\n );\n j >= 0 && P(j);\n });\n else {\n const we = g.value.findIndex(\n (j) => j.value === ce\n );\n we >= 0 && (P(we), L());\n }\n }, I = () => {\n const ce = Te.value;\n g.value.forEach((we) => {\n !we.disabled && (we.selected = !ce);\n });\n }, F = () => {\n n(\"update:selected\", S.value), v ? n(\"change\") : v = !0;\n }, z = () => {\n ae.value[0] && (p.value = b.value.findIndex(\n (ce) => ce === ae.value[0]\n ), s.multiple && s.selectAll && Te.value && (p.value = -1));\n }, G = () => {\n c.value && r.value && c.value && (V(r.value, c.value, m), E(), d.value = `${r.value.offsetWidth}px`, Ge(() => le()), n(\"open\"));\n }, U = () => {\n var ce;\n Ae.value && (Ae.value.focus(), Et = ((ce = Pe.value) == null ? void 0 : ce.offsetHeight) || 0);\n }, ie = (ce) => ce == null ? null : ce.scrollHeight > ce.clientHeight ? ce : ie(ce.parentNode), ve = () => {\n if (window && r.value) {\n const ce = ie(r.value);\n if (window.innerWidth < 992 && ce) {\n const we = r.value.offsetTop;\n ce.scrollTo({\n top: we - 20,\n behavior: \"smooth\"\n });\n }\n }\n }, ye = () => {\n if (!s.multiple && s.preselect && g.value.filter((ce) => ce.selected === !0).length === 0) {\n const ce = g.value.findIndex(\n (we) => we.disabled !== !0\n );\n P(ce);\n }\n s.preselect || (v = !0);\n }, W = (ce) => {\n ce.disabled || (ce.mdbKey !== void 0 && P(ce.mdbKey), s.multiple || L());\n }, te = () => {\n ye(), z();\n }, ae = T(() => {\n if (s.multiple)\n S.value = g.value.filter((ce) => ce.selected === !0).map((ce) => ce.value).join(\",\");\n else if (g.value.filter((ce) => ce.selected === !0).length > 0)\n S.value = g.value.filter(\n (ce) => ce.selected === !0\n )[0].value;\n else\n return S.value = \"\", \"\";\n return g.value.filter((ce) => ce.selected === !0);\n }), be = T(() => !ae.value || ae.value.length === 0 ? \"\" : ae.value.length === 1 ? ae.value[0].text : s.multiple ? s.displayedLabels !== -1 && ae.value.length > s.displayedLabels ? `${ae.value.length} ${s.optionsSelectedLabel}` : ae.value.map((ce) => ce.text).join(\", \") : \"\"), xe = (ce) => ce.filter((we) => we.disabled !== !0), Te = T(() => !!(s.multiple && s.selectAll && xe(ae.value).length === xe(g.value).length)), qe = T(() => c.value && c.value.querySelectorAll(\".select-option\")[p.value ?? 0]), lt = T(() => !!(s.multiple && s.selectAll && wt.value === \"\")), it = T(() => lt.value ? s.optionHeight : 0), nt = T(() => {\n let ce = 0;\n return qe.value && (ce = qe.value.offsetTop + it.value - Et), ce;\n }), Ne = T(() => s.visibleOptions * s.optionHeight), ht = T(() => !!(u.value && u.value.scrollTop < nt.value && u.value.scrollTop + Ne.value > nt.value)), st = (ce) => {\n const we = ce.key === \"Enter\";\n s.multiple ? B.value && p.value === null && we ? (L(), ge()) : B.value && p.value === -1 ? P(-1) : B.value && p.value !== null ? P(b.value[p.value].mdbKey) : A() : B.value ? (p.value !== null && P(\n b.value[p.value].mdbKey\n ), we && (L(), ge())) : A();\n }, ne = () => {\n s.autoSelect && !s.multiple && B.value && p.value !== null && P(b.value[p.value].mdbKey), L();\n }, fe = (ce) => {\n if (s.disabled && !s.filter)\n return;\n const we = 1e3, j = performance.now();\n j - k > we && (C = \"\"), C += ce.key.toLowerCase(), k = j;\n const ze = g.value.findIndex((pt) => pt.text.toString().toLowerCase().startsWith(C) && !pt.disabled && !pt.hidden);\n ze !== -1 && (p.value = ze, le());\n }, ge = () => {\n var ce;\n s.filter && r.value && ((ce = r.value.querySelector(\".select-input\")) == null || ce.focus());\n }, de = () => {\n Be(), h.value && le(), !s.multiple && !h.value ? p.value !== null && P(p.value) : s.multiple && !h.value && A();\n }, Se = () => {\n p.value !== null && (J(), h.value && he(), !s.multiple && !h.value ? P(p.value) : s.multiple && !h.value && A());\n }, Be = () => {\n let ce = p.value;\n if (p.value === null && lt.value)\n ce = -1;\n else if (ce = b.value.findIndex(\n (we, j) => (typeof ce == \"number\" && j > ce || ce === null) && !we.disabled && !we.hidden\n ), ce === -1)\n return;\n p.value = ce;\n }, J = () => {\n let ce = p.value;\n if (p.value === 0 && lt.value)\n ce = -1;\n else {\n const we = b.value.filter(\n (j, ze) => (ce || ce === 0) && ze < ce && !j.disabled && !j.hidden\n ).pop();\n if (ce = we ? b.value.indexOf(we) : -1, ce === -1)\n return;\n }\n p.value = ce;\n }, le = () => {\n if (!ht.value && u.value) {\n const ce = nt.value - Ne.value + s.optionHeight;\n u.value.scrollTo(0, ce);\n }\n }, he = () => {\n !ht.value && u.value && u.value.scrollTo(0, nt.value);\n }, De = y(s.isValidated), We = y(s.isValid), Pe = y(null), Ae = y(null), wt = y(\"\");\n let Gt, Et = 0;\n const zt = (ce, we) => ce.filter(\n (j) => !s.excludeOptGroupsInFilter && j.optgroup || j.text.toLowerCase().includes(we.toLowerCase())\n ), Oe = (ce) => ce.filter((we, j) => !(we.optgroup && (j === ce.length - 1 || ce[j + 1].optgroup))), Je = (ce) => {\n clearTimeout(Gt), Gt = setTimeout(() => {\n p.value = null;\n const we = ce.target;\n wt.value = we.value, n(\"search\", { value: wt.value });\n const j = s.filterFn ? s.filterFn : zt;\n b.value = j(g.value, wt.value), b.value = Oe(b.value), D(), E();\n }, s.filterDebounce);\n };\n return ar(() => {\n g.value.length > 0 && te();\n }), pe(\n () => s.options,\n (ce) => {\n g.value = ce, g.value.map((we, j) => we.mdbKey = j), b.value = g.value, g.value.length > 0 && te();\n }\n ), pe(\n () => S.value,\n () => F()\n ), pe(\n () => s.isValidated,\n (ce) => De.value = ce\n ), pe(\n () => s.isValid,\n (ce) => We.value = ce\n ), e({\n clear: O,\n close: L,\n open: A,\n setValue: $,\n setOption: P,\n toggle: X,\n toggleSelectAll: I\n }), (ce, we) => (x(), R(Ie, null, [\n je((x(), ee(ue(t.tag), $e({\n ref_key: \"selectWrapperRef\",\n ref: r,\n class: a.value\n }, ce.$attrs, {\n onClick: X,\n onKeydown: [\n ke(_e(st, [\"prevent\"]), [\"enter\"]),\n ke(L, [\"esc\"]),\n ke(_e(de, [\"prevent\", \"exact\"]), [\"down\"]),\n ke(_e(Se, [\"prevent\", \"exact\"]), [\"up\"]),\n ke(ne, [\"tab\"]),\n we[1] || (we[1] = ke(_e((j) => h.value ? L() : A(), [\"alt\"]), [\"down\"])),\n ke(_e(L, [\"alt\"]), [\"up\"]),\n ke(_e(st, [\"prevent\"]), [\"space\"]),\n fe\n ]\n }), {\n default: Q(() => [\n Ee(vn, {\n modelValue: be.value,\n \"onUpdate:modelValue\": we[0] || (we[0] = (j) => be.value = j),\n labelClass: \"select-label\",\n class: Y([\"select-input\", i.value]),\n label: t.label,\n placeholder: t.placeholder,\n disabled: t.disabled,\n size: t.size,\n \"aria-disabled\": t.disabled,\n \"aria-expanded\": h.value,\n \"aria-required\": t.isValidated && t.required,\n role: t.filter ? \"combobox\" : \"listbox\",\n tabindex: t.tabindex,\n \"aria-haspopup\": \"true\",\n readonly: \"\",\n white: t.white,\n autocomplete: t.autocomplete\n }, {\n default: Q(() => [\n H(\"div\", Z0, se(t.validFeedback), 1),\n H(\"div\", J0, se(t.invalidFeedback), 1),\n be.value && t.clearButton ? (x(), R(\"span\", {\n key: 0,\n class: \"select-clear-btn\",\n tabindex: \"0\",\n onClick: _e(O, [\"stop\"]),\n onKeydown: ke(_e(O, [\"stop\"]), [\"enter\"])\n }, \"✕\", 40, Q0)) : K(\"\", !0),\n t.arrow ? (x(), R(\"span\", ex)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"class\", \"label\", \"placeholder\", \"disabled\", \"size\", \"aria-disabled\", \"aria-expanded\", \"aria-required\", \"role\", \"tabindex\", \"white\", \"autocomplete\"])\n ]),\n _: 1\n }, 16, [\"class\", \"onKeydown\"])), [\n [_(tn), L]\n ]),\n h.value ? (x(), R(\"div\", {\n key: 0,\n id: _(f),\n ref_key: \"dropdownRef\",\n ref: c,\n class: \"select-dropdown-container\",\n style: Ce(o.value)\n }, [\n H(\"div\", {\n class: Y([\"select-dropdown\", _(B) && \"open\"]),\n tabindex: M.value\n }, [\n t.filter ? (x(), R(\"div\", {\n key: 0,\n ref_key: \"searchWrapperRef\",\n ref: Pe,\n class: \"input-group\",\n onClick: we[3] || (we[3] = _e(() => {\n }, [\"stop\"]))\n }, [\n H(\"input\", {\n ref_key: \"searchRef\",\n ref: Ae,\n class: \"form-control select-filter-input\",\n placeholder: t.searchPlaceholder,\n role: \"searchbox\",\n type: \"text\",\n onInput: Je,\n onKeydown: [\n ke(_e(st, [\"prevent\"]), [\"enter\"]),\n ke(L, [\"esc\"]),\n ke(_e(de, [\"prevent\"]), [\"down\"]),\n ke(_e(Se, [\"prevent\"]), [\"up\"]),\n ke(ne, [\"tab\"])\n ],\n onTouchstart: we[2] || (we[2] = _e(() => {\n }, [\"stop\"]))\n }, null, 40, sx)\n ], 512)) : K(\"\", !0),\n H(\"div\", {\n ref_key: \"selectOptionsWrapperRef\",\n ref: u,\n class: \"select-options-wrapper\",\n style: Ce(l.value),\n onTouchstart: we[4] || (we[4] = _e(() => {\n }, [\"stop\"]))\n }, [\n t.filter && b.value.length === 0 ? (x(), R(\"div\", {\n key: 0,\n class: \"select-no-results\",\n style: Ce({ height: `${t.optionHeight}px` })\n }, se(t.noResultsText), 5)) : K(\"\", !0),\n H(\"div\", ax, [\n t.multiple && t.selectAll && wt.value === \"\" ? (x(), R(\"div\", {\n key: 0,\n class: Y([\"select-option\", [\n p.value === -1 && \"active\",\n Te.value && \"selected\",\n w.value ? \"select-option-group\" : null\n ]]),\n style: Ce({ height: `${t.optionHeight}px` }),\n onClick: _e(I, [\"stop\"])\n }, [\n H(\"span\", ox, [\n H(\"div\", lx, [\n H(\"input\", {\n class: \"form-check-input\",\n type: \"checkbox\",\n checked: Te.value,\n tabindex: \"-1\"\n }, null, 8, rx),\n et(\" \" + se(t.selectAllLabel), 1)\n ])\n ])\n ], 14, ix)) : K(\"\", !0),\n (x(!0), R(Ie, null, kt(b.value, (j, ze) => (x(), R(\"div\", {\n class: Y([\"select-option\", [\n j.disabled && \"disabled\",\n p.value === ze && \"active\",\n j.selected && \"selected\",\n w.value && !j.optgroup ? \"select-option-group\" : null\n ]]),\n style: Ce({ height: `${t.optionHeight}px` }),\n onClick: _e((pt) => W(j), [\"stop\"]),\n key: ze,\n role: \"option\",\n \"aria-selected\": j.selected,\n \"aria-disabled\": j.disabled || !1,\n hidden: j.hidden\n }, [\n t.multiple ? (x(), R(\"span\", ux, [\n H(\"div\", dx, [\n H(\"input\", {\n class: \"form-check-input\",\n type: \"checkbox\",\n checked: j.selected,\n tabindex: \"-1\",\n disabled: j.disabled || !1\n }, null, 8, fx),\n et(\" \" + se(j.text) + \" \", 1),\n j.secondaryText ? (x(), R(\"span\", hx, se(j.secondaryText), 1)) : K(\"\", !0)\n ])\n ])) : (x(), R(\"span\", px, [\n et(se(j.text) + \" \", 1),\n j.secondaryText ? (x(), R(\"span\", vx, se(j.secondaryText), 1)) : K(\"\", !0)\n ])),\n j.icon ? (x(), R(\"span\", mx, [\n H(\"img\", {\n class: \"select-option-icon rounded-circle\",\n src: j.icon,\n alt: \"select-icon\"\n }, null, 8, gx)\n ])) : K(\"\", !0)\n ], 14, cx))), 128))\n ])\n ], 36),\n ce.$slots.default ? (x(), R(\"div\", {\n key: 1,\n class: \"select-custom-content\",\n onClick: we[5] || (we[5] = _e(() => {\n }, [\"stop\"])),\n onTouchstart: we[6] || (we[6] = _e(() => {\n }, [\"stop\"]))\n }, [\n oe(ce.$slots, \"default\")\n ], 32)) : K(\"\", !0)\n ], 10, nx)\n ], 12, tx)) : K(\"\", !0)\n ], 64));\n }\n}), xx = [\"id\"], kx = {\n key: 0,\n class: \"datatable-header\"\n}, wx = [\"onClick\"], Sx = {\n key: 1,\n class: \"datatable-body\"\n}, _x = [\"data-mdb-index\", \"onClick\"], Mx = { key: 0 }, Cx = [\"contenteditable\", \"onBlur\", \"innerHTML\"], $x = {\n key: 2,\n class: \"datatable-body\"\n}, Bx = {\n key: 0,\n class: \"datatable-loader bg-light\"\n}, Tx = { class: \"datatable-loader-inner\" }, Dx = {\n key: 1,\n class: \"text-center text-muted my-4\"\n}, Ox = {\n key: 2,\n class: \"datatable-pagination\"\n}, Lx = { class: \"datatable-select-wrapper\" }, Ax = { class: \"datatable-select-text\" }, Ex = { class: \"datatable-pagination-nav\" }, Px = { class: \"datatable-pagination-buttons\" }, Vx = /* @__PURE__ */ H(\"i\", { class: \"fa fa-angle-double-left\" }, null, -1), Rx = /* @__PURE__ */ H(\"i\", { class: \"fa fa-chevron-left\" }, null, -1), Ix = /* @__PURE__ */ H(\"i\", { class: \"fa fa-chevron-right\" }, null, -1), Fx = /* @__PURE__ */ H(\"i\", { class: \"fa fa-angle-double-right\" }, null, -1), Nx = {\n name: \"MDBDatatable\"\n}, $1 = /* @__PURE__ */ re({\n ...Nx,\n props: {\n bordered: Boolean,\n borderless: Boolean,\n borderColor: String,\n clickableRows: Boolean,\n color: String,\n dark: Boolean,\n defaultValue: {\n type: String,\n default: \"-\"\n },\n dataset: {\n type: Object,\n default() {\n return {\n columns: [],\n rows: []\n };\n }\n },\n edit: Boolean,\n entries: {\n type: Number,\n default: 10\n },\n entriesOptions: {\n type: Array,\n default: () => [10, 25, 50, 200]\n },\n fixedHeader: Boolean,\n fullPagination: Boolean,\n hover: Boolean,\n id: String,\n loaderClass: {\n type: String,\n default: \"bg-primary\"\n },\n loading: Boolean,\n loadingMessage: {\n type: String,\n default: \"Loading results...\"\n },\n maxHeight: [Number, String],\n maxWidth: {\n type: [Number, String],\n default: \"100%\"\n },\n multi: Boolean,\n noFoundMessage: {\n type: String,\n default: \"No matching results found\"\n },\n ofPaginationText: {\n type: String,\n default: \"of\"\n },\n pagination: {\n type: Boolean,\n default: !0\n },\n rowsText: {\n type: String,\n default: \"Rows per page:\"\n },\n search: String,\n searchColumns: {\n type: Array,\n default: () => []\n },\n selectable: Boolean,\n sm: Boolean,\n sortField: String,\n sortOrder: String,\n striped: Boolean,\n tag: {\n type: String,\n default: \"div\"\n },\n searchCaseSensitive: Boolean,\n disableSortToDefault: Boolean\n },\n emits: [\n \"render\",\n \"selected-rows\",\n \"selected-indexes\",\n \"all-selected\",\n \"all-filtered-rows-selected\",\n \"row-click\",\n \"update\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = er(), i = T(() => [\n \"datatable\",\n s.color,\n s.bordered && \"datatable-bordered\",\n s.borderColor && `border-${s.borderColor}`,\n s.borderless && \"datatable-borderless\",\n s.clickableRows && \"datatable-clickable-rows\",\n s.dark && \"datatable-dark\",\n s.hover && \"datatable-hover\",\n s.loading && \"datatable-loading\",\n s.sm && \"datatable-sm\",\n s.striped && \"datatable-striped\"\n ]), o = T(\n () => typeof s.maxHeight == \"number\" ? s.maxHeight + \"px\" : s.maxHeight\n ), l = T(\n () => typeof s.maxWidth == \"number\" ? s.maxWidth + \"px\" : s.maxWidth\n ), r = y({}), c = y(s.entries), u = y(0), f = T(\n () => r.value.rows ? Math.ceil(r.value.rows.length / c.value) : 1\n ), d = T(\n () => r.value.rows ? u.value * c.value + 1 : 1\n ), h = T(\n () => r.value.rows ? u.value === f.value - 1 ? r.value.rows.length : u.value * c.value + c.value : c.value\n ), p = T(\n () => r.value.rows ? r.value.rows.length > 0 : !1\n ), v = T(() => r.value.rows && r.value.rows.length), m = y(\n s.entriesOptions.map((ne) => ({\n text: ne,\n value: typeof ne == \"string\" ? v : ne,\n selected: ne === c.value\n }))\n ), g = y(0), b = y({}), S = y(0), w = y(null), k = () => {\n S.value++;\n }, C = () => {\n var ge;\n const ne = r.value.columns && r.value.columns.some((de) => de.fixed), fe = ((ge = w.value) == null ? void 0 : ge.querySelector(\".fixed-cell\")) !== void 0;\n return ne || fe;\n };\n Fe(() => {\n a.default && a.default()[0].type === \"table\" ? P(a.default()[0]) : O(), C() && window.addEventListener(\"resize\", k);\n }), a.default ? pe(\n () => {\n var ne;\n return (ne = a.default) == null ? void 0 : ne.call(a);\n },\n () => {\n a.default && a.default().length > 0 && a.default()[0].type === \"table\" && P(a.default()[0]);\n }\n ) : pe(\n () => s.dataset,\n () => {\n O(), ve(), te();\n },\n { deep: !0 }\n ), pe(\n () => c.value,\n () => {\n u.value = 0, g.value++, Ge(() => n(\"render\", r.value));\n }\n );\n const M = (ne, fe) => {\n r.value.columns = ne, r.value.rows = fe, V(ne, fe), Ge(() => n(\"render\", r.value));\n }, V = (ne, fe) => {\n b.value.columns = [...ne], b.value.rows = [...fe];\n }, B = () => {\n const ne = s.dataset.columns;\n return ne && ne[0].field ? [...ne] : ne.map((fe) => ({\n label: fe,\n field: fe.toLowerCase()\n }));\n }, D = (ne) => {\n let fe = [];\n const ge = s.dataset.rows, de = ne[0].field, Se = ge[0][de];\n return Se || Se === 0 ? fe = ge.map((Be, J) => ({\n ...Be,\n mdbIndex: J,\n selected: !1\n })) : ge.map((J) => J).forEach((J, le) => {\n fe.push({}), J.forEach((he, De) => {\n fe[le][ne[De].field] = he, fe[le].mdbIndex = le, fe[le].selected = !1;\n });\n }), fe;\n }, E = (ne, fe) => {\n let ge = -ne[0].width || 0;\n const de = ne.map((Se) => (ge += Se.fixed && Se.width || 0, ge));\n ne.forEach((Se, Be) => {\n Se.fixed && Se.fixed === \"right\" && (Se.right = !0), \"format\" in Se && fe.push({\n field: Se.field,\n rules: Se.format.value ? Se.format.value : Se.format\n }), Se.left = de[Be];\n });\n }, X = (ne, fe) => {\n ne.forEach((ge, de) => {\n ge.formats = {}, fe.forEach((Se) => {\n ge.formats[Se.field] = Se.rules[de];\n });\n });\n }, L = (ne) => {\n let fe = \"\";\n return ne.props && Object.keys(ne.props).forEach((ge) => {\n fe += `${ge}=\"${ne.props && ne.props[ge]}\"`;\n }), fe;\n }, A = (ne) => {\n const fe = [];\n return ne.forEach((ge) => {\n if (ge.children !== \" \") {\n const de = L(ge);\n typeof ge.type != \"symbol\" && fe.push(`<${ge.type} ${de}>`);\n }\n if (ge.children)\n if (typeof ge.children == \"string\")\n fe.push(`${ge.children}`);\n else {\n const de = A(\n ge.children\n );\n fe.push(de);\n }\n ge.children !== \" \" && typeof ge.type != \"symbol\" && fe.push(`${ge.type}>`);\n }), fe.join(\"\");\n }, P = (ne) => {\n const ge = ne.children[0].children[0].children.map((Be) => ({\n label: Be.children,\n field: Be.children.toLowerCase(),\n sort: !(Be.props && Be.props[\"data-mdb-sort\"] === \"false\")\n })), de = [];\n ne.children[1].children.map((Be) => Be.children).forEach((Be, J) => {\n de.push({}), Be.forEach((le, he) => {\n typeof le.children == \"object\" ? de[J][ge[he].field] = A(\n le.children\n ) : de[J][ge[he].field] = le.children, de[J].mdbIndex = J, de[J].selected = !1;\n });\n }), M(ge, de);\n }, O = () => {\n let ne = [], fe = [];\n s.dataset.columns && s.dataset.columns.length > 0 && (ne = B()), s.dataset.rows && s.dataset.rows.length > 0 && (fe = D(ne));\n const ge = [];\n E(ne, ge), ge.length > 0 && X(fe, ge), M(ne, fe);\n }, $ = (ne) => {\n ne < f.value && (u.value = ne, n(\"render\", r.value));\n }, I = y(s.sortOrder || null), F = y(s.sortField || null), z = (ne, fe) => {\n I.value = ne, F.value = fe;\n }, G = () => {\n var ne, fe;\n (fe = (ne = r == null ? void 0 : r.value) == null ? void 0 : ne.rows) == null || fe.sort(\n (ge, de) => ge[F.value] > de[F.value] ? 1 : de[F.value] > ge[F.value] ? -1 : 0\n );\n }, U = () => {\n var ne, fe;\n (fe = (ne = r == null ? void 0 : r.value) == null ? void 0 : ne.rows) == null || fe.sort(\n (ge, de) => ge[F.value] < de[F.value] ? 1 : de[F.value] < ge[F.value] ? -1 : 0\n );\n }, ie = (ne) => {\n I.value === null || F.value !== ne || s.disableSortToDefault && I.value === \"desc\" ? (z(\"asc\", ne), G()) : I.value === \"asc\" && F.value === ne ? (z(\"desc\", ne), U()) : (z(null, null), b.value.rows ? r.value.rows = [...b.value.rows] : r.value.rows = [], ye.value && te()), Ge(() => n(\"render\", r.value));\n }, ve = () => {\n I.value === \"asc\" ? G() : I.value === \"desc\" && U(), Ge(() => n(\"render\", r.value));\n };\n Fe(() => {\n F.value && ve();\n });\n const ye = y(\"\"), W = y(s.searchColumns), te = () => {\n var ne, fe;\n W.value.length > 0 ? r.value.rows = (ne = b.value.rows) == null ? void 0 : ne.filter(\n (ge) => W.value.map((de) => {\n var Be;\n const Se = (Be = ge[de]) == null ? void 0 : Be.toString().replace(/(<([^>]+)>)/gi, \"\");\n return s.searchCaseSensitive ? Se == null ? void 0 : Se.toString().includes(ye.value) : Se == null ? void 0 : Se.toString().toLowerCase().includes(ye.value);\n }).some((de) => de === !0)\n ) : r.value.rows = (fe = b.value.rows) == null ? void 0 : fe.filter(\n (ge) => {\n var de;\n return (de = r.value.columns) == null ? void 0 : de.map((Se) => {\n var J;\n const Be = (J = ge[Se.field]) == null ? void 0 : J.toString().replace(/(<([^>]+)>)/gi, \"\");\n return s.searchCaseSensitive ? Be == null ? void 0 : Be.toString().includes(ye.value) : Be == null ? void 0 : Be.toString().toLowerCase().includes(ye.value);\n }).some((Se) => Se === !0);\n }\n ), s.selectable && s.multi && nt();\n };\n pe(\n () => s.search,\n (ne) => {\n ne !== void 0 && (ye.value = s.searchCaseSensitive ? ne : ne.toLowerCase()), ne === \"\" ? r.value.rows = b.value.rows : te(), ve(), u.value = 0;\n }\n ), pe(\n () => s.searchColumns,\n (ne) => {\n W.value = ne, te(), ve(), u.value = 0;\n }\n );\n const ae = T(\n () => b.value.rows.filter(\n (ne) => ne.selected === !0\n )\n ), be = T(\n () => ae.value.map((ne) => ne.mdbIndex)\n ), xe = T(\n () => b.value.rows && be.value.length === b.value.rows.length\n ), Te = T(() => {\n var fe, ge;\n if (((fe = r.value.rows) == null ? void 0 : fe.length) === 0)\n return !1;\n let ne = qe.value;\n return r.value.rows && be.value.length >= r.value.rows.length && (ne = !0), (ge = r.value.rows) == null || ge.forEach((de) => {\n de.selected === !1 && !be.value.includes(de.mdbIndex) && (ne = !1);\n }), ne;\n }), qe = y(!1), lt = (ne, fe) => {\n var ge, de;\n !s.multi && fe === !1 && ((ge = b.value.rows) == null || ge.forEach((Se) => {\n Se.mdbIndex !== ne && (Se.selected = !1);\n }), (de = r.value.rows) == null || de.forEach((Se) => {\n Se.mdbIndex !== ne && (Se.selected = !1);\n })), Ne(), nt();\n }, it = () => {\n r.value.rows && (Te.value ? r.value.rows.forEach((ne) => {\n ne.selected = !1, b.value.rows && (b.value.rows[ne.mdbIndex].selected = !1);\n }) : r.value.rows.forEach((ne) => ne.selected = !0), Ne());\n }, nt = () => {\n Ge(\n () => qe.value = Te.value\n );\n }, Ne = () => {\n Ge(() => {\n n(\"selected-rows\", ae.value), n(\"selected-indexes\", be.value), n(\"all-selected\", xe.value), n(\"all-filtered-rows-selected\", Te.value);\n });\n }, ht = (ne) => {\n n(\"row-click\", ne);\n }, st = (ne, fe, ge) => {\n if (s.edit && r.value.rows) {\n const de = ne.target;\n r.value.rows[fe][ge] = de.innerHTML, Ge(() => {\n ve(), n(\"update\", r.value);\n });\n }\n };\n return dt(() => {\n window.removeEventListener(\"resize\", k);\n }), e({ setActivePage: $ }), (ne, fe) => (x(), ee(ue(t.tag), {\n key: g.value,\n class: Y(i.value),\n style: Ce({ maxWidth: l.value })\n }, {\n default: Q(() => [\n (x(), R(\"div\", {\n class: \"datatable-inner table-responsive\",\n style: { overflow: \"auto\", position: \"relative\" },\n key: S.value,\n ref_key: \"datatableInnerRef\",\n ref: w\n }, [\n Ee(Ri, {\n width: l.value,\n height: o.value,\n wheelPropagation: !0,\n style: { \"background-color\": \"inherit\" }\n }, {\n default: Q(() => {\n var ge;\n return [\n H(\"table\", {\n class: \"table datatable-table\",\n id: t.id\n }, [\n r.value.columns ? (x(), R(\"thead\", kx, [\n H(\"tr\", null, [\n t.selectable ? (x(), R(\"th\", {\n key: 0,\n scope: \"col\",\n class: Y(t.fixedHeader && \"fixed-cell\")\n }, [\n t.multi ? (x(), ee(Mo, {\n key: 0,\n disabled: !p.value,\n modelValue: qe.value,\n \"onUpdate:modelValue\": fe[0] || (fe[0] = (de) => qe.value = de),\n onClick: _e(it, [\"stop\"]),\n wrapperClass: \"d-flex align-items-center mb-0\"\n }, null, 8, [\"disabled\", \"modelValue\", \"onClick\"])) : K(\"\", !0)\n ], 2)) : K(\"\", !0),\n (x(!0), R(Ie, null, kt(r.value.columns, (de, Se) => (x(), R(\"th\", {\n key: \"col-\" + Se,\n scope: \"col\",\n style: Ce({\n cursor: de.sort !== !1 ? \"pointer\" : \"default\",\n minWidth: de.width + \"px\",\n maxWidth: de.width + \"px\",\n left: de.fixed && !de.right ? de.left + \"px\" : \"\",\n right: de.fixed && de.right ? 0 : \"\"\n }),\n class: Y((t.fixedHeader || de.fixed) && \"fixed-cell\"),\n onClick: (Be) => de.sort !== !1 && ie(de.field)\n }, [\n de.sort !== !1 ? (x(), R(\"i\", {\n key: 0,\n class: Y([\"datatable-sort-icon fas fa-arrow-up\", I.value && F.value === de.field && \"active\"]),\n style: Ce({\n transform: I.value === \"desc\" && F.value === de.field ? \"rotate(180deg)\" : \"rotate(0deg)\"\n })\n }, null, 6)) : K(\"\", !0),\n et(\" \" + se(de.label), 1)\n ], 14, wx))), 128))\n ])\n ])) : K(\"\", !0),\n r.value.rows && r.value.rows.length > 0 || t.loading ? (x(), R(\"tbody\", Sx, [\n (x(!0), R(Ie, null, kt((ge = r.value.rows) == null ? void 0 : ge.slice(\n u.value * c.value,\n u.value * c.value + c.value\n ), (de, Se) => (x(), R(\"tr\", {\n key: \"row-\" + de.mdbIndex,\n \"data-mdb-index\": de.mdbIndex,\n class: Y(de.selected && \"active\"),\n scope: \"row\",\n onClick: (Be) => ht(de.mdbIndex)\n }, [\n t.selectable ? (x(), R(\"td\", Mx, [\n Ee(Mo, {\n modelValue: de.selected,\n \"onUpdate:modelValue\": (Be) => de.selected = Be,\n \"data-mdb-row-index\": de.mdbIndex,\n onClick: fe[1] || (fe[1] = _e(() => {\n }, [\"stop\"])),\n onChange: (Be) => lt(de.mdbIndex, de.selected)\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\", \"data-mdb-row-index\", \"onChange\"])\n ])) : K(\"\", !0),\n (x(!0), R(Ie, null, kt(r.value.columns, (Be, J) => (x(), R(\"td\", {\n key: \"cell-\" + J,\n style: Ce([\n de.formats && de.formats[Be.field],\n {\n minWidth: Be.width + \"px\",\n maxWidth: Be.width + \"px\",\n left: Be.fixed && !Be.right ? Be.left + \"px\" : !1,\n right: Be.fixed && Be.right ? 0 : !1\n }\n ]),\n class: Y(Be.fixed && \"fixed-cell\"),\n contenteditable: t.edit ? !0 : void 0,\n onBlur: (le) => st(le, Se, Be.field),\n innerHTML: de[Be.field] ? de[Be.field] : de[Be.field] === 0 ? 0 : t.defaultValue\n }, null, 46, Cx))), 128))\n ], 10, _x))), 128))\n ])) : (x(), R(\"tbody\", $x, [\n H(\"tr\", null, [\n H(\"td\", null, se(t.noFoundMessage), 1)\n ])\n ]))\n ], 8, xx)\n ];\n }),\n _: 1\n }, 8, [\"width\", \"height\"])\n ])),\n t.loading ? (x(), R(\"div\", Bx, [\n H(\"span\", Tx, [\n H(\"span\", {\n class: Y([\"datatable-progress\", t.loaderClass])\n }, null, 2)\n ])\n ])) : K(\"\", !0),\n t.loading ? (x(), R(\"p\", Dx, se(t.loadingMessage), 1)) : K(\"\", !0),\n t.pagination ? (x(), R(\"div\", Ox, [\n H(\"div\", Lx, [\n H(\"p\", Ax, se(t.rowsText), 1),\n Ee(yx, {\n options: m.value,\n \"onUpdate:options\": fe[2] || (fe[2] = (ge) => m.value = ge),\n selected: c.value,\n \"onUpdate:selected\": fe[3] || (fe[3] = (ge) => c.value = ge)\n }, null, 8, [\"options\", \"selected\"])\n ]),\n H(\"div\", Ex, se(p.value ? `${d.value} - ${h.value}` : 0) + \" \" + se(t.ofPaginationText) + \" \" + se(r.value.rows ? r.value.rows.length : \"\"), 1),\n H(\"div\", Px, [\n t.fullPagination ? (x(), ee(un, {\n key: 0,\n ripple: !1,\n color: \"link\",\n class: \"datatable-pagination-button datatable-pagination-start\",\n disabled: u.value === 0 ? !0 : null,\n onClick: fe[4] || (fe[4] = () => {\n u.value = 0, ne.$nextTick(() => ne.$emit(\"render\", r.value));\n })\n }, {\n default: Q(() => [\n Vx\n ]),\n _: 1\n }, 8, [\"disabled\"])) : K(\"\", !0),\n Ee(un, {\n ripple: !1,\n color: \"link\",\n class: \"datatable-pagination-button datatable-pagination-left\",\n disabled: u.value === 0 ? !0 : null,\n onClick: fe[5] || (fe[5] = () => {\n u.value--, ne.$nextTick(() => ne.$emit(\"render\", r.value));\n })\n }, {\n default: Q(() => [\n Rx\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n Ee(un, {\n ripple: !1,\n color: \"link\",\n class: \"datatable-pagination-button datatable-pagination-right\",\n disabled: u.value === f.value - 1 || f.value === 0 ? !0 : null,\n onClick: fe[6] || (fe[6] = () => {\n u.value++, ne.$nextTick(() => ne.$emit(\"render\", r.value));\n })\n }, {\n default: Q(() => [\n Ix\n ]),\n _: 1\n }, 8, [\"disabled\"]),\n t.fullPagination ? (x(), ee(un, {\n key: 1,\n ripple: !1,\n color: \"link\",\n class: \"datatable-pagination-button datatable-pagination-start\",\n disabled: u.value === f.value - 1 || f.value === 0 ? !0 : null,\n onClick: fe[7] || (fe[7] = () => {\n u.value = f.value - 1, ne.$nextTick(() => ne.$emit(\"render\", r.value));\n })\n }, {\n default: Q(() => [\n Fx\n ]),\n _: 1\n }, 8, [\"disabled\"])) : K(\"\", !0)\n ])\n ])) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"class\", \"style\"]));\n }\n}), Un = {\n tap: (t, e) => {\n t.touches.length === e.pointers && (e.origin = {\n x: t.touches[0].clientX,\n y: t.touches[0].clientY\n }, e.tapCount += 1, e.tapCount === 1 && (e.timer = setTimeout(() => {\n e.tapCount = 0;\n }, e.interval)), e.timer && e.tapCount === e.taps && (clearTimeout(e.timer), e.tapCount = 0, e.callback({\n touch: t,\n origin: e.origin\n })));\n },\n swipe: (t, e) => {\n if (t.type === \"touchstart\")\n e.startTouch = t;\n else if (t.type === \"touchmove\" && e.startTouch instanceof TouchEvent) {\n if (t.preventDefault(), !e.startTouch)\n return;\n e.touch = t;\n const { clientX: n, clientY: s } = e.startTouch.touches[0], { clientX: a, clientY: i } = e.touch.touches[0], o = {\n x: a - n,\n y: i - s\n }, l = {\n x: {\n direction: o.x < 0 ? \"left\" : \"right\",\n value: Math.abs(o.x)\n },\n y: {\n direction: o.y < 0 ? \"up\" : \"down\",\n value: Math.abs(o.y)\n }\n };\n if (e.direction === \"all\" && (l.x.value > e.threshold || l.y.value > e.threshold)) {\n const r = l.y.value > l.x.value ? l.y.direction : l.x.direction;\n e.callback(r, { touch: t }), e.startTouch = null, e.touch = null;\n } else {\n const r = e.direction === \"left\" || e.direction === \"right\" || e.direction === \"x\" ? \"x\" : \"y\";\n l[r].value > e.threshold && (e.direction === r || l[r].direction === e.direction) && (e.callback(l[r].direction, { touch: t }), e.startTouch = null, e.touch = null);\n }\n }\n },\n pinch(t, e) {\n if (t.touches.length < 2 && t.type !== \"touchend\")\n return;\n if (t.cancelable && t.preventDefault(), t.type === \"touchstart\") {\n const [s, a] = t.touches;\n e.startTouch = Math.sqrt(\n (a.clientX - s.clientX) ** 2 + (a.clientY - s.clientY) ** 2\n ), e.origin = {\n x: s.clientX + (a.clientX - s.clientX) / 2,\n y: s.clientY + (a.clientY - s.clientY) / 2\n };\n const i = typeof e.touch == \"number\" ? e.touch / e.startTouch : void 0;\n e.callback({\n touch: t,\n ratio: i,\n origin: e.origin\n });\n } else if (t.type === \"touchmove\") {\n const [s, a] = t.touches;\n e.touch = Math.sqrt(\n (a.clientX - s.clientX) ** 2 + (a.clientY - s.clientY) ** 2\n );\n }\n const n = typeof e.touch == \"number\" && typeof e.startTouch == \"number\" ? e.touch / e.startTouch : void 0;\n e.callback({\n touch: t,\n ratio: n,\n origin: e.origin\n });\n },\n press(t, e) {\n t.touches.length === e.pointers && (t.type === \"touchstart\" ? (e.startTouch = t, e.timeout = setTimeout(() => {\n e.callback({ touch: t }), e.timeout = \"complete\";\n }, e.time)) : t.type === \"touchend\" && (typeof e.timeout == \"number\" && clearTimeout(e.timeout), e.startTouch instanceof TouchEvent && t.timeStamp - e.startTouch.timeStamp > e.time && e.timeout !== \"complete\" && e.callback({ touch: t })));\n },\n rotate(t, e) {\n if (t.type === \"touchstart\")\n if (t.preventDefault(), e.origin = {}, t.touches.length === 1 && e.pointers === 1) {\n const { left: n, top: s, width: a, height: i } = e.element.getBoundingClientRect();\n e.origin.pivot = {\n x: n + a / 2,\n y: s + i / 2\n };\n } else if (t.touches.length === 2 && e.pointers === 2) {\n const [n, s] = t.touches, a = {\n x1: s.clientX,\n x2: n.clientX,\n y1: s.clientY,\n y2: n.clientY\n };\n e.origin.pivot = {\n x: (a.x1 + a.x2) / 2,\n y: (a.y1 + a.y2) / 2\n };\n } else\n return;\n else if (t.type === \"touchmove\") {\n t.preventDefault();\n let n;\n if (t.touches.length === 1 && e.pointers === 1)\n n = t.touches[0];\n else if (t.touches.length === 2 && e.pointers === 2)\n n = ((o) => {\n let l = null;\n const r = Number.MIN_VALUE;\n return Array.from(o).forEach((u) => {\n u.clientX > r && (l = u);\n }), l;\n })(t.touches);\n else\n return;\n const s = (i, o, l, r) => {\n const u = Math.atan2(r - o, l - i) * (180 / Math.PI);\n return Math.round(u + 360) % 360;\n };\n e.origin.pivot && n && (e.origin.currentAngle = s(\n e.origin.pivot.x,\n e.origin.pivot.y,\n n.clientX,\n n.clientY\n )), e.origin.initialAngle ? e.origin.currentAngle && e.origin.previousAngle && e.origin.distance && (e.origin.change = e.origin.currentAngle - e.origin.previousAngle, e.origin.distance += e.origin.change) : (e.origin.initialAngle = e.origin.previousAngle = e.origin.currentAngle, e.origin.distance = e.origin.change = 0), e.origin.previousAngle = e.origin.currentAngle;\n const a = {\n currentAngle: e.origin.currentAngle,\n distance: e.origin.distance,\n change: e.origin.change\n };\n e.callback(a, { touch: t });\n } else t.type === \"touchend\" && (e.origin = {});\n },\n pan(t, e) {\n if (t.type === \"touchstart\")\n e.startTouch = t;\n else if (t.type === \"touchmove\" && e.startTouch) {\n t.preventDefault(), e.touch = t;\n const n = e.startTouch, { clientX: s, clientY: a } = n.touches[0], { clientX: i, clientY: o } = e.touch.touches[0];\n let l = {\n x: 0,\n y: 0\n };\n const r = {\n x: i - s,\n y: o - a\n }, c = {\n x: {\n direction: r.x < 0 ? \"left\" : \"right\",\n value: Math.abs(r.x)\n },\n y: {\n direction: r.y < 0 ? \"up\" : \"down\",\n value: Math.abs(r.y)\n }\n };\n if (e.direction === \"all\" && (c.x.value > e.threshold || c.y.value > e.threshold))\n l = {\n x: r.x,\n y: r.y\n }, e.callback(l, { touch: t }), e.startTouch = e.touch;\n else {\n const u = e.direction === \"left\" || e.direction === \"right\" || e.direction === \"x\" ? \"x\" : \"y\";\n c[u].value > e.threshold && (e.direction === u || c[u].direction === e.direction) && (l[u] = r[u], e.callback(l, { touch: t }), e.startTouch = e.touch);\n }\n }\n }\n}, Hx = {\n mounted(t, e) {\n if (e.value === !1) return;\n const { arg: n, modifiers: s } = e, a = n;\n t.data = {\n ...t.data,\n [a]: null\n }, t.data[a] = {\n element: t,\n startTouch: null,\n touch: null,\n timeout: null,\n origin: {\n x: 0,\n y: 0\n },\n tapCount: 0,\n modifiers: s,\n angle: e.value.angle || 0,\n threshold: e.value.threshold || 20,\n direction: e.value.direction || \"all\",\n interval: e.value.interval || 500,\n timer: null,\n time: e.value.time || 250,\n taps: e.value.taps || 1,\n pointers: e.value.pointers || 1,\n callback: e.value.callback || e.value\n };\n const i = n, o = n, l = t.data;\n t.addEventListener(\n \"touchstart\",\n (r) => Un[i](r, l[o])\n ), n !== \"tap\" && (t.addEventListener(\n \"touchmove\",\n (r) => Un[i](r, l[o])\n ), t.addEventListener(\n \"touchend\",\n (r) => Un[i](r, l[o])\n ));\n },\n updated(t, e) {\n if (e.value === !1) return;\n const { arg: n } = e, s = n, a = t.data;\n Object.keys(e.value).forEach((i) => {\n e.value[i] !== e.oldValue[i] && (a[s] = {\n ...a[s],\n [i]: e.value[i]\n });\n });\n },\n unmounted(t, e) {\n if (e.value === !1) return;\n const { arg: n } = e, s = n;\n t.removeEventListener(\"touchstart\", () => Un[s]), t.removeEventListener(\"touchend\", () => Un[s]), t.removeEventListener(\"touchmove\", () => Un[s]);\n }\n}, Wx = {\n mounted(t, e) {\n let { x: n, y: s } = e.modifiers;\n const a = e.value === void 0 ? !0 : e.value;\n n === void 0 && s === void 0 && (n = !0, s = !0), t.blockScroll = () => {\n const i = document.querySelector(\"body\");\n s && i && (t.prevOverflowY = i.style.overflowY, i.style.overflowY = \"hidden\"), n && i && (t.prevOverflowX = i.style.overflowX, i.style.overflowX = \"hidden\");\n }, t.enableScroll = () => {\n const i = document.querySelector(\"body\");\n s && i && (i.style.overflowY = t.prevOverflowY), n && i && (i.style.overflowX = t.prevOverflowX);\n }, a && t.blockScroll();\n },\n updated(t, e) {\n e.value !== void 0 && (e.value ? t.blockScroll() : t.enableScroll());\n },\n unmounted(t) {\n t.enableScroll();\n }\n}, zx = [\"onClick\"], Yx = {\n name: \"MDBSideNav\",\n inheritAttrs: !1\n}, B1 = /* @__PURE__ */ re({\n ...Yx,\n props: {\n tag: {\n type: String,\n default: \"nav\"\n },\n color: {\n type: String,\n default: \"primary\"\n },\n classes: String,\n modelValue: Boolean,\n relative: {\n type: Boolean,\n default: !1\n },\n absolute: {\n type: Boolean,\n default: !1\n },\n mode: {\n type: String,\n default: \"over\",\n validator: (t) => [\"over\", \"side\", \"push\"].indexOf(t.toLowerCase()) > -1\n },\n light: {\n type: Boolean,\n defualt: !1\n },\n dark: {\n type: Boolean,\n default: !1\n },\n right: {\n type: Boolean,\n default: !1\n },\n slim: {\n type: Boolean,\n default: !1\n },\n slimCollapsed: {\n type: Boolean,\n default: !0\n },\n slimWidth: {\n type: Number,\n default: 60\n },\n sidenavWidth: {\n type: Number,\n default: 240\n },\n backdrop: {\n type: Boolean,\n default: !0\n },\n backdropClass: String,\n backdropStyle: String,\n contentSelector: String,\n id: String,\n modeBreakpoint: Number,\n closeOnEsc: {\n type: Boolean,\n default: !1\n },\n expandOnHover: {\n type: Boolean,\n default: !1\n },\n scrollLock: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(\"sidenav\"), a = y(!1), i = T(() => [\n \"sidenav\",\n n.color && `sidenav-${n.color}`,\n n.absolute && \"sidenav-absolute\",\n n.relative && \"sidenav-relative\",\n n.light && \"sidenav-light\",\n n.right && \"sidenav-right\",\n n.slim && \"sidenav-slim\",\n n.slim && n.slimCollapsed && F.value && \"sidenav-slim-collapsed\",\n n.classes\n ]), o = T(() => n.right ? \"right-sidenav\" : \"sidenav\"), l = T(() => !!(a.value && n.backdrop && S.value && f.value === \"over\")), r = () => n.relative || n.absolute ? s.value.parentNode.offsetHeight ?? null : window.innerHeight, c = () => {\n u.value = r();\n }, u = y(null), f = y(n.mode), d = y(null), h = y(window.innerWidth), p = y(!1), v = () => {\n h.value = window.innerWidth, n.modeBreakpoint && window.innerWidth < n.modeBreakpoint ? (f.value = \"over\", e(\"update:modelValue\", !1), p.value = !0, d.value && (d.value.style.display = \"unset\")) : (f.value = \"side\", S.value || e(\"update:modelValue\", !0), p.value = !1, d.value && (d.value.style.display = \"none\")), b(f.value);\n }, m = y(null), g = T(() => S.value ? n.slim ? n.slimCollapsed ? n.slimWidth : n.slimWidth + n.sidenavWidth : n.sidenavWidth : 0), b = (W) => {\n !m.value && n.contentSelector && (m.value = document.querySelector(n.contentSelector));\n const te = n.right ? \"margin-left\" : \"margin-right\", ae = n.right ? \"padding-right\" : \"padding-left\";\n m.value && (m.value.style.transition = \"all 0.3s linear 0s\", W === \"push\" ? (m.value.style[te] = -1 * g.value + \"px\", m.value.style[ae] = g.value + 20 + \"px\") : W === \"side\" ? (m.value.style[te] = \"0px\", m.value.style[ae] = g.value + 20 + \"px\") : W === \"over\" && (m.value.style[ae] = \"20px\", m.value.style[te] = \"0px\"), setTimeout(() => {\n m.value && (m.value.style.transition = \"all 0.3s ease 0s\");\n }, 300));\n }, S = y(n.modelValue), w = () => {\n Ge(() => {\n P(), Le(window, \"keydown\", $);\n });\n };\n pe(\n () => n.modelValue,\n (W) => {\n S.value = W, S.value && f.value === \"over\" && w(), S.value && n.closeOnEsc && D(), b(f.value);\n }\n ), Ze(() => f.value = n.mode), pe(\n () => n.mode,\n (W) => {\n S.value && (b(W), W === \"over\" ? w() : W !== \"over\" && A && A.value && I());\n }\n );\n const k = (W, te) => {\n const ae = [];\n let be = W.parentNode;\n for (; be && be.nodeType === Node.ELEMENT_NODE; )\n be.matches(te) && ae.push(be), be = be.parentNode;\n return ae;\n }, C = (W, te) => {\n let ae = W.previousElementSibling;\n for (; ae; ) {\n if (ae.matches(te))\n return [ae];\n ae = ae.previousElementSibling;\n }\n return [];\n }, M = y(null), V = (W, te) => {\n M.value = W;\n const [ae] = k(te, \".sidenav-collapse\");\n if (!ae) {\n B();\n return;\n }\n const [be] = C(ae, \".sidenav-link\");\n B(be);\n }, B = (W = void 0) => {\n [...s.value.querySelectorAll(\".sidenav-menu\")].forEach(\n (te) => {\n te.querySelectorAll(\n \".sidenav-collapse\"\n ).forEach((be) => {\n const [xe] = C(be, \".sidenav-link\");\n !W || xe.id !== W.id ? xe.classList.remove(\"active\") : xe.classList.add(\"active\");\n });\n }\n );\n };\n q(\"activeNode\", M), q(\"setActiveNode\", V);\n const D = () => {\n Le(document, \"keydown\", E);\n }, E = (W) => {\n n.closeOnEsc && W.key === \"Escape\" && d.value && d.value.style.display !== \"none\" && (e(\"update:modelValue\", !1), Me(document, \"keydown\", E));\n }, X = () => {\n e(\"update:modelValue\", !1);\n }, L = y(null), A = y(null), P = () => {\n const W = Array.from(\n s.value.querySelectorAll(\n 'button, a, input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )\n ).filter((ae) => !ae.classList.contains(\"ps__thumb-x\") && !ae.classList.contains(\"ps__thumb-y\"));\n if (W.length === 0) return;\n L.value = W[0];\n const te = W[W.length - 1];\n A.value && A.value !== te && Me(A.value, \"blur\", O), A.value = te, Le(A.value, \"blur\", O);\n }, O = () => {\n L.value && L.value.focus();\n }, $ = (W) => {\n S.value && W.key === \"Tab\" && (W.preventDefault(), O()), Me(window, \"keydown\", $);\n }, I = () => {\n Me(A.value, \"blur\", O);\n }, F = y(n.slimCollapsed);\n pe(\n () => [n.slim, n.slimCollapsed],\n () => {\n b(f.value);\n }\n );\n const z = (W) => {\n if (W.key !== \" \")\n return;\n const te = 0.87 * window.innerHeight, ae = window.scrollY;\n window.scrollTo(0, ae + te);\n }, G = () => {\n Le(window, \"keydown\", z);\n }, U = () => {\n n.slim && n.expandOnHover && (F.value = !0), Me(window, \"keydown\", z);\n }, ie = () => {\n n.slim && n.expandOnHover && (F.value = !1);\n }, ve = (W) => {\n let te = W === \"right\";\n if (n.right && (te = !te), n.slim && F.value && te) {\n F.value = !1;\n return;\n }\n n.slim && !F.value && !te && (F.value = !0);\n }, ye = y(n.slimCollapsed);\n return q(\"sidenavColor\", n.color), q(\"slimCollapsed\", ye), pe(\n () => n.slimCollapsed,\n (W) => {\n ye.value = W;\n }\n ), ar(() => {\n n.modeBreakpoint && window.innerWidth < n.modeBreakpoint && (e(\"update:modelValue\", !1), S.value = !1);\n }), Fe(() => {\n a.value = !0, n.contentSelector && (m.value = document.querySelector(n.contentSelector)), n.modelValue && b(n.mode), n.mode === \"over\" && w(), n.closeOnEsc && D(), d.value = document.querySelector(`[aria-controls=\"#${n.id}\"]`), n.dark && (s.value.style.backgroundColor = \"#2d2c2c\"), u.value = r(), Le(window, \"resize\", c), n.modeBreakpoint && (v(), Le(window, \"resize\", v)), Le(window, \"keydown\", $);\n }), dt(() => {\n Me(window, \"resize\", v), Me(window, \"resize\", c), Me(document, \"keydown\", E);\n }), (W, te) => (x(), R(Ie, null, [\n Ee(At, { name: o.value }, {\n default: Q(() => [\n je((x(), ee(ue(t.tag), $e({\n class: i.value,\n id: t.id\n }, W.$attrs, {\n ref_key: \"sidenav\",\n ref: s,\n onMouseenter: G,\n onMouseover: ie,\n onMouseleave: U\n }), {\n default: Q(() => [\n Ee(Ri, {\n disableKeyboard: \"\",\n suppressScrollX: \"\",\n height: `${u.value}px`\n }, {\n default: Q(() => [\n oe(W.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"height\"])\n ]),\n _: 3\n }, 16, [\"class\", \"id\"])), [\n [Hn, S.value],\n [_(Hx), {\n callback: ve,\n direction: \"x\"\n }, \"swipe\"],\n [_(Wx), t.scrollLock]\n ])\n ]),\n _: 3\n }, 8, [\"name\"]),\n Ee(At, { name: \"backdrop\" }, {\n default: Q(() => [\n l.value ? (x(), R(\"div\", {\n key: 0,\n class: Y([\"sidenav-backdrop\", t.backdropClass]),\n style: Ce(t.backdropStyle),\n onClick: _e(X, [\"self\"])\n }, null, 14, zx)) : K(\"\", !0)\n ]),\n _: 1\n })\n ], 64));\n }\n}), jx = {\n key: 0,\n class: \"mt-2 mx-2\"\n}, Xx = {\n key: 0,\n class: \"mt-2 mx-2\"\n}, Ux = {\n name: \"MDBSideNavMenu\",\n inheritAttrs: !1\n}, T1 = /* @__PURE__ */ re({\n ...Ux,\n props: {\n tag: {\n type: String,\n default: \"ul\"\n },\n classes: String,\n accordion: {\n type: Boolean,\n default: !1\n },\n scrollContainer: Boolean,\n filter: {\n type: Boolean,\n default: !1\n }\n },\n setup(t) {\n const e = t, n = T(() => [\"sidenav-menu\", e.classes]), s = $t({\n itemsCount: 0,\n active: null\n }), a = () => (s.itemsCount++, s.itemsCount), i = (d) => {\n s.active = d;\n };\n q(\"accordionState\", e.accordion ? s : null), q(\"incrementAccordionItemsCount\", a), q(\"setAccordionActiveItem\", i), Fe(() => {\n e.scrollContainer && r();\n });\n const o = y(null), l = y(\"100%\"), r = () => {\n const d = o.value, p = (d.parentNode !== null && d.parentNode.parentNode !== null ? Array.from(d.parentNode.parentNode.children).filter(\n (v) => v !== d.parentNode\n ) : []).reduce((v, m) => v + m.clientHeight, 0);\n l.value = `calc(100% - ${p}px)`;\n }, c = y(\"\"), u = y([]), f = () => {\n var d;\n u.value = [\n ...(d = o.value) == null ? void 0 : d.querySelectorAll(\n \".sidenav-item\"\n )\n ], u.value.forEach((h) => {\n h.style.display = \"block\";\n }), c.value && u.value.forEach((h) => {\n var m;\n const p = (m = h.textContent) == null ? void 0 : m.trim().toLowerCase();\n (p == null ? void 0 : p.includes(c.value.toLowerCase())) || (h.style.display = \"none\");\n });\n };\n return pe(\n () => c.value,\n () => {\n f();\n }\n ), (d, h) => t.scrollContainer ? (x(), ee(Ri, {\n key: 0,\n height: l.value,\n suppressScrollX: \"\"\n }, {\n default: Q(() => [\n (x(), ee(ue(t.tag), $e({ class: n.value }, d.$attrs, {\n ref_key: \"sidenavMenu\",\n ref: o\n }), {\n default: Q(() => [\n t.filter ? (x(), R(\"div\", jx, [\n Ee(_(vn), {\n modelValue: c.value,\n \"onUpdate:modelValue\": h[0] || (h[0] = (p) => c.value = p),\n role: \"searchbox\",\n type: \"text\",\n label: \"Search\"\n }, null, 8, [\"modelValue\"])\n ])) : K(\"\", !0),\n oe(d.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"]))\n ]),\n _: 3\n }, 8, [\"height\"])) : (x(), ee(ue(t.tag), $e({\n key: 1,\n class: n.value\n }, d.$attrs, {\n ref_key: \"sidenavMenu\",\n ref: o\n }), {\n default: Q(() => [\n t.filter ? (x(), R(\"div\", Xx, [\n Ee(_(vn), {\n modelValue: c.value,\n \"onUpdate:modelValue\": h[1] || (h[1] = (p) => c.value = p),\n role: \"searchbox\",\n type: \"text\",\n label: \"Search\"\n }, null, 8, [\"modelValue\"])\n ])) : K(\"\", !0),\n oe(d.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"]));\n }\n}), qx = {\n name: \"MDBSideNavLink\",\n inheritAttrs: !1\n}, Kx = /* @__PURE__ */ re({\n ...qx,\n props: {\n tag: {\n type: String,\n default: \"a\"\n },\n id: String,\n href: String,\n to: [String, Object],\n exact: {\n type: Boolean,\n default: !1\n },\n newTab: {\n type: Boolean,\n default: !1\n },\n classes: String,\n icon: String,\n iconStyle: String,\n iconSize: String,\n iconFlag: String,\n iconClass: String,\n modelValue: Boolean,\n ripple: {\n type: [Object, Boolean],\n default: !0\n }\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(n.id || ut(\"MDBSideNavLink-\")), a = y(\"sidenavLink\"), i = N(\n \"hasCollapsibleContent\",\n !1\n ), o = N(\"activeNode\", !1), l = N(\"setActiveNode\", !1), r = T(\n () => o && o.value === s.value\n ), c = T(() => [\"sidenav-link\", r.value ? \"active\" : null, n.classes]), u = y(n.modelValue), f = y(n.modelValue);\n pe(\n () => n.modelValue,\n (k) => {\n u.value = k, f.value = k;\n }\n );\n let d = !1;\n const h = () => {\n d || (d = !0, i && i.value ? e(\"update:modelValue\", !n.modelValue) : u.value = !0, l && l(s.value, a.value), setTimeout(() => {\n d = !1;\n }, 300));\n }, p = T(() => n.newTab ? \"_blank\" : !1), v = T(() => [\"rotate-icon\", n.iconClass]), m = T(() => ({ transform: `rotate(${u.value ? 180 : 0}deg)` })), g = (k) => {\n k.key === \"Enter\" && (i && i.value ? e(\"update:modelValue\", !n.modelValue) : h());\n }, b = N(\"openCollapse\", !1), S = () => {\n b && (b(), e(\"update:modelValue\", !0));\n }, w = y(\n typeof n.ripple == \"boolean\" ? { color: N(\"sidenavColor\", \"primary\") } : {\n color: N(\"sidenavColor\", \"primary\"),\n ...n.ripple\n }\n );\n return Fe(() => {\n (window.location.href === n.href || window.location.hash && window.location.hash.substring(1) === n.to || window.location.pathname !== \"/\" && window.location.pathname === n.to) && (h(), S());\n }), (k, C) => {\n const M = nr(\"router-link\");\n return t.to ? je((x(), ee(M, $e({\n key: 0,\n id: s.value,\n ref_key: \"sidenavLink\",\n ref: a,\n class: c.value,\n exact: t.exact,\n to: t.to,\n target: p.value,\n \"active-class\": \"active\",\n \"exact-active-class\": \"exact-active\",\n tabindex: \"0\"\n }, k.$attrs, {\n onKeydown: g,\n onClick: h\n }), {\n default: Q(() => [\n oe(k.$slots, \"default\"),\n t.icon ? (x(), ee(ns, {\n key: 0,\n icon: t.icon,\n iconStyle: t.iconStyle,\n size: t.iconSize,\n flag: t.iconFlag,\n class: Y(v.value),\n style: Ce(m.value)\n }, null, 8, [\"icon\", \"iconStyle\", \"size\", \"flag\", \"class\", \"style\"])) : K(\"\", !0)\n ]),\n _: 3\n }, 16, [\"id\", \"class\", \"exact\", \"to\", \"target\"])), [\n [_(Ct), w.value]\n ]) : je((x(), ee(ue(t.tag), $e({\n key: 1,\n id: s.value,\n ref_key: \"sidenavLink\",\n ref: a,\n href: t.href,\n class: c.value,\n target: p.value,\n tabindex: \"0\"\n }, k.$attrs, {\n onKeydown: g,\n onClick: h\n }), {\n default: Q(() => [\n oe(k.$slots, \"default\"),\n t.icon ? (x(), ee(ns, {\n key: 0,\n icon: t.icon,\n iconStyle: t.iconStyle,\n size: t.iconSize,\n flag: t.iconFlag,\n class: Y(v.value),\n style: Ce(m.value)\n }, null, 8, [\"icon\", \"iconStyle\", \"size\", \"flag\", \"class\", \"style\"])) : K(\"\", !0)\n ]),\n _: 3\n }, 16, [\"id\", \"href\", \"class\", \"target\"])), [\n [_(Ct), w.value]\n ]);\n };\n }\n}), Gx = {\n name: \"MDBSideNavItem\"\n}, D1 = /* @__PURE__ */ re({\n ...Gx,\n props: {\n tag: {\n type: String,\n default: \"li\"\n },\n collapse: {\n type: Boolean,\n default: !1\n },\n show: {\n type: Boolean,\n default: !1\n },\n classes: String,\n icon: String,\n iconStyle: {\n type: String,\n default: \"fas\"\n },\n iconClass: {\n type: String,\n default: \"me-3\"\n },\n title: String,\n hasArrow: {\n type: Boolean,\n default: !0\n },\n nonSlim: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\"update:show\"],\n setup(t, { emit: e }) {\n const n = t, s = N(\"slimCollapsed\", y(!0)), a = T(() => [\"sidenav-item\", n.classes]), i = T(() => [n.nonSlim && \"sidenav-non-slim\"]);\n pe(\n () => [n.nonSlim, n.show],\n ([u, f]) => {\n u && !f && s.value ? setTimeout(() => {\n r.forEach((d) => {\n d.style.display = \"none\";\n });\n }, 300) : (!u || u && f) && r.forEach((d) => {\n d.style.display = \"unset\";\n });\n }\n );\n const o = T(() => n.hasArrow ? \"angle-down\" : \"\"), l = y(!1);\n q(\"hasCollapsibleContent\", l);\n let r;\n Fe(() => {\n r = [\n ...document.querySelectorAll(\n \".sidenav-non-slim\"\n )\n ], n.nonSlim && r.forEach((u) => {\n u.style.display = \"none\";\n }), n.collapse && (l.value = !0);\n });\n const c = y(n.show);\n return pe(\n () => n.show,\n (u) => c.value = u\n ), (u, f) => t.collapse ? (x(), ee(ue(t.tag), $e({\n key: 0,\n class: a.value\n }, u.$attrs), {\n default: Q(() => [\n Ee(Kx, {\n modelValue: c.value,\n \"onUpdate:modelValue\": f[0] || (f[0] = (d) => c.value = d),\n icon: o.value\n }, {\n default: Q(() => [\n Ee(ns, {\n icon: t.icon,\n iconStyle: t.iconStyle,\n class: Y(t.iconClass)\n }, null, 8, [\"icon\", \"iconStyle\", \"class\"]),\n H(\"span\", {\n class: Y(i.value)\n }, se(t.title), 3)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"icon\"]),\n Ee(or, {\n modelValue: c.value,\n \"onUpdate:modelValue\": f[1] || (f[1] = (d) => c.value = d),\n sidenav: \"\",\n tag: \"ul\"\n }, {\n default: Q(() => [\n oe(u.$slots, \"default\")\n ]),\n _: 3\n }, 8, [\"modelValue\"])\n ]),\n _: 3\n }, 16, [\"class\"])) : (x(), ee(ue(t.tag), $e({\n key: 1,\n class: a.value\n }, u.$attrs), {\n default: Q(() => [\n oe(u.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"class\"]));\n }\n}), Zx = {\n name: \"MDBNavbar\"\n}, O1 = /* @__PURE__ */ re({\n ...Zx,\n props: {\n tag: {\n type: String,\n default: \"nav\"\n },\n bg: {\n type: String\n },\n dark: {\n type: Boolean,\n default: !1\n },\n light: {\n type: Boolean,\n default: !1\n },\n double: {\n type: Boolean,\n default: !1\n },\n expand: {\n type: String\n },\n position: {\n type: String\n },\n transparent: {\n type: Boolean,\n default: !1\n },\n scrolling: {\n type: Boolean,\n default: !1\n },\n scrollingOffset: {\n type: Number,\n default: 100\n },\n center: {\n type: Boolean,\n default: !1\n },\n container: {\n type: [Boolean, String],\n default: !1\n },\n classContainer: {\n type: String\n },\n classNavbar: String,\n scroll: Boolean\n },\n setup(t) {\n const e = t, n = y(!1), s = T(() => [\n e.scroll && \"navbar-scroll\",\n n.value ? \"navbar-scrolled\" : null,\n e.classNavbar\n ].join(\" \")), a = () => {\n window.scrollY > 0 ? n.value = !0 : n.value = !1;\n };\n return Fe(() => {\n Le(window, \"scroll\", a);\n }), dt(() => {\n Me(window, \"scroll\", a);\n }), (i, o) => (x(), ee(bf, $e(i.$props, { classNavbar: s.value }), {\n default: Q(() => [\n oe(i.$slots, \"default\")\n ]),\n _: 3\n }, 16, [\"classNavbar\"]));\n }\n});\nvar Mc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n var n = 1e3, s = 6e4, a = 36e5, i = \"millisecond\", o = \"second\", l = \"minute\", r = \"hour\", c = \"day\", u = \"week\", f = \"month\", d = \"quarter\", h = \"year\", p = \"date\", v = \"Invalid Date\", m = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/, g = /\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, b = { name: \"en\", weekdays: \"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"), months: \"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\") }, S = function(L, A, P) {\n var O = String(L);\n return !O || O.length >= A ? L : \"\" + Array(A + 1 - O.length).join(P) + L;\n }, w = { s: S, z: function(L) {\n var A = -L.utcOffset(), P = Math.abs(A), O = Math.floor(P / 60), $ = P % 60;\n return (A <= 0 ? \"+\" : \"-\") + S(O, 2, \"0\") + \":\" + S($, 2, \"0\");\n }, m: function L(A, P) {\n if (A.date() < P.date()) return -L(P, A);\n var O = 12 * (P.year() - A.year()) + (P.month() - A.month()), $ = A.clone().add(O, f), I = P - $ < 0, F = A.clone().add(O + (I ? -1 : 1), f);\n return +(-(O + (P - $) / (I ? $ - F : F - $)) || 0);\n }, a: function(L) {\n return L < 0 ? Math.ceil(L) || 0 : Math.floor(L);\n }, p: function(L) {\n return { M: f, y: h, w: u, d: c, D: p, h: r, m: l, s: o, ms: i, Q: d }[L] || String(L || \"\").toLowerCase().replace(/s$/, \"\");\n }, u: function(L) {\n return L === void 0;\n } }, k = \"en\", C = {};\n C[k] = b;\n var M = function(L) {\n return L instanceof E;\n }, V = function L(A, P, O) {\n var $;\n if (!A) return k;\n if (typeof A == \"string\") {\n var I = A.toLowerCase();\n C[I] && ($ = I), P && (C[I] = P, $ = I);\n var F = A.split(\"-\");\n if (!$ && F.length > 1) return L(F[0]);\n } else {\n var z = A.name;\n C[z] = A, $ = z;\n }\n return !O && $ && (k = $), $ || !O && k;\n }, B = function(L, A) {\n if (M(L)) return L.clone();\n var P = typeof A == \"object\" ? A : {};\n return P.date = L, P.args = arguments, new E(P);\n }, D = w;\n D.l = V, D.i = M, D.w = function(L, A) {\n return B(L, { locale: A.$L, utc: A.$u, x: A.$x, $offset: A.$offset });\n };\n var E = function() {\n function L(P) {\n this.$L = V(P.locale, null, !0), this.parse(P);\n }\n var A = L.prototype;\n return A.parse = function(P) {\n this.$d = function(O) {\n var $ = O.date, I = O.utc;\n if ($ === null) return /* @__PURE__ */ new Date(NaN);\n if (D.u($)) return /* @__PURE__ */ new Date();\n if ($ instanceof Date) return new Date($);\n if (typeof $ == \"string\" && !/Z$/i.test($)) {\n var F = $.match(m);\n if (F) {\n var z = F[2] - 1 || 0, G = (F[7] || \"0\").substring(0, 3);\n return I ? new Date(Date.UTC(F[1], z, F[3] || 1, F[4] || 0, F[5] || 0, F[6] || 0, G)) : new Date(F[1], z, F[3] || 1, F[4] || 0, F[5] || 0, F[6] || 0, G);\n }\n }\n return new Date($);\n }(P), this.$x = P.x || {}, this.init();\n }, A.init = function() {\n var P = this.$d;\n this.$y = P.getFullYear(), this.$M = P.getMonth(), this.$D = P.getDate(), this.$W = P.getDay(), this.$H = P.getHours(), this.$m = P.getMinutes(), this.$s = P.getSeconds(), this.$ms = P.getMilliseconds();\n }, A.$utils = function() {\n return D;\n }, A.isValid = function() {\n return this.$d.toString() !== v;\n }, A.isSame = function(P, O) {\n var $ = B(P);\n return this.startOf(O) <= $ && $ <= this.endOf(O);\n }, A.isAfter = function(P, O) {\n return B(P) < this.startOf(O);\n }, A.isBefore = function(P, O) {\n return this.endOf(O) < B(P);\n }, A.$g = function(P, O, $) {\n return D.u(P) ? this[O] : this.set($, P);\n }, A.unix = function() {\n return Math.floor(this.valueOf() / 1e3);\n }, A.valueOf = function() {\n return this.$d.getTime();\n }, A.startOf = function(P, O) {\n var $ = this, I = !!D.u(O) || O, F = D.p(P), z = function(ae, be) {\n var xe = D.w($.$u ? Date.UTC($.$y, be, ae) : new Date($.$y, be, ae), $);\n return I ? xe : xe.endOf(c);\n }, G = function(ae, be) {\n return D.w($.toDate()[ae].apply($.toDate(\"s\"), (I ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(be)), $);\n }, U = this.$W, ie = this.$M, ve = this.$D, ye = \"set\" + (this.$u ? \"UTC\" : \"\");\n switch (F) {\n case h:\n return I ? z(1, 0) : z(31, 11);\n case f:\n return I ? z(1, ie) : z(0, ie + 1);\n case u:\n var W = this.$locale().weekStart || 0, te = (U < W ? U + 7 : U) - W;\n return z(I ? ve - te : ve + (6 - te), ie);\n case c:\n case p:\n return G(ye + \"Hours\", 0);\n case r:\n return G(ye + \"Minutes\", 1);\n case l:\n return G(ye + \"Seconds\", 2);\n case o:\n return G(ye + \"Milliseconds\", 3);\n default:\n return this.clone();\n }\n }, A.endOf = function(P) {\n return this.startOf(P, !1);\n }, A.$set = function(P, O) {\n var $, I = D.p(P), F = \"set\" + (this.$u ? \"UTC\" : \"\"), z = ($ = {}, $[c] = F + \"Date\", $[p] = F + \"Date\", $[f] = F + \"Month\", $[h] = F + \"FullYear\", $[r] = F + \"Hours\", $[l] = F + \"Minutes\", $[o] = F + \"Seconds\", $[i] = F + \"Milliseconds\", $)[I], G = I === c ? this.$D + (O - this.$W) : O;\n if (I === f || I === h) {\n var U = this.clone().set(p, 1);\n U.$d[z](G), U.init(), this.$d = U.set(p, Math.min(this.$D, U.daysInMonth())).$d;\n } else z && this.$d[z](G);\n return this.init(), this;\n }, A.set = function(P, O) {\n return this.clone().$set(P, O);\n }, A.get = function(P) {\n return this[D.p(P)]();\n }, A.add = function(P, O) {\n var $, I = this;\n P = Number(P);\n var F = D.p(O), z = function(ie) {\n var ve = B(I);\n return D.w(ve.date(ve.date() + Math.round(ie * P)), I);\n };\n if (F === f) return this.set(f, this.$M + P);\n if (F === h) return this.set(h, this.$y + P);\n if (F === c) return z(1);\n if (F === u) return z(7);\n var G = ($ = {}, $[l] = s, $[r] = a, $[o] = n, $)[F] || 1, U = this.$d.getTime() + P * G;\n return D.w(U, this);\n }, A.subtract = function(P, O) {\n return this.add(-1 * P, O);\n }, A.format = function(P) {\n var O = this, $ = this.$locale();\n if (!this.isValid()) return $.invalidDate || v;\n var I = P || \"YYYY-MM-DDTHH:mm:ssZ\", F = D.z(this), z = this.$H, G = this.$m, U = this.$M, ie = $.weekdays, ve = $.months, ye = function(be, xe, Te, qe) {\n return be && (be[xe] || be(O, I)) || Te[xe].slice(0, qe);\n }, W = function(be) {\n return D.s(z % 12 || 12, be, \"0\");\n }, te = $.meridiem || function(be, xe, Te) {\n var qe = be < 12 ? \"AM\" : \"PM\";\n return Te ? qe.toLowerCase() : qe;\n }, ae = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: U + 1, MM: D.s(U + 1, 2, \"0\"), MMM: ye($.monthsShort, U, ve, 3), MMMM: ye(ve, U), D: this.$D, DD: D.s(this.$D, 2, \"0\"), d: String(this.$W), dd: ye($.weekdaysMin, this.$W, ie, 2), ddd: ye($.weekdaysShort, this.$W, ie, 3), dddd: ie[this.$W], H: String(z), HH: D.s(z, 2, \"0\"), h: W(1), hh: W(2), a: te(z, G, !0), A: te(z, G, !1), m: String(G), mm: D.s(G, 2, \"0\"), s: String(this.$s), ss: D.s(this.$s, 2, \"0\"), SSS: D.s(this.$ms, 3, \"0\"), Z: F };\n return I.replace(g, function(be, xe) {\n return xe || ae[be] || F.replace(\":\", \"\");\n });\n }, A.utcOffset = function() {\n return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);\n }, A.diff = function(P, O, $) {\n var I, F = D.p(O), z = B(P), G = (z.utcOffset() - this.utcOffset()) * s, U = this - z, ie = D.m(this, z);\n return ie = (I = {}, I[h] = ie / 12, I[f] = ie, I[d] = ie / 3, I[u] = (U - G) / 6048e5, I[c] = (U - G) / 864e5, I[r] = U / a, I[l] = U / s, I[o] = U / n, I)[F] || U, $ ? ie : D.a(ie);\n }, A.daysInMonth = function() {\n return this.endOf(f).$D;\n }, A.$locale = function() {\n return C[this.$L];\n }, A.locale = function(P, O) {\n if (!P) return this.$L;\n var $ = this.clone(), I = V(P, O, !0);\n return I && ($.$L = I), $;\n }, A.clone = function() {\n return D.w(this.$d, this);\n }, A.toDate = function() {\n return new Date(this.valueOf());\n }, A.toJSON = function() {\n return this.isValid() ? this.toISOString() : null;\n }, A.toISOString = function() {\n return this.$d.toISOString();\n }, A.toString = function() {\n return this.$d.toUTCString();\n }, L;\n }(), X = E.prototype;\n return B.prototype = X, [[\"$ms\", i], [\"$s\", o], [\"$m\", l], [\"$H\", r], [\"$W\", c], [\"$M\", f], [\"$y\", h], [\"$D\", p]].forEach(function(L) {\n X[L[1]] = function(A) {\n return this.$g(A, L[0], L[1]);\n };\n }), B.extend = function(L, A) {\n return L.$i || (L(A, E, B), L.$i = !0), B;\n }, B.locale = V, B.isDayjs = M, B.unix = function(L) {\n return B(1e3 * L);\n }, B.en = C[k], B.Ls = C, B.p = {}, B;\n });\n})(Mc);\nvar Jx = Mc.exports;\nconst Ye = /* @__PURE__ */ Dn(Jx);\nvar Cc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n return function(n, s, a) {\n s.prototype.isToday = function() {\n var i = \"YYYY-MM-DD\", o = a();\n return this.format(i) === o.format(i);\n };\n };\n });\n})(Cc);\nvar Qx = Cc.exports;\nconst $c = /* @__PURE__ */ Dn(Qx);\nvar Bc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n var n = { LTS: \"h:mm:ss A\", LT: \"h:mm A\", L: \"MM/DD/YYYY\", LL: \"MMMM D, YYYY\", LLL: \"MMMM D, YYYY h:mm A\", LLLL: \"dddd, MMMM D, YYYY h:mm A\" }, s = /(\\[[^[]*\\])|([-:/.()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, a = /\\d\\d/, i = /\\d\\d?/, o = /\\d*[^\\s\\d-_:/()]+/, l = {}, r = function(v) {\n return (v = +v) + (v > 68 ? 1900 : 2e3);\n }, c = function(v) {\n return function(m) {\n this[v] = +m;\n };\n }, u = [/[+-]\\d\\d:?(\\d\\d)?|Z/, function(v) {\n (this.zone || (this.zone = {})).offset = function(m) {\n if (!m || m === \"Z\") return 0;\n var g = m.match(/([+-]|\\d\\d)/g), b = 60 * g[1] + (+g[2] || 0);\n return b === 0 ? 0 : g[0] === \"+\" ? -b : b;\n }(v);\n }], f = function(v) {\n var m = l[v];\n return m && (m.indexOf ? m : m.s.concat(m.f));\n }, d = function(v, m) {\n var g, b = l.meridiem;\n if (b) {\n for (var S = 1; S <= 24; S += 1) if (v.indexOf(b(S, 0, m)) > -1) {\n g = S > 12;\n break;\n }\n } else g = v === (m ? \"pm\" : \"PM\");\n return g;\n }, h = { A: [o, function(v) {\n this.afternoon = d(v, !1);\n }], a: [o, function(v) {\n this.afternoon = d(v, !0);\n }], S: [/\\d/, function(v) {\n this.milliseconds = 100 * +v;\n }], SS: [a, function(v) {\n this.milliseconds = 10 * +v;\n }], SSS: [/\\d{3}/, function(v) {\n this.milliseconds = +v;\n }], s: [i, c(\"seconds\")], ss: [i, c(\"seconds\")], m: [i, c(\"minutes\")], mm: [i, c(\"minutes\")], H: [i, c(\"hours\")], h: [i, c(\"hours\")], HH: [i, c(\"hours\")], hh: [i, c(\"hours\")], D: [i, c(\"day\")], DD: [a, c(\"day\")], Do: [o, function(v) {\n var m = l.ordinal, g = v.match(/\\d+/);\n if (this.day = g[0], m) for (var b = 1; b <= 31; b += 1) m(b).replace(/\\[|\\]/g, \"\") === v && (this.day = b);\n }], M: [i, c(\"month\")], MM: [a, c(\"month\")], MMM: [o, function(v) {\n var m = f(\"months\"), g = (f(\"monthsShort\") || m.map(function(b) {\n return b.slice(0, 3);\n })).indexOf(v) + 1;\n if (g < 1) throw new Error();\n this.month = g % 12 || g;\n }], MMMM: [o, function(v) {\n var m = f(\"months\").indexOf(v) + 1;\n if (m < 1) throw new Error();\n this.month = m % 12 || m;\n }], Y: [/[+-]?\\d+/, c(\"year\")], YY: [a, function(v) {\n this.year = r(v);\n }], YYYY: [/\\d{4}/, c(\"year\")], Z: u, ZZ: u };\n function p(v) {\n var m, g;\n m = v, g = l && l.formats;\n for (var b = (v = m.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g, function(B, D, E) {\n var X = E && E.toUpperCase();\n return D || g[E] || n[E] || g[X].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g, function(L, A, P) {\n return A || P.slice(1);\n });\n })).match(s), S = b.length, w = 0; w < S; w += 1) {\n var k = b[w], C = h[k], M = C && C[0], V = C && C[1];\n b[w] = V ? { regex: M, parser: V } : k.replace(/^\\[|\\]$/g, \"\");\n }\n return function(B) {\n for (var D = {}, E = 0, X = 0; E < S; E += 1) {\n var L = b[E];\n if (typeof L == \"string\") X += L.length;\n else {\n var A = L.regex, P = L.parser, O = B.slice(X), $ = A.exec(O)[0];\n P.call(D, $), B = B.replace($, \"\");\n }\n }\n return function(I) {\n var F = I.afternoon;\n if (F !== void 0) {\n var z = I.hours;\n F ? z < 12 && (I.hours += 12) : z === 12 && (I.hours = 0), delete I.afternoon;\n }\n }(D), D;\n };\n }\n return function(v, m, g) {\n g.p.customParseFormat = !0, v && v.parseTwoDigitYear && (r = v.parseTwoDigitYear);\n var b = m.prototype, S = b.parse;\n b.parse = function(w) {\n var k = w.date, C = w.utc, M = w.args;\n this.$u = C;\n var V = M[1];\n if (typeof V == \"string\") {\n var B = M[2] === !0, D = M[3] === !0, E = B || D, X = M[2];\n D && (X = M[2]), l = this.$locale(), !B && X && (l = g.Ls[X]), this.$d = function(O, $, I) {\n try {\n if ([\"x\", \"X\"].indexOf($) > -1) return new Date(($ === \"X\" ? 1e3 : 1) * O);\n var F = p($)(O), z = F.year, G = F.month, U = F.day, ie = F.hours, ve = F.minutes, ye = F.seconds, W = F.milliseconds, te = F.zone, ae = /* @__PURE__ */ new Date(), be = U || (z || G ? 1 : ae.getDate()), xe = z || ae.getFullYear(), Te = 0;\n z && !G || (Te = G > 0 ? G - 1 : ae.getMonth());\n var qe = ie || 0, lt = ve || 0, it = ye || 0, nt = W || 0;\n return te ? new Date(Date.UTC(xe, Te, be, qe, lt, it, nt + 60 * te.offset * 1e3)) : I ? new Date(Date.UTC(xe, Te, be, qe, lt, it, nt)) : new Date(xe, Te, be, qe, lt, it, nt);\n } catch {\n return /* @__PURE__ */ new Date(\"\");\n }\n }(k, V, C), this.init(), X && X !== !0 && (this.$L = this.locale(X).$L), E && k != this.format(V) && (this.$d = /* @__PURE__ */ new Date(\"\")), l = {};\n } else if (V instanceof Array) for (var L = V.length, A = 1; A <= L; A += 1) {\n M[1] = V[A - 1];\n var P = g.apply(this, M);\n if (P.isValid()) {\n this.$d = P.$d, this.$L = P.$L, this.init();\n break;\n }\n A === L && (this.$d = /* @__PURE__ */ new Date(\"\"));\n }\n else S.call(this, w);\n };\n };\n });\n})(Bc);\nvar ek = Bc.exports;\nconst tk = /* @__PURE__ */ Dn(ek);\nvar Tc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n return function(n, s) {\n s.prototype.isSameOrAfter = function(a, i) {\n return this.isSame(a, i) || this.isAfter(a, i);\n };\n };\n });\n})(Tc);\nvar nk = Tc.exports;\nconst sk = /* @__PURE__ */ Dn(nk);\nvar Dc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n return function(n, s) {\n s.prototype.isSameOrBefore = function(a, i) {\n return this.isSame(a, i) || this.isBefore(a, i);\n };\n };\n });\n})(Dc);\nvar ak = Dc.exports;\nconst ik = /* @__PURE__ */ Dn(ak);\nvar Oc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n var n = \"day\";\n return function(s, a, i) {\n var o = function(c) {\n return c.add(4 - c.isoWeekday(), n);\n }, l = a.prototype;\n l.isoWeekYear = function() {\n return o(this).year();\n }, l.isoWeek = function(c) {\n if (!this.$utils().u(c)) return this.add(7 * (c - this.isoWeek()), n);\n var u, f, d, h, p = o(this), v = (u = this.isoWeekYear(), f = this.$u, d = (f ? i.utc : i)().year(u).startOf(\"year\"), h = 4 - d.isoWeekday(), d.isoWeekday() > 4 && (h += 7), d.add(h, n));\n return p.diff(v, \"week\") + 1;\n }, l.isoWeekday = function(c) {\n return this.$utils().u(c) ? this.day() || 7 : this.day(this.day() % 7 ? c : c - 7);\n };\n var r = l.startOf;\n l.startOf = function(c, u) {\n var f = this.$utils(), d = !!f.u(u) || u;\n return f.p(c) === \"isoweek\" ? d ? this.date(this.date() - (this.isoWeekday() - 1)).startOf(\"day\") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf(\"day\") : r.bind(this)(c, u);\n };\n };\n });\n})(Oc);\nvar ok = Oc.exports;\nconst lk = /* @__PURE__ */ Dn(ok);\nvar Lc = { exports: {} };\n(function(t, e) {\n (function(n, s) {\n t.exports = s();\n })(zn, function() {\n return function(n, s, a) {\n var i = s.prototype, o = i.format;\n a.en.ordinal = function(l) {\n var r = [\"th\", \"st\", \"nd\", \"rd\"], c = l % 100;\n return \"[\" + l + (r[(c - 20) % 10] || r[c] || r[0]) + \"]\";\n }, i.format = function(l) {\n var r = this, c = this.$locale();\n if (!this.isValid()) return o.bind(this)(l);\n var u = this.$utils(), f = (l || \"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g, function(d) {\n switch (d) {\n case \"Q\":\n return Math.ceil((r.$M + 1) / 3);\n case \"Do\":\n return c.ordinal(r.$D);\n case \"gggg\":\n return r.weekYear();\n case \"GGGG\":\n return r.isoWeekYear();\n case \"wo\":\n return c.ordinal(r.week(), \"W\");\n case \"w\":\n case \"ww\":\n return u.s(r.week(), d === \"w\" ? 1 : 2, \"0\");\n case \"W\":\n case \"WW\":\n return u.s(r.isoWeek(), d === \"W\" ? 1 : 2, \"0\");\n case \"k\":\n case \"kk\":\n return u.s(String(r.$H === 0 ? 24 : r.$H), d === \"k\" ? 1 : 2, \"0\");\n case \"X\":\n return Math.floor(r.$d.getTime() / 1e3);\n case \"x\":\n return r.$d.getTime();\n case \"z\":\n return \"[\" + r.offsetName() + \"]\";\n case \"zzz\":\n return \"[\" + r.offsetName(\"long\") + \"]\";\n default:\n return d;\n }\n });\n return o.bind(this)(f);\n };\n };\n });\n})(Lc);\nvar rk = Lc.exports;\nconst ck = /* @__PURE__ */ Dn(rk), uk = { class: \"datepicker-header\" }, dk = { class: \"datepicker-title\" }, fk = { class: \"datepicker-title-text\" }, hk = { class: \"datepicker-date\" }, pk = { class: \"datepicker-date-text\" }, vk = { key: 1 }, mk = {\n key: 0,\n class: \"buttons-container\"\n}, gk = /* @__PURE__ */ H(\"button\", {\n type: \"button\",\n class: \"datepicker-button-toggle\",\n \"data-mdb-toggle\": \"datepicker\"\n}, [\n /* @__PURE__ */ H(\"i\", { class: \"far fa-calendar datepicker-toggle-icon\" })\n], -1), bk = /* @__PURE__ */ H(\"i\", { class: \"far fa-clock fa-sm timepicker-icon\" }, null, -1), yk = [\n bk\n], xk = {\n name: \"MDBDatepickerHeader\"\n}, kk = /* @__PURE__ */ re({\n ...xk,\n setup(t) {\n const e = N(\"headerDate\"), n = N(\"weekdaysShort\"), s = N(\"monthsShort\"), a = N(\"customHeader\"), i = N(\"title\"), o = T(\n () => n !== void 0 && e !== void 0 && n[e.value.day()]\n ), l = T(\n () => s !== void 0 && e !== void 0 && s[e.value.month()]\n ), r = T(() => e == null ? void 0 : e.value.date()), c = N(\"ok\"), u = N(\"dateTimepicker\", null), f = N(\n \"changePicker\",\n null\n );\n return (d, h) => (x(), R(\"div\", uk, [\n H(\"div\", dk, [\n H(\"span\", fk, se(_(i)), 1)\n ]),\n H(\"div\", hk, [\n H(\"span\", pk, [\n _(a) ? oe(d.$slots, \"header\", {\n key: 0,\n headerWeekday: o.value,\n headerMonth: l.value,\n headerMonthday: r.value,\n selected: _(e)\n }) : (x(), R(\"span\", vk, se(o.value) + \", \" + se(l.value) + \" \" + se(r.value), 1))\n ])\n ]),\n _(u) ? (x(), R(\"div\", mk, [\n gk,\n H(\"button\", {\n type: \"button\",\n class: \"timepicker-button-toggle\",\n \"data-mdb-toggle\": \"timepicker\",\n onClick: h[0] || (h[0] = () => {\n _(f) && _(f)(\"timepicker\"), _(c) && _(c)();\n })\n }, yk)\n ])) : K(\"\", !0)\n ]));\n }\n}), wk = [\"aria-label\"], Sk = { class: \"datepicker-arrow-controls\" }, _k = [\"aria-label\"], Mk = [\"aria-label\"], Ck = [\"onKeydown\"], $k = { class: \"datepicker-table\" }, Bk = [\"aria-label\"], Tk = { class: \"datepicker-table-body\" }, Dk = [\"aria-label\", \"aria-selected\", \"aria-disabled\", \"onClick\"], Ok = {\n key: 0,\n class: \"datepicker-cell-content datepicker-small-cell-content\"\n}, Lk = {\n name: \"MDBDatepickerDayView\"\n}, Ak = /* @__PURE__ */ re({\n ...Lk,\n props: {\n inline: Boolean\n },\n setup(t) {\n const e = t, n = N(\"activeDate\"), s = N(\"selectedDate\"), a = N(\"focusedDate\"), i = N(\"monthsFull\"), o = N(\"weekdaysNarrow\"), l = N(\"weekdaysFull\"), r = N(\"prevMonthLabel\"), c = N(\"nextMonthLabel\"), u = N(\"startDay\"), f = N(\"switchToMultiYearViewLabel\"), d = T(\n () => i !== void 0 && n !== void 0 && i[n.value.month()]\n ), h = T(\n () => n !== void 0 && n.value.year()\n ), p = N(\"selectDay\"), v = N(\"goToPrevMonth\"), m = N(\"goToNextMonth\"), g = N(\"changeView\"), b = N(\"minDate\"), S = N(\"maxDate\"), w = N(\"startDate\"), k = N(\"filter\"), C = N(\"today\"), M = N(\"disablePast\"), V = N(\"disableFuture\"), B = T(() => {\n const W = [];\n for (let te = 0; te < 6; te++) {\n W.push([]);\n let ae;\n u === 0 && n ? ae = n.value.startOf(\"month\").add(te, \"week\").startOf(\"week\") : u === 1 && n && (ae = n.value.startOf(\"month\").add(te, \"week\").startOf(\"isoWeek\"));\n for (let be = 0; be < 7; be++) {\n const xe = ae && ae.add(be, \"day\"), Te = `${(l == null ? void 0 : l[be]) ?? \"\"}, ${(i == null ? void 0 : i[(xe == null ? void 0 : xe.month()) ?? 0]) ?? \"\"} ${(xe == null ? void 0 : xe.date()) ?? \"\"}, ${h.value}`;\n xe && n && a && k && s && W[te].push({\n current: xe.isToday(),\n dayJS: xe,\n disabled: xe.month() !== n.value.month(),\n focused: xe.date() === a.value.date(),\n label: xe.date(),\n selectable: E(xe) && !k(xe),\n selected: xe.isSame(s.value, \"day\"),\n ariaLabel: Te\n });\n }\n }\n return W;\n }), D = (W) => {\n W.disabled || p == null || p(W);\n }, E = (W) => M ? w != null && w.value ? W.isSameOrAfter(w.value) : W.add(1, \"day\").isSameOrAfter(C == null ? void 0 : C.value) : V ? W.isSameOrBefore((w == null ? void 0 : w.value) || (C == null ? void 0 : C.value)) : b != null && b.value && (S != null && S.value) ? W.isSameOrAfter(b.value) && W.isSameOrBefore(S.value) : b != null && b.value ? W.isSameOrAfter(b.value) : S != null && S.value ? W.isSameOrBefore(S.value) : !0, X = N(\"handleDayUp\"), L = N(\"handleDayDown\"), A = N(\"handleDayLeft\"), P = N(\"handleDayRight\"), O = N(\"handleDayHome\"), $ = N(\"handleDayEnd\"), I = N(\"handleDayPageUp\"), F = N(\"handleDayPageDown\"), z = y(!1), G = () => {\n if (a && E(a.value) && k && !k(a.value)) {\n const W = {};\n W.dayJS = a.value, p == null || p(W);\n }\n }, U = (W) => {\n switch (W.key) {\n case \"Home\":\n O == null || O();\n break;\n case \"End\":\n $ == null || $();\n break;\n case \"PageUp\":\n I == null || I();\n break;\n case \"PageDown\":\n F == null || F();\n break;\n }\n }, ie = y(null), ve = (W) => {\n if (e.inline) {\n W.preventDefault();\n const te = ie.value && ie.value.querySelector(\n \".datepicker-view-change-button\"\n );\n te == null || te.focus();\n }\n }, ye = y(null);\n return Fe(() => {\n setTimeout(() => {\n var W;\n (W = ye.value) == null || W.focus();\n }, 100);\n }), (W, te) => (x(), R(Ie, null, [\n H(\"div\", {\n ref_key: \"datepickerDateControlsRef\",\n ref: ie,\n class: \"datepicker-date-controls\"\n }, [\n H(\"button\", {\n class: \"datepicker-view-change-button\",\n \"aria-label\": _(f),\n onClick: te[0] || (te[0] = _e((ae) => _(g) && _(g)(\"year\"), [\"stop\"]))\n }, se(d.value) + \" \" + se(h.value), 9, wk),\n H(\"div\", Sk, [\n H(\"button\", {\n class: \"datepicker-previous-button\",\n \"aria-label\": _(r),\n onClick: te[1] || (te[1] = //@ts-ignore\n (...ae) => _(v) && _(v)(...ae))\n }, null, 8, _k),\n H(\"button\", {\n class: \"datepicker-next-button\",\n \"aria-label\": _(c),\n onClick: te[2] || (te[2] = //@ts-ignore\n (...ae) => _(m) && _(m)(...ae))\n }, null, 8, Mk)\n ])\n ], 512),\n H(\"div\", {\n ref_key: \"datepickerViewRef\",\n ref: ye,\n class: \"datepicker-view\",\n tabindex: \"0\",\n onKeydown: [\n te[3] || (te[3] = ke(_e(\n //@ts-ignore\n (...ae) => _(X) && _(X)(...ae),\n [\"prevent\"]\n ), [\"up\"])),\n te[4] || (te[4] = ke(_e(\n //@ts-ignore\n (...ae) => _(L) && _(L)(...ae),\n [\"prevent\"]\n ), [\"down\"])),\n te[5] || (te[5] = ke(_e(\n //@ts-ignore\n (...ae) => _(A) && _(A)(...ae),\n [\"prevent\"]\n ), [\"left\"])),\n te[6] || (te[6] = ke(_e(\n //@ts-ignore\n (...ae) => _(P) && _(P)(...ae),\n [\"prevent\"]\n ), [\"right\"])),\n ke(_e(G, [\"prevent\"]), [\"enter\"]),\n U,\n ke(ve, [\"tab\"])\n ],\n onFocus: te[7] || (te[7] = (ae) => z.value = !0),\n onBlur: te[8] || (te[8] = (ae) => z.value = !1)\n }, [\n H(\"table\", $k, [\n H(\"thead\", null, [\n H(\"tr\", null, [\n (x(!0), R(Ie, null, kt(_(o), (ae, be) => (x(), R(\"th\", {\n key: be,\n class: \"datepicker-day-heading\",\n scope: \"col\",\n \"aria-label\": _(l) && _(l)[be]\n }, se(ae), 9, Bk))), 128))\n ])\n ]),\n H(\"tbody\", Tk, [\n (x(!0), R(Ie, null, kt(B.value, (ae, be) => (x(), R(\"tr\", { key: be }, [\n (x(!0), R(Ie, null, kt(ae, (xe, Te) => (x(), R(\"td\", {\n key: Te,\n class: Y([\"datepicker-cell datepicker-small-cell datepicker-day-cell\", [\n xe.current && \"current\",\n xe.focused && z.value && \"focused\",\n xe.selected && \"selected\",\n !xe.selectable && \"disabled\"\n ]]),\n \"aria-label\": xe.ariaLabel,\n \"aria-selected\": xe.selected,\n \"aria-disabled\": !xe.selectable || void 0,\n onClick: (qe) => D(xe)\n }, [\n xe.disabled ? K(\"\", !0) : (x(), R(\"div\", Ok, se(xe.label), 1))\n ], 10, Dk))), 128))\n ]))), 128))\n ])\n ])\n ], 40, Ck)\n ], 64));\n }\n}), Ek = { class: \"datepicker-date-controls\" }, Pk = [\"aria-label\"], Vk = { class: \"datepicker-arrow-controls\" }, Rk = [\"aria-label\"], Ik = [\"aria-label\"], Fk = [\"onKeydown\"], Nk = { class: \"datepicker-table\" }, Hk = { class: \"datepicker-table-body\" }, Wk = [\"aria-label\", \"aria-disabled\", \"onClick\"], zk = { class: \"datepicker-cell-content datepicker-large-cell-content\" }, Yk = {\n name: \"MDBDatepickerYearView\"\n}, jk = /* @__PURE__ */ re({\n ...Yk,\n setup(t) {\n const e = N(\"activeDate\"), n = N(\"selectedDate\"), s = N(\"focusedDate\"), a = N(\"setFocusedDate\"), i = N(\"changeActiveYear\"), o = N(\"changeView\"), l = N(\"today\"), r = N(\"nextMultiYearLabel\"), c = N(\"prevMultiYearLabel\"), u = N(\"switchToDayViewLabel\"), f = y(-5), d = N(\"minDate\"), h = N(\"maxDate\"), p = N(\"disablePast\"), v = N(\"disableFuture\"), m = T(() => f.value < 0 ? e && e.value.subtract(-f.value, \"year\") : e && e.value.add(f.value, \"year\")), g = T(() => {\n var P;\n const A = [];\n for (let O = 0; O < 6; O++) {\n A.push([]);\n const $ = (P = m.value) == null ? void 0 : P.add(O + O * 3, \"year\");\n for (let I = 0; I < 4; I++) {\n const F = $ == null ? void 0 : $.add(I, \"year\");\n F && l && s && n && A[O].push({\n current: F.year() === l.year(),\n focused: F.isSame(s.value, \"year\"),\n label: F.year(),\n selectable: b(F.year()),\n selected: F.isSame(n.value, \"year\")\n });\n }\n }\n return A;\n }), b = (A) => p && l ? A >= l.year() : v && l ? A <= l.year() : d != null && d.value && (h != null && h.value) ? A >= d.value.year() && A <= h.value.year() : d != null && d.value ? A >= d.value.year() : h != null && h.value ? A <= h.value.year() : !0, S = (A) => {\n i && i(A), o && o(\"month\");\n }, w = N(\n \"handleDecrementYear\"\n ), k = N(\n \"handleIncrementYear\"\n ), C = N(\"handleYearHome\"), M = N(\"handleYearEnd\"), V = N(\"handleYearPageUp\"), B = N(\"handleYearPageDown\"), D = y(null), E = y(!1), X = () => {\n s && !b(s.value.year()) || (s && i && i(s.value.year()), o && o(\"month\"));\n }, L = (A) => {\n switch (A.key) {\n case \"Home\":\n C == null || C();\n break;\n case \"End\":\n M == null || M();\n break;\n case \"PageUp\":\n V == null || V();\n break;\n case \"PageDown\":\n B == null || B();\n break;\n }\n };\n return Fe(() => {\n setTimeout(() => {\n var A;\n (A = D.value) == null || A.focus();\n }, 100);\n }), (A, P) => (x(), R(Ie, null, [\n H(\"div\", Ek, [\n H(\"button\", {\n class: \"datepicker-view-change-button\",\n \"aria-label\": _(u),\n onClick: P[0] || (P[0] = _e((O) => _(o) && _(o)(\"day\"), [\"stop\"]))\n }, se(g.value[0][0].label) + \" - \" + se(g.value[5][g.value[5].length - 1].label), 9, Pk),\n H(\"div\", Vk, [\n H(\"button\", {\n class: \"datepicker-previous-button\",\n \"aria-label\": _(c),\n onClick: P[1] || (P[1] = () => {\n _(a) && _(s) && _(a)(_(s).subtract(24, \"year\")), f.value -= 24;\n })\n }, null, 8, Rk),\n H(\"button\", {\n class: \"datepicker-next-button\",\n \"aria-label\": _(r),\n onClick: P[2] || (P[2] = () => {\n _(a) && _(s) && _(a)(_(s).add(24, \"year\")), f.value += 24;\n })\n }, null, 8, Ik)\n ])\n ]),\n H(\"div\", {\n ref_key: \"datepickerViewRef\",\n ref: D,\n class: \"datepicker-view\",\n tabindex: \"0\",\n onKeydown: [\n P[3] || (P[3] = ke(_e((O) => {\n var $;\n return ($ = _(w)) == null ? void 0 : $(4);\n }, [\"prevent\"]), [\"up\"])),\n P[4] || (P[4] = ke(_e((O) => {\n var $;\n return ($ = _(k)) == null ? void 0 : $(4);\n }, [\"prevent\"]), [\"down\"])),\n P[5] || (P[5] = ke(_e((O) => {\n var $;\n return ($ = _(w)) == null ? void 0 : $(1);\n }, [\"prevent\"]), [\"left\"])),\n P[6] || (P[6] = ke(_e((O) => {\n var $;\n return ($ = _(k)) == null ? void 0 : $(1);\n }, [\"prevent\"]), [\"right\"])),\n ke(X, [\"enter\"]),\n L\n ],\n onFocus: P[7] || (P[7] = (O) => E.value = !0),\n onBlur: P[8] || (P[8] = (O) => E.value = !1)\n }, [\n H(\"table\", Nk, [\n H(\"tbody\", Hk, [\n (x(!0), R(Ie, null, kt(g.value, (O, $) => (x(), R(\"tr\", { key: $ }, [\n (x(!0), R(Ie, null, kt(O, (I, F) => {\n var z;\n return x(), R(\"td\", {\n key: F,\n class: Y([\"datepicker-cell datepicker-large-cell datepicker-year-cell\", [\n I.current && \"current\",\n I.focused && E.value && \"focused\",\n !I.selectable && \"disabled\",\n I.selected && \"selected\"\n ]]),\n \"aria-label\": (z = I.label) == null ? void 0 : z.toString(),\n \"aria-disabled\": !I.selectable || void 0,\n onClick: _e((G) => !I.disabled && I.label !== void 0 && S(I.label), [\"stop\"])\n }, [\n H(\"div\", zk, se(I.label), 1)\n ], 10, Wk);\n }), 128))\n ]))), 128))\n ])\n ])\n ], 40, Fk)\n ], 64));\n }\n}), Xk = { class: \"datepicker-date-controls\" }, Uk = [\"aria-label\"], qk = { class: \"datepicker-arrow-controls\" }, Kk = [\"aria-label\"], Gk = [\"aria-label\"], Zk = [\"onKeydown\"], Jk = { class: \"datepicker-table\" }, Qk = { class: \"datepicker-table-body\" }, ew = [\"aria-label\", \"aria-disabled\", \"onClick\"], tw = { class: \"datepicker-cell-content datepicker-large-cell-content\" }, nw = {\n name: \"MDBDatepickerMonthView\"\n}, sw = /* @__PURE__ */ re({\n ...nw,\n setup(t) {\n const e = N(\"activeDate\"), n = N(\"selectedDate\"), s = N(\"focusedDate\"), a = N(\"setFocusedDate\"), i = N(\"monthsShort\"), o = N(\"changeActiveYear\"), l = N(\"changeActiveMonth\"), r = N(\"changeView\"), c = N(\"today\"), u = N(\"nextYearLabel\"), f = N(\"prevYearLabel\"), d = N(\"switchToDayViewLabel\"), h = N(\"minDate\"), p = N(\"maxDate\"), v = N(\"disablePast\"), m = N(\"disableFuture\"), g = T(() => {\n const O = [];\n for (let $ = 0; $ < 3; $++) {\n O.push([]);\n const I = e !== void 0 && e.value.startOf(\"year\").add($ * 4, \"month\");\n for (let F = 0; F < 4; F++) {\n const z = I && I.add(F, \"month\");\n if (i && z && s && n && (O[$].push({\n ariaLabel: `${i[z.month()]}, ${z.year()}`,\n current: z.month() === c.month() && z.year() === c.year(),\n focused: z.month() === s.value.month(),\n key: z.month(),\n label: i[z.month()],\n selectable: b(z),\n selected: z.isSame(n.value, \"month\") && z.isSame(n.value, \"year\")\n }), z.month() === s.value.month())) {\n const U = z.set(\"date\", s.value.date()).set(\"year\", e.value.year());\n a == null || a(U);\n }\n }\n }\n return O;\n }), b = (O) => v ? O.add(1, \"month\").isSameOrAfter(c.value) : m ? O.isSameOrBefore(c.value) : h != null && h.value && (p != null && p.value) ? O.isSameOrAfter(h.value, \"month\") && O.isSameOrBefore(p.value, \"month\") && S(O.year()) : h != null && h.value ? O.isSameOrAfter(h.value, \"month\") && w(O.year()) : p != null && p.value ? O.isSameOrBefore(p.value, \"month\") && k(O.year()) : !0, S = (O) => h !== void 0 && typeof h.value != \"string\" && p !== void 0 && typeof p.value != \"string\" && O >= h.value.year() && O <= p.value.year(), w = (O) => h !== void 0 && typeof h.value != \"string\" && O >= h.value.year(), k = (O) => p !== void 0 && typeof p.value != \"string\" && O <= p.value.year(), C = N(\n \"handleDecrementMonth\"\n ), M = N(\n \"handleIncrementMonth\"\n ), V = N(\"handleMonthHome\"), B = N(\"handleMonthEnd\"), D = N(\"handleMonthPageUp\"), E = N(\"handleMonthPageDown\"), X = y(null), L = y(!1), A = () => {\n s && !b(s.value) || (s && (l == null || l(s.value.month())), r == null || r(\"day\"));\n }, P = (O) => {\n switch (O.key) {\n case \"Home\":\n V == null || V();\n break;\n case \"End\":\n B == null || B();\n break;\n case \"PageUp\":\n D == null || D();\n break;\n case \"PageDown\":\n E == null || E();\n break;\n }\n };\n return Fe(() => {\n setTimeout(() => {\n var O;\n (O = X.value) == null || O.focus();\n }, 100);\n }), (O, $) => {\n var I;\n return x(), R(Ie, null, [\n H(\"div\", Xk, [\n H(\"button\", {\n class: \"datepicker-view-change-button\",\n \"aria-label\": _(d),\n onClick: $[0] || ($[0] = _e((F) => _(r) && _(r)(\"day\"), [\"stop\"]))\n }, se((I = _(e)) == null ? void 0 : I.year()), 9, Uk),\n H(\"div\", qk, [\n H(\"button\", {\n class: \"datepicker-previous-button\",\n \"aria-label\": _(f),\n onClick: $[1] || ($[1] = (F) => _(o) && _(e) && _(o)(_(e).year() - 1))\n }, null, 8, Kk),\n H(\"button\", {\n class: \"datepicker-next-button\",\n \"aria-label\": _(u),\n onClick: $[2] || ($[2] = (F) => _(o) && _(e) && _(o)(_(e).year() + 1))\n }, null, 8, Gk)\n ])\n ]),\n H(\"div\", {\n ref_key: \"datepickerViewRef\",\n ref: X,\n class: \"datepicker-view\",\n tabindex: \"0\",\n onKeydown: [\n $[3] || ($[3] = ke(_e((F) => {\n var z;\n return (z = _(C)) == null ? void 0 : z(4);\n }, [\"prevent\"]), [\"up\"])),\n $[4] || ($[4] = ke(_e((F) => {\n var z;\n return (z = _(M)) == null ? void 0 : z(4);\n }, [\"prevent\"]), [\"down\"])),\n $[5] || ($[5] = ke(_e((F) => {\n var z;\n return (z = _(C)) == null ? void 0 : z(1);\n }, [\"prevent\"]), [\"left\"])),\n $[6] || ($[6] = ke(_e((F) => {\n var z;\n return (z = _(M)) == null ? void 0 : z(1);\n }, [\"prevent\"]), [\"right\"])),\n ke(A, [\"enter\"]),\n P\n ],\n onFocus: $[7] || ($[7] = (F) => L.value = !0),\n onBlur: $[8] || ($[8] = (F) => L.value = !1)\n }, [\n H(\"table\", Jk, [\n H(\"tbody\", Qk, [\n (x(!0), R(Ie, null, kt(g.value, (F, z) => (x(), R(\"tr\", { key: z }, [\n (x(!0), R(Ie, null, kt(F, (G, U) => (x(), R(\"td\", {\n key: U,\n class: Y([\"datepicker-cell datepicker-large-cell datepicker-month-cell\", [\n G.current && \"current\",\n G.focused && L.value && \"focused\",\n !G.selectable && \"disabled\",\n G.selected && \"selected\"\n ]]),\n \"aria-label\": G.ariaLabel,\n \"aria-disabled\": !G.selectable || void 0,\n onClick: _e(\n () => {\n G.disabled || (_(l) && (G.key || G.key === 0) && _(l)(G.key), _(r) && _(r)(\"day\"));\n },\n [\"stop\"]\n )\n }, [\n H(\"div\", tw, se(G.label), 1)\n ], 10, ew))), 128))\n ]))), 128))\n ])\n ])\n ], 40, Zk)\n ], 64);\n };\n }\n}), aw = {\n key: 3,\n class: \"datepicker-footer\"\n}, iw = [\"aria-label\"], ow = [\"aria-label\"], lw = [\"aria-label\", \"onKeydown\"], rw = {\n name: \"MDBDatepickerMain\"\n}, Ac = /* @__PURE__ */ re({\n ...rw,\n props: {\n inline: Boolean\n },\n setup(t) {\n const e = N(\"ok\"), n = N(\"cancel\"), s = N(\"clear\"), a = N(\"view\"), i = N(\"cancelBtnText\"), o = N(\"clearBtnText\"), l = N(\"okBtnText\"), r = N(\"cancelBtnLabel\"), c = N(\"clearBtnLabel\"), u = N(\"okBtnLabel\"), f = N(\"removeClearBtn\"), d = N(\"removeCancelBtn\"), h = N(\"removeOkBtn\"), p = y(null), v = () => {\n const m = p.value && p.value.querySelector(\".datepicker-view-change-button\");\n m == null || m.focus();\n };\n return (m, g) => (x(), R(\"div\", {\n ref_key: \"datepickerMainRef\",\n ref: p,\n class: \"datepicker-main\"\n }, [\n _(a) === \"day\" ? (x(), ee(Ak, {\n key: 0,\n inline: t.inline\n }, null, 8, [\"inline\"])) : K(\"\", !0),\n _(a) === \"year\" ? (x(), ee(jk, { key: 1 })) : K(\"\", !0),\n _(a) === \"month\" ? (x(), ee(sw, { key: 2 })) : K(\"\", !0),\n t.inline ? K(\"\", !0) : (x(), R(\"div\", aw, [\n _(f) ? K(\"\", !0) : (x(), R(\"button\", {\n key: 0,\n class: \"datepicker-footer-btn datepicker-clear-btn\",\n \"aria-label\": _(c),\n onClick: g[0] || (g[0] = //@ts-ignore\n (...b) => _(s) && _(s)(...b))\n }, se(_(o)), 9, iw)),\n _(d) ? K(\"\", !0) : (x(), R(\"button\", {\n key: 1,\n class: \"datepicker-footer-btn datepicker-cancel-btn\",\n \"aria-label\": _(r),\n onClick: g[1] || (g[1] = //@ts-ignore\n (...b) => _(n) && _(n)(...b))\n }, se(_(i)), 9, ow)),\n _(h) ? K(\"\", !0) : (x(), R(\"button\", {\n key: 2,\n class: \"datepicker-footer-btn datepicker-ok-btn\",\n \"aria-label\": _(u),\n onClick: g[2] || (g[2] = //@ts-ignore\n (...b) => _(e) && _(e)(...b)),\n onKeydown: ke(_e(v, [\"prevent\"]), [\"tab\"])\n }, se(_(l)), 41, lw))\n ]))\n ], 512));\n }\n}), cw = {\n key: 0,\n class: \"datepicker-backdrop\"\n}, uw = {\n key: 1,\n class: \"datepicker-modal-container\"\n}, dw = {\n name: \"MDBDatepickerModal\"\n}, fw = /* @__PURE__ */ re({\n ...dw,\n props: {\n modelValue: Boolean\n },\n emits: [\"update:modelValue\", \"cancel\"],\n setup(t, { emit: e }) {\n const n = t, { beforeEnter: s, afterLeave: a } = Vi(), i = y(n.modelValue), o = N(\"container\", \"body\"), l = () => {\n !i.value || r.value || (i.value = !1, e(\"cancel\"), e(\"update:modelValue\", !1));\n }, r = y(!0);\n return pe(\n () => n.modelValue,\n (c) => {\n i.value = c, setTimeout(() => {\n r.value = c, setTimeout(() => r.value = !c, 100);\n }, 10);\n }\n ), (c, u) => (x(), ee(Ut, { to: _(o) }, [\n Ee(Fc, {\n name: \"datepicker-fade\",\n onBeforeEnter: _(s),\n onAfterLeave: _(a)\n }, {\n default: Q(() => [\n i.value ? (x(), R(\"div\", cw)) : K(\"\", !0),\n i.value ? je((x(), R(\"div\", uw, [\n Ee(kk, null, {\n header: Q(({ selected: f, headerWeekday: d, headerMonth: h, headerMonthday: p }) => [\n oe(c.$slots, \"header\", {\n headerWeekday: d,\n headerMonth: h,\n headerMonthday: p,\n selected: f\n })\n ]),\n _: 3\n }),\n Ee(Ac)\n ])), [\n [_(tn), l]\n ]) : K(\"\", !0)\n ]),\n _: 3\n }, 8, [\"onBeforeEnter\", \"onAfterLeave\"])\n ], 8, [\"to\"]));\n }\n}), hw = [\"innerHTML\"], pw = {\n name: \"MDBDatepicker\",\n inheritAttrs: !1\n}, vw = /* @__PURE__ */ re({\n ...pw,\n props: {\n cancelBtnLabel: {\n type: String,\n default: \"Cancel selection\"\n },\n cancelBtnText: {\n type: String,\n default: \"Cancel\"\n },\n clearBtnLabel: {\n type: String,\n default: \"Clear selection\"\n },\n clearBtnText: {\n type: String,\n default: \"Clear\"\n },\n container: {\n type: String,\n default: \"body\"\n },\n filter: {\n type: Function,\n default: () => !1\n },\n format: {\n type: String,\n default: \"DD/MM/YYYY\"\n },\n inline: Boolean,\n invalidFeedback: String,\n invalidLabel: {\n type: String,\n default: \"Invalid date or date format\"\n },\n inputToggle: Boolean,\n isValid: Boolean,\n isValidated: Boolean,\n max: String,\n min: String,\n modelValue: String,\n monthsFull: {\n type: Array,\n default: () => [\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 },\n monthsShort: {\n type: Array,\n default: () => [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ]\n },\n nextMonthLabel: {\n type: String,\n default: \"Next month\"\n },\n nextMultiYearLabel: {\n type: String,\n default: \"Next 24 years\"\n },\n nextYearLabel: {\n type: String,\n default: \"Next year\"\n },\n okBtnLabel: {\n type: String,\n default: \"Confirm selection\"\n },\n okBtnText: {\n type: String,\n default: \"Ok\"\n },\n prevMonthLabel: {\n type: String,\n default: \"Previous month\"\n },\n prevMultiYearLabel: {\n type: String,\n default: \"Previous 24 years\"\n },\n prevYearLabel: {\n type: String,\n default: \"Previous year\"\n },\n startDate: String,\n startDay: {\n type: Number,\n default: 0\n },\n switchToMultiYearViewLabel: {\n type: String,\n default: \"Choose year and month\"\n },\n switchToDayViewLabel: {\n type: String,\n default: \"Choose date\"\n },\n title: {\n type: String,\n default: \"Select date\"\n },\n toggleButton: {\n type: Boolean,\n default: !0\n },\n toggleDatepicker: Function,\n toggleIcon: {\n type: String,\n default: \"\"\n },\n validate: Boolean,\n validLabel: {\n type: String\n },\n validFeedback: String,\n view: {\n type: String,\n default: \"day\"\n },\n weekdaysFull: {\n type: Array,\n default: () => [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n weekdaysNarrow: {\n type: Array,\n default: () => [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"]\n },\n weekdaysShort: {\n type: Array,\n default: () => [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n },\n disabled: Boolean,\n disablePast: {\n type: Boolean,\n default: !1\n },\n disableFuture: {\n type: Boolean,\n default: !1\n },\n confirmDateOnSelect: Boolean,\n removeClearBtn: Boolean,\n removeCancelBtn: Boolean,\n removeOkBtn: Boolean,\n customHeader: Boolean\n },\n emits: [\n \"update:modelValue\",\n \"update:isValid\",\n \"update:isValidated\",\n \"close\",\n \"open\",\n \"cancel\",\n \"viewChanged\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t;\n Ye.extend($c), Ye.extend(tk), Ye.extend(sk), Ye.extend(ik), Ye.extend(lk), Ye.extend(ck);\n const a = y(s.modelValue || \"\"), i = y(!1), o = y(s.view), l = y(s.isValid), r = y(s.isValidated), c = y(s.validate);\n Ze(() => {\n c.value = s.validate, c.value || (r.value = !1, l.value = !1);\n }), Ze(() => {\n c.value && (l.value = s.isValid);\n }), Ze(() => {\n c.value && (r.value = s.isValidated);\n });\n const u = y(s.min ? Ye(s.min, s.format) : \"\"), f = y(s.max ? Ye(s.max, s.format) : \"\"), d = y(\n s.startDate ? Ye(s.startDate, s.format) : \"\"\n ), h = Ye(), p = (j) => {\n if (s.disablePast)\n d.value ? typeof j != \"string\" && j.isSameOrAfter(d.value) : typeof j != \"string\" && j.add(1, \"day\").isSameOrAfter(h);\n else if (s.disableFuture)\n typeof j != \"string\" && j.isSameOrBefore(d.value || h);\n else {\n if (u.value && f.value && d.value)\n return d.value && typeof j != \"string\" && j.isSameOrBefore(f.value) && j.isSameOrAfter(u.value) ? j : d.value;\n if (u.value && f.value)\n return typeof j != \"string\" && j.isAfter(u.value) && j.isBefore(f.value) ? j : u.value;\n if (f.value && d.value)\n return typeof j != \"string\" && j.isSameOrBefore(d.value) && j.isSameOrBefore(f.value) ? j : d.value;\n if (u.value && d.value)\n return typeof j != \"string\" && j.isSameOrAfter(d.value) && j.isSameOrAfter(u.value) ? d.value : j;\n if (u.value)\n return typeof j != \"string\" && j.isSameOrAfter(u.value) ? j : u.value;\n if (f.value)\n return typeof j != \"string\" && j.isSameOrBefore(f.value) ? j : f.value;\n }\n return j;\n }, v = (j) => s.disablePast ? d.value ? j.isSameOrAfter(d.value) : j.add(1, \"day\").isSameOrAfter(h) : s.disableFuture ? j.isSameOrBefore(d.value || h) : u.value && f.value && d.value ? d.value && j.isSameOrBefore(f.value) && j.isSameOrAfter(u.value) : u.value && f.value ? j.isSameOrAfter(u.value) && j.isSameOrBefore(f.value) : f.value && d.value ? d.value && j.isSameOrBefore(f.value) : u.value && d.value ? d.value && j.isSameOrAfter(u.value) : u.value ? j.isSameOrAfter(u.value) : f.value ? j.isSameOrBefore(f.value) : !0, m = (j, ze = void 0) => {\n const pt = Ye(j, s.format).isValid();\n return j !== \"\" && (!pt || !v(Ye(j, s.format))) ? (c.value && (r.value = !0, l.value = !1), n(\"update:isValid\", !1), n(\"update:isValidated\", !0), !1) : (c.value && (r.value = j === \"\" ? !1 : s.validLabel ? !0 : !ze, l.value = !0), n(\"update:isValid\", !0), n(\"update:isValidated\", r.value), !0);\n }, g = () => {\n const j = p(\n d.value || h || u.value || f.value\n );\n return a.value === \"\" ? Ye(j, s.format) : m(a.value) ? Ye(a.value, s.format) : Ye(j, s.format);\n }, b = y(g()), S = y(b.value), w = y(\n Ye(a.value, s.format).isValid() ? S.value : null\n ), k = y(w.value || b.value), C = T(\n () => s.disabled ? !1 : s.toggleButton\n );\n pe(\n () => s.min,\n (j) => {\n u.value = j ? Ye(j, s.format) : \"\";\n }\n ), pe(\n () => s.max,\n (j) => {\n f.value = j ? Ye(j, s.format) : \"\";\n }\n );\n const M = () => {\n b.value = b.value.subtract(1, \"month\"), k.value = b.value;\n }, V = () => {\n b.value = b.value.add(1, \"month\"), k.value = b.value;\n }, B = (j) => {\n S.value = Ye(j.dayJS), w.value = S.value, k.value = S.value, (s.inline || s.confirmDateOnSelect) && L();\n }, D = (j) => {\n S.value = S.value.year(j), b.value = S.value, k.value = S.value;\n }, E = (j) => {\n S.value = S.value.month(j), b.value = S.value, k.value = S.value;\n }, X = (j) => {\n o.value = j, n(\"viewChanged\", { view: j });\n }, L = () => {\n O(), i.value = !1;\n }, A = () => {\n i.value = !1, $();\n }, P = () => {\n const j = p(\n d.value || h || u.value || f.value\n );\n w.value = null, O(), b.value = Ye(a.value, s.format).isValid() ? Ye(a.value, s.format) : Ye(j), S.value = b.value, k.value = b.value;\n }, O = () => {\n w.value ? a.value = w.value.format(s.format) : a.value = void 0, n(\"update:modelValue\", a.value);\n }, $ = () => {\n b.value = g(), S.value = Ye(b.value), w.value = null, k.value = b.value, n(\"cancel\");\n }, I = () => {\n s.inline && !ve.value ? (n(\"cancel\"), i.value = !1) : $();\n }, F = () => {\n s.inputToggle && (i.value = !i.value);\n }, z = N(\n \"dateTimepicker\",\n null\n ), G = y(null), U = y(null), ie = y(null), ve = y(!0), ye = T(() => s.inline && z ? z.value.inputRef : G.value);\n if (s.inline) {\n const { setPopper: j, openPopper: ze, closePopper: pt } = $n();\n pe(\n () => i.value,\n (an) => {\n ve.value = an, setTimeout(() => {\n ve.value = !an;\n }, 10), an ? Ge(() => {\n ye.value && U.value && (j(ye.value, U.value, {\n placement: \"bottom-start\",\n eventsEnabled: !0\n }), ze(), n(\"open\"));\n }) : (pt(), W(), setTimeout(() => {\n te(), n(\"close\");\n }, 400));\n }\n );\n } else\n pe(\n () => i.value,\n (j) => {\n j ? n(\"open\") : (W(), setTimeout(() => {\n te(), n(\"close\");\n }, 400));\n }\n );\n const W = () => {\n var j;\n ie.value ? ie.value.focus() : G.value && ((j = G.value.querySelector(\"input\")) == null || j.focus());\n }, te = () => {\n const j = p(h);\n w.value = a.value ? Ye(a.value, s.format) : null, b.value = w.value ? w.value : j, k.value = b.value, o.value = s.view || \"day\";\n }, ae = (j) => {\n k.value = j;\n }, be = T(() => b.value), xe = T(() => S.value), Te = T(() => w.value), qe = T(() => k.value), lt = [...s.weekdaysNarrow], it = [...s.weekdaysFull];\n s.startDay === 1 && (lt.push(lt.shift()), it.push(it.shift())), q(\"activeDate\", be), q(\"headerDate\", xe), q(\"selectedDate\", Te), q(\"focusedDate\", qe), q(\"setFocusedDate\", ae), q(\"inputValue\", a), q(\"monthsFull\", s.monthsFull), q(\"monthsShort\", s.monthsShort), q(\"title\", s.title), q(\"weekdaysFull\", it), q(\"weekdaysNarrow\", lt), q(\"weekdaysShort\", s.weekdaysShort), q(\"goToPrevMonth\", M), q(\"goToNextMonth\", V), q(\"selectDay\", B), q(\"changeActiveYear\", D), q(\"changeActiveMonth\", E), q(\"ok\", L), q(\"cancel\", A), q(\"clear\", P), q(\"view\", o), q(\"today\", h), q(\"changeView\", X), q(\"cancelBtnText\", s.cancelBtnText), q(\"clearBtnText\", s.clearBtnText), q(\"okBtnText\", s.okBtnText), q(\"minDate\", u), q(\"maxDate\", f), q(\"startDate\", d), q(\"filter\", s.filter), q(\"startDay\", s.startDay), q(\"disablePast\", s.disablePast), q(\"disableFuture\", s.disableFuture), q(\"container\", s.container), q(\"cancelBtnLabel\", s.cancelBtnLabel), q(\"clearBtnLabel\", s.clearBtnLabel), q(\"okBtnLabel\", s.okBtnLabel), q(\"nextMonthLabel\", s.nextMonthLabel), q(\"prevMonthLabel\", s.prevMonthLabel), q(\"nextYearLabel\", s.nextYearLabel), q(\"prevYearLabel\", s.prevYearLabel), q(\"nextMultiYearLabel\", s.nextMultiYearLabel), q(\"prevMultiYearLabel\", s.prevMultiYearLabel), q(\"switchToMultiYearViewLabel\", s.switchToMultiYearViewLabel), q(\"switchToDayViewLabel\", s.switchToDayViewLabel), q(\"removeClearBtn\", s.removeClearBtn), q(\"removeCancelBtn\", s.removeCancelBtn), q(\"removeOkBtn\", s.removeOkBtn), q(\"customHeader\", s.customHeader);\n const nt = () => {\n const j = k.value.subtract(1, \"week\");\n k.value.month() !== j.month() && (b.value = j), k.value = j;\n }, Ne = () => {\n const j = k.value.add(1, \"week\");\n k.value.month() !== j.month() && (b.value = j), k.value = j;\n }, ht = () => {\n const j = k.value.subtract(1, \"day\");\n k.value.date() === 1 && (b.value = j), k.value = j;\n }, st = () => {\n const j = k.value.add(1, \"day\");\n k.value.date() === Ye(k.value).daysInMonth() && (b.value = j), k.value = k.value.add(1, \"day\");\n }, ne = () => {\n k.value = k.value.startOf(\"month\");\n }, fe = () => {\n k.value = k.value.endOf(\"month\");\n }, ge = () => {\n k.value = k.value.subtract(1, \"month\"), b.value = k.value;\n }, de = () => {\n k.value = k.value.add(1, \"month\"), b.value = k.value;\n }, Se = (j) => {\n const ze = k.value.subtract(j, \"year\"), pt = b.value.year() - 5;\n ze.year() < pt && (b.value = b.value.subtract(24, \"year\")), k.value = ze;\n }, Be = (j) => {\n const ze = k.value.add(j, \"year\"), pt = b.value.year() + 18;\n ze.year() > pt && (b.value = b.value.add(24, \"year\")), k.value = ze;\n }, J = () => {\n k.value = b.value.subtract(5, \"year\");\n }, le = () => {\n k.value = b.value.add(18, \"year\");\n }, he = () => {\n b.value = b.value.subtract(24, \"year\"), k.value = k.value.subtract(24, \"year\");\n }, De = () => {\n b.value = b.value.add(24, \"year\"), k.value = k.value.add(24, \"year\");\n }, We = (j) => {\n k.value = k.value.subtract(j, \"month\"), b.value = k.value;\n }, Pe = (j) => {\n k.value = k.value.add(j, \"month\"), b.value = k.value;\n }, Ae = () => {\n k.value = b.value.startOf(\"year\"), b.value = k.value;\n }, wt = () => {\n k.value = b.value.endOf(\"year\"), b.value = k.value;\n }, Gt = () => {\n b.value = b.value.subtract(1, \"year\"), k.value = b.value;\n }, Et = () => {\n b.value = b.value.add(1, \"year\"), k.value = b.value;\n };\n q(\"handleDayUp\", nt), q(\"handleDayDown\", Ne), q(\"handleDayLeft\", ht), q(\"handleDayRight\", st), q(\"handleDayHome\", ne), q(\"handleDayEnd\", fe), q(\"handleDayPageUp\", ge), q(\"handleDayPageDown\", de), q(\"handleDecrementYear\", Se), q(\"handleIncrementYear\", Be), q(\"handleYearHome\", J), q(\"handleYearEnd\", le), q(\"handleYearPageUp\", he), q(\"handleYearPageDown\", De), q(\"handleDecrementMonth\", We), q(\"handleIncrementMonth\", Pe), q(\"handleMonthHome\", Ae), q(\"handleMonthEnd\", wt), q(\"handleMonthPageUp\", Gt), q(\"handleMonthPageDown\", Et);\n const zt = (j) => {\n j.key === \"Escape\" && i.value && A();\n };\n Fe(() => {\n Le(document, \"keydown\", zt);\n }), dt(() => {\n Me(document, \"keydown\", zt);\n });\n const Oe = () => {\n i.value = !0;\n }, Je = () => {\n i.value = !1;\n }, ce = (j = !1) => {\n const ze = p(d.value || h);\n w.value = null, typeof ze != \"string\" && (S.value = ze, b.value = ze, k.value = ze), j && typeof j == \"string\" && (a.value = j);\n };\n pe(\n () => a.value,\n (j) => {\n j && m(j, !0) ? (w.value = Ye(j, s.format), S.value = Ye(j, s.format), b.value = Ye(j, s.format), k.value = Ye(j, s.format)) : (ce(), n(\"update:isValid\", !1), n(\"update:isValidated\", !0)), n(\"update:modelValue\", a.value);\n }\n );\n const we = os(s).modelValue;\n return pe(\n () => we.value,\n (j) => {\n m(j, !0) ? j !== \"\" ? (w.value = Ye(j, s.format), S.value = Ye(j, s.format), b.value = Ye(j, s.format), k.value = Ye(j, s.format), a.value = j) : P() : (ce(!c.value && j), n(\"update:isValid\", !1), n(\"update:isValidated\", !0));\n }\n ), e({\n open: Oe,\n close: Je\n }), (j, ze) => (x(), R(\"div\", {\n class: \"form-outline datepicker\",\n ref_key: \"datepickerRef\",\n ref: G\n }, [\n Ee(vn, $e(j.$attrs, {\n modelValue: a.value,\n \"onUpdate:modelValue\": ze[0] || (ze[0] = (pt) => a.value = pt),\n wrap: !1,\n \"aria-haspopup\": \"dialog\",\n isValid: t.isValid,\n isValidated: r.value,\n invalidFeedback: t.invalidFeedback ? t.invalidFeedback : t.invalidLabel,\n validFeedback: t.validLabel || t.validFeedback,\n disabled: t.disabled,\n onClick: F,\n onKeydown: ke(F, [\"enter\"])\n }), null, 16, [\"modelValue\", \"isValid\", \"isValidated\", \"invalidFeedback\", \"validFeedback\", \"disabled\", \"onKeydown\"]),\n C.value ? (x(), R(\"button\", {\n key: 0,\n ref_key: \"toggleButtonRef\",\n ref: ie,\n type: \"button\",\n class: \"datepicker-toggle-button\",\n \"aria-haspopup\": \"dialog\",\n onClick: ze[1] || (ze[1] = (pt) => i.value = !i.value),\n innerHTML: t.toggleIcon\n }, null, 8, hw)) : K(\"\", !0),\n t.inline ? (x(), ee(Ut, {\n key: 1,\n to: t.container\n }, [\n Ee(At, { name: \"datepicker-fade\" }, {\n default: Q(() => [\n i.value ? je((x(), R(\"div\", {\n key: 0,\n ref_key: \"datepickerInlineRef\",\n ref: U,\n class: \"datepicker-dropdown-container\"\n }, [\n Ee(Ac, { inline: \"\" })\n ])), [\n [_(tn), I]\n ]) : K(\"\", !0)\n ]),\n _: 1\n })\n ], 8, [\"to\"])) : (x(), ee(fw, {\n key: 2,\n modelValue: i.value,\n \"onUpdate:modelValue\": ze[2] || (ze[2] = (pt) => i.value = pt),\n onCancel: I\n }, {\n header: Q(({ selected: pt, headerWeekday: an, headerMonth: Gs, headerMonthday: qa }) => [\n oe(j.$slots, \"header\", {\n headerWeekday: an,\n headerMonth: Gs,\n headerMonthday: qa,\n selected: pt\n })\n ]),\n _: 3\n }, 8, [\"modelValue\"]))\n ], 512));\n }\n}), mw = { class: \"w-100 d-flex justify-content-between\" }, gw = [\"onKeydown\"], bw = {\n name: \"MDBTimepickerFooter\"\n}, yw = /* @__PURE__ */ re({\n ...bw,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = () => {\n l(), u == null || u();\n }, n = N(\"okLabel\", null), s = N(\"clearLabel\", null), a = N(\"cancelLabel\", null), i = () => {\n }, o = N(\"handleOkClick\", i), l = N(\"handleClearClick\", i), r = N(\n \"handleCancelClick\",\n i\n ), c = N(\"ripple\", !1), u = N(\"emitClearEvent\");\n return (f, d) => (x(), ee(ue(t.tag), { class: \"timepicker-footer\" }, {\n default: Q(() => [\n H(\"div\", mw, [\n je((x(), R(\"button\", {\n type: \"button\",\n class: \"timepicker-button timepicker-clear\",\n tabindex: \"0\",\n onClick: e,\n onKeydown: [\n ke(e, [\"enter\"]),\n ke(e, [\"space\"])\n ]\n }, [\n et(se(_(s)), 1)\n ], 40, gw)), [\n [_(Ct), _(c)]\n ]),\n je((x(), R(\"button\", {\n type: \"button\",\n class: \"timepicker-button timepicker-cancel\",\n tabindex: \"0\",\n onClick: d[0] || (d[0] = //@ts-ignore\n (...h) => _(r) && _(r)(...h)),\n onKeydown: [\n d[1] || (d[1] = ke(\n //@ts-ignore\n (...h) => _(r) && _(r)(...h),\n [\"enter\"]\n )),\n d[2] || (d[2] = ke(\n //@ts-ignore\n (...h) => _(r) && _(r)(...h),\n [\"space\"]\n ))\n ]\n }, [\n et(se(_(a)), 1)\n ], 32)), [\n [_(Ct), _(c)]\n ]),\n je((x(), R(\"button\", {\n type: \"button\",\n class: \"timepicker-button timepicker-submit\",\n tabindex: \"0\",\n onClick: d[3] || (d[3] = //@ts-ignore\n (...h) => _(o) && _(o)(...h)),\n onKeydown: [\n d[4] || (d[4] = ke(\n //@ts-ignore\n (...h) => _(o) && _(o)(...h),\n [\"enter\"]\n )),\n d[5] || (d[5] = ke(\n //@ts-ignore\n (...h) => _(o) && _(o)(...h),\n [\"space\"]\n ))\n ]\n }, [\n et(se(_(n)), 1)\n ], 32)), [\n [_(Ct), _(c)]\n ])\n ])\n ]),\n _: 1\n }));\n }\n}), xw = { class: \"timepicker-current-wrapper\" }, kw = [\"aria-label\"], ww = {\n name: \"MDBTimepickerHeader\"\n}, Ec = /* @__PURE__ */ re({\n ...ww,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = N(\"hoursFormat\", 12), n = N(\"amLabel\", \"AM\"), s = N(\"pmLabel\", \"PM\"), a = N(\"okLabel\", \"ok\"), i = N(\"inline\", !1), o = N(\"increment\", 1), l = N(\"ripple\", !1), r = N(\n \"hours\",\n T(() => 12)\n ), c = N(\n \"minutes\",\n T(() => 0)\n ), u = N(\"dayTime\", void 0), f = N(\"unitsMode\", void 0), d = N(\n \"changeDayTime\",\n null\n ), h = N(\n \"handleOkClick\",\n void 0\n ), p = N(\n \"chageUnitsMode\",\n null\n ), v = N(\"incrementHoursValue\", null), m = N(\"incrementMinutesValue\", null), g = T(() => {\n const V = typeof r.value == \"string\" ? parseFloat(r.value) : r.value;\n return isNaN(V) ? 12 : e == 24 && r.value === 24 ? \"00\" : r.value;\n }), b = T(\n () => isNaN(c == null ? void 0 : c.value) ? \"00\" : c.value\n ), S = y(0), w = y(0), k = (V) => {\n C(), S.value = setTimeout(() => {\n w.value = setInterval(() => V(), 100);\n }, 500);\n }, C = () => {\n clearTimeout(S.value), clearInterval(w.value);\n }, M = (V, B) => {\n const D = V === \"hours\" ? v : m;\n D == null || D(B), k(() => D == null ? void 0 : D(B));\n };\n return Fe(() => {\n ir(document.body, \"mouseup touchend dragend\", C);\n }), dt(() => {\n fi(document.body, \"mouseup touchend dragend\", C);\n }), (V, B) => (x(), ee(ue(t.tag), {\n class: Y([\n \"timepicker-head d-flex flex-row align-items-center justify-content-center\",\n _(i) && \"timepicker-head-inline\"\n ]),\n style: Ce({ paddingRight: `${_(i) ? 0 : _(e) ? 50 : 0}px` })\n }, {\n default: Q(() => [\n H(\"div\", {\n class: Y([\n \"timepicker-head-content d-flex w-100 justify-content-evenly\",\n _(i) && \"align-items-center\"\n ])\n }, [\n H(\"div\", xw, [\n H(\"span\", {\n class: Y([\n \"position-relative h-100\",\n _(i) && \"timepicker-inline-hour-icons\"\n ])\n }, [\n _(i) ? (x(), R(\"i\", {\n key: 0,\n class: \"fas fa-chevron-up position-absolute text-white timepicker-icon-up timepicker-icon-inline-hour\",\n onMousedown: B[0] || (B[0] = () => M(\"hours\", 1)),\n onTouchstart: B[1] || (B[1] = () => M(\"hours\", 1)),\n onMouseup: C,\n onTouchend: C\n }, null, 32)) : K(\"\", !0),\n je((x(), R(\"button\", {\n type: \"button\",\n class: Y([\n \"timepicker-current timepicker-hour\",\n _(i) && \"timepicker-current-inline\",\n _(f) && _(f) === \"hours\" && \"active\"\n ]),\n style: Ce({\n pointerEvents: _(f) && _(f) === \"hours\" ? \"none\" : \"auto\"\n }),\n tabindex: \"0\",\n onClick: B[2] || (B[2] = (D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"hours\");\n }),\n onKeydown: [\n B[3] || (B[3] = ke((D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"hours\");\n }, [\"enter\"])),\n B[4] || (B[4] = ke((D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"hours\");\n }, [\"space\"]))\n ]\n }, [\n et(se(g.value), 1)\n ], 38)), [\n [_(Ct), _(l)]\n ]),\n _(i) ? (x(), R(\"i\", {\n key: 1,\n class: Y([\n \"fas fa-chevron-down position-absolute text-white timepicker-icon-down timepicker-icon-inline-hour\"\n ]),\n onMousedown: B[5] || (B[5] = () => M(\"hours\", -1)),\n onTouchstart: B[6] || (B[6] = () => M(\"hours\", -1)),\n onMouseup: C,\n onTouchend: C\n }, null, 32)) : K(\"\", !0)\n ], 2),\n H(\"button\", {\n type: \"button\",\n class: Y([\"timepicker-dot\", _(i) && \"timepicker-current-inline\"]),\n disabled: \"\"\n }, \" : \", 2),\n H(\"span\", {\n class: Y([\n \"position-relative h-100\",\n _(i) && \"timepicker-inline-minutes-icons\"\n ])\n }, [\n _(i) ? (x(), R(\"i\", {\n key: 0,\n class: \"fas fa-chevron-up position-absolute text-white timepicker-icon-up timepicker-icon-inline-minute\",\n onMousedown: B[7] || (B[7] = () => M(\"minutes\", _(o))),\n onTouchstart: B[8] || (B[8] = () => M(\"minutes\", _(o))),\n onMouseup: C,\n onTouchend: C\n }, null, 32)) : K(\"\", !0),\n je((x(), R(\"button\", {\n type: \"button\",\n class: Y([\n \"timepicker-current timepicker-minute\",\n _(i) && \"timepicker-current-inline\",\n _(f) === \"minutes\" && \"active\"\n ]),\n style: Ce({\n pointerEvents: _(f) === \"minutes\" ? \"none\" : \"auto\"\n }),\n tabindex: \"0\",\n onClick: B[9] || (B[9] = (D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"minutes\");\n }),\n onKeydown: [\n B[10] || (B[10] = ke((D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"minutes\");\n }, [\"enter\"])),\n B[11] || (B[11] = ke((D) => {\n var E;\n return (E = _(p)) == null ? void 0 : E(\"minutes\");\n }, [\"space\"]))\n ]\n }, [\n et(se(b.value), 1)\n ], 38)), [\n [_(Ct), _(l)]\n ]),\n _(i) ? (x(), R(\"i\", {\n key: 1,\n class: \"fas fa-chevron-down position-absolute text-white timepicker-icon-down timepicker-icon-inline-minute\",\n onMousedown: B[12] || (B[12] = () => M(\"minutes\", -_(o))),\n onTouchstart: B[13] || (B[13] = () => M(\"minutes\", -_(o))),\n onMouseup: C,\n onTouchend: C\n }, null, 32)) : K(\"\", !0)\n ], 2)\n ]),\n _(e) === 12 ? (x(), R(\"div\", {\n key: 0,\n class: Y([\n \"d-flex justify-content-center timepicker-mode-wrapper\",\n !_(i) && \"flex-column\"\n ])\n }, [\n je((x(), R(\"button\", {\n type: \"button\",\n class: Y([\n \"timepicker-hour-mode timepicker-am\",\n _(i) && \"me-2 ms-4\",\n _(u) && _(u) === \"am\" && \"active\"\n ]),\n tabindex: \"0\",\n onKeydown: [\n B[14] || (B[14] = ke((D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"am\");\n }, [\"enter\"])),\n B[15] || (B[15] = ke((D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"am\");\n }, [\"space\"]))\n ],\n onClick: B[16] || (B[16] = (D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"am\");\n })\n }, [\n et(se(_(n)), 1)\n ], 34)), [\n [_(Ct), _(l)]\n ]),\n je((x(), R(\"button\", {\n class: Y([\n \"timepicker-hour-mode timepicker-pm\",\n _(u) && _(u) === \"pm\" && \"active\"\n ]),\n tabindex: \"0\",\n \"aria-label\": _(s),\n onKeydown: [\n B[17] || (B[17] = ke((D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"pm\");\n }, [\"enter\"])),\n B[18] || (B[18] = ke((D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"pm\");\n }, [\"space\"]))\n ],\n onClick: B[19] || (B[19] = (D) => {\n var E;\n return (E = _(d)) == null ? void 0 : E(\"pm\");\n })\n }, [\n et(se(_(s)), 1)\n ], 42, kw)), [\n [_(Ct), _(l)]\n ]),\n _(i) ? je((x(), R(\"button\", {\n key: 0,\n type: \"button\",\n class: \"timepicker-button timepicker-submit timepicker-submit-inline py-1 px-2 mb-0\",\n tabindex: \"0\",\n onClick: B[20] || (B[20] = //@ts-ignore\n (...D) => _(h) && _(h)(...D)),\n onKeydown: [\n B[21] || (B[21] = ke(\n //@ts-ignore\n (...D) => _(h) && _(h)(...D),\n [\"enter\"]\n )),\n B[22] || (B[22] = ke(\n //@ts-ignore\n (...D) => _(h) && _(h)(...D),\n [\"space\"]\n ))\n ]\n }, [\n et(se(_(a)), 1)\n ], 32)), [\n [_(Ct), _(l)]\n ]) : K(\"\", !0)\n ], 2)) : _(e) === 24 && _(i) ? je((x(), R(\"button\", {\n key: 1,\n class: \"timepicker-button timepicker-submit timepicker-submit-inline py-1 px-2 mb-0\",\n tabindex: \"0\",\n onClick: B[23] || (B[23] = //@ts-ignore\n (...D) => _(h) && _(h)(...D)),\n onKeydown: [\n B[24] || (B[24] = ke(\n //@ts-ignore\n (...D) => _(h) && _(h)(...D),\n [\"enter\"]\n )),\n B[25] || (B[25] = ke(\n //@ts-ignore\n (...D) => _(h) && _(h)(...D),\n [\"space\"]\n ))\n ]\n }, [\n et(se(_(a)), 1)\n ], 32)), [\n [_(Ct), _(l)]\n ]) : K(\"\", !0)\n ], 2)\n ]),\n _: 1\n }, 8, [\"class\", \"style\"]));\n }\n}), Sw = /* @__PURE__ */ H(\"span\", { class: \"timepicker-middle-dot position-absolute\" }, null, -1), _w = /* @__PURE__ */ H(\"div\", { class: \"timepicker-circle position-absolute\" }, null, -1), Mw = [\n _w\n], Cw = { class: \"timepicker-tips-element\" }, $w = { class: \"timepicker-tips-inner-element\" }, Bw = {\n name: \"MDBTimepickerClock\"\n}, Zl = /* @__PURE__ */ re({\n ...Bw,\n props: {\n tag: {\n type: String,\n default: \"div\"\n },\n unitsMode: String,\n max: Number,\n min: Number,\n rotate: {\n type: Number,\n default: 0\n },\n increment: Boolean,\n modelValue: [Number, String],\n angle: [Number, String],\n double: Boolean,\n size: {\n type: [Number, String],\n default: 260\n },\n allowedValues: Function\n },\n emits: [\"input\", \"change\", \"update:angle\"],\n setup(t, { emit: e }) {\n const n = t, s = y(\"clockRef\"), a = y(\"innerClockRef\"), i = y(\"handRef\"), o = y([]), l = y(n.min), r = y(n.max), c = (W) => {\n W && o.value.push(W);\n }, u = T(() => [`timepicker-time-tips-${n.unitsMode}`]), f = y(\"\"), d = y(n.angle), h = y(!0), p = T(() => {\n if (h.value)\n Ge(() => {\n h.value = !1;\n });\n else {\n const W = typeof n.modelValue == \"string\" ? parseInt(n.modelValue, 10) : n.modelValue;\n d.value = n.rotate + V.value * (W - l.value), e(\"update:angle\", d.value), setTimeout(() => {\n f.value = \"active\";\n }, 400);\n }\n return {\n transform: `rotateZ(${d.value}deg)`,\n height: B.value\n };\n }), v = y(\"timepicker-transform\"), m = N(\n \"shouldClockAnimateOnShow\",\n null\n ), g = N(\n \"setClockAnimateOnShow\",\n null\n ), b = T(() => {\n const W = typeof n.modelValue == \"string\" ? parseInt(n.modelValue, 10) : n.modelValue;\n return n.modelValue === null ? L.value[L.value.length - 1] : W;\n }), S = y(0), w = y(0), k = (W) => {\n const te = (W - 32) / 2, ae = te - 4;\n return {\n width: te,\n height: te,\n radius: ae\n };\n }, C = T(() => r.value - l.value + 1), M = T(() => n.double ? C.value / 2 : C.value), V = T(() => 360 / M.value), B = T(() => n.double && (Number(n.modelValue) > 12 || n.modelValue === \"00\") ? \"21.5%\" : \"calc(40% - 1px)\"), D = (W) => W * (Math.PI / 180), E = (W, te) => {\n const { x: ae, y: be } = X(W, te);\n return `left: ${ae}; bottom: ${be}`;\n }, X = (W, te) => {\n const ae = D(W * V.value), { width: be, height: xe, radius: Te } = k(te);\n return {\n x: `${be + Math.sin(ae) * Te}px`,\n y: `${xe + Math.cos(ae) * Te}px`\n };\n }, L = T(() => n.double ? O(1, 12) : O(l.value, r.value)), A = T(() => n.double ? O(13, 24) : null), P = () => {\n a.value instanceof HTMLElement && n.double && (w.value = a.value.offsetWidth), s.value instanceof HTMLElement && (S.value = s.value.offsetWidth);\n }, O = (W, te) => {\n P();\n const ae = n.double && te === 24 ? w.value : S.value, be = [], xe = n.unitsMode === \"hours\" ? 1 : 5;\n for (let Te = W; Te <= te; Te += xe)\n be.push({\n value: Te === 24 ? \"00\" : ye(Te),\n active: Te === b.value,\n disabled: !ve(Te),\n style: E(Te, ae)\n });\n return be;\n }, $ = y(!1), I = (W) => {\n $.value = !0, W.preventDefault(), z(W), Le(document, \"mouseup\", F), ir(\n document,\n \"mouseup mousemove mouseleave mouseover touchstart touchmove touchend\",\n z\n );\n }, F = (W) => {\n W.preventDefault(), $.value = !1, e(\"change\"), fi(\n document,\n \"mouseup mousemove mouseleave mouseover touchstart touchmove touchend\",\n z\n );\n }, z = (W) => {\n if (!(s.value instanceof HTMLElement) || !$.value || !s.value)\n return;\n const { width: te, top: ae, left: be } = s.value.getBoundingClientRect(), { clientX: xe, clientY: Te } = \"touches\" in W ? W.touches[0] : W, qe = { x: te / 2, y: -te / 2 }, lt = { x: xe - be, y: ae - Te }, it = Math.round(ie(qe, lt) - n.rotate + 360) % 360, { radius: nt } = k(S.value);\n let Ne = 0;\n if (n.double) {\n const { radius: ne } = k(w.value);\n Ne = ne;\n }\n const ht = n.double && U(qe, lt) < (nt + Ne) / 2 - 16, st = Math.round(it / V.value) + l.value + (ht ? M.value : 0);\n it >= 360 - V.value / 2 ? G(ht ? r.value : l.value) : G(st);\n }, G = (W) => {\n n.modelValue !== W && ve(W) && e(\"input\", W);\n }, U = (W, te) => {\n const ae = te.x - W.x, be = te.y - W.y;\n return Math.sqrt(ae * ae + be * be);\n }, ie = (W, te) => {\n const ae = 2 * Math.atan2(te.y - W.y - U(W, te), te.x - W.x);\n return Math.abs(ae * 180 / Math.PI);\n }, ve = (W) => !n.allowedValues || n.allowedValues(W), ye = (W) => n.unitsMode === \"minutes\" && W < 10 ? `0${W}` : W;\n return Fe(() => {\n setTimeout(() => {\n g == null || g(!1), v.value = \"\";\n }, 400);\n }), dt(() => {\n Me(document, \"mouseup\", F), fi(\n document,\n \"mouseup mousemove mouseleave mouseover touchstart touchmove touchend\",\n z\n );\n }), (W, te) => (x(), ee(ue(t.tag), {\n ref_key: \"clockRef\",\n ref: s,\n class: Y([\n \"timepicker-clock\",\n _(m) && \"timepicker-clock-animation\"\n ]),\n onMousedown: I,\n onTouchstart: I,\n onMouseup: F,\n onTouchend: F\n }, {\n default: Q(() => [\n Sw,\n H(\"div\", {\n ref_key: \"handRef\",\n ref: i,\n class: Y([\n \"timepicker-hand-pointer\",\n \"position-absolute\",\n v.value\n ]),\n style: Ce(p.value)\n }, Mw, 6),\n (x(!0), R(Ie, null, kt(L.value, (ae, be) => (x(), R(\"span\", {\n ref_for: !0,\n ref: (xe) => c(xe),\n key: be,\n style: Ce(ae.style),\n class: Y([\n u.value,\n ae.active && f.value,\n ae.disabled && \"disabled\"\n ])\n }, [\n H(\"span\", Cw, se(ae.value), 1)\n ], 6))), 128)),\n t.double ? (x(), R(\"div\", {\n key: 0,\n ref_key: \"innerClockRef\",\n ref: a,\n class: \"timepicker-clock-inner\"\n }, [\n (x(!0), R(Ie, null, kt(A.value, (ae, be) => (x(), R(\"span\", {\n ref_for: !0,\n ref: (xe) => c(xe),\n key: be,\n style: Ce(ae.style),\n class: Y([\n \"timepicker-time-tips-inner\",\n ae.active && f.value,\n ae.disabled && \"disabled\"\n ])\n }, [\n H(\"span\", $w, se(ae.value), 1)\n ], 6))), 128))\n ], 512)) : K(\"\", !0)\n ]),\n _: 1\n }, 40, [\"class\"]));\n }\n}), Tw = {\n name: \"MDBTimepickerPlate\"\n}, Dw = /* @__PURE__ */ re({\n ...Tw,\n props: {\n tag: {\n type: String,\n default: \"div\"\n }\n },\n setup(t) {\n const e = N(\"hoursFormat\", 12), n = N(\n \"hours\",\n void 0\n ), s = N(\"minutes\", void 0), a = N(\"unitsMode\", void 0), i = N(\n \"updateMinutesValue\",\n null\n ), o = N(\"updateHoursValue\", null), l = N(\n \"chageUnitsMode\",\n null\n ), r = T(() => e === 24), c = y(360), u = N(\n \"allowedHours\",\n void 0\n ), f = N(\n \"allowedMinutes\",\n void 0\n );\n return (d, h) => (x(), ee(ue(t.tag), { class: \"timepicker-clock-wrapper d-flex justify-content-center flex-column align-items-center\" }, {\n default: Q(() => [\n _(a) && _(a) === \"hours\" ? (x(), ee(Zl, {\n key: 0,\n modelValue: _(n),\n \"onUpdate:modelValue\": h[0] || (h[0] = (p) => co(n) ? n.value = p : null),\n angle: c.value,\n \"onUpdate:angle\": h[1] || (h[1] = (p) => c.value = p),\n unitsMode: _(a),\n min: 1,\n max: _(e),\n allowedValues: _(u),\n rotate: 30,\n double: r.value,\n onInput: h[2] || (h[2] = (p) => {\n var v;\n return (v = _(o)) == null ? void 0 : v(p);\n }),\n onChange: h[3] || (h[3] = (p) => {\n var v;\n return (v = _(l)) == null ? void 0 : v(\"minutes\");\n })\n }, null, 8, [\"modelValue\", \"angle\", \"unitsMode\", \"max\", \"allowedValues\", \"double\"])) : K(\"\", !0),\n _(a) && _(a) === \"minutes\" ? (x(), ee(Zl, {\n key: 1,\n modelValue: _(s),\n \"onUpdate:modelValue\": h[4] || (h[4] = (p) => co(s) ? s.value = p : null),\n angle: c.value,\n \"onUpdate:angle\": h[5] || (h[5] = (p) => c.value = p),\n unitsMode: _(a),\n min: 0,\n max: 59,\n allowedValues: _(f),\n onInput: h[6] || (h[6] = (p) => {\n var v;\n return (v = _(i)) == null ? void 0 : v(p);\n })\n }, null, 8, [\"modelValue\", \"angle\", \"unitsMode\", \"allowedValues\"])) : K(\"\", !0)\n ]),\n _: 1\n }));\n }\n}), Ow = [\"onClick\"], Lw = {\n ref: \"timepickerContainerRef\",\n class: \"d-flex align-items-center justify-content-center flex-column shadow timepicker-container\"\n}, Aw = { class: \"d-flex flex-column timepicker-elements justify-content-around\" }, Ew = {\n key: 0,\n class: \"buttons-container\"\n}, Pw = /* @__PURE__ */ H(\"i\", { class: \"far fa-calendar datepicker-toggle-icon\" }, null, -1), Vw = [\n Pw\n], Rw = /* @__PURE__ */ H(\"button\", {\n type: \"button\",\n class: \"timepicker-button-toggle\",\n \"data-mdb-toggle\": \"timepicker\"\n}, [\n /* @__PURE__ */ H(\"i\", { class: \"far fa-clock fa-sm timepicker-icon\" })\n], -1), Iw = {\n name: \"MDBTimepickerModal\"\n}, Fw = /* @__PURE__ */ re({\n ...Iw,\n props: {\n modelValue: Boolean,\n tag: {\n type: String,\n default: \"div\"\n }\n },\n emits: [\"cancel\", \"update:modelValue\"],\n setup(t, { emit: e }) {\n const n = t, s = y(null), a = y(null), i = T(() => [\n \"timepicker-wrapper h-100 d-flex align-items-center justify-content-center flex-column position-fixed\"\n ]), { beforeEnter: o, afterLeave: l } = Vi(), r = y(n.modelValue), c = () => {\n !r.value || u.value || (r.value = !1, e(\"cancel\"), e(\"update:modelValue\", !1));\n }, u = y(!0);\n pe(\n () => n.modelValue,\n (p) => {\n r.value = p, setTimeout(() => {\n u.value = p, setTimeout(() => u.value = !p, 100);\n }, 500);\n }\n );\n const f = N(\n \"dateTimepicker\",\n null\n ), d = N(\n \"changePicker\",\n null\n ), h = N(\"container\", \"body\");\n return (p, v) => (x(), ee(Ut, { to: _(h) }, [\n Ee(At, {\n name: \"timepicker-fade\",\n onBeforeEnter: _(o),\n onAfterLeave: _(l)\n }, {\n default: Q(() => [\n r.value ? (x(), ee(ue(t.tag), {\n key: 0,\n ref_key: \"modalRef\",\n ref: s,\n class: \"timepicker-modal\",\n tabindex: \"-1\",\n role: \"dialog\"\n }, {\n default: Q(() => [\n je((x(), R(\"div\", {\n ref_key: \"wrapperRef\",\n ref: a,\n class: Y(i.value),\n style: { opacity: \"1\" },\n onClick: _e(c, [\"self\"])\n }, [\n H(\"div\", Lw, [\n H(\"div\", Aw, [\n Ee(Ec),\n _(f) ? (x(), R(\"div\", Ew, [\n H(\"button\", {\n type: \"button\",\n class: \"datepicker-button-toggle\",\n \"data-mdb-toggle\": \"datepicker\",\n onClick: v[0] || (v[0] = (m) => {\n var g;\n return (g = _(d)) == null ? void 0 : g(\"datepicker\");\n })\n }, Vw),\n Rw\n ])) : K(\"\", !0),\n Ee(Dw)\n ]),\n Ee(yw)\n ], 512)\n ], 10, Ow)), [\n [_(wa)]\n ])\n ]),\n _: 1\n }, 512)) : K(\"\", !0)\n ]),\n _: 1\n }, 8, [\"onBeforeEnter\", \"onAfterLeave\"])\n ], 8, [\"to\"]));\n }\n}), Nw = { class: \"d-flex align-items-center justify-content-center flex-column shadow timepicker-container\" }, Hw = { class: \"d-flex flex-column timepicker-elements justify-content-around timepicker-elements-inline\" }, Ww = {\n name: \"MDBTimepickerInline\"\n}, zw = /* @__PURE__ */ re({\n ...Ww,\n props: {\n modelvalue: Boolean,\n tag: {\n type: String,\n default: \"div\"\n }\n },\n emits: [\"cancel\"],\n setup(t, { emit: e }) {\n const n = y(null), s = y(null), a = T(() => [\n \"timepicker-wrapper h-100 d-flex align-items-center justify-content-center flex-column timepicker-wrapper-inline\"\n ]), { setPopper: i, openPopper: o, closePopper: l } = $n(), r = N(\"inputId\", null), c = N(\n \"dateTimepicker\",\n null\n ), u = [\"top\", \"right\", \"bottom\", \"left\"], f = () => {\n let p = null;\n r && (p = document.getElementById(r)), c && (p = c.value.inputRef);\n const v = n.value;\n p && v && (i(p, v, {\n placement: \"bottom-start\",\n eventsEnabled: !0,\n modifiers: [\n {\n name: \"flip\",\n options: {\n fallbackPlacements: u\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"clippingParent\"\n }\n }\n ]\n }), o());\n }, d = y(!1), h = (p) => {\n p.target.closest(\".timepicker-modal\") || d.value && e(\"cancel\");\n };\n return Fe(() => {\n f(), setTimeout(() => {\n d.value = !0;\n }, 500);\n }), tr(() => {\n l();\n }), (p, v) => (x(), ee(ue(t.tag), {\n ref_key: \"modalRef\",\n ref: n,\n class: \"timepicker-modal\",\n tabindex: \"-1\",\n role: \"dialog\"\n }, {\n default: Q(() => [\n je((x(), R(\"div\", {\n ref_key: \"wrapperRef\",\n ref: s,\n class: Y(a.value),\n style: { opacity: \"1\" }\n }, [\n H(\"div\", Nw, [\n H(\"div\", Hw, [\n Ee(Ec)\n ])\n ])\n ], 2)), [\n [_(tn), h],\n [_(wa)]\n ])\n ]),\n _: 1\n }, 512));\n }\n}), Yw = {\n name: \"MDBTimepicker\",\n inheritAttrs: !1\n}, jw = /* @__PURE__ */ re({\n ...Yw,\n props: {\n modelValue: [String, Date],\n label: String,\n id: String,\n icon: {\n type: Boolean,\n default: !0\n },\n iconClass: {\n type: String,\n default: \"far fa-clock fa-sm\"\n },\n selfOpen: Boolean,\n inline: {\n type: Boolean,\n default: !1\n },\n hoursFormat: {\n type: Number,\n default: 12,\n validator: (t) => t === 24 || t === 12\n },\n min: [Number, String],\n max: [Number, String],\n increment: {\n type: Number,\n default: 1,\n validator: (t) => [1, 5, 10, 15, 30].indexOf(t) > -1\n },\n amLabel: {\n type: String,\n default: \"AM\"\n },\n pmLabel: {\n type: String,\n default: \"PM\"\n },\n okLabel: {\n type: String,\n default: \"ok\"\n },\n clearLabel: {\n type: String,\n default: \"clear\"\n },\n cancelLabel: {\n type: String,\n default: \"cancel\"\n },\n invalidLabel: {\n type: String,\n default: \"Invalid date format\"\n },\n invalidFeedback: String,\n validLabel: String,\n validFeedback: String,\n isValid: Boolean,\n isValidated: Boolean,\n disablePast: {\n type: Boolean,\n default: !1\n },\n disableFuture: {\n type: Boolean,\n default: !1\n },\n container: {\n type: String,\n default: \"body\"\n },\n ripple: {\n type: Boolean,\n default: !1\n }\n },\n emits: [\n \"update:modelValue\",\n \"update:isValid\",\n \"update:isValidated\",\n \"open\",\n \"close\",\n \"clear\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = y(null), i = y(null), o = y(null), l = s.id || ut(\"MDBInput-\");\n q(\"inputId\", l);\n const r = T(() => \"timepicker\"), c = T(() => [\"timepicker-icon\", s.iconClass]);\n q(\"hoursFormat\", s.hoursFormat), q(\"amLabel\", s.amLabel), q(\"pmLabel\", s.pmLabel), q(\"okLabel\", s.okLabel), q(\"clearLabel\", s.clearLabel), q(\"cancelLabel\", s.cancelLabel), q(\"inline\", s.inline), q(\"increment\", s.increment), q(\"min\", s.min), q(\"max\", s.max), q(\"container\", s.container), q(\"ripple\", s.ripple);\n const u = y(s.modelValue), f = os(s).modelValue;\n pe(\n () => f.value,\n (J) => {\n J && J !== u.value ? (u.value = J, O(J)) : J === \"\" && L();\n }\n );\n const d = y(12), h = y(0), p = y(\"hours\"), v = y(\"am\"), m = (/* @__PURE__ */ new Date()).toLocaleTimeString(\"en-US\"), g = T(() => {\n const J = typeof h.value == \"string\" ? parseInt(h.value) : h.value;\n return J < 10 ? `0${J}` : J;\n }), b = T(() => Number(d.value) < 10 ? d.value.toString().startsWith(\"0\") ? d.value.toString() : d.value === 0 ? \"00\" : `0${d.value}` : d.value === 24 ? \"00\" : d.value), S = T(() => {\n if (s.min === void 0)\n return 0;\n const J = s.min;\n return s.hoursFormat === 24 ? Te($(J)) : Te($(J, v.value));\n }), w = T(() => {\n if (s.max === void 0)\n return 24 * 60;\n const J = s.max;\n return s.hoursFormat === 24 ? Te($(J)) : Te($(J, v.value));\n }), k = T(() => s.disablePast && s.disableFuture === void 0 ? 0 : s.hoursFormat === 24 ? Te($(m)) : Te($(m, v.value))), C = (J) => {\n J && (v.value = J.toLowerCase());\n }, M = (J) => {\n J && (p.value = J.toLowerCase());\n }, V = (J) => {\n d.value = J;\n }, B = (J, le = d.value, he = void 0) => {\n p.value !== \"hours\" && M(\"hours\");\n const De = typeof le == \"string\" ? parseInt(le) : le, We = it(De), Pe = De + J;\n let Ae = Pe <= 0 || Pe === 24 ? s.hoursFormat : Pe > s.hoursFormat ? 1 : Pe;\n const wt = it(Ae);\n if (We && !wt)\n Ae = B(J, Ae, !0);\n else if (!We && !wt)\n if (s.hoursFormat === 24)\n Ae = B(J, Ae, !0);\n else {\n const Gt = document.querySelectorAll(\n \".timepicker-time-tips-hours:not(.disabled)\"\n ), Et = s.min, zt = s.max, Oe = s.min && $(Et), Je = s.max && $(zt);\n Gt.length ? Ae = B(J, Ae, !0) : J > 0 ? (Ae = Oe ? Oe.hours : 1, h.value = nt(Number(h.value)) ? h.value : Oe ? Oe.minutes : Je ? Je.minutes : 0, C(\n Oe && Oe.ampm || Je && Je.ampm || v.value\n )) : J < 0 && (Ae = Je ? Je.hours : s.hoursFormat, h.value = nt(Number(h.value)) ? h.value : Je ? Je.minutes : Oe ? Oe.minutes : 0, C(\n Je && Je.ampm || Oe && Oe.ampm || v.value\n ));\n }\n if (he)\n return Ae;\n d.value = Ae;\n }, D = (J) => {\n h.value = J;\n }, E = (J, le = h.value, he = void 0) => {\n p.value !== \"minutes\" && M(\"minutes\");\n const De = typeof le == \"string\" ? parseInt(le) : le, We = nt(De), Pe = De + J;\n let Ae = Pe < 0 ? 60 - s.increment : Pe > 59 ? 0 : Pe;\n const wt = nt(Ae);\n if (We && !wt)\n Ae = E(J, Ae, !0);\n else if (!We && !wt) {\n const Gt = document.querySelectorAll(\n \".timepicker-time-tips-minutes:not(.disabled)\"\n ), Et = s.min, zt = s.max, Oe = s.min && $(Et), Je = s.max && $(zt);\n Gt.length ? Ae = E(J, Ae, !0) : J > 0 ? (Ae = Oe && Oe.minutes ? Oe.minutes : 0, d.value = it(Number(d.value)) ? d.value : Oe ? Oe.hours : 1, C(Oe && Oe.ampm || Je && Je.ampm || v.value)) : J < 0 && (Ae = Je && Je.minutes ? Je.minutes : Oe && Oe.minutes ? Oe.minutes : 0, d.value = it(Number(d.value)) ? d.value : Je ? Je.hours : s.hoursFormat, C(Je && Je.ampm || Oe && Oe.ampm || v.value));\n }\n if (he)\n return Ae;\n h.value = Ae;\n }, X = () => {\n !it(Number(d.value)) || !nt(Number(h.value)) || (u.value = s.hoursFormat === 12 ? `${b.value}:${g.value} ${v.value.toUpperCase()}` : `${b.value}:${g.value}`, Se(), p.value = \"hours\");\n }, L = () => {\n u.value = \"\", d.value = 12, h.value = 0, p.value = \"hours\", v.value = \"am\";\n }, A = () => {\n u.value || L(), Se(), u.value !== void 0 && O(u.value);\n }, P = (J) => {\n const le = J.target, { value: he } = le;\n be(he.trimEnd()) && O(he);\n };\n pe(\n () => u.value,\n (J) => {\n be(J.trimEnd(), !0), n(\"update:modelValue\", J);\n }\n );\n const O = (J) => {\n if (J === \"\") return;\n let le, he, De;\n if (typeof J != \"string\" && xe(J))\n le = J.getHours(), he = J.getMinutes(), le %= 12, le = le || 12, De = le >= 12 ? \"PM\" : \"AM\";\n else if (typeof J == \"string\" && !xe(J)) {\n const {\n hours: We,\n minutes: Pe,\n ampm: Ae = null\n } = $(J);\n Ae && (De = Ae), le = We, he = Pe;\n }\n return (le || le === 0) && (d.value = Number(le) < 10 ? `0${le}` : le), (he || he === 0) && (h.value = Number(he) < 10 ? `0${he}` : he), C(De), M(\"hours\"), `${d.value}:${h.value} ${s.hoursFormat === 12 ? v.value : \"\"}`;\n }, $ = (J, le = null) => {\n let [he, De] = J.split(\" \"), [We, Pe] = he.split(\":\");\n return s.hoursFormat === 12 && !De && le && (De = le), We = parseInt(We), Pe = parseInt(Pe), { hours: We, minutes: Pe, ampm: De };\n };\n q(\"hours\", b), q(\"minutes\", g), q(\"unitsMode\", p), q(\"dayTime\", v), q(\"changeDayTime\", C), q(\"chageUnitsMode\", M), q(\"updateHoursValue\", V), q(\"incrementHoursValue\", B), q(\"updateMinutesValue\", D), q(\"incrementMinutesValue\", E), q(\"handleOkClick\", X), q(\"handleClearClick\", L), q(\"handleCancelClick\", A);\n const I = (J) => {\n var he;\n const le = (he = i.value) == null ? void 0 : he.$refs.modalRef.querySelector(\n \".timepicker-hour\"\n );\n le && (le.focus(), p.value = \"hours\", G(J));\n }, F = (J, le, he = 1) => {\n J === document.body && I(he), le && G(he);\n }, z = (J) => {\n var We;\n if (!Ne.value) return;\n const { key: le } = J, he = document.activeElement, De = he.classList.contains(\"timepicker-hour\") ? \"hours\" : he.classList.contains(\"timepicker-minute\") ? \"minutes\" : null;\n switch (De && (p.value = De), le === \"Escape\" && Se(), le !== \"Tab\" ? J.preventDefault() : le === \"Tab\" && J.target === document.body && ((We = i.value) == null || We.$refs.modalRef.focus()), le) {\n case \"ArrowUp\":\n F(he, De, 1);\n break;\n case \"ArrowDown\":\n F(he, De, -1);\n break;\n case \"ArrowLeft\":\n U(\"left\");\n break;\n case \"ArrowRight\":\n U(\"right\");\n break;\n }\n }, G = (J) => {\n p.value === \"hours\" ? B(1 * J) : E(s.increment * J);\n }, U = (J) => {\n s.hoursFormat === 12 || p.value === \"minutes\" || (J === \"left\" && Number(d.value) < 12 && (d.value = Number(d.value) + 12), J === \"right\" && Number(d.value) > 12 && (d.value = Number(d.value) - 12));\n }, ie = () => {\n var J, le;\n (J = a.value) == null || J.$refs.inputRef.focus(), (le = a.value) == null || le.$refs.inputRef.blur();\n }, ve = () => {\n var J;\n o.value ? o.value.focus() : (J = a.value) == null || J.$refs.inputRef.focus();\n }, ye = y(s.isValid), W = y(s.isValidated);\n Ze(() => {\n ye.value = s.isValid;\n }), Ze(() => {\n W.value = s.isValidated;\n });\n const te = T(() => s.hoursFormat === 12 ? \"Date should match HH:MM 12-hour format, optional leading 0, mandatory meridiems (AM/PM)\" : \"Date should match HH:MM 24-hour format, optional leading 0\"), ae = T(() => s.hoursFormat === 12 ? (\n // eslint-disable-next-line no-useless-escape\n /\\b((1[0-2]|0?[1-9]):([0-5][0-9])\\s?([AaPp][Mm]))/\n ) : /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/), be = (J, le = void 0) => ae.value.test(J) ? (W.value = s.validLabel ? !0 : !le, ye.value = !0, n(\"update:isValid\", !0), n(\"update:isValidated\", W.value), !0) : (W.value = !0, ye.value = !1, n(\"update:isValid\", !1), n(\"update:isValidated\", !0), !1), xe = (J) => J && typeof J != \"string\" && Object.prototype.toString.call(J) === \"[object Date]\" && !isNaN(J.getTime()), Te = ({\n hours: J,\n minutes: le,\n ampm: he\n }) => {\n he = he && he.toLowerCase();\n const De = s.hoursFormat === 12 && he === \"pm\" && J !== 12 ? 12 * 60 : 0;\n return le = le || 0, J * 60 + le + De;\n }, qe = (J, le) => J && typeof J == \"string\" && !le ? J.split(\" \")[1] === \"AM\" || J.split(\" \")[1] === \"PM\" : le && typeof le == \"string\" && !J ? le.split(\" \")[1] === \"AM\" || le.split(\" \")[1] === \"PM\" : J && le && typeof J == \"string\" && typeof le == \"string\" ? (J.split(\" \")[1] === \"AM\" || J.split(\" \")[1] === \"PM\") && (le.split(\" \")[1] === \"AM\" || le.split(\" \")[1] === \"PM\") : !1, lt = (J, le) => {\n const he = typeof J == \"number\" ? J : parseFloat(J.split(\":\")[0]), De = typeof le == \"number\" ? le : parseFloat(le.split(\":\")[0]);\n return he > De;\n }, it = (J) => {\n if (!s.max && !s.min && !s.disablePast && !s.disableFuture)\n return J;\n let le = w.value, he = S.value, De = k.value;\n le && he && le < he && ([le, he] = [he, le]), he = he - he % 60, De = De - De % 60;\n const We = s.hoursFormat === 12 && v.value.toLowerCase() === \"pm\" ? 12 * 60 : 0;\n let Pe = J * 60 + We;\n (s.hoursFormat === 12 && qe(s.min, s.max) || s.disableFuture || s.disablePast) && (Pe === 12 * 60 && (Pe = 0), Pe === 24 * 60 && (Pe = 12 * 60));\n let Ae = !0;\n return s.min && (Ae = Ae && Pe >= he), s.max && (Ae = Ae && Pe <= le), s.disablePast && (Ae = Ae && Pe >= De), s.disableFuture && (Ae = Ae && Pe <= De), s.min && s.max && lt(s.min, s.max) && he !== Pe && le !== Pe && (Ae = !Ae), Ae;\n }, nt = (J) => {\n if (!s.max && !s.min && !s.disablePast && !s.disableFuture)\n return J / s.increment === Math.floor(J / s.increment);\n let le = w.value, he = S.value;\n le && he && le < he && ([le, he] = [he, le]);\n const De = s.hoursFormat === 12 && v.value.toLowerCase() === \"pm\" ? 12 * 60 : 0;\n let We = Number(d.value) * 60 + De;\n (s.hoursFormat === 12 && qe(s.min, s.max) || s.disableFuture || s.disablePast) && (We === 12 * 60 && (We = 0), We === 24 * 60 && (We = 12 * 60));\n let Pe = !0;\n return s.min && (Pe = Pe && We + J >= he), s.max && (Pe = Pe && We + J <= le), s.disablePast && (Pe = Pe && We + J >= k.value), s.disableFuture && (Pe = Pe && We + J <= k.value), s.min && s.max && lt(s.min, s.max) && We + J !== he && We + J !== le && (Pe = !Pe), Pe && J / s.increment === Math.floor(J / s.increment);\n };\n q(\"allowedHours\", it), q(\"allowedMinutes\", nt);\n const Ne = y(!1), ht = y(!0), st = (J) => {\n ht.value = J;\n }, ne = y(!1), fe = () => !s.icon && s.selfOpen && ge(), ge = () => {\n ne.value || (Ne.value ? Se() : de());\n }, de = () => {\n ne.value || (ne.value = !0, Ne.value = !0, n(\"open\"), ie(), setTimeout(() => ne.value = !1, 250));\n }, Se = () => {\n ne.value || (ne.value = !0, Ne.value = !1, n(\"close\"), ve(), st(!0), setTimeout(() => ne.value = !1, 250));\n };\n return q(\"emitClearEvent\", () => {\n n(\"clear\");\n }), q(\"isActive\", Ne.value), q(\"close\", Se), q(\"shouldClockAnimateOnShow\", ht), q(\"setClockAnimateOnShow\", st), Fe(() => {\n var J;\n if (s.modelValue)\n u.value = (J = O(s.modelValue)) == null ? void 0 : J.toUpperCase();\n else {\n if (s.max) {\n const le = s.max, he = $(le);\n d.value = he.hours < 12 ? he.hours : 12, h.value = he.hours < 12 ? he.minutes : 0;\n }\n if (s.min) {\n const le = s.min, he = $(le);\n d.value = he.hours > Number(d.value) ? he.hours : d.value, h.value = he.hours > Number(d.value) ? he.minutes : 0;\n }\n }\n Le(window, \"keydown\", z);\n }), dt(() => {\n Me(window, \"keydown\", z);\n }), e({\n togglePicker: ge,\n open: de,\n close: Se\n }), (J, le) => (x(), R(Ie, null, [\n Ee(vn, $e({\n id: _(l),\n ref_key: \"inputRef\",\n ref: a,\n modelValue: u.value,\n \"onUpdate:modelValue\": le[0] || (le[0] = (he) => u.value = he),\n label: t.label,\n wrapperClass: r.value\n }, J.$attrs, {\n \"aria-haspopup\": \"dialog\",\n invalidFeedback: t.invalidFeedback ? t.invalidFeedback : t.invalidLabel,\n validFeedback: t.validLabel || t.validFeedback,\n isValid: ye.value,\n isValidated: W.value,\n title: te.value,\n onClick: fe,\n onInput: P\n }), {\n default: Q(() => [\n t.icon ? (x(), R(\"button\", {\n key: 0,\n ref_key: \"btnRef\",\n ref: o,\n type: \"button\",\n class: \"timepicker-toggle-button\",\n \"aria-haspopup\": \"dialog\",\n onClick: ge\n }, [\n H(\"i\", {\n class: Y(c.value)\n }, null, 2)\n ], 512)) : K(\"\", !0)\n ]),\n _: 1\n }, 16, [\"id\", \"modelValue\", \"label\", \"wrapperClass\", \"invalidFeedback\", \"validFeedback\", \"isValid\", \"isValidated\", \"title\"]),\n t.inline ? (x(), ee(Ut, {\n key: 0,\n to: t.container\n }, [\n Ee(At, { name: \"timepicker-fade\" }, {\n default: Q(() => [\n Ne.value ? (x(), ee(zw, {\n key: 0,\n ref_key: \"modalRef\",\n ref: i,\n onCancel: A\n }, null, 512)) : K(\"\", !0)\n ]),\n _: 1\n })\n ], 8, [\"to\"])) : (x(), ee(Fw, {\n key: 1,\n ref_key: \"modalRef\",\n ref: i,\n modelValue: Ne.value,\n \"onUpdate:modelValue\": le[1] || (le[1] = (he) => Ne.value = he),\n onCancel: A\n }, null, 8, [\"modelValue\"]))\n ], 64));\n }\n}), Xw = [\"disabled\"], Uw = {\n name: \"MDBDateTimepicker\"\n}, L1 = /* @__PURE__ */ re({\n ...Uw,\n props: {\n datepicker: Object,\n defaultTime: String,\n defaultDate: String,\n disabled: Boolean,\n modelValue: String,\n label: String,\n icon: {\n type: Boolean,\n default: !0\n },\n iconClass: {\n type: String,\n default: \"far fa-calendar fa-sm\"\n },\n id: String,\n inline: Boolean,\n inputToggle: Boolean,\n invalidLabel: {\n type: String,\n default: \"Invalid date format\"\n },\n isValid: Boolean,\n isValidated: Boolean,\n validLabel: {\n type: String\n },\n timepicker: Object,\n toggleButton: {\n type: Boolean,\n default: !0\n },\n dateTimeSeparator: {\n type: String,\n default: \",\"\n },\n dateFormat: {\n type: String,\n default: \"DD/MM/YYYY\"\n },\n disablePast: {\n type: Boolean,\n default: !1\n },\n disableFuture: {\n type: Boolean,\n default: !1\n },\n container: {\n type: String,\n default: \"body\"\n }\n },\n emits: [\n \"update:isValid\",\n \"update:isValidated\",\n \"update:modelValue\",\n \"open\",\n \"close\"\n ],\n setup(t, { expose: e, emit: n }) {\n var F, z;\n const s = t;\n Ye.extend($c);\n const a = y(null), i = y(null), o = y(null), l = y(null), r = s.id || ut(\"MDBInput-\");\n q(\"dateTimepicker\", o);\n const c = T(() => \"datetimepicker\"), u = T(() => [\"timepicker-icon\", s.iconClass]), f = typeof s.modelValue == \"string\" && s.modelValue !== \"\" ? s.modelValue.split(\",\") : s.modelValue, d = y(\n s.defaultDate || ((F = f == null ? void 0 : f[0]) == null ? void 0 : F.trim()) || \"\"\n ), h = y(\n s.defaultTime || ((z = f == null ? void 0 : f[1]) == null ? void 0 : z.trim()) || \"\"\n ), p = y(s.dateTimeSeparator), v = T({\n get() {\n return s.dateFormat.includes(p.value) && (p.value = \"@@\"), d.value && h.value ? `${d.value}${p.value} ${h.value}` : \"\";\n },\n set(G) {\n const [U, ie] = G.split(p.value);\n d.value = U, h.value = ie;\n }\n });\n pe(\n () => v.value,\n (G) => {\n n(\"update:modelValue\", G);\n }\n ), pe(\n () => s.modelValue,\n (G, U) => {\n if (G === U || typeof G != \"string\")\n return;\n const ie = G.split(p.value);\n if (ie[0] === \"\" || !ie[1]) {\n d.value = \"\", h.value = \"\";\n return;\n }\n d.value = ie[0], h.value = ie[1].trim();\n }\n );\n const m = T(() => {\n const G = Ye(d.value, s.dateFormat).isToday();\n return s.disablePast && G;\n }), g = T(() => {\n const G = Ye(d.value, s.dateFormat).isToday();\n return s.disableFuture && G;\n }), b = y(!0), S = T(() => ({\n ...uo(s.timepicker),\n inline: s.inline\n })), w = T(() => ({\n ...uo(s.datepicker),\n inline: s.inline\n })), k = () => {\n var G;\n (G = a.value) == null || G.open();\n }, C = () => {\n var G;\n b.value && ((G = i.value) == null || G.open());\n }, M = () => {\n b.value = !1, setTimeout(() => b.value = !0, 500);\n }, V = () => {\n s.inputToggle && k();\n }, B = (G) => {\n var U, ie;\n G === \"timepicker\" ? (U = a.value) == null || U.close() : G === \"datepicker\" && ((ie = i.value) == null || ie.close(), setTimeout(() => k(), 300));\n }, D = () => {\n var G;\n (G = a.value) == null || G.open(), n(\"open\");\n }, E = () => {\n var G, U;\n (G = a.value) == null || G.close(), (U = i.value) == null || U.close(), n(\"close\");\n };\n q(\"changePicker\", B);\n const X = y(!1), L = y(!0), A = y(!1), P = y(!0), O = y(s.isValid), $ = y(s.isValidated);\n Ze(() => {\n O.value = s.isValid;\n }), Ze(() => {\n $.value = s.isValidated;\n }), pe(\n () => [L.value, P.value],\n (G) => {\n G.some((U) => typeof U == \"boolean\" && U === !1) && (n(\"update:isValid\", !1), I()), G.every((U) => !!U) && n(\"update:isValid\", !0);\n },\n { immediate: !0 }\n ), pe(\n () => [X.value, A.value],\n (G) => {\n G.some((U) => U) && n(\"update:isValidated\", !0), G.every((U) => typeof U == \"boolean\" && U === !1) && n(\"update:isValidated\", !1);\n },\n { immediate: !0 }\n );\n const I = () => {\n $.value && (d.value = P.value ? d.value : \"\", h.value = L.value ? h.value : \"\");\n };\n return e({\n open: D,\n close: E\n }), (G, U) => (x(), R(Ie, null, [\n Ee(vn, $e({\n id: _(r),\n ref_key: \"inputRef\",\n ref: o,\n modelValue: v.value,\n \"onUpdate:modelValue\": U[0] || (U[0] = (ie) => v.value = ie),\n label: t.label,\n wrapperClass: c.value\n }, G.$attrs, {\n invalidFeedback: t.invalidLabel,\n validFeedback: t.validLabel,\n \"aria-haspopup\": \"dialog\",\n isValid: O.value,\n isValidated: $.value,\n disabled: t.disabled,\n onClick: _e(V, [\"stop\"]),\n onKeydown: ke(V, [\"enter\"])\n }), {\n default: Q(() => [\n t.icon && t.toggleButton ? (x(), R(\"button\", {\n key: 0,\n ref_key: \"btnRef\",\n ref: l,\n type: \"button\",\n class: \"datetimepicker-toggle-button\",\n \"aria-haspopup\": \"dialog\",\n disabled: t.disabled,\n onClick: k\n }, [\n H(\"i\", {\n class: Y(u.value)\n }, null, 2)\n ], 8, Xw)) : K(\"\", !0)\n ]),\n _: 1\n }, 16, [\"id\", \"modelValue\", \"label\", \"wrapperClass\", \"invalidFeedback\", \"validFeedback\", \"isValid\", \"isValidated\", \"disabled\", \"onClick\", \"onKeydown\"]),\n je(H(\"div\", null, [\n Ee(vw, $e({\n ref_key: \"datepickerRef\",\n ref: a,\n modelValue: d.value,\n \"onUpdate:modelValue\": U[1] || (U[1] = (ie) => d.value = ie),\n isValidated: A.value,\n \"onUpdate:isValidated\": U[2] || (U[2] = (ie) => A.value = ie),\n isValid: P.value,\n \"onUpdate:isValid\": U[3] || (U[3] = (ie) => P.value = ie),\n label: \"Select a date\",\n format: t.dateFormat\n }, w.value, {\n disablePast: t.disablePast,\n disableFuture: t.disableFuture,\n container: t.container,\n onCancel: M,\n onClose: C\n }), null, 16, [\"modelValue\", \"isValidated\", \"isValid\", \"format\", \"disablePast\", \"disableFuture\", \"container\"]),\n Ee(jw, $e({\n ref_key: \"timepickerRef\",\n ref: i,\n isValidated: X.value,\n \"onUpdate:isValidated\": U[4] || (U[4] = (ie) => X.value = ie),\n isValid: L.value,\n \"onUpdate:isValid\": U[5] || (U[5] = (ie) => L.value = ie),\n modelValue: h.value,\n \"onUpdate:modelValue\": U[6] || (U[6] = (ie) => h.value = ie),\n label: \"Select a time\"\n }, S.value, {\n container: t.container,\n disablePast: m.value,\n disableFuture: g.value\n }), null, 16, [\"isValidated\", \"isValid\", \"modelValue\", \"container\", \"disablePast\", \"disableFuture\"])\n ], 512), [\n [Hn, !1]\n ])\n ], 64));\n }\n}), Jl = 38, qw = 40, Kw = 36, Gw = 35, Zw = 13, Jw = 27, Ql = 9, Qw = {\n key: 0,\n class: \"autocomplete-loader spinner-border\"\n}, eS = /* @__PURE__ */ H(\"span\", { className: \"sr-only\" }, \"Loading...\", -1), tS = [\n eS\n], nS = [\"id\"], sS = [\"onClick\"], aS = [\"innerHTML\"], iS = {\n name: \"MDBAutocomplete\",\n inheritAttrs: !1\n}, A1 = /* @__PURE__ */ re({\n ...iS,\n props: {\n modelValue: {\n type: String,\n default: \"\"\n },\n filter: Function,\n displayValue: Function,\n itemContent: Function,\n noResultsText: {\n type: String,\n default: \"No results\"\n },\n threshold: {\n type: Number,\n default: 0\n },\n optionHeight: {\n type: Number,\n default: 38\n },\n visibleOptions: {\n type: Number,\n default: 5\n },\n // input specific props\n label: String,\n placeholder: String,\n disabled: Boolean,\n required: Boolean,\n size: String,\n isValidated: Boolean,\n isValid: Boolean,\n validFeedback: String,\n invalidFeedback: String,\n autoSelect: Boolean,\n keepOpen: Boolean\n },\n emits: [\n \"update:modelValue\",\n \"open\",\n \"close\",\n \"update\",\n \"item-select\"\n ],\n setup(t, { expose: e, emit: n }) {\n const s = t, a = T(() => ({\n width: c.value\n })), i = T(() => ({\n maxHeight: `${s.visibleOptions * s.optionHeight}px`\n })), o = y(null), l = y(null), r = ut(\"MDBAutocompleteDropdown-\"), c = y(\"200px\"), u = y(!1), f = {\n placement: \"bottom-start\",\n eventsEnabled: !0,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 1]\n }\n }\n ]\n }, d = y([]), h = y(-1), p = y(void 0), { setPopper: v, isPopperActive: m, closePopper: g, openPopper: b } = $n(), S = () => {\n m.value ? !s.keepOpen && k() : C();\n }, w = y(!0), k = () => {\n !m.value || !w.value || (g(), n(\"close\"), p.value = setTimeout(() => {\n u.value = !1;\n }, 300));\n }, C = () => {\n clearTimeout(p.value), s.threshold !== void 0 && M.value.length >= s.threshold && (u.value = !0, Ge(() => E()), w.value = !1, setTimeout(() => w.value = !0, 50));\n }, M = y(s.modelValue), V = () => {\n n(\"update:modelValue\", M.value);\n }, B = () => {\n s.keepOpen || k();\n }, D = (I) => {\n h.value = I;\n const F = d.value[I];\n M.value = s.displayValue ? s.displayValue(F) : F, n(\"item-select\", F), !s.keepOpen && k();\n }, E = () => {\n var I;\n !l.value || !((I = o.value) != null && I.inputRef) || (v(\n o.value.inputRef,\n l.value,\n f\n ), b(), $(), c.value = `${o.value.inputRef.offsetWidth}px`, n(\"open\"));\n }, X = () => {\n var I, F;\n if (h.value > -1) {\n const z = (I = l.value) == null ? void 0 : I.querySelector(\"ul\");\n if (z) {\n const G = z.offsetHeight, U = (F = l.value) == null ? void 0 : F.querySelectorAll(\"li\");\n if (U) {\n const ve = U[h.value].offsetHeight, ye = z.scrollTop, W = h.value * ve, te = W + ve > ye + G;\n W < ye ? z.scrollTop = W : te ? z.scrollTop = W - G + ve : z.scrollTop = ye;\n }\n }\n }\n }, L = (I) => {\n var G, U;\n const F = I.keyCode;\n if (F === Jw || F === Jl && I.altKey || F === Ql) {\n F === Ql && s.autoSelect && h.value > -1 && D(h.value), !s.keepOpen && k(), (U = (G = o.value) == null ? void 0 : G.inputRef) == null || U.focus();\n return;\n }\n switch (F) {\n case qw:\n h.value = h.value < d.value.length - 1 ? h.value + 1 : h.value;\n break;\n case Jl:\n h.value = h.value > 0 ? h.value - 1 : h.value;\n break;\n case Kw:\n h.value = 0;\n break;\n case Gw:\n h.value = d.value.length - 1;\n break;\n case Zw:\n h.value > -1 && D(h.value);\n return;\n default:\n return;\n }\n }, A = y(s.isValidated), P = y(s.isValid), O = y(!1), $ = () => {\n const I = (F) => !!F && !Array.isArray(F) && typeof F.then == \"function\";\n if (m && s.filter) {\n const F = s.filter(M.value);\n I(F) ? (O.value = !0, F.then((z) => {\n d.value = z, n(\"update\", z), O.value = !1;\n })) : (n(\"update\", F), d.value = F);\n }\n };\n return Ze(() => M.value = s.modelValue), pe(\n () => M.value,\n () => {\n !u.value && s.threshold !== void 0 && M.value.length >= s.threshold && C(), u.value && s.threshold !== void 0 && M.value.length < s.threshold && !s.keepOpen && k(), h.value = -1, V(), $();\n }\n ), pe(\n () => [h.value, m],\n () => X()\n ), pe(\n () => s.isValidated,\n (I) => A.value = I\n ), pe(\n () => s.isValid,\n (I) => P.value = I\n ), e({\n open: C,\n close: k,\n toggle: S\n }), (I, F) => (x(), R(Ie, null, [\n Ee(vn, $e({\n ref_key: \"autocompleteWrapperRef\",\n ref: o,\n modelValue: M.value,\n \"onUpdate:modelValue\": F[0] || (F[0] = (z) => M.value = z),\n type: \"text\",\n labelClass: \"autocomplete-label\",\n class: [\"autocomplete-input\", _(m) && \"focused\"],\n label: t.label,\n placeholder: t.placeholder,\n disabled: t.disabled,\n size: t.size,\n \"aria-disabled\": t.disabled,\n \"aria-expanded\": u.value,\n \"aria-required\": t.isValidated && t.required,\n validFeedback: t.validFeedback,\n invalidFeedback: t.invalidFeedback,\n required: t.required,\n role: \"combobox\",\n \"aria-haspopup\": \"true\"\n }, I.$attrs, {\n onFocus: S,\n onKeydown: L,\n onTouchstart: F[1] || (F[1] = _e(() => {\n }, [\"stop\"])),\n onClickOutside: B,\n isValidated: A.value,\n isValid: P.value\n }), {\n default: Q(() => [\n O.value ? (x(), R(\"div\", Qw, tS)) : K(\"\", !0)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"class\", \"label\", \"placeholder\", \"disabled\", \"size\", \"aria-disabled\", \"aria-expanded\", \"aria-required\", \"validFeedback\", \"invalidFeedback\", \"required\", \"isValidated\", \"isValid\"]),\n (x(), ee(Ut, { to: \"body\" }, [\n u.value && t.threshold !== void 0 && M.value.length >= t.threshold ? (x(), R(\"div\", {\n key: 0,\n id: _(r),\n ref_key: \"dropdownRef\",\n ref: l,\n class: \"autocomplete-dropdown-container\",\n style: Ce(a.value)\n }, [\n H(\"div\", {\n class: Y([\"autocomplete-dropdown\", _(m) && \"open\"]),\n tabindex: \"0\"\n }, [\n H(\"ul\", {\n class: \"autocomplete-items-list\",\n style: Ce(i.value)\n }, [\n d.value.length === 0 ? (x(), R(\"li\", {\n key: 0,\n class: \"autocomplete-item autocomplete-no-results\",\n style: { height: \"px\" },\n onClick: F[2] || (F[2] = _e(() => {\n }, [\"stop\"]))\n }, se(t.noResultsText), 1)) : K(\"\", !0),\n (x(!0), R(Ie, null, kt(d.value, (z, G) => (x(), R(\"li\", {\n key: G,\n class: Y([\"autocomplete-item\", [h.value === G && \"active\"]]),\n style: { height: \"px\" },\n role: \"option\",\n onClick: _e((U) => D(G), [\"stop\"])\n }, [\n et(se(t.itemContent ? null : t.displayValue ? t.displayValue(z) : z) + \" \", 1),\n t.itemContent ? (x(), R(\"div\", {\n key: 0,\n innerHTML: t.itemContent(z)\n }, null, 8, aS)) : K(\"\", !0)\n ], 10, sS))), 128)),\n I.$slots.default ? (x(), R(\"div\", {\n key: 1,\n class: \"autocomplete-custom-content\",\n onClick: F[3] || (F[3] = _e(() => {\n }, [\"stop\"])),\n onTouchstart: F[4] || (F[4] = _e(() => {\n }, [\"stop\"]))\n }, [\n oe(I.$slots, \"default\")\n ], 32)) : K(\"\", !0)\n ], 4)\n ], 2)\n ], 12, nS)) : K(\"\", !0)\n ]))\n ], 64));\n }\n}), oS = {\n animationSticky: \"\",\n animationUnsticky: \"\",\n boundary: !1,\n direction: \"down\",\n media: 0,\n offset: 0,\n delay: 0,\n position: \"top\"\n}, E1 = {\n mounted(t, e) {\n if (!t)\n return;\n const n = {\n ...oS,\n ...e.value\n };\n let s = 0, a = null, i = null;\n t.isSticked = !1;\n const o = t.style;\n if (t.classList.add(\"sticky\"), !(\"IntersectionObserver\" in window))\n setTimeout(() => {\n const w = window.pageYOffset || document.documentElement.scrollTop;\n t.originalScrollTop = t.getBoundingClientRect().top + w;\n }, 100);\n else {\n const w = {\n rootMargin: \"0px\",\n threshold: 1\n }, k = (M) => {\n M.forEach((V) => {\n if (V.isIntersecting) {\n const B = window.pageYOffset || document.documentElement.scrollTop;\n t.originalScrollTop = t.getBoundingClientRect().top + B, C.disconnect();\n }\n });\n }, C = new IntersectionObserver(k, w);\n C.observe(t);\n }\n const l = () => {\n const { height: w, left: k, width: C } = t.getBoundingClientRect(), M = typeof n.offset == \"string\" ? parseInt(n.offset) : n.offset;\n o.position = \"fixed\", o.top = n.position === \"top\" && `${0 + M}px`, o.bottom = n.position === \"bottom\" && `${0 + M}px`, o.height = `${w}px`, o.width = `${C}px`, o.left = `${k}px`, o.marginLeft = 0, o.zIndex = \"100\";\n }, r = () => {\n o.position = null, o.top = null, o.bottom = null, o.height = null, o.width = null, o.left = null, o.zIndex = null, o.marginLeft = null;\n }, c = (w, k, C) => {\n w && C.classList.add(w), k && C.classList.remove(k);\n }, u = () => {\n t.isSticked || (n.animationSticky !== \"\" && (t.classList.add(\"animation\"), c(n.animationSticky, n.animationUnsticky, t)), l(), i && (i.hidden = !1), t.isSticked = !0);\n }, f = () => {\n if (!t.isSticked)\n return;\n const { animationDuration: w } = getComputedStyle(t), k = n.animationUnsticky !== \"\" ? parseFloat(w) * 1e3 : 0;\n n.animationUnsticky !== \"\" && (t.classList.add(\"animation\"), c(n.animationUnsticky, n.animationSticky, t)), setTimeout(() => {\n t.classList.contains(n.animationSticky) || (c(\"\", n.animationUnsticky, t), r(), g(), t.isSticked = !1);\n }, k);\n }, d = (w) => {\n w > s ? a = \"down\" : a = \"up\";\n }, h = (w) => {\n const k = t.getBoundingClientRect().height, C = typeof n.delay == \"string\" ? parseInt(n.delay) : n.delay;\n return n.position === \"top\" ? n.offset >= t.originalScrollTop - w + C : t.originalScrollTop + k < window.innerHeight + w - C;\n }, p = (w) => {\n const k = w.getBoundingClientRect(), C = {\n top: k.top + document.body.scrollTop,\n left: k.left + document.body.scrollLeft\n }, M = C.left === 0 && C.top === 0 ? 0 : window.innerHeight - k.bottom;\n return {\n ...C,\n bottom: M\n };\n }, v = (w) => {\n var B;\n const { height: k, width: C } = w.getBoundingClientRect(), M = w.cloneNode(!1);\n M.hidden = !0;\n const V = M.style;\n return V.height = `${k}px`, V.width = `${C}px`, V.opacity = \"0\", (B = w.parentElement) == null || B.insertBefore(M, w), M;\n }, m = () => {\n i || (i = v(t));\n }, g = () => {\n i && (i.remove(), i = null);\n }, b = () => {\n var O;\n const { position: w, boundary: k } = n;\n let { offset: C } = n;\n const { height: M } = t.getBoundingClientRect(), V = {\n height: (O = t.parentElement) == null ? void 0 : O.getBoundingClientRect().height,\n ...p(t.parentElement)\n };\n C = typeof C == \"string\" ? parseInt(C) : C;\n let B, D;\n k && k !== !0 && (D = document.querySelector(k)), D ? B = p(D).top - M - C : B = V.height + V[w] - M - C;\n const E = w === \"top\", X = w === \"bottom\", L = k, A = B < 0, P = B > V.height - M;\n E && (A && L ? o.top = `${C + B}px` : o.top = `${C + 0}px`), X && (A && L ? o.bottom = `${C + B}px` : P && L ? o.bottom = `${C + V.bottom}px` : o.bottom = `${C + 0}px`);\n }, S = () => {\n const w = document.documentElement, k = window.pageYOffset || w.scrollTop;\n d(k);\n const C = [a, \"both\"].includes(\n n.direction\n ), M = h(k), V = M && !t.isSticked && C, B = (!M || !C) && t.isSticked;\n V && (m(), u(), b()), B && f(), t.isSticked && b(), s = k <= 0 ? 0 : k;\n };\n t.scrollInit = () => {\n if (!(window.innerWidth <= n.media)) {\n if (!window.requestAnimationFrame)\n return setTimeout(S, 16);\n window.requestAnimationFrame(S);\n }\n }, window.addEventListener(\"scroll\", (w) => t.scrollInit(w));\n },\n unmounted(t, e) {\n e.value !== !1 && window.removeEventListener(\"scroll\", (n) => t.scrollInit(n));\n }\n}, lS = {\n src: \"\",\n placeholder: \"https://place-hold.it/600x400?text=Loading\",\n error: \"https://place-hold.it/600x400?text=Error\",\n delay: 500,\n offset: 0,\n animation: !1,\n parent: null,\n parentEl: null,\n childElements: null\n}, P1 = {\n mounted(t, e) {\n if (!t)\n return;\n const { arg: n } = e, s = {\n ...lS,\n ...e.value\n };\n s.parent && (s.parentEl = document.querySelector(s.parent)), n && n === \"container\" && (s.childElements = t.querySelectorAll(\"img, video\"), s.childElements.forEach((r) => {\n Ka(r, \"error\", () => l(r));\n })), a();\n function a() {\n var r;\n if (n && n === \"container\") {\n (r = s.childElements) == null || r.forEach((c) => {\n const { lazyPlaceholder: u } = c.dataset;\n c.nodeName === \"IMG\" ? c.setAttribute(\"src\", u || s.placeholder) : c.nodeName === \"VIDEO\" && c.setAttribute(\n \"poster\",\n u || s.placeholder\n );\n });\n return;\n }\n t.nodeName === \"IMG\" ? t.setAttribute(\"src\", s.placeholder) : t.nodeName === \"VIDEO\" && t.setAttribute(\"poster\", s.placeholder);\n }\n function i() {\n const r = t.getBoundingClientRect();\n if (s.parentEl) {\n const c = s.parentEl.getBoundingClientRect();\n return c.y > 0 && c.y < window.innerHeight && r.y >= c.y && r.y <= c.y + c.height && r.y <= window.innerHeight;\n }\n return r.top + s.offset <= window.innerHeight && r.bottom >= 0;\n }\n function o(r, c) {\n r.setAttribute(\"src\", c);\n }\n t.scrollHandler = () => {\n i() && (t.timeout = setTimeout(() => {\n var r;\n n && n === \"container\" ? (r = s.childElements) == null || r.forEach((c) => {\n const { lazySrc: u, lazyAnimation: f } = c.dataset;\n (s.animation || f) && (c.classList.add(\"animation\"), s.animation ? c.classList.add(s.animation) : f && c.classList.add(f)), o(c, u || s.src);\n }) : (s.animation && (t.classList.add(\"animation\"), t.classList.add(s.animation)), o(t, s.src));\n }, s.delay), s.parentEl && Me(s.parentEl, \"scroll\", t.scrollHandler), Me(window, \"scroll\", t.scrollHandler));\n };\n function l(r) {\n const c = r;\n if (c.src === s.error || c.getAttribute(\"src\") === s.error || !s.error) {\n c.alt = \"404 not found\";\n return;\n }\n const { lazyError: u } = r.dataset;\n r.setAttribute(\"src\", u || s.error), Ka(r, \"error\", () => l(r));\n }\n t.scrollHandler(), s.parent && s.parentEl ? Le(s.parentEl, \"scroll\", t.scrollHandler) : Le(window, \"scroll\", t.scrollHandler), Ka(t, \"error\", () => l(t));\n },\n unmounted(t) {\n Me(window, \"scroll\", t.scrollHandler);\n }\n}, V1 = {\n mounted(t, e) {\n const { arg: n } = e;\n n === \"window\" ? (t.scrollableContainer = window, t.prevScrollPosition = window.scrollY) : (t.style.overflowY === \"scroll\" || t.style.overflowX === \"scroll\") && (t.scrollableContainer = t, t.prevScrollPosition = n === \"x\" ? t.scrollLeft : t.scrollTop), t.handleScroll = () => {\n const s = t.getBoundingClientRect();\n let a, i;\n t.scrollableContainer === t ? n === \"x\" ? (a = s.width + t.scrollLeft + 10 >= t.scrollWidth, i = t.scrollLeft) : (a = s.height + t.scrollTop >= t.scrollHeight, i = t.scrollTop) : n === \"window\" && (a = window.scrollY + window.innerHeight >= document.documentElement.scrollHeight, i = window.scrollY), !(i && i < t.prevScrollPosition) && i && a && (t.prevScrollPosition = i, e.value());\n }, t.scrollableContainer.addEventListener(\"scroll\", t.handleScroll);\n },\n unmounted(t) {\n t.scrollableContainer.removeEventListener(\"scroll\", t.handleScroll);\n }\n}, rS = {\n container: \"body\",\n offset: 0,\n easing: \"linear\",\n duration: 500\n}, di = {\n motionLinear: (t) => t,\n // Ease-In\n motionEaseInQuad: (t) => t * t,\n motionEaseInCubic: (t) => t * t * t,\n motionEaseInQuart: (t) => t * t * t * t,\n motionEaseInQuint: (t) => t * t * t * t * t,\n // Ease-In-Out\n motionEaseInOutQuad: (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,\n motionEaseInOutCubic: (t) => (t /= 0.5, t < 1 ? t * t * t / 2 : (t -= 2, (t * t * t + 2) / 2)),\n motionEaseInOutQuart: (t) => (t /= 0.5, t < 1 ? 0.5 * t * t * t * t : (t -= 2, -(t * t * t * t - 2) / 2)),\n motionEaseInOutQuint: (t) => (t /= 0.5, t < 1 ? t * t * t * t * t / 2 : (t -= 2, (t * t * t * t * t + 2) / 2)),\n // Ease-Out\n motionEaseOutQuad: (t) => -t * (t - 2),\n motionEaseOutCubic: (t) => (t--, t * t * t + 1),\n motionEaseOutQuart: (t) => (t--, -(t * t * t * t - 1)),\n motionEaseOutQuint: (t) => (t--, t * t * t * t * t + 1)\n}, R1 = {\n mounted(t, e) {\n const n = t.getAttribute(\"href\") || e.value, s = {\n ...rS,\n ...e.value\n }, a = () => s.container === \"body\", i = a() ? document.documentElement : document.querySelector(s.container), o = () => {\n const u = s.easing, f = `motion${u[0].toUpperCase()}${u.slice(1)}`;\n return di[f] ? di[f] : di.motionLinear;\n }, l = () => {\n const u = i.scrollTop, d = document.querySelector(n).getBoundingClientRect().y;\n if (a())\n return d - s.offset + u;\n const h = i.getBoundingClientRect().y;\n return d - h - s.offset + u;\n }, r = () => {\n if (a())\n return !0;\n const u = i.getBoundingClientRect();\n return u.top >= 0 && u.bottom <= (window.innerHeight || document.documentElement.clientHeight);\n }, c = (u, f, d, h, p, v, m) => {\n const g = h < 0, b = h > 1, S = p <= 0;\n if (g || b || S) {\n e.value.callback ? e.value.callback(\"mdbScrollEnd\") : t.dispatchEvent(new CustomEvent(\"mdbScrollEnd\")), u.scrollTop = d;\n return;\n }\n u.scrollTo({\n top: f - (f - d) * m(h)\n }), h += p * v, setTimeout(() => {\n c(\n u,\n f,\n d,\n h,\n p,\n v,\n m\n );\n });\n };\n t.handleClick = (u) => {\n u.preventDefault();\n const f = i, d = i.scrollTop, h = l(), p = 0, v = 1 / s.duration, m = 4.25;\n t.easing = o(), r() ? (e.value.callback ? e.value.callback(\"mdbScrollStart\") : t.dispatchEvent(new CustomEvent(\"mdbScrollStart\")), c(\n f,\n d,\n h,\n p,\n v,\n m,\n t.easing\n )) : (e.value.callback ? e.value.callback(\"mdbScrollStart\") : t.dispatchEvent(new CustomEvent(\"mdbScrollStart\")), c(\n document.documentElement,\n document.documentElement.scrollTop,\n i.offsetTop,\n p,\n v,\n m,\n t.easing\n ), setTimeout(() => {\n c(\n f,\n d,\n h,\n p,\n v,\n m,\n t.easing\n );\n }, s.duration));\n }, t.addEventListener(\"click\", (u) => {\n t.handleClick(u);\n });\n },\n unmounted(t) {\n t.removeEventListener(\"click\", () => {\n t.handleClick();\n });\n }\n}, I1 = {\n mounted(t, e) {\n t.intersect = {\n visible: !1,\n container: window,\n lostVisibility: null\n }, e.value && (t.intersect = {\n ...t.intersect,\n ...e.value\n }), (t.parentNode.style.overflowY === \"scroll\" || t.parentNode.style.overflowY === \"auto\" && e.arg === \"container\") && (t.intersect.container = t.parentNode), t.intersect.isVisible = () => {\n let s = !1;\n const { y: a, height: i } = t.getBoundingClientRect();\n if (t.intersect.container === window)\n s = a < window.innerHeight && a + i > 0;\n else {\n const o = t.parentNode, { y: l, height: r } = o.getBoundingClientRect();\n s = r + l >= a && a + i >= l;\n }\n return s;\n };\n const n = (s) => {\n var a, i;\n (i = (a = t.intersect).callback) == null || i.call(a, s);\n };\n t.intersect.callback = () => {\n var a, i;\n ((i = (a = t.intersect).isVisible) == null ? void 0 : i.call(a)) ? (!t.intersect.visible && e.value.callback(), t.intersect.visible = !0, t.intersect.once && t.intersect.container.removeEventListener(\"scroll\", n)) : (t.intersect.lostVisibility !== null && t.intersect.visible && t.intersect.lostVisibility(), t.intersect.visible = !1);\n }, t.intersect.start && e.value.callback(), t.intersect.container.addEventListener(\"scroll\", t.intersect.callback);\n },\n unmounted(t) {\n t.intersect.container.removeEventListener(\n \"scroll\",\n t.intersect.callback\n );\n }\n}, F1 = {\n mounted(t, e) {\n e.value.start && e.value.callback(), window.addEventListener(\"resize\", e.value.callback);\n },\n unmounted(t, e) {\n window.removeEventListener(\"resize\", e.value.callback);\n }\n}, N1 = {\n mounted(t, e) {\n let n, s;\n typeof e.value == \"function\" ? (n = e.value, s = e.modifiers) : e.value.handler && (n = e.value.handler, s = e.value.options), t.observer = new MutationObserver(n), t.observer.observe(t, s);\n },\n unmounted(t) {\n t.observer.disconnect();\n }\n}, H1 = {\n mounted(t, e) {\n t.copyToClipboard = () => {\n let n = null;\n const s = e.instance;\n e.value ? n = e.value : e.value === void 0 ? n = t.textContent : e.arg && s[e.arg] && (e.modifiers.input ? n = s[e.arg] : n = s[e.arg].textContent), n && navigator.clipboard.writeText(n);\n }, t.addEventListener(\"click\", t.copyToClipboard);\n },\n unmounted(t) {\n t.removeEventListener(\"click\", t.copyToClipboard);\n }\n}, W1 = {\n mounted(t, e) {\n const { modifiers: n, arg: s } = e;\n t.eventElement = s === \"window\" ? window : s === \"document\" ? document : t;\n const a = Object.keys(e.value).map((i) => {\n const o = i.split(\"+\"), l = {\n hotkey: i,\n key: \"\",\n altKey: !1,\n ctrlKey: !1,\n metaKey: !1\n };\n return o.forEach((r) => {\n switch (r) {\n case \"ctrl\":\n l.ctrlKey = !0;\n break;\n case \"alt\":\n l.altKey = !0;\n break;\n case \"meta\":\n l.metaKey = !0;\n break;\n default:\n l.key = r;\n break;\n }\n }), l;\n });\n t.hotkeyHandler = (i) => {\n n.prevent && i.preventDefault(), n.stop && i.stopPropagation();\n const { key: o, altKey: l, ctrlKey: r, metaKey: c } = i;\n a.forEach((u, f) => {\n const d = a[f];\n d.key.toLowerCase() === o.toLowerCase() && d.altKey === l && d.ctrlKey === r && d.metaKey === c && e.value[d.hotkey]();\n });\n }, t.eventElement.addEventListener(\n \"keydown\",\n t.hotkeyHandler\n );\n },\n unmounted(t) {\n t.eventElement.removeEventListener(\n \"keydown\",\n t.hotkeyHandler\n );\n }\n};\nexport {\n AS as MDBAccordion,\n ES as MDBAccordionItem,\n r1 as MDBAlert,\n yp as MDBAnimation,\n A1 as MDBAutocomplete,\n uS as MDBBadge,\n WS as MDBBreadcrumb,\n zS as MDBBreadcrumbItem,\n un as MDBBtn,\n Qc as MDBBtnClose,\n dS as MDBBtnGroup,\n fS as MDBCard,\n hS as MDBCardBody,\n bS as MDBCardFooter,\n xS as MDBCardGroup,\n gS as MDBCardHeader,\n mS as MDBCardImg,\n yS as MDBCardLink,\n vS as MDBCardText,\n pS as MDBCardTitle,\n kS as MDBCarousel,\n C1 as MDBChart,\n Mo as MDBCheckbox,\n x1 as MDBChip,\n k1 as MDBChipsInput,\n GS as MDBCol,\n or as MDBCollapse,\n JS as MDBContainer,\n $1 as MDBDatatable,\n L1 as MDBDateTimepicker,\n vw as MDBDatepicker,\n CS as MDBDropdown,\n BS as MDBDropdownItem,\n o1 as MDBDropdownMenu,\n $S as MDBDropdownToggle,\n n1 as MDBFile,\n YS as MDBFooter,\n ns as MDBIcon,\n vn as MDBInput,\n b1 as MDBLightbox,\n y1 as MDBLightboxItem,\n wS as MDBListGroup,\n SS as MDBListGroupItem,\n S1 as MDBLoading,\n c1 as MDBModal,\n OS as MDBModalBody,\n LS as MDBModalFooter,\n TS as MDBModalHeader,\n DS as MDBModalTitle,\n w1 as MDBMultiRange,\n O1 as MDBNavbar,\n VS as MDBNavbarBrand,\n IS as MDBNavbarItem,\n RS as MDBNavbarNav,\n PS as MDBNavbarToggler,\n HS as MDBPageItem,\n NS as MDBPageNav,\n FS as MDBPagination,\n g1 as MDBPopconfirm,\n af as MDBPopover,\n _S as MDBProgress,\n MS as MDBProgressBar,\n t1 as MDBRadio,\n s1 as MDBRange,\n u1 as MDBRating,\n d1 as MDBRatingItem,\n ZS as MDBRow,\n Ri as MDBScrollbar,\n yx as MDBSelect,\n B1 as MDBSideNav,\n D1 as MDBSideNavItem,\n Kx as MDBSideNavLink,\n T1 as MDBSideNavMenu,\n Tu as MDBSpinner,\n f1 as MDBStepper,\n v1 as MDBStepperContent,\n m1 as MDBStepperForm,\n p1 as MDBStepperHead,\n h1 as MDBStepperStep,\n a1 as MDBSwitch,\n KS as MDBTabContent,\n US as MDBTabItem,\n XS as MDBTabNav,\n qS as MDBTabPane,\n QS as MDBTable,\n jS as MDBTabs,\n e1 as MDBTextarea,\n jw as MDBTimepicker,\n l1 as MDBToast,\n Qd as MDBTooltip,\n _1 as MDBTransition,\n tn as mdbClickOutside,\n H1 as mdbClipboard,\n W1 as mdbHotkey,\n V1 as mdbInfiniteScroll,\n I1 as mdbIntersectionObserver,\n P1 as mdbLazy,\n N1 as mdbMutate,\n F1 as mdbResize,\n Ct as mdbRipple,\n Wx as mdbScrollLock,\n i1 as mdbScrollspy,\n R1 as mdbSmoothScroll,\n E1 as mdbSticky,\n Hx as mdbTouch\n};\n//# sourceMappingURL=mdb.es.min.js.map\n","\n\t\n\t\t\n\t\t\n\t\n\t\n\n\n\n\n\n","type TypeEvent = [boolean, EventListenerOrEventListenerObject, string]\n\nconst stripNameRegex = /\\..*/\nconst customEvents = {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n}\nconst nativeEvents = [\n\t\"click\",\n\t\"dblclick\",\n\t\"mouseup\",\n\t\"mousedown\",\n\t\"contextmenu\",\n\t\"mousewheel\",\n\t\"DOMMouseScroll\",\n\t\"mouseover\",\n\t\"mouseout\",\n\t\"mousemove\",\n\t\"selectstart\",\n\t\"selectend\",\n\t\"keydown\",\n\t\"keypress\",\n\t\"keyup\",\n\t\"orientationchange\",\n\t\"touchstart\",\n\t\"touchmove\",\n\t\"touchend\",\n\t\"touchcancel\",\n\t\"pointerdown\",\n\t\"pointermove\",\n\t\"pointerup\",\n\t\"pointerleave\",\n\t\"pointercancel\",\n\t\"gesturestart\",\n\t\"gesturechange\",\n\t\"gestureend\",\n\t\"focus\",\n\t\"blur\",\n\t\"change\",\n\t\"reset\",\n\t\"select\",\n\t\"submit\",\n\t\"focusin\",\n\t\"focusout\",\n\t\"load\",\n\t\"unload\",\n\t\"beforeunload\",\n\t\"resize\",\n\t\"move\",\n\t\"DOMContentLoaded\",\n\t\"readystatechange\",\n\t\"error\",\n\t\"abort\",\n\t\"scroll\",\n]\n\nfunction normalizeParams(\n\toriginalTypeEvent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject,\n): TypeEvent {\n\tconst delegation = typeof handler === \"string\"\n\tconst originalHandler = delegation ? delegationFn : handler\n\n\t// allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n\tlet typeEvent = originalTypeEvent.replace(stripNameRegex, \"\")\n\tconst custom = customEvents[typeEvent]\n\n\tif (custom) {\n\t\ttypeEvent = custom\n\t}\n\n\tconst isNative = nativeEvents.indexOf(typeEvent) > -1\n\n\tif (!isNative) {\n\t\ttypeEvent = originalTypeEvent\n\t}\n\n\treturn [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\toriginalTypeEvent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject,\n) {\n\tif (typeof originalTypeEvent !== \"string\" || !element) {\n\t\treturn\n\t}\n\n\tif (!handler) {\n\t\thandler = delegationFn\n\t\tdelegationFn = null\n\t}\n\n\tconst [delegation, originalHandler, typeEvent] = normalizeParams(\n\t\toriginalTypeEvent,\n\t\thandler,\n\t\tdelegationFn,\n\t)\n\telement.addEventListener(typeEvent, originalHandler, delegation)\n}\n\nfunction removeHandler(\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\ttypeEvent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationSelector: EventListenerOrEventListenerObject,\n) {\n\telement.removeEventListener(typeEvent, handler, !!delegationSelector)\n}\n\nexport const on = function (\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\tevent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject = undefined,\n) {\n\taddHandler(element, event, handler, delegationFn)\n}\n\nexport const one = function (\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\tevent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject = undefined,\n) {\n\tif (typeof event !== \"string\" || !element) {\n\t\treturn\n\t}\n\n\tconst [_, originalHandler, typeEvent] = normalizeParams(\n\t\tevent,\n\t\thandler,\n\t\tdelegationFn,\n\t)\n\n\telement.addEventListener(typeEvent, originalHandler, { once: true })\n}\n\nexport const off = function (\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\tevent: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject = undefined,\n) {\n\tif (typeof event !== \"string\" || !element) {\n\t\treturn\n\t}\n\n\tconst [delegation, originalHandler, typeEvent] = normalizeParams(\n\t\tevent,\n\t\thandler,\n\t\tdelegationFn,\n\t)\n\n\tremoveHandler(\n\t\telement,\n\t\ttypeEvent,\n\t\toriginalHandler,\n\t\tdelegation ? handler : null,\n\t)\n}\n\nexport const onMulti = function (\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\teventArray: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject = undefined,\n) {\n\tconst events = eventArray.split(\" \")\n\n\tfor (let i = 0; i < events.length; i++) {\n\t\ton(element, events[i], handler, delegationFn)\n\t}\n}\n\nexport const offMulti = function (\n\telement: HTMLElement | Document | HTMLBodyElement | Window,\n\teventArray: string,\n\thandler: EventListenerOrEventListenerObject,\n\tdelegationFn: EventListenerOrEventListenerObject = undefined,\n) {\n\tconst events = eventArray.split(\" \")\n\n\tfor (let i = 0; i < events.length; i++) {\n\t\toff(element, events[i], handler, delegationFn)\n\t}\n}\n","const MAX_UID = 1000000\n\nexport const getUID = (prefix: string) => {\n\tdo {\n\t\tprefix += Math.floor(Math.random() * MAX_UID)\n\t} while (document.getElementById(prefix))\n\n\treturn prefix\n}\n","import type { DirectiveBinding } from \"vue\"\n\ninterface Element extends HTMLElement {\n\tclickOutside?: (e: Event) => void\n}\n\nexport default {\n\tstopProp(e: Event) {\n\t\te.stopPropagation()\n\t},\n\n\tmounted(el: Element, binding: DirectiveBinding) {\n\t\tconst handler = (e: Event) => {\n\t\t\tconst target = e.target as HTMLElement\n\t\t\tif (!el.contains(target) && el !== target) {\n\t\t\t\tbinding.value(e)\n\t\t\t}\n\t\t}\n\t\tel.clickOutside = handler\n\n\t\tconst event = binding.modifiers.mousedown ? \"mousedown\" : \"click\"\n\n\t\tdocument.addEventListener(event, (e) => el.clickOutside?.(e))\n\t\tdocument.addEventListener(\"touchstart\", (e) => el.clickOutside?.(e))\n\t},\n\n\tunmounted(el: Element, binding: DirectiveBinding) {\n\t\tif (!el.clickOutside) return\n\n\t\tconst event = binding.modifiers.mousedown ? \"mousedown\" : \"click\"\n\n\t\tdocument.removeEventListener(event, (e) => el.clickOutside?.(e))\n\t\tdocument.removeEventListener(\"touchstart\", (e) => el.clickOutside?.(e))\n\t\tdelete el.clickOutside\n\t},\n}\n","\n\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
{{ helper }}
\n\t\t
\n\t\t\t
{{ currentLength }} / {{ maxlength }}
\n\t\t
\n\t\t\n\t\t
\n\t\t\t{{ validFeedback }}\n\t\t
\n\t\t
\n\t\t\t{{ customInvalidFeedback }}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\n\t\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t\t\n\t\t\n\t\t
{{ helper }}
\n\t\t
\n\t\t\t
{{ currentLength }} / {{ maxlength }}
\n\t\t
\n\t\t\n\t\t
\n\t\t\t{{ validFeedback }}\n\t\t
\n\t\t
\n\t\t\t{{ customInvalidFeedback }}\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\n\t
{{ formText }}
\n\n\t
\n\t\t\n\t\t\n\t
\n\t
\n\t\t\n\t\t\n\t
\n\n\n\n\n\n\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { ref, nextTick, reactive } from \"vue\"\nimport { createPopper } from \"@popperjs/core\"\n\ninterface PopperOptionsValue {\n\t[props: string]: any\n}\n\ninterface PopperOptions {\n\tvalue?: PopperOptionsValue\n}\n\nfunction MDBPopper() {\n\tconst isPopperActive = ref(false)\n\tconst triggerEl = ref(null)\n\tconst popperEl = ref(null)\n\tconst popper = ref(undefined)\n\tconst popperOptions = reactive({})\n\n\tfunction setPopper(\n\t\ttrigger: HTMLElement,\n\t\tpopper: HTMLElement,\n\t\tconfig: object,\n\t) {\n\t\ttriggerEl.value = trigger\n\t\tpopperEl.value = popper\n\t\tpopperOptions.value = {\n\t\t\tplacement: \"bottom\",\n\t\t\tmodifiers: [\n\t\t\t\t{\n\t\t\t\t\tname: \"offset\",\n\t\t\t\t\toptions: {\n\t\t\t\t\t\toffset: [0, 0],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t...config,\n\t\t}\n\t}\n\n\tfunction togglePopper() {\n\t\tisPopperActive.value = !isPopperActive.value\n\n\t\tif (isPopperActive.value) {\n\t\t\tnextTick(() => setupPopper())\n\t\t}\n\t}\n\n\tfunction openPopper() {\n\t\tif (isPopperActive.value) {\n\t\t\treturn\n\t\t}\n\t\tisPopperActive.value = true\n\t\tnextTick(() => (popper.value = setupPopper()))\n\t}\n\n\tfunction closePopper() {\n\t\tif (!isPopperActive.value) {\n\t\t\treturn\n\t\t}\n\n\t\tisPopperActive.value = !isPopperActive.value\n\t}\n\n\tfunction setupPopper() {\n\t\tif (!triggerEl.value || !popperEl.value) {\n\t\t\treturn\n\t\t}\n\t\tif (popper.value === undefined || !popper.value) {\n\t\t\tpopper.value = createPopper(\n\t\t\t\ttriggerEl.value,\n\t\t\t\tpopperEl.value,\n\t\t\t\tpopperOptions.value,\n\t\t\t)\n\t\t} else {\n\t\t\tpopper.value.update()\n\t\t}\n\t}\n\n\tfunction updatePopper(option: string, value: any) {\n\t\tpopperOptions.value[option] = value\n\n\t\tpopper.value = createPopper(\n\t\t\ttriggerEl.value,\n\t\t\tpopperEl.value,\n\t\t\tpopperOptions.value,\n\t\t)\n\t}\n\n\tfunction destroyPopper() {\n\t\tif (!popper.value) {\n\t\t\treturn\n\t\t}\n\n\t\tpopper.value.destroy()\n\t\tpopper.value = undefined\n\t}\n\n\tfunction getPopperOffset(offset: unknown, element: HTMLElement) {\n\t\tif (typeof offset === \"string\") {\n\t\t\treturn offset.split(\",\").map((val) => Number.parseInt(val, 10))\n\t\t}\n\n\t\tif (typeof offset === \"function\") {\n\t\t\treturn (popperData: unknown) => offset(popperData, element)\n\t\t}\n\n\t\treturn offset\n\t}\n\n\treturn {\n\t\tsetPopper,\n\t\ttogglePopper,\n\t\tisPopperActive,\n\t\topenPopper,\n\t\tclosePopper,\n\t\tupdatePopper,\n\t\tdestroyPopper,\n\t\tgetPopperOffset,\n\t}\n}\n\nexport default MDBPopper\n","\n\t\n\t\t\n\t\n\t\n\t\t\n\t\n\n\n\n\n\n","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n let cache = decodeCache[exclude]\n if (cache) { return cache }\n\n cache = decodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n cache.push(ch)\n }\n\n for (let i = 0; i < exclude.length; i++) {\n const ch = exclude.charCodeAt(i)\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n }\n\n return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars\n }\n\n const cache = getDecodeCache(exclude)\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n let result = ''\n\n for (let i = 0, l = seq.length; i < l; i += 3) {\n const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n if (b1 < 0x80) {\n result += cache[b1]\n continue\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n if ((b2 & 0xC0) === 0x80) {\n const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 3\n continue\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd'\n } else {\n result += String.fromCharCode(chr)\n }\n\n i += 6\n continue\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n } else {\n chr -= 0x10000\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n }\n\n i += 9\n continue\n }\n }\n\n result += '\\ufffd'\n }\n\n return result\n })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n let cache = encodeCache[exclude]\n if (cache) { return cache }\n\n cache = encodeCache[exclude] = []\n\n for (let i = 0; i < 128; i++) {\n const ch = String.fromCharCode(i)\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch)\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n }\n }\n\n for (let i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i]\n }\n\n return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude\n exclude = encode.defaultChars\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true\n }\n\n const cache = getEncodeCache(exclude)\n let result = ''\n\n for (let i = 0, l = string.length; i < l; i++) {\n const code = string.charCodeAt(i)\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3)\n i += 2\n continue\n }\n }\n\n if (code < 128) {\n result += cache[code]\n continue\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n const nextCode = string.charCodeAt(i + 1)\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1])\n i++\n continue\n }\n }\n result += '%EF%BF%BD'\n continue\n }\n\n result += encodeURIComponent(string[i])\n }\n\n return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n let result = ''\n\n result += url.protocol || ''\n result += url.slashes ? '//' : ''\n result += url.auth ? url.auth + '@' : ''\n\n if (url.hostname && url.hostname.indexOf(':') !== -1) {\n // ipv6 address\n result += '[' + url.hostname + ']'\n } else {\n result += url.hostname || ''\n }\n\n result += url.port ? ':' + url.port : ''\n result += url.pathname || ''\n result += url.search || ''\n result += url.hash || ''\n\n return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n// e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n// so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n// i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n// (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n// which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n this.protocol = null\n this.slashes = null\n this.auth = null\n this.port = null\n this.hostname = null\n this.hash = null\n this.search = null\n this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks. Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n if (url && url instanceof Url) return url\n\n const u = new Url()\n u.parse(url, slashesDenoteHost)\n return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n let lowerProto, hec, slashes\n let rest = url\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim()\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n const simplePath = simplePathPattern.exec(rest)\n if (simplePath) {\n this.pathname = simplePath[1]\n if (simplePath[2]) {\n this.search = simplePath[2]\n }\n return this\n }\n }\n\n let proto = protocolPattern.exec(rest)\n if (proto) {\n proto = proto[0]\n lowerProto = proto.toLowerCase()\n this.protocol = proto\n rest = rest.substr(proto.length)\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n /* eslint-disable-next-line no-useless-escape */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n slashes = rest.substr(0, 2) === '//'\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2)\n this.slashes = true\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n let hostEnd = -1\n for (let i = 0; i < hostEndingChars.length; i++) {\n hec = rest.indexOf(hostEndingChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n let auth, atSign\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@')\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd)\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign)\n rest = rest.slice(atSign + 1)\n this.auth = auth\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1\n for (let i = 0; i < nonHostChars.length; i++) {\n hec = rest.indexOf(nonHostChars[i])\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n hostEnd = hec\n }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) {\n hostEnd = rest.length\n }\n\n if (rest[hostEnd - 1] === ':') { hostEnd-- }\n const host = rest.slice(0, hostEnd)\n rest = rest.slice(hostEnd)\n\n // pull out port.\n this.parseHost(host)\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || ''\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n const ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']'\n\n // validate a little.\n if (!ipv6Hostname) {\n const hostparts = this.hostname.split(/\\./)\n for (let i = 0, l = hostparts.length; i < l; i++) {\n const part = hostparts[i]\n if (!part) { continue }\n if (!part.match(hostnamePartPattern)) {\n let newpart = ''\n for (let j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x'\n } else {\n newpart += part[j]\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n const validParts = hostparts.slice(0, i)\n const notHost = hostparts.slice(i + 1)\n const bit = part.match(hostnamePartStart)\n if (bit) {\n validParts.push(bit[1])\n notHost.unshift(bit[2])\n }\n if (notHost.length) {\n rest = notHost.join('.') + rest\n }\n this.hostname = validParts.join('.')\n break\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = ''\n }\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n }\n }\n\n // chop off from the tail first.\n const hash = rest.indexOf('#')\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash)\n rest = rest.slice(0, hash)\n }\n const qm = rest.indexOf('?')\n if (qm !== -1) {\n this.search = rest.substr(qm)\n rest = rest.slice(0, qm)\n }\n if (rest) { this.pathname = rest }\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = ''\n }\n\n return this\n}\n\nUrl.prototype.parseHost = function (host) {\n let port = portPattern.exec(host)\n if (port) {\n port = port[0]\n if (port !== ':') {\n this.port = port.substr(1)\n }\n host = host.substr(0, host.length - port.length)\n }\n if (host) { this.hostname = host }\n}\n\nexport default urlParse\n","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u1d41<\\xd5\\u0131\\u028a\\u049d\\u057b\\u05d0\\u0675\\u06de\\u07a2\\u07d6\\u080f\\u0a4a\\u0a91\\u0da1\\u0e6d\\u0f09\\u0f26\\u10ca\\u1228\\u12e1\\u1415\\u149d\\u14c3\\u14df\\u1525\\0\\0\\0\\0\\0\\0\\u156b\\u16cd\\u198d\\u1c12\\u1ddd\\u1f7e\\u2060\\u21b0\\u228d\\u23c0\\u23fb\\u2442\\u2824\\u2912\\u2d08\\u2e48\\u2fce\\u3016\\u32ba\\u3639\\u37ac\\u38fe\\u3a28\\u3a71\\u3ae0\\u3b2e\\u0800EMabcfglmnoprstu\\\\bfms\\x7f\\x84\\x8b\\x90\\x95\\x98\\xa6\\xb3\\xb9\\xc8\\xcflig\\u803b\\xc6\\u40c6P\\u803b&\\u4026cute\\u803b\\xc1\\u40c1reve;\\u4102\\u0100iyx}rc\\u803b\\xc2\\u40c2;\\u4410r;\\uc000\\ud835\\udd04rave\\u803b\\xc0\\u40c0pha;\\u4391acr;\\u4100d;\\u6a53\\u0100gp\\x9d\\xa1on;\\u4104f;\\uc000\\ud835\\udd38plyFunction;\\u6061ing\\u803b\\xc5\\u40c5\\u0100cs\\xbe\\xc3r;\\uc000\\ud835\\udc9cign;\\u6254ilde\\u803b\\xc3\\u40c3ml\\u803b\\xc4\\u40c4\\u0400aceforsu\\xe5\\xfb\\xfe\\u0117\\u011c\\u0122\\u0127\\u012a\\u0100cr\\xea\\xf2kslash;\\u6216\\u0176\\xf6\\xf8;\\u6ae7ed;\\u6306y;\\u4411\\u0180crt\\u0105\\u010b\\u0114ause;\\u6235noullis;\\u612ca;\\u4392r;\\uc000\\ud835\\udd05pf;\\uc000\\ud835\\udd39eve;\\u42d8c\\xf2\\u0113mpeq;\\u624e\\u0700HOacdefhilorsu\\u014d\\u0151\\u0156\\u0180\\u019e\\u01a2\\u01b5\\u01b7\\u01ba\\u01dc\\u0215\\u0273\\u0278\\u027ecy;\\u4427PY\\u803b\\xa9\\u40a9\\u0180cpy\\u015d\\u0162\\u017aute;\\u4106\\u0100;i\\u0167\\u0168\\u62d2talDifferentialD;\\u6145leys;\\u612d\\u0200aeio\\u0189\\u018e\\u0194\\u0198ron;\\u410cdil\\u803b\\xc7\\u40c7rc;\\u4108nint;\\u6230ot;\\u410a\\u0100dn\\u01a7\\u01adilla;\\u40b8terDot;\\u40b7\\xf2\\u017fi;\\u43a7rcle\\u0200DMPT\\u01c7\\u01cb\\u01d1\\u01d6ot;\\u6299inus;\\u6296lus;\\u6295imes;\\u6297o\\u0100cs\\u01e2\\u01f8kwiseContourIntegral;\\u6232eCurly\\u0100DQ\\u0203\\u020foubleQuote;\\u601duote;\\u6019\\u0200lnpu\\u021e\\u0228\\u0247\\u0255on\\u0100;e\\u0225\\u0226\\u6237;\\u6a74\\u0180git\\u022f\\u0236\\u023aruent;\\u6261nt;\\u622fourIntegral;\\u622e\\u0100fr\\u024c\\u024e;\\u6102oduct;\\u6210nterClockwiseContourIntegral;\\u6233oss;\\u6a2fcr;\\uc000\\ud835\\udc9ep\\u0100;C\\u0284\\u0285\\u62d3ap;\\u624d\\u0580DJSZacefios\\u02a0\\u02ac\\u02b0\\u02b4\\u02b8\\u02cb\\u02d7\\u02e1\\u02e6\\u0333\\u048d\\u0100;o\\u0179\\u02a5trahd;\\u6911cy;\\u4402cy;\\u4405cy;\\u440f\\u0180grs\\u02bf\\u02c4\\u02c7ger;\\u6021r;\\u61a1hv;\\u6ae4\\u0100ay\\u02d0\\u02d5ron;\\u410e;\\u4414l\\u0100;t\\u02dd\\u02de\\u6207a;\\u4394r;\\uc000\\ud835\\udd07\\u0100af\\u02eb\\u0327\\u0100cm\\u02f0\\u0322ritical\\u0200ADGT\\u0300\\u0306\\u0316\\u031ccute;\\u40b4o\\u0174\\u030b\\u030d;\\u42d9bleAcute;\\u42ddrave;\\u4060ilde;\\u42dcond;\\u62c4ferentialD;\\u6146\\u0470\\u033d\\0\\0\\0\\u0342\\u0354\\0\\u0405f;\\uc000\\ud835\\udd3b\\u0180;DE\\u0348\\u0349\\u034d\\u40a8ot;\\u60dcqual;\\u6250ble\\u0300CDLRUV\\u0363\\u0372\\u0382\\u03cf\\u03e2\\u03f8ontourIntegra\\xec\\u0239o\\u0274\\u0379\\0\\0\\u037b\\xbb\\u0349nArrow;\\u61d3\\u0100eo\\u0387\\u03a4ft\\u0180ART\\u0390\\u0396\\u03a1rrow;\\u61d0ightArrow;\\u61d4e\\xe5\\u02cang\\u0100LR\\u03ab\\u03c4eft\\u0100AR\\u03b3\\u03b9rrow;\\u67f8ightArrow;\\u67faightArrow;\\u67f9ight\\u0100AT\\u03d8\\u03derrow;\\u61d2ee;\\u62a8p\\u0241\\u03e9\\0\\0\\u03efrrow;\\u61d1ownArrow;\\u61d5erticalBar;\\u6225n\\u0300ABLRTa\\u0412\\u042a\\u0430\\u045e\\u047f\\u037crrow\\u0180;BU\\u041d\\u041e\\u0422\\u6193ar;\\u6913pArrow;\\u61f5reve;\\u4311eft\\u02d2\\u043a\\0\\u0446\\0\\u0450ightVector;\\u6950eeVector;\\u695eector\\u0100;B\\u0459\\u045a\\u61bdar;\\u6956ight\\u01d4\\u0467\\0\\u0471eeVector;\\u695fector\\u0100;B\\u047a\\u047b\\u61c1ar;\\u6957ee\\u0100;A\\u0486\\u0487\\u62a4rrow;\\u61a7\\u0100ct\\u0492\\u0497r;\\uc000\\ud835\\udc9frok;\\u4110\\u0800NTacdfglmopqstux\\u04bd\\u04c0\\u04c4\\u04cb\\u04de\\u04e2\\u04e7\\u04ee\\u04f5\\u0521\\u052f\\u0536\\u0552\\u055d\\u0560\\u0565G;\\u414aH\\u803b\\xd0\\u40d0cute\\u803b\\xc9\\u40c9\\u0180aiy\\u04d2\\u04d7\\u04dcron;\\u411arc\\u803b\\xca\\u40ca;\\u442dot;\\u4116r;\\uc000\\ud835\\udd08rave\\u803b\\xc8\\u40c8ement;\\u6208\\u0100ap\\u04fa\\u04fecr;\\u4112ty\\u0253\\u0506\\0\\0\\u0512mallSquare;\\u65fberySmallSquare;\\u65ab\\u0100gp\\u0526\\u052aon;\\u4118f;\\uc000\\ud835\\udd3csilon;\\u4395u\\u0100ai\\u053c\\u0549l\\u0100;T\\u0542\\u0543\\u6a75ilde;\\u6242librium;\\u61cc\\u0100ci\\u0557\\u055ar;\\u6130m;\\u6a73a;\\u4397ml\\u803b\\xcb\\u40cb\\u0100ip\\u056a\\u056fsts;\\u6203onentialE;\\u6147\\u0280cfios\\u0585\\u0588\\u058d\\u05b2\\u05ccy;\\u4424r;\\uc000\\ud835\\udd09lled\\u0253\\u0597\\0\\0\\u05a3mallSquare;\\u65fcerySmallSquare;\\u65aa\\u0370\\u05ba\\0\\u05bf\\0\\0\\u05c4f;\\uc000\\ud835\\udd3dAll;\\u6200riertrf;\\u6131c\\xf2\\u05cb\\u0600JTabcdfgorst\\u05e8\\u05ec\\u05ef\\u05fa\\u0600\\u0612\\u0616\\u061b\\u061d\\u0623\\u066c\\u0672cy;\\u4403\\u803b>\\u403emma\\u0100;d\\u05f7\\u05f8\\u4393;\\u43dcreve;\\u411e\\u0180eiy\\u0607\\u060c\\u0610dil;\\u4122rc;\\u411c;\\u4413ot;\\u4120r;\\uc000\\ud835\\udd0a;\\u62d9pf;\\uc000\\ud835\\udd3eeater\\u0300EFGLST\\u0635\\u0644\\u064e\\u0656\\u065b\\u0666qual\\u0100;L\\u063e\\u063f\\u6265ess;\\u62dbullEqual;\\u6267reater;\\u6aa2ess;\\u6277lantEqual;\\u6a7eilde;\\u6273cr;\\uc000\\ud835\\udca2;\\u626b\\u0400Aacfiosu\\u0685\\u068b\\u0696\\u069b\\u069e\\u06aa\\u06be\\u06caRDcy;\\u442a\\u0100ct\\u0690\\u0694ek;\\u42c7;\\u405eirc;\\u4124r;\\u610clbertSpace;\\u610b\\u01f0\\u06af\\0\\u06b2f;\\u610dizontalLine;\\u6500\\u0100ct\\u06c3\\u06c5\\xf2\\u06a9rok;\\u4126mp\\u0144\\u06d0\\u06d8ownHum\\xf0\\u012fqual;\\u624f\\u0700EJOacdfgmnostu\\u06fa\\u06fe\\u0703\\u0707\\u070e\\u071a\\u071e\\u0721\\u0728\\u0744\\u0778\\u078b\\u078f\\u0795cy;\\u4415lig;\\u4132cy;\\u4401cute\\u803b\\xcd\\u40cd\\u0100iy\\u0713\\u0718rc\\u803b\\xce\\u40ce;\\u4418ot;\\u4130r;\\u6111rave\\u803b\\xcc\\u40cc\\u0180;ap\\u0720\\u072f\\u073f\\u0100cg\\u0734\\u0737r;\\u412ainaryI;\\u6148lie\\xf3\\u03dd\\u01f4\\u0749\\0\\u0762\\u0100;e\\u074d\\u074e\\u622c\\u0100gr\\u0753\\u0758ral;\\u622bsection;\\u62c2isible\\u0100CT\\u076c\\u0772omma;\\u6063imes;\\u6062\\u0180gpt\\u077f\\u0783\\u0788on;\\u412ef;\\uc000\\ud835\\udd40a;\\u4399cr;\\u6110ilde;\\u4128\\u01eb\\u079a\\0\\u079ecy;\\u4406l\\u803b\\xcf\\u40cf\\u0280cfosu\\u07ac\\u07b7\\u07bc\\u07c2\\u07d0\\u0100iy\\u07b1\\u07b5rc;\\u4134;\\u4419r;\\uc000\\ud835\\udd0dpf;\\uc000\\ud835\\udd41\\u01e3\\u07c7\\0\\u07ccr;\\uc000\\ud835\\udca5rcy;\\u4408kcy;\\u4404\\u0380HJacfos\\u07e4\\u07e8\\u07ec\\u07f1\\u07fd\\u0802\\u0808cy;\\u4425cy;\\u440cppa;\\u439a\\u0100ey\\u07f6\\u07fbdil;\\u4136;\\u441ar;\\uc000\\ud835\\udd0epf;\\uc000\\ud835\\udd42cr;\\uc000\\ud835\\udca6\\u0580JTaceflmost\\u0825\\u0829\\u082c\\u0850\\u0863\\u09b3\\u09b8\\u09c7\\u09cd\\u0a37\\u0a47cy;\\u4409\\u803b<\\u403c\\u0280cmnpr\\u0837\\u083c\\u0841\\u0844\\u084dute;\\u4139bda;\\u439bg;\\u67ealacetrf;\\u6112r;\\u619e\\u0180aey\\u0857\\u085c\\u0861ron;\\u413ddil;\\u413b;\\u441b\\u0100fs\\u0868\\u0970t\\u0500ACDFRTUVar\\u087e\\u08a9\\u08b1\\u08e0\\u08e6\\u08fc\\u092f\\u095b\\u0390\\u096a\\u0100nr\\u0883\\u088fgleBracket;\\u67e8row\\u0180;BR\\u0899\\u089a\\u089e\\u6190ar;\\u61e4ightArrow;\\u61c6eiling;\\u6308o\\u01f5\\u08b7\\0\\u08c3bleBracket;\\u67e6n\\u01d4\\u08c8\\0\\u08d2eeVector;\\u6961ector\\u0100;B\\u08db\\u08dc\\u61c3ar;\\u6959loor;\\u630aight\\u0100AV\\u08ef\\u08f5rrow;\\u6194ector;\\u694e\\u0100er\\u0901\\u0917e\\u0180;AV\\u0909\\u090a\\u0910\\u62a3rrow;\\u61a4ector;\\u695aiangle\\u0180;BE\\u0924\\u0925\\u0929\\u62b2ar;\\u69cfqual;\\u62b4p\\u0180DTV\\u0937\\u0942\\u094cownVector;\\u6951eeVector;\\u6960ector\\u0100;B\\u0956\\u0957\\u61bfar;\\u6958ector\\u0100;B\\u0965\\u0966\\u61bcar;\\u6952ight\\xe1\\u039cs\\u0300EFGLST\\u097e\\u098b\\u0995\\u099d\\u09a2\\u09adqualGreater;\\u62daullEqual;\\u6266reater;\\u6276ess;\\u6aa1lantEqual;\\u6a7dilde;\\u6272r;\\uc000\\ud835\\udd0f\\u0100;e\\u09bd\\u09be\\u62d8ftarrow;\\u61daidot;\\u413f\\u0180npw\\u09d4\\u0a16\\u0a1bg\\u0200LRlr\\u09de\\u09f7\\u0a02\\u0a10eft\\u0100AR\\u09e6\\u09ecrrow;\\u67f5ightArrow;\\u67f7ightArrow;\\u67f6eft\\u0100ar\\u03b3\\u0a0aight\\xe1\\u03bfight\\xe1\\u03caf;\\uc000\\ud835\\udd43er\\u0100LR\\u0a22\\u0a2ceftArrow;\\u6199ightArrow;\\u6198\\u0180cht\\u0a3e\\u0a40\\u0a42\\xf2\\u084c;\\u61b0rok;\\u4141;\\u626a\\u0400acefiosu\\u0a5a\\u0a5d\\u0a60\\u0a77\\u0a7c\\u0a85\\u0a8b\\u0a8ep;\\u6905y;\\u441c\\u0100dl\\u0a65\\u0a6fiumSpace;\\u605flintrf;\\u6133r;\\uc000\\ud835\\udd10nusPlus;\\u6213pf;\\uc000\\ud835\\udd44c\\xf2\\u0a76;\\u439c\\u0480Jacefostu\\u0aa3\\u0aa7\\u0aad\\u0ac0\\u0b14\\u0b19\\u0d91\\u0d97\\u0d9ecy;\\u440acute;\\u4143\\u0180aey\\u0ab4\\u0ab9\\u0aberon;\\u4147dil;\\u4145;\\u441d\\u0180gsw\\u0ac7\\u0af0\\u0b0eative\\u0180MTV\\u0ad3\\u0adf\\u0ae8ediumSpace;\\u600bhi\\u0100cn\\u0ae6\\u0ad8\\xeb\\u0ad9eryThi\\xee\\u0ad9ted\\u0100GL\\u0af8\\u0b06reaterGreate\\xf2\\u0673essLes\\xf3\\u0a48Line;\\u400ar;\\uc000\\ud835\\udd11\\u0200Bnpt\\u0b22\\u0b28\\u0b37\\u0b3areak;\\u6060BreakingSpace;\\u40a0f;\\u6115\\u0680;CDEGHLNPRSTV\\u0b55\\u0b56\\u0b6a\\u0b7c\\u0ba1\\u0beb\\u0c04\\u0c5e\\u0c84\\u0ca6\\u0cd8\\u0d61\\u0d85\\u6aec\\u0100ou\\u0b5b\\u0b64ngruent;\\u6262pCap;\\u626doubleVerticalBar;\\u6226\\u0180lqx\\u0b83\\u0b8a\\u0b9bement;\\u6209ual\\u0100;T\\u0b92\\u0b93\\u6260ilde;\\uc000\\u2242\\u0338ists;\\u6204reater\\u0380;EFGLST\\u0bb6\\u0bb7\\u0bbd\\u0bc9\\u0bd3\\u0bd8\\u0be5\\u626fqual;\\u6271ullEqual;\\uc000\\u2267\\u0338reater;\\uc000\\u226b\\u0338ess;\\u6279lantEqual;\\uc000\\u2a7e\\u0338ilde;\\u6275ump\\u0144\\u0bf2\\u0bfdownHump;\\uc000\\u224e\\u0338qual;\\uc000\\u224f\\u0338e\\u0100fs\\u0c0a\\u0c27tTriangle\\u0180;BE\\u0c1a\\u0c1b\\u0c21\\u62eaar;\\uc000\\u29cf\\u0338qual;\\u62ecs\\u0300;EGLST\\u0c35\\u0c36\\u0c3c\\u0c44\\u0c4b\\u0c58\\u626equal;\\u6270reater;\\u6278ess;\\uc000\\u226a\\u0338lantEqual;\\uc000\\u2a7d\\u0338ilde;\\u6274ested\\u0100GL\\u0c68\\u0c79reaterGreater;\\uc000\\u2aa2\\u0338essLess;\\uc000\\u2aa1\\u0338recedes\\u0180;ES\\u0c92\\u0c93\\u0c9b\\u6280qual;\\uc000\\u2aaf\\u0338lantEqual;\\u62e0\\u0100ei\\u0cab\\u0cb9verseElement;\\u620cghtTriangle\\u0180;BE\\u0ccb\\u0ccc\\u0cd2\\u62ebar;\\uc000\\u29d0\\u0338qual;\\u62ed\\u0100qu\\u0cdd\\u0d0cuareSu\\u0100bp\\u0ce8\\u0cf9set\\u0100;E\\u0cf0\\u0cf3\\uc000\\u228f\\u0338qual;\\u62e2erset\\u0100;E\\u0d03\\u0d06\\uc000\\u2290\\u0338qual;\\u62e3\\u0180bcp\\u0d13\\u0d24\\u0d4eset\\u0100;E\\u0d1b\\u0d1e\\uc000\\u2282\\u20d2qual;\\u6288ceeds\\u0200;EST\\u0d32\\u0d33\\u0d3b\\u0d46\\u6281qual;\\uc000\\u2ab0\\u0338lantEqual;\\u62e1ilde;\\uc000\\u227f\\u0338erset\\u0100;E\\u0d58\\u0d5b\\uc000\\u2283\\u20d2qual;\\u6289ilde\\u0200;EFT\\u0d6e\\u0d6f\\u0d75\\u0d7f\\u6241qual;\\u6244ullEqual;\\u6247ilde;\\u6249erticalBar;\\u6224cr;\\uc000\\ud835\\udca9ilde\\u803b\\xd1\\u40d1;\\u439d\\u0700Eacdfgmoprstuv\\u0dbd\\u0dc2\\u0dc9\\u0dd5\\u0ddb\\u0de0\\u0de7\\u0dfc\\u0e02\\u0e20\\u0e22\\u0e32\\u0e3f\\u0e44lig;\\u4152cute\\u803b\\xd3\\u40d3\\u0100iy\\u0dce\\u0dd3rc\\u803b\\xd4\\u40d4;\\u441eblac;\\u4150r;\\uc000\\ud835\\udd12rave\\u803b\\xd2\\u40d2\\u0180aei\\u0dee\\u0df2\\u0df6cr;\\u414cga;\\u43a9cron;\\u439fpf;\\uc000\\ud835\\udd46enCurly\\u0100DQ\\u0e0e\\u0e1aoubleQuote;\\u601cuote;\\u6018;\\u6a54\\u0100cl\\u0e27\\u0e2cr;\\uc000\\ud835\\udcaaash\\u803b\\xd8\\u40d8i\\u016c\\u0e37\\u0e3cde\\u803b\\xd5\\u40d5es;\\u6a37ml\\u803b\\xd6\\u40d6er\\u0100BP\\u0e4b\\u0e60\\u0100ar\\u0e50\\u0e53r;\\u603eac\\u0100ek\\u0e5a\\u0e5c;\\u63deet;\\u63b4arenthesis;\\u63dc\\u0480acfhilors\\u0e7f\\u0e87\\u0e8a\\u0e8f\\u0e92\\u0e94\\u0e9d\\u0eb0\\u0efcrtialD;\\u6202y;\\u441fr;\\uc000\\ud835\\udd13i;\\u43a6;\\u43a0usMinus;\\u40b1\\u0100ip\\u0ea2\\u0eadncareplan\\xe5\\u069df;\\u6119\\u0200;eio\\u0eb9\\u0eba\\u0ee0\\u0ee4\\u6abbcedes\\u0200;EST\\u0ec8\\u0ec9\\u0ecf\\u0eda\\u627aqual;\\u6aaflantEqual;\\u627cilde;\\u627eme;\\u6033\\u0100dp\\u0ee9\\u0eeeuct;\\u620fortion\\u0100;a\\u0225\\u0ef9l;\\u621d\\u0100ci\\u0f01\\u0f06r;\\uc000\\ud835\\udcab;\\u43a8\\u0200Ufos\\u0f11\\u0f16\\u0f1b\\u0f1fOT\\u803b\\\"\\u4022r;\\uc000\\ud835\\udd14pf;\\u611acr;\\uc000\\ud835\\udcac\\u0600BEacefhiorsu\\u0f3e\\u0f43\\u0f47\\u0f60\\u0f73\\u0fa7\\u0faa\\u0fad\\u1096\\u10a9\\u10b4\\u10bearr;\\u6910G\\u803b\\xae\\u40ae\\u0180cnr\\u0f4e\\u0f53\\u0f56ute;\\u4154g;\\u67ebr\\u0100;t\\u0f5c\\u0f5d\\u61a0l;\\u6916\\u0180aey\\u0f67\\u0f6c\\u0f71ron;\\u4158dil;\\u4156;\\u4420\\u0100;v\\u0f78\\u0f79\\u611cerse\\u0100EU\\u0f82\\u0f99\\u0100lq\\u0f87\\u0f8eement;\\u620builibrium;\\u61cbpEquilibrium;\\u696fr\\xbb\\u0f79o;\\u43a1ght\\u0400ACDFTUVa\\u0fc1\\u0feb\\u0ff3\\u1022\\u1028\\u105b\\u1087\\u03d8\\u0100nr\\u0fc6\\u0fd2gleBracket;\\u67e9row\\u0180;BL\\u0fdc\\u0fdd\\u0fe1\\u6192ar;\\u61e5eftArrow;\\u61c4eiling;\\u6309o\\u01f5\\u0ff9\\0\\u1005bleBracket;\\u67e7n\\u01d4\\u100a\\0\\u1014eeVector;\\u695dector\\u0100;B\\u101d\\u101e\\u61c2ar;\\u6955loor;\\u630b\\u0100er\\u102d\\u1043e\\u0180;AV\\u1035\\u1036\\u103c\\u62a2rrow;\\u61a6ector;\\u695biangle\\u0180;BE\\u1050\\u1051\\u1055\\u62b3ar;\\u69d0qual;\\u62b5p\\u0180DTV\\u1063\\u106e\\u1078ownVector;\\u694feeVector;\\u695cector\\u0100;B\\u1082\\u1083\\u61bear;\\u6954ector\\u0100;B\\u1091\\u1092\\u61c0ar;\\u6953\\u0100pu\\u109b\\u109ef;\\u611dndImplies;\\u6970ightarrow;\\u61db\\u0100ch\\u10b9\\u10bcr;\\u611b;\\u61b1leDelayed;\\u69f4\\u0680HOacfhimoqstu\\u10e4\\u10f1\\u10f7\\u10fd\\u1119\\u111e\\u1151\\u1156\\u1161\\u1167\\u11b5\\u11bb\\u11bf\\u0100Cc\\u10e9\\u10eeHcy;\\u4429y;\\u4428FTcy;\\u442ccute;\\u415a\\u0280;aeiy\\u1108\\u1109\\u110e\\u1113\\u1117\\u6abcron;\\u4160dil;\\u415erc;\\u415c;\\u4421r;\\uc000\\ud835\\udd16ort\\u0200DLRU\\u112a\\u1134\\u113e\\u1149ownArrow\\xbb\\u041eeftArrow\\xbb\\u089aightArrow\\xbb\\u0fddpArrow;\\u6191gma;\\u43a3allCircle;\\u6218pf;\\uc000\\ud835\\udd4a\\u0272\\u116d\\0\\0\\u1170t;\\u621aare\\u0200;ISU\\u117b\\u117c\\u1189\\u11af\\u65a1ntersection;\\u6293u\\u0100bp\\u118f\\u119eset\\u0100;E\\u1197\\u1198\\u628fqual;\\u6291erset\\u0100;E\\u11a8\\u11a9\\u6290qual;\\u6292nion;\\u6294cr;\\uc000\\ud835\\udcaear;\\u62c6\\u0200bcmp\\u11c8\\u11db\\u1209\\u120b\\u0100;s\\u11cd\\u11ce\\u62d0et\\u0100;E\\u11cd\\u11d5qual;\\u6286\\u0100ch\\u11e0\\u1205eeds\\u0200;EST\\u11ed\\u11ee\\u11f4\\u11ff\\u627bqual;\\u6ab0lantEqual;\\u627dilde;\\u627fTh\\xe1\\u0f8c;\\u6211\\u0180;es\\u1212\\u1213\\u1223\\u62d1rset\\u0100;E\\u121c\\u121d\\u6283qual;\\u6287et\\xbb\\u1213\\u0580HRSacfhiors\\u123e\\u1244\\u1249\\u1255\\u125e\\u1271\\u1276\\u129f\\u12c2\\u12c8\\u12d1ORN\\u803b\\xde\\u40deADE;\\u6122\\u0100Hc\\u124e\\u1252cy;\\u440by;\\u4426\\u0100bu\\u125a\\u125c;\\u4009;\\u43a4\\u0180aey\\u1265\\u126a\\u126fron;\\u4164dil;\\u4162;\\u4422r;\\uc000\\ud835\\udd17\\u0100ei\\u127b\\u1289\\u01f2\\u1280\\0\\u1287efore;\\u6234a;\\u4398\\u0100cn\\u128e\\u1298kSpace;\\uc000\\u205f\\u200aSpace;\\u6009lde\\u0200;EFT\\u12ab\\u12ac\\u12b2\\u12bc\\u623cqual;\\u6243ullEqual;\\u6245ilde;\\u6248pf;\\uc000\\ud835\\udd4bipleDot;\\u60db\\u0100ct\\u12d6\\u12dbr;\\uc000\\ud835\\udcafrok;\\u4166\\u0ae1\\u12f7\\u130e\\u131a\\u1326\\0\\u132c\\u1331\\0\\0\\0\\0\\0\\u1338\\u133d\\u1377\\u1385\\0\\u13ff\\u1404\\u140a\\u1410\\u0100cr\\u12fb\\u1301ute\\u803b\\xda\\u40dar\\u0100;o\\u1307\\u1308\\u619fcir;\\u6949r\\u01e3\\u1313\\0\\u1316y;\\u440eve;\\u416c\\u0100iy\\u131e\\u1323rc\\u803b\\xdb\\u40db;\\u4423blac;\\u4170r;\\uc000\\ud835\\udd18rave\\u803b\\xd9\\u40d9acr;\\u416a\\u0100di\\u1341\\u1369er\\u0100BP\\u1348\\u135d\\u0100ar\\u134d\\u1350r;\\u405fac\\u0100ek\\u1357\\u1359;\\u63dfet;\\u63b5arenthesis;\\u63ddon\\u0100;P\\u1370\\u1371\\u62c3lus;\\u628e\\u0100gp\\u137b\\u137fon;\\u4172f;\\uc000\\ud835\\udd4c\\u0400ADETadps\\u1395\\u13ae\\u13b8\\u13c4\\u03e8\\u13d2\\u13d7\\u13f3rrow\\u0180;BD\\u1150\\u13a0\\u13a4ar;\\u6912ownArrow;\\u61c5ownArrow;\\u6195quilibrium;\\u696eee\\u0100;A\\u13cb\\u13cc\\u62a5rrow;\\u61a5own\\xe1\\u03f3er\\u0100LR\\u13de\\u13e8eftArrow;\\u6196ightArrow;\\u6197i\\u0100;l\\u13f9\\u13fa\\u43d2on;\\u43a5ing;\\u416ecr;\\uc000\\ud835\\udcb0ilde;\\u4168ml\\u803b\\xdc\\u40dc\\u0480Dbcdefosv\\u1427\\u142c\\u1430\\u1433\\u143e\\u1485\\u148a\\u1490\\u1496ash;\\u62abar;\\u6aeby;\\u4412ash\\u0100;l\\u143b\\u143c\\u62a9;\\u6ae6\\u0100er\\u1443\\u1445;\\u62c1\\u0180bty\\u144c\\u1450\\u147aar;\\u6016\\u0100;i\\u144f\\u1455cal\\u0200BLST\\u1461\\u1465\\u146a\\u1474ar;\\u6223ine;\\u407ceparator;\\u6758ilde;\\u6240ThinSpace;\\u600ar;\\uc000\\ud835\\udd19pf;\\uc000\\ud835\\udd4dcr;\\uc000\\ud835\\udcb1dash;\\u62aa\\u0280cefos\\u14a7\\u14ac\\u14b1\\u14b6\\u14bcirc;\\u4174dge;\\u62c0r;\\uc000\\ud835\\udd1apf;\\uc000\\ud835\\udd4ecr;\\uc000\\ud835\\udcb2\\u0200fios\\u14cb\\u14d0\\u14d2\\u14d8r;\\uc000\\ud835\\udd1b;\\u439epf;\\uc000\\ud835\\udd4fcr;\\uc000\\ud835\\udcb3\\u0480AIUacfosu\\u14f1\\u14f5\\u14f9\\u14fd\\u1504\\u150f\\u1514\\u151a\\u1520cy;\\u442fcy;\\u4407cy;\\u442ecute\\u803b\\xdd\\u40dd\\u0100iy\\u1509\\u150drc;\\u4176;\\u442br;\\uc000\\ud835\\udd1cpf;\\uc000\\ud835\\udd50cr;\\uc000\\ud835\\udcb4ml;\\u4178\\u0400Hacdefos\\u1535\\u1539\\u153f\\u154b\\u154f\\u155d\\u1560\\u1564cy;\\u4416cute;\\u4179\\u0100ay\\u1544\\u1549ron;\\u417d;\\u4417ot;\\u417b\\u01f2\\u1554\\0\\u155boWidt\\xe8\\u0ad9a;\\u4396r;\\u6128pf;\\u6124cr;\\uc000\\ud835\\udcb5\\u0be1\\u1583\\u158a\\u1590\\0\\u15b0\\u15b6\\u15bf\\0\\0\\0\\0\\u15c6\\u15db\\u15eb\\u165f\\u166d\\0\\u1695\\u169b\\u16b2\\u16b9\\0\\u16becute\\u803b\\xe1\\u40e1reve;\\u4103\\u0300;Ediuy\\u159c\\u159d\\u15a1\\u15a3\\u15a8\\u15ad\\u623e;\\uc000\\u223e\\u0333;\\u623frc\\u803b\\xe2\\u40e2te\\u80bb\\xb4\\u0306;\\u4430lig\\u803b\\xe6\\u40e6\\u0100;r\\xb2\\u15ba;\\uc000\\ud835\\udd1erave\\u803b\\xe0\\u40e0\\u0100ep\\u15ca\\u15d6\\u0100fp\\u15cf\\u15d4sym;\\u6135\\xe8\\u15d3ha;\\u43b1\\u0100ap\\u15dfc\\u0100cl\\u15e4\\u15e7r;\\u4101g;\\u6a3f\\u0264\\u15f0\\0\\0\\u160a\\u0280;adsv\\u15fa\\u15fb\\u15ff\\u1601\\u1607\\u6227nd;\\u6a55;\\u6a5clope;\\u6a58;\\u6a5a\\u0380;elmrsz\\u1618\\u1619\\u161b\\u161e\\u163f\\u164f\\u1659\\u6220;\\u69a4e\\xbb\\u1619sd\\u0100;a\\u1625\\u1626\\u6221\\u0461\\u1630\\u1632\\u1634\\u1636\\u1638\\u163a\\u163c\\u163e;\\u69a8;\\u69a9;\\u69aa;\\u69ab;\\u69ac;\\u69ad;\\u69ae;\\u69aft\\u0100;v\\u1645\\u1646\\u621fb\\u0100;d\\u164c\\u164d\\u62be;\\u699d\\u0100pt\\u1654\\u1657h;\\u6222\\xbb\\xb9arr;\\u637c\\u0100gp\\u1663\\u1667on;\\u4105f;\\uc000\\ud835\\udd52\\u0380;Eaeiop\\u12c1\\u167b\\u167d\\u1682\\u1684\\u1687\\u168a;\\u6a70cir;\\u6a6f;\\u624ad;\\u624bs;\\u4027rox\\u0100;e\\u12c1\\u1692\\xf1\\u1683ing\\u803b\\xe5\\u40e5\\u0180cty\\u16a1\\u16a6\\u16a8r;\\uc000\\ud835\\udcb6;\\u402amp\\u0100;e\\u12c1\\u16af\\xf1\\u0288ilde\\u803b\\xe3\\u40e3ml\\u803b\\xe4\\u40e4\\u0100ci\\u16c2\\u16c8onin\\xf4\\u0272nt;\\u6a11\\u0800Nabcdefiklnoprsu\\u16ed\\u16f1\\u1730\\u173c\\u1743\\u1748\\u1778\\u177d\\u17e0\\u17e6\\u1839\\u1850\\u170d\\u193d\\u1948\\u1970ot;\\u6aed\\u0100cr\\u16f6\\u171ek\\u0200ceps\\u1700\\u1705\\u170d\\u1713ong;\\u624cpsilon;\\u43f6rime;\\u6035im\\u0100;e\\u171a\\u171b\\u623dq;\\u62cd\\u0176\\u1722\\u1726ee;\\u62bded\\u0100;g\\u172c\\u172d\\u6305e\\xbb\\u172drk\\u0100;t\\u135c\\u1737brk;\\u63b6\\u0100oy\\u1701\\u1741;\\u4431quo;\\u601e\\u0280cmprt\\u1753\\u175b\\u1761\\u1764\\u1768aus\\u0100;e\\u010a\\u0109ptyv;\\u69b0s\\xe9\\u170cno\\xf5\\u0113\\u0180ahw\\u176f\\u1771\\u1773;\\u43b2;\\u6136een;\\u626cr;\\uc000\\ud835\\udd1fg\\u0380costuvw\\u178d\\u179d\\u17b3\\u17c1\\u17d5\\u17db\\u17de\\u0180aiu\\u1794\\u1796\\u179a\\xf0\\u0760rc;\\u65efp\\xbb\\u1371\\u0180dpt\\u17a4\\u17a8\\u17adot;\\u6a00lus;\\u6a01imes;\\u6a02\\u0271\\u17b9\\0\\0\\u17becup;\\u6a06ar;\\u6605riangle\\u0100du\\u17cd\\u17d2own;\\u65bdp;\\u65b3plus;\\u6a04e\\xe5\\u1444\\xe5\\u14adarow;\\u690d\\u0180ako\\u17ed\\u1826\\u1835\\u0100cn\\u17f2\\u1823k\\u0180lst\\u17fa\\u05ab\\u1802ozenge;\\u69ebriangle\\u0200;dlr\\u1812\\u1813\\u1818\\u181d\\u65b4own;\\u65beeft;\\u65c2ight;\\u65b8k;\\u6423\\u01b1\\u182b\\0\\u1833\\u01b2\\u182f\\0\\u1831;\\u6592;\\u65914;\\u6593ck;\\u6588\\u0100eo\\u183e\\u184d\\u0100;q\\u1843\\u1846\\uc000=\\u20e5uiv;\\uc000\\u2261\\u20e5t;\\u6310\\u0200ptwx\\u1859\\u185e\\u1867\\u186cf;\\uc000\\ud835\\udd53\\u0100;t\\u13cb\\u1863om\\xbb\\u13cctie;\\u62c8\\u0600DHUVbdhmptuv\\u1885\\u1896\\u18aa\\u18bb\\u18d7\\u18db\\u18ec\\u18ff\\u1905\\u190a\\u1910\\u1921\\u0200LRlr\\u188e\\u1890\\u1892\\u1894;\\u6557;\\u6554;\\u6556;\\u6553\\u0280;DUdu\\u18a1\\u18a2\\u18a4\\u18a6\\u18a8\\u6550;\\u6566;\\u6569;\\u6564;\\u6567\\u0200LRlr\\u18b3\\u18b5\\u18b7\\u18b9;\\u655d;\\u655a;\\u655c;\\u6559\\u0380;HLRhlr\\u18ca\\u18cb\\u18cd\\u18cf\\u18d1\\u18d3\\u18d5\\u6551;\\u656c;\\u6563;\\u6560;\\u656b;\\u6562;\\u655fox;\\u69c9\\u0200LRlr\\u18e4\\u18e6\\u18e8\\u18ea;\\u6555;\\u6552;\\u6510;\\u650c\\u0280;DUdu\\u06bd\\u18f7\\u18f9\\u18fb\\u18fd;\\u6565;\\u6568;\\u652c;\\u6534inus;\\u629flus;\\u629eimes;\\u62a0\\u0200LRlr\\u1919\\u191b\\u191d\\u191f;\\u655b;\\u6558;\\u6518;\\u6514\\u0380;HLRhlr\\u1930\\u1931\\u1933\\u1935\\u1937\\u1939\\u193b\\u6502;\\u656a;\\u6561;\\u655e;\\u653c;\\u6524;\\u651c\\u0100ev\\u0123\\u1942bar\\u803b\\xa6\\u40a6\\u0200ceio\\u1951\\u1956\\u195a\\u1960r;\\uc000\\ud835\\udcb7mi;\\u604fm\\u0100;e\\u171a\\u171cl\\u0180;bh\\u1968\\u1969\\u196b\\u405c;\\u69c5sub;\\u67c8\\u016c\\u1974\\u197el\\u0100;e\\u1979\\u197a\\u6022t\\xbb\\u197ap\\u0180;Ee\\u012f\\u1985\\u1987;\\u6aae\\u0100;q\\u06dc\\u06db\\u0ce1\\u19a7\\0\\u19e8\\u1a11\\u1a15\\u1a32\\0\\u1a37\\u1a50\\0\\0\\u1ab4\\0\\0\\u1ac1\\0\\0\\u1b21\\u1b2e\\u1b4d\\u1b52\\0\\u1bfd\\0\\u1c0c\\u0180cpr\\u19ad\\u19b2\\u19ddute;\\u4107\\u0300;abcds\\u19bf\\u19c0\\u19c4\\u19ca\\u19d5\\u19d9\\u6229nd;\\u6a44rcup;\\u6a49\\u0100au\\u19cf\\u19d2p;\\u6a4bp;\\u6a47ot;\\u6a40;\\uc000\\u2229\\ufe00\\u0100eo\\u19e2\\u19e5t;\\u6041\\xee\\u0693\\u0200aeiu\\u19f0\\u19fb\\u1a01\\u1a05\\u01f0\\u19f5\\0\\u19f8s;\\u6a4don;\\u410ddil\\u803b\\xe7\\u40e7rc;\\u4109ps\\u0100;s\\u1a0c\\u1a0d\\u6a4cm;\\u6a50ot;\\u410b\\u0180dmn\\u1a1b\\u1a20\\u1a26il\\u80bb\\xb8\\u01adptyv;\\u69b2t\\u8100\\xa2;e\\u1a2d\\u1a2e\\u40a2r\\xe4\\u01b2r;\\uc000\\ud835\\udd20\\u0180cei\\u1a3d\\u1a40\\u1a4dy;\\u4447ck\\u0100;m\\u1a47\\u1a48\\u6713ark\\xbb\\u1a48;\\u43c7r\\u0380;Ecefms\\u1a5f\\u1a60\\u1a62\\u1a6b\\u1aa4\\u1aaa\\u1aae\\u65cb;\\u69c3\\u0180;el\\u1a69\\u1a6a\\u1a6d\\u42c6q;\\u6257e\\u0261\\u1a74\\0\\0\\u1a88rrow\\u0100lr\\u1a7c\\u1a81eft;\\u61baight;\\u61bb\\u0280RSacd\\u1a92\\u1a94\\u1a96\\u1a9a\\u1a9f\\xbb\\u0f47;\\u64c8st;\\u629birc;\\u629aash;\\u629dnint;\\u6a10id;\\u6aefcir;\\u69c2ubs\\u0100;u\\u1abb\\u1abc\\u6663it\\xbb\\u1abc\\u02ec\\u1ac7\\u1ad4\\u1afa\\0\\u1b0aon\\u0100;e\\u1acd\\u1ace\\u403a\\u0100;q\\xc7\\xc6\\u026d\\u1ad9\\0\\0\\u1ae2a\\u0100;t\\u1ade\\u1adf\\u402c;\\u4040\\u0180;fl\\u1ae8\\u1ae9\\u1aeb\\u6201\\xee\\u1160e\\u0100mx\\u1af1\\u1af6ent\\xbb\\u1ae9e\\xf3\\u024d\\u01e7\\u1afe\\0\\u1b07\\u0100;d\\u12bb\\u1b02ot;\\u6a6dn\\xf4\\u0246\\u0180fry\\u1b10\\u1b14\\u1b17;\\uc000\\ud835\\udd54o\\xe4\\u0254\\u8100\\xa9;s\\u0155\\u1b1dr;\\u6117\\u0100ao\\u1b25\\u1b29rr;\\u61b5ss;\\u6717\\u0100cu\\u1b32\\u1b37r;\\uc000\\ud835\\udcb8\\u0100bp\\u1b3c\\u1b44\\u0100;e\\u1b41\\u1b42\\u6acf;\\u6ad1\\u0100;e\\u1b49\\u1b4a\\u6ad0;\\u6ad2dot;\\u62ef\\u0380delprvw\\u1b60\\u1b6c\\u1b77\\u1b82\\u1bac\\u1bd4\\u1bf9arr\\u0100lr\\u1b68\\u1b6a;\\u6938;\\u6935\\u0270\\u1b72\\0\\0\\u1b75r;\\u62dec;\\u62dfarr\\u0100;p\\u1b7f\\u1b80\\u61b6;\\u693d\\u0300;bcdos\\u1b8f\\u1b90\\u1b96\\u1ba1\\u1ba5\\u1ba8\\u622arcap;\\u6a48\\u0100au\\u1b9b\\u1b9ep;\\u6a46p;\\u6a4aot;\\u628dr;\\u6a45;\\uc000\\u222a\\ufe00\\u0200alrv\\u1bb5\\u1bbf\\u1bde\\u1be3rr\\u0100;m\\u1bbc\\u1bbd\\u61b7;\\u693cy\\u0180evw\\u1bc7\\u1bd4\\u1bd8q\\u0270\\u1bce\\0\\0\\u1bd2re\\xe3\\u1b73u\\xe3\\u1b75ee;\\u62ceedge;\\u62cfen\\u803b\\xa4\\u40a4earrow\\u0100lr\\u1bee\\u1bf3eft\\xbb\\u1b80ight\\xbb\\u1bbde\\xe4\\u1bdd\\u0100ci\\u1c01\\u1c07onin\\xf4\\u01f7nt;\\u6231lcty;\\u632d\\u0980AHabcdefhijlorstuwz\\u1c38\\u1c3b\\u1c3f\\u1c5d\\u1c69\\u1c75\\u1c8a\\u1c9e\\u1cac\\u1cb7\\u1cfb\\u1cff\\u1d0d\\u1d7b\\u1d91\\u1dab\\u1dbb\\u1dc6\\u1dcdr\\xf2\\u0381ar;\\u6965\\u0200glrs\\u1c48\\u1c4d\\u1c52\\u1c54ger;\\u6020eth;\\u6138\\xf2\\u1133h\\u0100;v\\u1c5a\\u1c5b\\u6010\\xbb\\u090a\\u016b\\u1c61\\u1c67arow;\\u690fa\\xe3\\u0315\\u0100ay\\u1c6e\\u1c73ron;\\u410f;\\u4434\\u0180;ao\\u0332\\u1c7c\\u1c84\\u0100gr\\u02bf\\u1c81r;\\u61catseq;\\u6a77\\u0180glm\\u1c91\\u1c94\\u1c98\\u803b\\xb0\\u40b0ta;\\u43b4ptyv;\\u69b1\\u0100ir\\u1ca3\\u1ca8sht;\\u697f;\\uc000\\ud835\\udd21ar\\u0100lr\\u1cb3\\u1cb5\\xbb\\u08dc\\xbb\\u101e\\u0280aegsv\\u1cc2\\u0378\\u1cd6\\u1cdc\\u1ce0m\\u0180;os\\u0326\\u1cca\\u1cd4nd\\u0100;s\\u0326\\u1cd1uit;\\u6666amma;\\u43ddin;\\u62f2\\u0180;io\\u1ce7\\u1ce8\\u1cf8\\u40f7de\\u8100\\xf7;o\\u1ce7\\u1cf0ntimes;\\u62c7n\\xf8\\u1cf7cy;\\u4452c\\u026f\\u1d06\\0\\0\\u1d0arn;\\u631eop;\\u630d\\u0280lptuw\\u1d18\\u1d1d\\u1d22\\u1d49\\u1d55lar;\\u4024f;\\uc000\\ud835\\udd55\\u0280;emps\\u030b\\u1d2d\\u1d37\\u1d3d\\u1d42q\\u0100;d\\u0352\\u1d33ot;\\u6251inus;\\u6238lus;\\u6214quare;\\u62a1blebarwedg\\xe5\\xfan\\u0180adh\\u112e\\u1d5d\\u1d67ownarrow\\xf3\\u1c83arpoon\\u0100lr\\u1d72\\u1d76ef\\xf4\\u1cb4igh\\xf4\\u1cb6\\u0162\\u1d7f\\u1d85karo\\xf7\\u0f42\\u026f\\u1d8a\\0\\0\\u1d8ern;\\u631fop;\\u630c\\u0180cot\\u1d98\\u1da3\\u1da6\\u0100ry\\u1d9d\\u1da1;\\uc000\\ud835\\udcb9;\\u4455l;\\u69f6rok;\\u4111\\u0100dr\\u1db0\\u1db4ot;\\u62f1i\\u0100;f\\u1dba\\u1816\\u65bf\\u0100ah\\u1dc0\\u1dc3r\\xf2\\u0429a\\xf2\\u0fa6angle;\\u69a6\\u0100ci\\u1dd2\\u1dd5y;\\u445fgrarr;\\u67ff\\u0900Dacdefglmnopqrstux\\u1e01\\u1e09\\u1e19\\u1e38\\u0578\\u1e3c\\u1e49\\u1e61\\u1e7e\\u1ea5\\u1eaf\\u1ebd\\u1ee1\\u1f2a\\u1f37\\u1f44\\u1f4e\\u1f5a\\u0100Do\\u1e06\\u1d34o\\xf4\\u1c89\\u0100cs\\u1e0e\\u1e14ute\\u803b\\xe9\\u40e9ter;\\u6a6e\\u0200aioy\\u1e22\\u1e27\\u1e31\\u1e36ron;\\u411br\\u0100;c\\u1e2d\\u1e2e\\u6256\\u803b\\xea\\u40ealon;\\u6255;\\u444dot;\\u4117\\u0100Dr\\u1e41\\u1e45ot;\\u6252;\\uc000\\ud835\\udd22\\u0180;rs\\u1e50\\u1e51\\u1e57\\u6a9aave\\u803b\\xe8\\u40e8\\u0100;d\\u1e5c\\u1e5d\\u6a96ot;\\u6a98\\u0200;ils\\u1e6a\\u1e6b\\u1e72\\u1e74\\u6a99nters;\\u63e7;\\u6113\\u0100;d\\u1e79\\u1e7a\\u6a95ot;\\u6a97\\u0180aps\\u1e85\\u1e89\\u1e97cr;\\u4113ty\\u0180;sv\\u1e92\\u1e93\\u1e95\\u6205et\\xbb\\u1e93p\\u01001;\\u1e9d\\u1ea4\\u0133\\u1ea1\\u1ea3;\\u6004;\\u6005\\u6003\\u0100gs\\u1eaa\\u1eac;\\u414bp;\\u6002\\u0100gp\\u1eb4\\u1eb8on;\\u4119f;\\uc000\\ud835\\udd56\\u0180als\\u1ec4\\u1ece\\u1ed2r\\u0100;s\\u1eca\\u1ecb\\u62d5l;\\u69e3us;\\u6a71i\\u0180;lv\\u1eda\\u1edb\\u1edf\\u43b5on\\xbb\\u1edb;\\u43f5\\u0200csuv\\u1eea\\u1ef3\\u1f0b\\u1f23\\u0100io\\u1eef\\u1e31rc\\xbb\\u1e2e\\u0269\\u1ef9\\0\\0\\u1efb\\xed\\u0548ant\\u0100gl\\u1f02\\u1f06tr\\xbb\\u1e5dess\\xbb\\u1e7a\\u0180aei\\u1f12\\u1f16\\u1f1als;\\u403dst;\\u625fv\\u0100;D\\u0235\\u1f20D;\\u6a78parsl;\\u69e5\\u0100Da\\u1f2f\\u1f33ot;\\u6253rr;\\u6971\\u0180cdi\\u1f3e\\u1f41\\u1ef8r;\\u612fo\\xf4\\u0352\\u0100ah\\u1f49\\u1f4b;\\u43b7\\u803b\\xf0\\u40f0\\u0100mr\\u1f53\\u1f57l\\u803b\\xeb\\u40ebo;\\u60ac\\u0180cip\\u1f61\\u1f64\\u1f67l;\\u4021s\\xf4\\u056e\\u0100eo\\u1f6c\\u1f74ctatio\\xee\\u0559nential\\xe5\\u0579\\u09e1\\u1f92\\0\\u1f9e\\0\\u1fa1\\u1fa7\\0\\0\\u1fc6\\u1fcc\\0\\u1fd3\\0\\u1fe6\\u1fea\\u2000\\0\\u2008\\u205allingdotse\\xf1\\u1e44y;\\u4444male;\\u6640\\u0180ilr\\u1fad\\u1fb3\\u1fc1lig;\\u8000\\ufb03\\u0269\\u1fb9\\0\\0\\u1fbdg;\\u8000\\ufb00ig;\\u8000\\ufb04;\\uc000\\ud835\\udd23lig;\\u8000\\ufb01lig;\\uc000fj\\u0180alt\\u1fd9\\u1fdc\\u1fe1t;\\u666dig;\\u8000\\ufb02ns;\\u65b1of;\\u4192\\u01f0\\u1fee\\0\\u1ff3f;\\uc000\\ud835\\udd57\\u0100ak\\u05bf\\u1ff7\\u0100;v\\u1ffc\\u1ffd\\u62d4;\\u6ad9artint;\\u6a0d\\u0100ao\\u200c\\u2055\\u0100cs\\u2011\\u2052\\u03b1\\u201a\\u2030\\u2038\\u2045\\u2048\\0\\u2050\\u03b2\\u2022\\u2025\\u2027\\u202a\\u202c\\0\\u202e\\u803b\\xbd\\u40bd;\\u6153\\u803b\\xbc\\u40bc;\\u6155;\\u6159;\\u615b\\u01b3\\u2034\\0\\u2036;\\u6154;\\u6156\\u02b4\\u203e\\u2041\\0\\0\\u2043\\u803b\\xbe\\u40be;\\u6157;\\u615c5;\\u6158\\u01b6\\u204c\\0\\u204e;\\u615a;\\u615d8;\\u615el;\\u6044wn;\\u6322cr;\\uc000\\ud835\\udcbb\\u0880Eabcdefgijlnorstv\\u2082\\u2089\\u209f\\u20a5\\u20b0\\u20b4\\u20f0\\u20f5\\u20fa\\u20ff\\u2103\\u2112\\u2138\\u0317\\u213e\\u2152\\u219e\\u0100;l\\u064d\\u2087;\\u6a8c\\u0180cmp\\u2090\\u2095\\u209dute;\\u41f5ma\\u0100;d\\u209c\\u1cda\\u43b3;\\u6a86reve;\\u411f\\u0100iy\\u20aa\\u20aerc;\\u411d;\\u4433ot;\\u4121\\u0200;lqs\\u063e\\u0642\\u20bd\\u20c9\\u0180;qs\\u063e\\u064c\\u20c4lan\\xf4\\u0665\\u0200;cdl\\u0665\\u20d2\\u20d5\\u20e5c;\\u6aa9ot\\u0100;o\\u20dc\\u20dd\\u6a80\\u0100;l\\u20e2\\u20e3\\u6a82;\\u6a84\\u0100;e\\u20ea\\u20ed\\uc000\\u22db\\ufe00s;\\u6a94r;\\uc000\\ud835\\udd24\\u0100;g\\u0673\\u061bmel;\\u6137cy;\\u4453\\u0200;Eaj\\u065a\\u210c\\u210e\\u2110;\\u6a92;\\u6aa5;\\u6aa4\\u0200Eaes\\u211b\\u211d\\u2129\\u2134;\\u6269p\\u0100;p\\u2123\\u2124\\u6a8arox\\xbb\\u2124\\u0100;q\\u212e\\u212f\\u6a88\\u0100;q\\u212e\\u211bim;\\u62e7pf;\\uc000\\ud835\\udd58\\u0100ci\\u2143\\u2146r;\\u610am\\u0180;el\\u066b\\u214e\\u2150;\\u6a8e;\\u6a90\\u8300>;cdlqr\\u05ee\\u2160\\u216a\\u216e\\u2173\\u2179\\u0100ci\\u2165\\u2167;\\u6aa7r;\\u6a7aot;\\u62d7Par;\\u6995uest;\\u6a7c\\u0280adels\\u2184\\u216a\\u2190\\u0656\\u219b\\u01f0\\u2189\\0\\u218epro\\xf8\\u209er;\\u6978q\\u0100lq\\u063f\\u2196les\\xf3\\u2088i\\xed\\u066b\\u0100en\\u21a3\\u21adrtneqq;\\uc000\\u2269\\ufe00\\xc5\\u21aa\\u0500Aabcefkosy\\u21c4\\u21c7\\u21f1\\u21f5\\u21fa\\u2218\\u221d\\u222f\\u2268\\u227dr\\xf2\\u03a0\\u0200ilmr\\u21d0\\u21d4\\u21d7\\u21dbrs\\xf0\\u1484f\\xbb\\u2024il\\xf4\\u06a9\\u0100dr\\u21e0\\u21e4cy;\\u444a\\u0180;cw\\u08f4\\u21eb\\u21efir;\\u6948;\\u61adar;\\u610firc;\\u4125\\u0180alr\\u2201\\u220e\\u2213rts\\u0100;u\\u2209\\u220a\\u6665it\\xbb\\u220alip;\\u6026con;\\u62b9r;\\uc000\\ud835\\udd25s\\u0100ew\\u2223\\u2229arow;\\u6925arow;\\u6926\\u0280amopr\\u223a\\u223e\\u2243\\u225e\\u2263rr;\\u61fftht;\\u623bk\\u0100lr\\u2249\\u2253eftarrow;\\u61a9ightarrow;\\u61aaf;\\uc000\\ud835\\udd59bar;\\u6015\\u0180clt\\u226f\\u2274\\u2278r;\\uc000\\ud835\\udcbdas\\xe8\\u21f4rok;\\u4127\\u0100bp\\u2282\\u2287ull;\\u6043hen\\xbb\\u1c5b\\u0ae1\\u22a3\\0\\u22aa\\0\\u22b8\\u22c5\\u22ce\\0\\u22d5\\u22f3\\0\\0\\u22f8\\u2322\\u2367\\u2362\\u237f\\0\\u2386\\u23aa\\u23b4cute\\u803b\\xed\\u40ed\\u0180;iy\\u0771\\u22b0\\u22b5rc\\u803b\\xee\\u40ee;\\u4438\\u0100cx\\u22bc\\u22bfy;\\u4435cl\\u803b\\xa1\\u40a1\\u0100fr\\u039f\\u22c9;\\uc000\\ud835\\udd26rave\\u803b\\xec\\u40ec\\u0200;ino\\u073e\\u22dd\\u22e9\\u22ee\\u0100in\\u22e2\\u22e6nt;\\u6a0ct;\\u622dfin;\\u69dcta;\\u6129lig;\\u4133\\u0180aop\\u22fe\\u231a\\u231d\\u0180cgt\\u2305\\u2308\\u2317r;\\u412b\\u0180elp\\u071f\\u230f\\u2313in\\xe5\\u078ear\\xf4\\u0720h;\\u4131f;\\u62b7ed;\\u41b5\\u0280;cfot\\u04f4\\u232c\\u2331\\u233d\\u2341are;\\u6105in\\u0100;t\\u2338\\u2339\\u621eie;\\u69dddo\\xf4\\u2319\\u0280;celp\\u0757\\u234c\\u2350\\u235b\\u2361al;\\u62ba\\u0100gr\\u2355\\u2359er\\xf3\\u1563\\xe3\\u234darhk;\\u6a17rod;\\u6a3c\\u0200cgpt\\u236f\\u2372\\u2376\\u237by;\\u4451on;\\u412ff;\\uc000\\ud835\\udd5aa;\\u43b9uest\\u803b\\xbf\\u40bf\\u0100ci\\u238a\\u238fr;\\uc000\\ud835\\udcben\\u0280;Edsv\\u04f4\\u239b\\u239d\\u23a1\\u04f3;\\u62f9ot;\\u62f5\\u0100;v\\u23a6\\u23a7\\u62f4;\\u62f3\\u0100;i\\u0777\\u23aelde;\\u4129\\u01eb\\u23b8\\0\\u23bccy;\\u4456l\\u803b\\xef\\u40ef\\u0300cfmosu\\u23cc\\u23d7\\u23dc\\u23e1\\u23e7\\u23f5\\u0100iy\\u23d1\\u23d5rc;\\u4135;\\u4439r;\\uc000\\ud835\\udd27ath;\\u4237pf;\\uc000\\ud835\\udd5b\\u01e3\\u23ec\\0\\u23f1r;\\uc000\\ud835\\udcbfrcy;\\u4458kcy;\\u4454\\u0400acfghjos\\u240b\\u2416\\u2422\\u2427\\u242d\\u2431\\u2435\\u243bppa\\u0100;v\\u2413\\u2414\\u43ba;\\u43f0\\u0100ey\\u241b\\u2420dil;\\u4137;\\u443ar;\\uc000\\ud835\\udd28reen;\\u4138cy;\\u4445cy;\\u445cpf;\\uc000\\ud835\\udd5ccr;\\uc000\\ud835\\udcc0\\u0b80ABEHabcdefghjlmnoprstuv\\u2470\\u2481\\u2486\\u248d\\u2491\\u250e\\u253d\\u255a\\u2580\\u264e\\u265e\\u2665\\u2679\\u267d\\u269a\\u26b2\\u26d8\\u275d\\u2768\\u278b\\u27c0\\u2801\\u2812\\u0180art\\u2477\\u247a\\u247cr\\xf2\\u09c6\\xf2\\u0395ail;\\u691barr;\\u690e\\u0100;g\\u0994\\u248b;\\u6a8bar;\\u6962\\u0963\\u24a5\\0\\u24aa\\0\\u24b1\\0\\0\\0\\0\\0\\u24b5\\u24ba\\0\\u24c6\\u24c8\\u24cd\\0\\u24f9ute;\\u413amptyv;\\u69b4ra\\xee\\u084cbda;\\u43bbg\\u0180;dl\\u088e\\u24c1\\u24c3;\\u6991\\xe5\\u088e;\\u6a85uo\\u803b\\xab\\u40abr\\u0400;bfhlpst\\u0899\\u24de\\u24e6\\u24e9\\u24eb\\u24ee\\u24f1\\u24f5\\u0100;f\\u089d\\u24e3s;\\u691fs;\\u691d\\xeb\\u2252p;\\u61abl;\\u6939im;\\u6973l;\\u61a2\\u0180;ae\\u24ff\\u2500\\u2504\\u6aabil;\\u6919\\u0100;s\\u2509\\u250a\\u6aad;\\uc000\\u2aad\\ufe00\\u0180abr\\u2515\\u2519\\u251drr;\\u690crk;\\u6772\\u0100ak\\u2522\\u252cc\\u0100ek\\u2528\\u252a;\\u407b;\\u405b\\u0100es\\u2531\\u2533;\\u698bl\\u0100du\\u2539\\u253b;\\u698f;\\u698d\\u0200aeuy\\u2546\\u254b\\u2556\\u2558ron;\\u413e\\u0100di\\u2550\\u2554il;\\u413c\\xec\\u08b0\\xe2\\u2529;\\u443b\\u0200cqrs\\u2563\\u2566\\u256d\\u257da;\\u6936uo\\u0100;r\\u0e19\\u1746\\u0100du\\u2572\\u2577har;\\u6967shar;\\u694bh;\\u61b2\\u0280;fgqs\\u258b\\u258c\\u0989\\u25f3\\u25ff\\u6264t\\u0280ahlrt\\u2598\\u25a4\\u25b7\\u25c2\\u25e8rrow\\u0100;t\\u0899\\u25a1a\\xe9\\u24f6arpoon\\u0100du\\u25af\\u25b4own\\xbb\\u045ap\\xbb\\u0966eftarrows;\\u61c7ight\\u0180ahs\\u25cd\\u25d6\\u25derrow\\u0100;s\\u08f4\\u08a7arpoon\\xf3\\u0f98quigarro\\xf7\\u21f0hreetimes;\\u62cb\\u0180;qs\\u258b\\u0993\\u25falan\\xf4\\u09ac\\u0280;cdgs\\u09ac\\u260a\\u260d\\u261d\\u2628c;\\u6aa8ot\\u0100;o\\u2614\\u2615\\u6a7f\\u0100;r\\u261a\\u261b\\u6a81;\\u6a83\\u0100;e\\u2622\\u2625\\uc000\\u22da\\ufe00s;\\u6a93\\u0280adegs\\u2633\\u2639\\u263d\\u2649\\u264bppro\\xf8\\u24c6ot;\\u62d6q\\u0100gq\\u2643\\u2645\\xf4\\u0989gt\\xf2\\u248c\\xf4\\u099bi\\xed\\u09b2\\u0180ilr\\u2655\\u08e1\\u265asht;\\u697c;\\uc000\\ud835\\udd29\\u0100;E\\u099c\\u2663;\\u6a91\\u0161\\u2669\\u2676r\\u0100du\\u25b2\\u266e\\u0100;l\\u0965\\u2673;\\u696alk;\\u6584cy;\\u4459\\u0280;acht\\u0a48\\u2688\\u268b\\u2691\\u2696r\\xf2\\u25c1orne\\xf2\\u1d08ard;\\u696bri;\\u65fa\\u0100io\\u269f\\u26a4dot;\\u4140ust\\u0100;a\\u26ac\\u26ad\\u63b0che\\xbb\\u26ad\\u0200Eaes\\u26bb\\u26bd\\u26c9\\u26d4;\\u6268p\\u0100;p\\u26c3\\u26c4\\u6a89rox\\xbb\\u26c4\\u0100;q\\u26ce\\u26cf\\u6a87\\u0100;q\\u26ce\\u26bbim;\\u62e6\\u0400abnoptwz\\u26e9\\u26f4\\u26f7\\u271a\\u272f\\u2741\\u2747\\u2750\\u0100nr\\u26ee\\u26f1g;\\u67ecr;\\u61fdr\\xeb\\u08c1g\\u0180lmr\\u26ff\\u270d\\u2714eft\\u0100ar\\u09e6\\u2707ight\\xe1\\u09f2apsto;\\u67fcight\\xe1\\u09fdparrow\\u0100lr\\u2725\\u2729ef\\xf4\\u24edight;\\u61ac\\u0180afl\\u2736\\u2739\\u273dr;\\u6985;\\uc000\\ud835\\udd5dus;\\u6a2dimes;\\u6a34\\u0161\\u274b\\u274fst;\\u6217\\xe1\\u134e\\u0180;ef\\u2757\\u2758\\u1800\\u65cange\\xbb\\u2758ar\\u0100;l\\u2764\\u2765\\u4028t;\\u6993\\u0280achmt\\u2773\\u2776\\u277c\\u2785\\u2787r\\xf2\\u08a8orne\\xf2\\u1d8car\\u0100;d\\u0f98\\u2783;\\u696d;\\u600eri;\\u62bf\\u0300achiqt\\u2798\\u279d\\u0a40\\u27a2\\u27ae\\u27bbquo;\\u6039r;\\uc000\\ud835\\udcc1m\\u0180;eg\\u09b2\\u27aa\\u27ac;\\u6a8d;\\u6a8f\\u0100bu\\u252a\\u27b3o\\u0100;r\\u0e1f\\u27b9;\\u601arok;\\u4142\\u8400<;cdhilqr\\u082b\\u27d2\\u2639\\u27dc\\u27e0\\u27e5\\u27ea\\u27f0\\u0100ci\\u27d7\\u27d9;\\u6aa6r;\\u6a79re\\xe5\\u25f2mes;\\u62c9arr;\\u6976uest;\\u6a7b\\u0100Pi\\u27f5\\u27f9ar;\\u6996\\u0180;ef\\u2800\\u092d\\u181b\\u65c3r\\u0100du\\u2807\\u280dshar;\\u694ahar;\\u6966\\u0100en\\u2817\\u2821rtneqq;\\uc000\\u2268\\ufe00\\xc5\\u281e\\u0700Dacdefhilnopsu\\u2840\\u2845\\u2882\\u288e\\u2893\\u28a0\\u28a5\\u28a8\\u28da\\u28e2\\u28e4\\u0a83\\u28f3\\u2902Dot;\\u623a\\u0200clpr\\u284e\\u2852\\u2863\\u287dr\\u803b\\xaf\\u40af\\u0100et\\u2857\\u2859;\\u6642\\u0100;e\\u285e\\u285f\\u6720se\\xbb\\u285f\\u0100;s\\u103b\\u2868to\\u0200;dlu\\u103b\\u2873\\u2877\\u287bow\\xee\\u048cef\\xf4\\u090f\\xf0\\u13d1ker;\\u65ae\\u0100oy\\u2887\\u288cmma;\\u6a29;\\u443cash;\\u6014asuredangle\\xbb\\u1626r;\\uc000\\ud835\\udd2ao;\\u6127\\u0180cdn\\u28af\\u28b4\\u28c9ro\\u803b\\xb5\\u40b5\\u0200;acd\\u1464\\u28bd\\u28c0\\u28c4s\\xf4\\u16a7ir;\\u6af0ot\\u80bb\\xb7\\u01b5us\\u0180;bd\\u28d2\\u1903\\u28d3\\u6212\\u0100;u\\u1d3c\\u28d8;\\u6a2a\\u0163\\u28de\\u28e1p;\\u6adb\\xf2\\u2212\\xf0\\u0a81\\u0100dp\\u28e9\\u28eeels;\\u62a7f;\\uc000\\ud835\\udd5e\\u0100ct\\u28f8\\u28fdr;\\uc000\\ud835\\udcc2pos\\xbb\\u159d\\u0180;lm\\u2909\\u290a\\u290d\\u43bctimap;\\u62b8\\u0c00GLRVabcdefghijlmoprstuvw\\u2942\\u2953\\u297e\\u2989\\u2998\\u29da\\u29e9\\u2a15\\u2a1a\\u2a58\\u2a5d\\u2a83\\u2a95\\u2aa4\\u2aa8\\u2b04\\u2b07\\u2b44\\u2b7f\\u2bae\\u2c34\\u2c67\\u2c7c\\u2ce9\\u0100gt\\u2947\\u294b;\\uc000\\u22d9\\u0338\\u0100;v\\u2950\\u0bcf\\uc000\\u226b\\u20d2\\u0180elt\\u295a\\u2972\\u2976ft\\u0100ar\\u2961\\u2967rrow;\\u61cdightarrow;\\u61ce;\\uc000\\u22d8\\u0338\\u0100;v\\u297b\\u0c47\\uc000\\u226a\\u20d2ightarrow;\\u61cf\\u0100Dd\\u298e\\u2993ash;\\u62afash;\\u62ae\\u0280bcnpt\\u29a3\\u29a7\\u29ac\\u29b1\\u29ccla\\xbb\\u02deute;\\u4144g;\\uc000\\u2220\\u20d2\\u0280;Eiop\\u0d84\\u29bc\\u29c0\\u29c5\\u29c8;\\uc000\\u2a70\\u0338d;\\uc000\\u224b\\u0338s;\\u4149ro\\xf8\\u0d84ur\\u0100;a\\u29d3\\u29d4\\u666el\\u0100;s\\u29d3\\u0b38\\u01f3\\u29df\\0\\u29e3p\\u80bb\\xa0\\u0b37mp\\u0100;e\\u0bf9\\u0c00\\u0280aeouy\\u29f4\\u29fe\\u2a03\\u2a10\\u2a13\\u01f0\\u29f9\\0\\u29fb;\\u6a43on;\\u4148dil;\\u4146ng\\u0100;d\\u0d7e\\u2a0aot;\\uc000\\u2a6d\\u0338p;\\u6a42;\\u443dash;\\u6013\\u0380;Aadqsx\\u0b92\\u2a29\\u2a2d\\u2a3b\\u2a41\\u2a45\\u2a50rr;\\u61d7r\\u0100hr\\u2a33\\u2a36k;\\u6924\\u0100;o\\u13f2\\u13f0ot;\\uc000\\u2250\\u0338ui\\xf6\\u0b63\\u0100ei\\u2a4a\\u2a4ear;\\u6928\\xed\\u0b98ist\\u0100;s\\u0ba0\\u0b9fr;\\uc000\\ud835\\udd2b\\u0200Eest\\u0bc5\\u2a66\\u2a79\\u2a7c\\u0180;qs\\u0bbc\\u2a6d\\u0be1\\u0180;qs\\u0bbc\\u0bc5\\u2a74lan\\xf4\\u0be2i\\xed\\u0bea\\u0100;r\\u0bb6\\u2a81\\xbb\\u0bb7\\u0180Aap\\u2a8a\\u2a8d\\u2a91r\\xf2\\u2971rr;\\u61aear;\\u6af2\\u0180;sv\\u0f8d\\u2a9c\\u0f8c\\u0100;d\\u2aa1\\u2aa2\\u62fc;\\u62facy;\\u445a\\u0380AEadest\\u2ab7\\u2aba\\u2abe\\u2ac2\\u2ac5\\u2af6\\u2af9r\\xf2\\u2966;\\uc000\\u2266\\u0338rr;\\u619ar;\\u6025\\u0200;fqs\\u0c3b\\u2ace\\u2ae3\\u2aeft\\u0100ar\\u2ad4\\u2ad9rro\\xf7\\u2ac1ightarro\\xf7\\u2a90\\u0180;qs\\u0c3b\\u2aba\\u2aealan\\xf4\\u0c55\\u0100;s\\u0c55\\u2af4\\xbb\\u0c36i\\xed\\u0c5d\\u0100;r\\u0c35\\u2afei\\u0100;e\\u0c1a\\u0c25i\\xe4\\u0d90\\u0100pt\\u2b0c\\u2b11f;\\uc000\\ud835\\udd5f\\u8180\\xac;in\\u2b19\\u2b1a\\u2b36\\u40acn\\u0200;Edv\\u0b89\\u2b24\\u2b28\\u2b2e;\\uc000\\u22f9\\u0338ot;\\uc000\\u22f5\\u0338\\u01e1\\u0b89\\u2b33\\u2b35;\\u62f7;\\u62f6i\\u0100;v\\u0cb8\\u2b3c\\u01e1\\u0cb8\\u2b41\\u2b43;\\u62fe;\\u62fd\\u0180aor\\u2b4b\\u2b63\\u2b69r\\u0200;ast\\u0b7b\\u2b55\\u2b5a\\u2b5flle\\xec\\u0b7bl;\\uc000\\u2afd\\u20e5;\\uc000\\u2202\\u0338lint;\\u6a14\\u0180;ce\\u0c92\\u2b70\\u2b73u\\xe5\\u0ca5\\u0100;c\\u0c98\\u2b78\\u0100;e\\u0c92\\u2b7d\\xf1\\u0c98\\u0200Aait\\u2b88\\u2b8b\\u2b9d\\u2ba7r\\xf2\\u2988rr\\u0180;cw\\u2b94\\u2b95\\u2b99\\u619b;\\uc000\\u2933\\u0338;\\uc000\\u219d\\u0338ghtarrow\\xbb\\u2b95ri\\u0100;e\\u0ccb\\u0cd6\\u0380chimpqu\\u2bbd\\u2bcd\\u2bd9\\u2b04\\u0b78\\u2be4\\u2bef\\u0200;cer\\u0d32\\u2bc6\\u0d37\\u2bc9u\\xe5\\u0d45;\\uc000\\ud835\\udcc3ort\\u026d\\u2b05\\0\\0\\u2bd6ar\\xe1\\u2b56m\\u0100;e\\u0d6e\\u2bdf\\u0100;q\\u0d74\\u0d73su\\u0100bp\\u2beb\\u2bed\\xe5\\u0cf8\\xe5\\u0d0b\\u0180bcp\\u2bf6\\u2c11\\u2c19\\u0200;Ees\\u2bff\\u2c00\\u0d22\\u2c04\\u6284;\\uc000\\u2ac5\\u0338et\\u0100;e\\u0d1b\\u2c0bq\\u0100;q\\u0d23\\u2c00c\\u0100;e\\u0d32\\u2c17\\xf1\\u0d38\\u0200;Ees\\u2c22\\u2c23\\u0d5f\\u2c27\\u6285;\\uc000\\u2ac6\\u0338et\\u0100;e\\u0d58\\u2c2eq\\u0100;q\\u0d60\\u2c23\\u0200gilr\\u2c3d\\u2c3f\\u2c45\\u2c47\\xec\\u0bd7lde\\u803b\\xf1\\u40f1\\xe7\\u0c43iangle\\u0100lr\\u2c52\\u2c5ceft\\u0100;e\\u0c1a\\u2c5a\\xf1\\u0c26ight\\u0100;e\\u0ccb\\u2c65\\xf1\\u0cd7\\u0100;m\\u2c6c\\u2c6d\\u43bd\\u0180;es\\u2c74\\u2c75\\u2c79\\u4023ro;\\u6116p;\\u6007\\u0480DHadgilrs\\u2c8f\\u2c94\\u2c99\\u2c9e\\u2ca3\\u2cb0\\u2cb6\\u2cd3\\u2ce3ash;\\u62adarr;\\u6904p;\\uc000\\u224d\\u20d2ash;\\u62ac\\u0100et\\u2ca8\\u2cac;\\uc000\\u2265\\u20d2;\\uc000>\\u20d2nfin;\\u69de\\u0180Aet\\u2cbd\\u2cc1\\u2cc5rr;\\u6902;\\uc000\\u2264\\u20d2\\u0100;r\\u2cca\\u2ccd\\uc000<\\u20d2ie;\\uc000\\u22b4\\u20d2\\u0100At\\u2cd8\\u2cdcrr;\\u6903rie;\\uc000\\u22b5\\u20d2im;\\uc000\\u223c\\u20d2\\u0180Aan\\u2cf0\\u2cf4\\u2d02rr;\\u61d6r\\u0100hr\\u2cfa\\u2cfdk;\\u6923\\u0100;o\\u13e7\\u13e5ear;\\u6927\\u1253\\u1a95\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\u2d2d\\0\\u2d38\\u2d48\\u2d60\\u2d65\\u2d72\\u2d84\\u1b07\\0\\0\\u2d8d\\u2dab\\0\\u2dc8\\u2dce\\0\\u2ddc\\u2e19\\u2e2b\\u2e3e\\u2e43\\u0100cs\\u2d31\\u1a97ute\\u803b\\xf3\\u40f3\\u0100iy\\u2d3c\\u2d45r\\u0100;c\\u1a9e\\u2d42\\u803b\\xf4\\u40f4;\\u443e\\u0280abios\\u1aa0\\u2d52\\u2d57\\u01c8\\u2d5alac;\\u4151v;\\u6a38old;\\u69bclig;\\u4153\\u0100cr\\u2d69\\u2d6dir;\\u69bf;\\uc000\\ud835\\udd2c\\u036f\\u2d79\\0\\0\\u2d7c\\0\\u2d82n;\\u42dbave\\u803b\\xf2\\u40f2;\\u69c1\\u0100bm\\u2d88\\u0df4ar;\\u69b5\\u0200acit\\u2d95\\u2d98\\u2da5\\u2da8r\\xf2\\u1a80\\u0100ir\\u2d9d\\u2da0r;\\u69beoss;\\u69bbn\\xe5\\u0e52;\\u69c0\\u0180aei\\u2db1\\u2db5\\u2db9cr;\\u414dga;\\u43c9\\u0180cdn\\u2dc0\\u2dc5\\u01cdron;\\u43bf;\\u69b6pf;\\uc000\\ud835\\udd60\\u0180ael\\u2dd4\\u2dd7\\u01d2r;\\u69b7rp;\\u69b9\\u0380;adiosv\\u2dea\\u2deb\\u2dee\\u2e08\\u2e0d\\u2e10\\u2e16\\u6228r\\xf2\\u1a86\\u0200;efm\\u2df7\\u2df8\\u2e02\\u2e05\\u6a5dr\\u0100;o\\u2dfe\\u2dff\\u6134f\\xbb\\u2dff\\u803b\\xaa\\u40aa\\u803b\\xba\\u40bagof;\\u62b6r;\\u6a56lope;\\u6a57;\\u6a5b\\u0180clo\\u2e1f\\u2e21\\u2e27\\xf2\\u2e01ash\\u803b\\xf8\\u40f8l;\\u6298i\\u016c\\u2e2f\\u2e34de\\u803b\\xf5\\u40f5es\\u0100;a\\u01db\\u2e3as;\\u6a36ml\\u803b\\xf6\\u40f6bar;\\u633d\\u0ae1\\u2e5e\\0\\u2e7d\\0\\u2e80\\u2e9d\\0\\u2ea2\\u2eb9\\0\\0\\u2ecb\\u0e9c\\0\\u2f13\\0\\0\\u2f2b\\u2fbc\\0\\u2fc8r\\u0200;ast\\u0403\\u2e67\\u2e72\\u0e85\\u8100\\xb6;l\\u2e6d\\u2e6e\\u40b6le\\xec\\u0403\\u0269\\u2e78\\0\\0\\u2e7bm;\\u6af3;\\u6afdy;\\u443fr\\u0280cimpt\\u2e8b\\u2e8f\\u2e93\\u1865\\u2e97nt;\\u4025od;\\u402eil;\\u6030enk;\\u6031r;\\uc000\\ud835\\udd2d\\u0180imo\\u2ea8\\u2eb0\\u2eb4\\u0100;v\\u2ead\\u2eae\\u43c6;\\u43d5ma\\xf4\\u0a76ne;\\u660e\\u0180;tv\\u2ebf\\u2ec0\\u2ec8\\u43c0chfork\\xbb\\u1ffd;\\u43d6\\u0100au\\u2ecf\\u2edfn\\u0100ck\\u2ed5\\u2eddk\\u0100;h\\u21f4\\u2edb;\\u610e\\xf6\\u21f4s\\u0480;abcdemst\\u2ef3\\u2ef4\\u1908\\u2ef9\\u2efd\\u2f04\\u2f06\\u2f0a\\u2f0e\\u402bcir;\\u6a23ir;\\u6a22\\u0100ou\\u1d40\\u2f02;\\u6a25;\\u6a72n\\u80bb\\xb1\\u0e9dim;\\u6a26wo;\\u6a27\\u0180ipu\\u2f19\\u2f20\\u2f25ntint;\\u6a15f;\\uc000\\ud835\\udd61nd\\u803b\\xa3\\u40a3\\u0500;Eaceinosu\\u0ec8\\u2f3f\\u2f41\\u2f44\\u2f47\\u2f81\\u2f89\\u2f92\\u2f7e\\u2fb6;\\u6ab3p;\\u6ab7u\\xe5\\u0ed9\\u0100;c\\u0ece\\u2f4c\\u0300;acens\\u0ec8\\u2f59\\u2f5f\\u2f66\\u2f68\\u2f7eppro\\xf8\\u2f43urlye\\xf1\\u0ed9\\xf1\\u0ece\\u0180aes\\u2f6f\\u2f76\\u2f7approx;\\u6ab9qq;\\u6ab5im;\\u62e8i\\xed\\u0edfme\\u0100;s\\u2f88\\u0eae\\u6032\\u0180Eas\\u2f78\\u2f90\\u2f7a\\xf0\\u2f75\\u0180dfp\\u0eec\\u2f99\\u2faf\\u0180als\\u2fa0\\u2fa5\\u2faalar;\\u632eine;\\u6312urf;\\u6313\\u0100;t\\u0efb\\u2fb4\\xef\\u0efbrel;\\u62b0\\u0100ci\\u2fc0\\u2fc5r;\\uc000\\ud835\\udcc5;\\u43c8ncsp;\\u6008\\u0300fiopsu\\u2fda\\u22e2\\u2fdf\\u2fe5\\u2feb\\u2ff1r;\\uc000\\ud835\\udd2epf;\\uc000\\ud835\\udd62rime;\\u6057cr;\\uc000\\ud835\\udcc6\\u0180aeo\\u2ff8\\u3009\\u3013t\\u0100ei\\u2ffe\\u3005rnion\\xf3\\u06b0nt;\\u6a16st\\u0100;e\\u3010\\u3011\\u403f\\xf1\\u1f19\\xf4\\u0f14\\u0a80ABHabcdefhilmnoprstux\\u3040\\u3051\\u3055\\u3059\\u30e0\\u310e\\u312b\\u3147\\u3162\\u3172\\u318e\\u3206\\u3215\\u3224\\u3229\\u3258\\u326e\\u3272\\u3290\\u32b0\\u32b7\\u0180art\\u3047\\u304a\\u304cr\\xf2\\u10b3\\xf2\\u03ddail;\\u691car\\xf2\\u1c65ar;\\u6964\\u0380cdenqrt\\u3068\\u3075\\u3078\\u307f\\u308f\\u3094\\u30cc\\u0100eu\\u306d\\u3071;\\uc000\\u223d\\u0331te;\\u4155i\\xe3\\u116emptyv;\\u69b3g\\u0200;del\\u0fd1\\u3089\\u308b\\u308d;\\u6992;\\u69a5\\xe5\\u0fd1uo\\u803b\\xbb\\u40bbr\\u0580;abcfhlpstw\\u0fdc\\u30ac\\u30af\\u30b7\\u30b9\\u30bc\\u30be\\u30c0\\u30c3\\u30c7\\u30cap;\\u6975\\u0100;f\\u0fe0\\u30b4s;\\u6920;\\u6933s;\\u691e\\xeb\\u225d\\xf0\\u272el;\\u6945im;\\u6974l;\\u61a3;\\u619d\\u0100ai\\u30d1\\u30d5il;\\u691ao\\u0100;n\\u30db\\u30dc\\u6236al\\xf3\\u0f1e\\u0180abr\\u30e7\\u30ea\\u30eer\\xf2\\u17e5rk;\\u6773\\u0100ak\\u30f3\\u30fdc\\u0100ek\\u30f9\\u30fb;\\u407d;\\u405d\\u0100es\\u3102\\u3104;\\u698cl\\u0100du\\u310a\\u310c;\\u698e;\\u6990\\u0200aeuy\\u3117\\u311c\\u3127\\u3129ron;\\u4159\\u0100di\\u3121\\u3125il;\\u4157\\xec\\u0ff2\\xe2\\u30fa;\\u4440\\u0200clqs\\u3134\\u3137\\u313d\\u3144a;\\u6937dhar;\\u6969uo\\u0100;r\\u020e\\u020dh;\\u61b3\\u0180acg\\u314e\\u315f\\u0f44l\\u0200;ips\\u0f78\\u3158\\u315b\\u109cn\\xe5\\u10bbar\\xf4\\u0fa9t;\\u65ad\\u0180ilr\\u3169\\u1023\\u316esht;\\u697d;\\uc000\\ud835\\udd2f\\u0100ao\\u3177\\u3186r\\u0100du\\u317d\\u317f\\xbb\\u047b\\u0100;l\\u1091\\u3184;\\u696c\\u0100;v\\u318b\\u318c\\u43c1;\\u43f1\\u0180gns\\u3195\\u31f9\\u31fcht\\u0300ahlrst\\u31a4\\u31b0\\u31c2\\u31d8\\u31e4\\u31eerrow\\u0100;t\\u0fdc\\u31ada\\xe9\\u30c8arpoon\\u0100du\\u31bb\\u31bfow\\xee\\u317ep\\xbb\\u1092eft\\u0100ah\\u31ca\\u31d0rrow\\xf3\\u0feaarpoon\\xf3\\u0551ightarrows;\\u61c9quigarro\\xf7\\u30cbhreetimes;\\u62ccg;\\u42daingdotse\\xf1\\u1f32\\u0180ahm\\u320d\\u3210\\u3213r\\xf2\\u0feaa\\xf2\\u0551;\\u600foust\\u0100;a\\u321e\\u321f\\u63b1che\\xbb\\u321fmid;\\u6aee\\u0200abpt\\u3232\\u323d\\u3240\\u3252\\u0100nr\\u3237\\u323ag;\\u67edr;\\u61fer\\xeb\\u1003\\u0180afl\\u3247\\u324a\\u324er;\\u6986;\\uc000\\ud835\\udd63us;\\u6a2eimes;\\u6a35\\u0100ap\\u325d\\u3267r\\u0100;g\\u3263\\u3264\\u4029t;\\u6994olint;\\u6a12ar\\xf2\\u31e3\\u0200achq\\u327b\\u3280\\u10bc\\u3285quo;\\u603ar;\\uc000\\ud835\\udcc7\\u0100bu\\u30fb\\u328ao\\u0100;r\\u0214\\u0213\\u0180hir\\u3297\\u329b\\u32a0re\\xe5\\u31f8mes;\\u62cai\\u0200;efl\\u32aa\\u1059\\u1821\\u32ab\\u65b9tri;\\u69celuhar;\\u6968;\\u611e\\u0d61\\u32d5\\u32db\\u32df\\u332c\\u3338\\u3371\\0\\u337a\\u33a4\\0\\0\\u33ec\\u33f0\\0\\u3428\\u3448\\u345a\\u34ad\\u34b1\\u34ca\\u34f1\\0\\u3616\\0\\0\\u3633cute;\\u415bqu\\xef\\u27ba\\u0500;Eaceinpsy\\u11ed\\u32f3\\u32f5\\u32ff\\u3302\\u330b\\u330f\\u331f\\u3326\\u3329;\\u6ab4\\u01f0\\u32fa\\0\\u32fc;\\u6ab8on;\\u4161u\\xe5\\u11fe\\u0100;d\\u11f3\\u3307il;\\u415frc;\\u415d\\u0180Eas\\u3316\\u3318\\u331b;\\u6ab6p;\\u6abaim;\\u62e9olint;\\u6a13i\\xed\\u1204;\\u4441ot\\u0180;be\\u3334\\u1d47\\u3335\\u62c5;\\u6a66\\u0380Aacmstx\\u3346\\u334a\\u3357\\u335b\\u335e\\u3363\\u336drr;\\u61d8r\\u0100hr\\u3350\\u3352\\xeb\\u2228\\u0100;o\\u0a36\\u0a34t\\u803b\\xa7\\u40a7i;\\u403bwar;\\u6929m\\u0100in\\u3369\\xf0nu\\xf3\\xf1t;\\u6736r\\u0100;o\\u3376\\u2055\\uc000\\ud835\\udd30\\u0200acoy\\u3382\\u3386\\u3391\\u33a0rp;\\u666f\\u0100hy\\u338b\\u338fcy;\\u4449;\\u4448rt\\u026d\\u3399\\0\\0\\u339ci\\xe4\\u1464ara\\xec\\u2e6f\\u803b\\xad\\u40ad\\u0100gm\\u33a8\\u33b4ma\\u0180;fv\\u33b1\\u33b2\\u33b2\\u43c3;\\u43c2\\u0400;deglnpr\\u12ab\\u33c5\\u33c9\\u33ce\\u33d6\\u33de\\u33e1\\u33e6ot;\\u6a6a\\u0100;q\\u12b1\\u12b0\\u0100;E\\u33d3\\u33d4\\u6a9e;\\u6aa0\\u0100;E\\u33db\\u33dc\\u6a9d;\\u6a9fe;\\u6246lus;\\u6a24arr;\\u6972ar\\xf2\\u113d\\u0200aeit\\u33f8\\u3408\\u340f\\u3417\\u0100ls\\u33fd\\u3404lsetm\\xe9\\u336ahp;\\u6a33parsl;\\u69e4\\u0100dl\\u1463\\u3414e;\\u6323\\u0100;e\\u341c\\u341d\\u6aaa\\u0100;s\\u3422\\u3423\\u6aac;\\uc000\\u2aac\\ufe00\\u0180flp\\u342e\\u3433\\u3442tcy;\\u444c\\u0100;b\\u3438\\u3439\\u402f\\u0100;a\\u343e\\u343f\\u69c4r;\\u633ff;\\uc000\\ud835\\udd64a\\u0100dr\\u344d\\u0402es\\u0100;u\\u3454\\u3455\\u6660it\\xbb\\u3455\\u0180csu\\u3460\\u3479\\u349f\\u0100au\\u3465\\u346fp\\u0100;s\\u1188\\u346b;\\uc000\\u2293\\ufe00p\\u0100;s\\u11b4\\u3475;\\uc000\\u2294\\ufe00u\\u0100bp\\u347f\\u348f\\u0180;es\\u1197\\u119c\\u3486et\\u0100;e\\u1197\\u348d\\xf1\\u119d\\u0180;es\\u11a8\\u11ad\\u3496et\\u0100;e\\u11a8\\u349d\\xf1\\u11ae\\u0180;af\\u117b\\u34a6\\u05b0r\\u0165\\u34ab\\u05b1\\xbb\\u117car\\xf2\\u1148\\u0200cemt\\u34b9\\u34be\\u34c2\\u34c5r;\\uc000\\ud835\\udcc8tm\\xee\\xf1i\\xec\\u3415ar\\xe6\\u11be\\u0100ar\\u34ce\\u34d5r\\u0100;f\\u34d4\\u17bf\\u6606\\u0100an\\u34da\\u34edight\\u0100ep\\u34e3\\u34eapsilo\\xee\\u1ee0h\\xe9\\u2eafs\\xbb\\u2852\\u0280bcmnp\\u34fb\\u355e\\u1209\\u358b\\u358e\\u0480;Edemnprs\\u350e\\u350f\\u3511\\u3515\\u351e\\u3523\\u352c\\u3531\\u3536\\u6282;\\u6ac5ot;\\u6abd\\u0100;d\\u11da\\u351aot;\\u6ac3ult;\\u6ac1\\u0100Ee\\u3528\\u352a;\\u6acb;\\u628alus;\\u6abfarr;\\u6979\\u0180eiu\\u353d\\u3552\\u3555t\\u0180;en\\u350e\\u3545\\u354bq\\u0100;q\\u11da\\u350feq\\u0100;q\\u352b\\u3528m;\\u6ac7\\u0100bp\\u355a\\u355c;\\u6ad5;\\u6ad3c\\u0300;acens\\u11ed\\u356c\\u3572\\u3579\\u357b\\u3326ppro\\xf8\\u32faurlye\\xf1\\u11fe\\xf1\\u11f3\\u0180aes\\u3582\\u3588\\u331bppro\\xf8\\u331aq\\xf1\\u3317g;\\u666a\\u0680123;Edehlmnps\\u35a9\\u35ac\\u35af\\u121c\\u35b2\\u35b4\\u35c0\\u35c9\\u35d5\\u35da\\u35df\\u35e8\\u35ed\\u803b\\xb9\\u40b9\\u803b\\xb2\\u40b2\\u803b\\xb3\\u40b3;\\u6ac6\\u0100os\\u35b9\\u35bct;\\u6abeub;\\u6ad8\\u0100;d\\u1222\\u35c5ot;\\u6ac4s\\u0100ou\\u35cf\\u35d2l;\\u67c9b;\\u6ad7arr;\\u697bult;\\u6ac2\\u0100Ee\\u35e4\\u35e6;\\u6acc;\\u628blus;\\u6ac0\\u0180eiu\\u35f4\\u3609\\u360ct\\u0180;en\\u121c\\u35fc\\u3602q\\u0100;q\\u1222\\u35b2eq\\u0100;q\\u35e7\\u35e4m;\\u6ac8\\u0100bp\\u3611\\u3613;\\u6ad4;\\u6ad6\\u0180Aan\\u361c\\u3620\\u362drr;\\u61d9r\\u0100hr\\u3626\\u3628\\xeb\\u222e\\u0100;o\\u0a2b\\u0a29war;\\u692alig\\u803b\\xdf\\u40df\\u0be1\\u3651\\u365d\\u3660\\u12ce\\u3673\\u3679\\0\\u367e\\u36c2\\0\\0\\0\\0\\0\\u36db\\u3703\\0\\u3709\\u376c\\0\\0\\0\\u3787\\u0272\\u3656\\0\\0\\u365bget;\\u6316;\\u43c4r\\xeb\\u0e5f\\u0180aey\\u3666\\u366b\\u3670ron;\\u4165dil;\\u4163;\\u4442lrec;\\u6315r;\\uc000\\ud835\\udd31\\u0200eiko\\u3686\\u369d\\u36b5\\u36bc\\u01f2\\u368b\\0\\u3691e\\u01004f\\u1284\\u1281a\\u0180;sv\\u3698\\u3699\\u369b\\u43b8ym;\\u43d1\\u0100cn\\u36a2\\u36b2k\\u0100as\\u36a8\\u36aeppro\\xf8\\u12c1im\\xbb\\u12acs\\xf0\\u129e\\u0100as\\u36ba\\u36ae\\xf0\\u12c1rn\\u803b\\xfe\\u40fe\\u01ec\\u031f\\u36c6\\u22e7es\\u8180\\xd7;bd\\u36cf\\u36d0\\u36d8\\u40d7\\u0100;a\\u190f\\u36d5r;\\u6a31;\\u6a30\\u0180eps\\u36e1\\u36e3\\u3700\\xe1\\u2a4d\\u0200;bcf\\u0486\\u36ec\\u36f0\\u36f4ot;\\u6336ir;\\u6af1\\u0100;o\\u36f9\\u36fc\\uc000\\ud835\\udd65rk;\\u6ada\\xe1\\u3362rime;\\u6034\\u0180aip\\u370f\\u3712\\u3764d\\xe5\\u1248\\u0380adempst\\u3721\\u374d\\u3740\\u3751\\u3757\\u375c\\u375fngle\\u0280;dlqr\\u3730\\u3731\\u3736\\u3740\\u3742\\u65b5own\\xbb\\u1dbbeft\\u0100;e\\u2800\\u373e\\xf1\\u092e;\\u625cight\\u0100;e\\u32aa\\u374b\\xf1\\u105aot;\\u65ecinus;\\u6a3alus;\\u6a39b;\\u69cdime;\\u6a3bezium;\\u63e2\\u0180cht\\u3772\\u377d\\u3781\\u0100ry\\u3777\\u377b;\\uc000\\ud835\\udcc9;\\u4446cy;\\u445brok;\\u4167\\u0100io\\u378b\\u378ex\\xf4\\u1777head\\u0100lr\\u3797\\u37a0eftarro\\xf7\\u084fightarrow\\xbb\\u0f5d\\u0900AHabcdfghlmoprstuw\\u37d0\\u37d3\\u37d7\\u37e4\\u37f0\\u37fc\\u380e\\u381c\\u3823\\u3834\\u3851\\u385d\\u386b\\u38a9\\u38cc\\u38d2\\u38ea\\u38f6r\\xf2\\u03edar;\\u6963\\u0100cr\\u37dc\\u37e2ute\\u803b\\xfa\\u40fa\\xf2\\u1150r\\u01e3\\u37ea\\0\\u37edy;\\u445eve;\\u416d\\u0100iy\\u37f5\\u37farc\\u803b\\xfb\\u40fb;\\u4443\\u0180abh\\u3803\\u3806\\u380br\\xf2\\u13adlac;\\u4171a\\xf2\\u13c3\\u0100ir\\u3813\\u3818sht;\\u697e;\\uc000\\ud835\\udd32rave\\u803b\\xf9\\u40f9\\u0161\\u3827\\u3831r\\u0100lr\\u382c\\u382e\\xbb\\u0957\\xbb\\u1083lk;\\u6580\\u0100ct\\u3839\\u384d\\u026f\\u383f\\0\\0\\u384arn\\u0100;e\\u3845\\u3846\\u631cr\\xbb\\u3846op;\\u630fri;\\u65f8\\u0100al\\u3856\\u385acr;\\u416b\\u80bb\\xa8\\u0349\\u0100gp\\u3862\\u3866on;\\u4173f;\\uc000\\ud835\\udd66\\u0300adhlsu\\u114b\\u3878\\u387d\\u1372\\u3891\\u38a0own\\xe1\\u13b3arpoon\\u0100lr\\u3888\\u388cef\\xf4\\u382digh\\xf4\\u382fi\\u0180;hl\\u3899\\u389a\\u389c\\u43c5\\xbb\\u13faon\\xbb\\u389aparrows;\\u61c8\\u0180cit\\u38b0\\u38c4\\u38c8\\u026f\\u38b6\\0\\0\\u38c1rn\\u0100;e\\u38bc\\u38bd\\u631dr\\xbb\\u38bdop;\\u630eng;\\u416fri;\\u65f9cr;\\uc000\\ud835\\udcca\\u0180dir\\u38d9\\u38dd\\u38e2ot;\\u62f0lde;\\u4169i\\u0100;f\\u3730\\u38e8\\xbb\\u1813\\u0100am\\u38ef\\u38f2r\\xf2\\u38a8l\\u803b\\xfc\\u40fcangle;\\u69a7\\u0780ABDacdeflnoprsz\\u391c\\u391f\\u3929\\u392d\\u39b5\\u39b8\\u39bd\\u39df\\u39e4\\u39e8\\u39f3\\u39f9\\u39fd\\u3a01\\u3a20r\\xf2\\u03f7ar\\u0100;v\\u3926\\u3927\\u6ae8;\\u6ae9as\\xe8\\u03e1\\u0100nr\\u3932\\u3937grt;\\u699c\\u0380eknprst\\u34e3\\u3946\\u394b\\u3952\\u395d\\u3964\\u3996app\\xe1\\u2415othin\\xe7\\u1e96\\u0180hir\\u34eb\\u2ec8\\u3959op\\xf4\\u2fb5\\u0100;h\\u13b7\\u3962\\xef\\u318d\\u0100iu\\u3969\\u396dgm\\xe1\\u33b3\\u0100bp\\u3972\\u3984setneq\\u0100;q\\u397d\\u3980\\uc000\\u228a\\ufe00;\\uc000\\u2acb\\ufe00setneq\\u0100;q\\u398f\\u3992\\uc000\\u228b\\ufe00;\\uc000\\u2acc\\ufe00\\u0100hr\\u399b\\u399fet\\xe1\\u369ciangle\\u0100lr\\u39aa\\u39afeft\\xbb\\u0925ight\\xbb\\u1051y;\\u4432ash\\xbb\\u1036\\u0180elr\\u39c4\\u39d2\\u39d7\\u0180;be\\u2dea\\u39cb\\u39cfar;\\u62bbq;\\u625alip;\\u62ee\\u0100bt\\u39dc\\u1468a\\xf2\\u1469r;\\uc000\\ud835\\udd33tr\\xe9\\u39aesu\\u0100bp\\u39ef\\u39f1\\xbb\\u0d1c\\xbb\\u0d59pf;\\uc000\\ud835\\udd67ro\\xf0\\u0efbtr\\xe9\\u39b4\\u0100cu\\u3a06\\u3a0br;\\uc000\\ud835\\udccb\\u0100bp\\u3a10\\u3a18n\\u0100Ee\\u3980\\u3a16\\xbb\\u397en\\u0100Ee\\u3992\\u3a1e\\xbb\\u3990igzag;\\u699a\\u0380cefoprs\\u3a36\\u3a3b\\u3a56\\u3a5b\\u3a54\\u3a61\\u3a6airc;\\u4175\\u0100di\\u3a40\\u3a51\\u0100bg\\u3a45\\u3a49ar;\\u6a5fe\\u0100;q\\u15fa\\u3a4f;\\u6259erp;\\u6118r;\\uc000\\ud835\\udd34pf;\\uc000\\ud835\\udd68\\u0100;e\\u1479\\u3a66at\\xe8\\u1479cr;\\uc000\\ud835\\udccc\\u0ae3\\u178e\\u3a87\\0\\u3a8b\\0\\u3a90\\u3a9b\\0\\0\\u3a9d\\u3aa8\\u3aab\\u3aaf\\0\\0\\u3ac3\\u3ace\\0\\u3ad8\\u17dc\\u17dftr\\xe9\\u17d1r;\\uc000\\ud835\\udd35\\u0100Aa\\u3a94\\u3a97r\\xf2\\u03c3r\\xf2\\u09f6;\\u43be\\u0100Aa\\u3aa1\\u3aa4r\\xf2\\u03b8r\\xf2\\u09eba\\xf0\\u2713is;\\u62fb\\u0180dpt\\u17a4\\u3ab5\\u3abe\\u0100fl\\u3aba\\u17a9;\\uc000\\ud835\\udd69im\\xe5\\u17b2\\u0100Aa\\u3ac7\\u3acar\\xf2\\u03cer\\xf2\\u0a01\\u0100cq\\u3ad2\\u17b8r;\\uc000\\ud835\\udccd\\u0100pt\\u17d6\\u3adcr\\xe9\\u17d4\\u0400acefiosu\\u3af0\\u3afd\\u3b08\\u3b0c\\u3b11\\u3b15\\u3b1b\\u3b21c\\u0100uy\\u3af6\\u3afbte\\u803b\\xfd\\u40fd;\\u444f\\u0100iy\\u3b02\\u3b06rc;\\u4177;\\u444bn\\u803b\\xa5\\u40a5r;\\uc000\\ud835\\udd36cy;\\u4457pf;\\uc000\\ud835\\udd6acr;\\uc000\\ud835\\udcce\\u0100cm\\u3b26\\u3b29y;\\u444el\\u803b\\xff\\u40ff\\u0500acdefhiosw\\u3b42\\u3b48\\u3b54\\u3b58\\u3b64\\u3b69\\u3b6d\\u3b74\\u3b7a\\u3b80cute;\\u417a\\u0100ay\\u3b4d\\u3b52ron;\\u417e;\\u4437ot;\\u417c\\u0100et\\u3b5d\\u3b61tr\\xe6\\u155fa;\\u43b6r;\\uc000\\ud835\\udd37cy;\\u4436grarr;\\u61ddpf;\\uc000\\ud835\\udd6bcr;\\uc000\\ud835\\udccf\\u0100jn\\u3b85\\u3b87;\\u600dj;\\u600c\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-html.js.map","// Generated using scripts/write-decode-map.ts\nexport default new Uint16Array(\n// prettier-ignore\n\"\\u0200aglq\\t\\x15\\x18\\x1b\\u026d\\x0f\\0\\0\\x12p;\\u4026os;\\u4027t;\\u403et;\\u403cuot;\\u4022\"\n .split(\"\")\n .map((c) => c.charCodeAt(0)));\n//# sourceMappingURL=decode-data-xml.js.map","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 0xffff) {\n codePoint -= 0x10000;\n output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);\n codePoint = 0xdc00 | (codePoint & 0x3ff);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {\n return 0xfffd;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport default function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode_codepoint.js.map","import htmlDecodeTree from \"./generated/decode-data-html.js\";\nimport xmlDecodeTree from \"./generated/decode-data-xml.js\";\nimport decodeCodePoint, { replaceCodePoint, fromCodePoint, } from \"./decode_codepoint.js\";\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree, xmlDecodeTree, decodeCodePoint };\nexport { replaceCodePoint, fromCodePoint } from \"./decode_codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 0b100000;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param string The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(str, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (str.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(str, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(str, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(str, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(str, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(str, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(str, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(str, offset) {\n if (offset >= str.length) {\n return -1;\n }\n if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(str, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(str, offset);\n }\n addToNumericResult(str, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n parseInt(str.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(str, offset) {\n const startIdx = offset;\n while (offset < str.length) {\n const char = str.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(str, startIdx, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(str, startIdx, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param str The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(str, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < str.length; offset++, this.excess++) {\n const char = str.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let ret = \"\";\n const decoder = new EntityDecoder(decodeTree, (str) => (ret += fromCodePoint(str)));\n return function decodeWithTrie(str, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n ret += str.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const len = decoder.write(str, \n // Skip the \"&\"\n offset + 1);\n if (len < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + len;\n // If `len` is 0, skip the current `&` and continue.\n offset = len === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = ret + str.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n ret = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIdx, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIdx + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIdx;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midVal = decodeTree[mid];\n if (midVal < char) {\n lo = mid + 1;\n }\n else if (midVal > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\nconst xmlDecoder = getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param str The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(str, mode = DecodingMode.Legacy) {\n return htmlDecoder(str, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(str) {\n return htmlDecoder(str, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(str) {\n return htmlDecoder(str, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param str The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(str) {\n return xmlDecoder(str, DecodingMode.Strict);\n}\n//# sourceMappingURL=decode.js.map","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n const sources = Array.prototype.slice.call(arguments, 1)\n\n sources.forEach(function (source) {\n if (!source) { return }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be object')\n }\n\n Object.keys(source).forEach(function (key) {\n obj[key] = source[key]\n })\n })\n\n return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n /* eslint no-bitwise:0 */\n // broken sequence\n if (c >= 0xD800 && c <= 0xDFFF) { return false }\n // never used\n if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n // control codes\n if (c >= 0x00 && c <= 0x08) { return false }\n if (c === 0x0B) { return false }\n if (c >= 0x0E && c <= 0x1F) { return false }\n if (c >= 0x7F && c <= 0x9F) { return false }\n // out of range\n if (c > 0x10FFFF) { return false }\n return true\n}\n\nfunction fromCodePoint (c) {\n /* eslint no-bitwise:0 */\n if (c > 0xffff) {\n c -= 0x10000\n const surrogate1 = 0xd800 + (c >> 10)\n const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n return String.fromCharCode(surrogate1, surrogate2)\n }\n return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n const code = name[1].toLowerCase() === 'x'\n ? parseInt(name.slice(2), 16)\n : parseInt(name.slice(1), 10)\n\n if (isValidEntityCode(code)) {\n return fromCodePoint(code)\n }\n\n return match\n }\n\n const decoded = decodeHTML(match)\n if (decoded !== match) {\n return decoded\n }\n\n return match\n}\n\n/* function replaceEntities(str) {\n if (str.indexOf('&') < 0) { return str; }\n\n return str.replace(ENTITY_RE, replaceEntityPattern);\n} */\n\nfunction unescapeMd (str) {\n if (str.indexOf('\\\\') < 0) { return str }\n return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n if (escaped) { return escaped }\n return replaceEntityPattern(match, entity)\n })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"'\n}\n\nfunction replaceUnsafeChar (ch) {\n return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n if (HTML_ESCAPE_TEST_RE.test(str)) {\n return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n }\n return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n switch (code) {\n case 0x09:\n case 0x20:\n return true\n }\n return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n if (code >= 0x2000 && code <= 0x200A) { return true }\n switch (code) {\n case 0x09: // \\t\n case 0x0A: // \\n\n case 0x0B: // \\v\n case 0x0C: // \\f\n case 0x0D: // \\r\n case 0x20:\n case 0xA0:\n case 0x1680:\n case 0x202F:\n case 0x205F:\n case 0x3000:\n return true\n }\n return false\n}\n\n/* eslint-disable max-len */\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n switch (ch) {\n case 0x21/* ! */:\n case 0x22/* \" */:\n case 0x23/* # */:\n case 0x24/* $ */:\n case 0x25/* % */:\n case 0x26/* & */:\n case 0x27/* ' */:\n case 0x28/* ( */:\n case 0x29/* ) */:\n case 0x2A/* * */:\n case 0x2B/* + */:\n case 0x2C/* , */:\n case 0x2D/* - */:\n case 0x2E/* . */:\n case 0x2F/* / */:\n case 0x3A/* : */:\n case 0x3B/* ; */:\n case 0x3C/* < */:\n case 0x3D/* = */:\n case 0x3E/* > */:\n case 0x3F/* ? */:\n case 0x40/* @ */:\n case 0x5B/* [ */:\n case 0x5C/* \\ */:\n case 0x5D/* ] */:\n case 0x5E/* ^ */:\n case 0x5F/* _ */:\n case 0x60/* ` */:\n case 0x7B/* { */:\n case 0x7C/* | */:\n case 0x7D/* } */:\n case 0x7E/* ~ */:\n return true\n default:\n return false\n }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n // Trim and collapse whitespace\n //\n str = str.trim().replace(/\\s+/g, ' ')\n\n // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n // fixed in v12 (couldn't find any details).\n //\n // So treat this one as a special case\n // (remove this when node v10 is no longer supported).\n //\n if ('ẞ'.toLowerCase() === 'Ṿ') {\n str = str.replace(/ẞ/g, 'ß')\n }\n\n // .toLowerCase().toUpperCase() should get rid of all differences\n // between letter variants.\n //\n // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n // uppercased versions).\n //\n // Here's an example showing how it happens. Lets take greek letter omega:\n // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n //\n // Unicode entries:\n // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n // 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8;\n //\n // Case-insensitive comparison should treat all of them as equivalent.\n //\n // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n // and .toUpperCase() doesn't change ϴ (already uppercase).\n //\n // Applying first lower then upper case normalizes any character:\n // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n //\n // Note: this is equivalent to unicode case folding; unicode normalization\n // is a different step that is not required here.\n //\n // Final result should be uppercased, because it's later stored in an object\n // (this avoid a conflict with Object.prototype members,\n // most notably, `__proto__`)\n //\n return str.toLowerCase().toUpperCase()\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n lib,\n assign,\n isString,\n has,\n unescapeMd,\n unescapeAll,\n isValidEntityCode,\n fromCodePoint,\n escapeHtml,\n arrayReplaceAt,\n isSpace,\n isWhiteSpace,\n isMdAsciiPunct,\n isPunctChar,\n escapeRE,\n normalizeReference\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n let level, found, marker, prevPos\n\n const max = state.posMax\n const oldPos = state.pos\n\n state.pos = start + 1\n level = 1\n\n while (state.pos < max) {\n marker = state.src.charCodeAt(state.pos)\n if (marker === 0x5D /* ] */) {\n level--\n if (level === 0) {\n found = true\n break\n }\n }\n\n prevPos = state.pos\n state.md.inline.skipToken(state)\n if (marker === 0x5B /* [ */) {\n if (prevPos === state.pos - 1) {\n // increase level if we find text `[`, which is not a part of any token\n level++\n } else if (disableNested) {\n state.pos = oldPos\n return -1\n }\n }\n }\n\n let labelEnd = -1\n\n if (found) {\n labelEnd = state.pos\n }\n\n // restore old state\n state.pos = oldPos\n\n return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n let code\n let pos = start\n\n const result = {\n ok: false,\n pos: 0,\n str: ''\n }\n\n if (str.charCodeAt(pos) === 0x3C /* < */) {\n pos++\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === 0x0A /* \\n */) { return result }\n if (code === 0x3C /* < */) { return result }\n if (code === 0x3E /* > */) {\n result.pos = pos + 1\n result.str = unescapeAll(str.slice(start + 1, pos))\n result.ok = true\n return result\n }\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos += 2\n continue\n }\n\n pos++\n }\n\n // no closing '>'\n return result\n }\n\n // this should be ... } else { ... branch\n\n let level = 0\n while (pos < max) {\n code = str.charCodeAt(pos)\n\n if (code === 0x20) { break }\n\n // ascii control characters\n if (code < 0x20 || code === 0x7F) { break }\n\n if (code === 0x5C /* \\ */ && pos + 1 < max) {\n if (str.charCodeAt(pos + 1) === 0x20) { break }\n pos += 2\n continue\n }\n\n if (code === 0x28 /* ( */) {\n level++\n if (level > 32) { return result }\n }\n\n if (code === 0x29 /* ) */) {\n if (level === 0) { break }\n level--\n }\n\n pos++\n }\n\n if (start === pos) { return result }\n if (level !== 0) { return result }\n\n result.str = unescapeAll(str.slice(start, pos))\n result.pos = pos\n result.ok = true\n return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\n// Parse link title within `str` in [start, max] range,\n// or continue previous parsing if `prev_state` is defined (equal to result of last execution).\n//\nexport default function parseLinkTitle (str, start, max, prev_state) {\n let code\n let pos = start\n\n const state = {\n // if `true`, this is a valid link title\n ok: false,\n // if `true`, this link can be continued on the next line\n can_continue: false,\n // if `ok`, it's the position of the first character after the closing marker\n pos: 0,\n // if `ok`, it's the unescaped title\n str: '',\n // expected closing marker character code\n marker: 0\n }\n\n if (prev_state) {\n // this is a continuation of a previous parseLinkTitle call on the next line,\n // used in reference links only\n state.str = prev_state.str\n state.marker = prev_state.marker\n } else {\n if (pos >= max) { return state }\n\n let marker = str.charCodeAt(pos)\n if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }\n\n start++\n pos++\n\n // if opening marker is \"(\", switch it to closing marker \")\"\n if (marker === 0x28) { marker = 0x29 }\n\n state.marker = marker\n }\n\n while (pos < max) {\n code = str.charCodeAt(pos)\n if (code === state.marker) {\n state.pos = pos + 1\n state.str += unescapeAll(str.slice(start, pos))\n state.ok = true\n return state\n } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {\n return state\n } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n pos++\n }\n\n pos++\n }\n\n // no closing marker found, but this link title may continue on the next line (for references)\n state.can_continue = true\n state.str += unescapeAll(str.slice(start, pos))\n return state\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '' +\n escapeHtml(token.content) +\n ''\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n\n return '
' +\n escapeHtml(tokens[idx].content) +\n '
\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n const token = tokens[idx]\n const info = token.info ? unescapeAll(token.info).trim() : ''\n let langName = ''\n let langAttrs = ''\n\n if (info) {\n const arr = info.split(/(\\s+)/g)\n langName = arr[0]\n langAttrs = arr.slice(2).join('')\n }\n\n let highlighted\n if (options.highlight) {\n highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n } else {\n highlighted = escapeHtml(token.content)\n }\n\n if (highlighted.indexOf('