Greasy Fork

爱问答助手

全平台问答助手,一键获取整个页面的试题答案,目前支持【超星学习通、知到智慧树、国开、广开、江开、上开、芯位教育、云慕学苑、职教云、川农在线、长江雨课堂(半兼容)、安徽继续教育平台、青书学堂、睿学在线、成教云】,更多平台开发中...

目前为 2024-06-19 提交的版本。查看 最新版本

// ==UserScript==
// @name         爱问答助手
// @namespace    aiask/askHelper
// @version      1.2.0
// @author       aiask
// @description  全平台问答助手,一键获取整个页面的试题答案,目前支持【超星学习通、知到智慧树、国开、广开、江开、上开、芯位教育、云慕学苑、职教云、川农在线、长江雨课堂(半兼容)、安徽继续教育平台、青书学堂、睿学在线、成教云】,更多平台开发中...
// @license      MIT
// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHVQTFRFR3BMgICBQD8/QUVHQ0ZIRUhKX2FiQD8/Tk1NP0VJPzs7Pz8/QD4+UE9QQD8/PVlnQD8/M6vj////n5+fN5C60NDQSl9qOXWSZL/qTFNXzOr4QWl8yMjItLS02traOIOnNZzN6OfnlJeZ9/f3PYGgpdrzmdXxgSBJqQAAABB0Uk5TAP5E6vys+7/Q0RhsfPFV/OwFarYAAAEESURBVHjapdHrboMgGIBhUHBaD/sAlTE8VOt2/5c4GlBMRZOl7w8j+kQQ0FaVwbG48IDq+piMPcgkO1bD/8DXvhD4/fb9ePDuGiqa2krV7pO1AxSLYIl2ABoeTLSvYMBi4N0sphOAlVaqg1aTPggmZYYaFvNMBYGQz6G6m2vbhEBvF81MxALFTDpbQQd3ZhvBgxqiFfBEO/CJ7ZxkNPcUbWBwn5DJw4KSsJHcHPCTLLDuQxpLkiMLbAIWJs1wBRVkyAFXT7Sa+AYQjTywNfOD74DNA18I9Ifjpg7Es/3Jj5eKyIEcBgNwhk5L8XMPonMQQcfNhBfRpIfbFbiRskCX5enFyz/07TSN9vGxKwAAAABJRU5ErkJggg==
// @match        *://*.asklib.com/*
// @match        *://*.chaoxing.com/*
// @match        *://*.hlju.edu.cn/*
// @match        *://lms.ouchn.cn/*
// @match        *://xczxzdbf.moodle.qwbx.ouchn.cn/*
// @match        *://tongyi.aliyun.com/qianwen/*
// @match        *://chatglm.cn/*
// @match        *://*.zhihuishu.com/*
// @match        *://course.ougd.cn/*
// @match        *://moodle.syxy.ouchn.cn/*
// @match        *://moodle.qwbx.ouchn.cn/*
// @match        *://elearning.bjou.edu.cn/*
// @match        *://whkpc.hnqtyq.cn:5678/*
// @match        *://study.ouchn.cn/*
// @match        *://www.51xinwei.com/*
// @match        *://*.w-ling.cn/*
// @match        *://xuexi.jsou.cn/*
// @match        *://*.edu-edu.com/*
// @match        *://xuexi.jsou.cn/*
// @match        *://spoc-exam.icve.com.cn/*
// @match        *://*.icve.com.cn/*
// @match        *://zice.cnzx.info/*
// @match        *://any.cnzx.info:81/*
// @match        *://www.icourse163.org/*
// @match        *://*.yuketang.cn/*
// @match        *://*.shou.org.cn/*
// @match        *://main.ahjxjy.cn/*
// @match        *://exam.chinaedu.net/*
// @match        *://degree.qingshuxuetang.com/*
// @match        *://cce.org.uooconline.com/*
// @match        *://*.courshare.cn/*
// @match        *://*.cep.webtrn.cn/*
// @match        *://*.webtrn.cn/*
// @match        *://*.cj-edu.com/*
// @require      https://cdn.bootcdn.net/ajax/libs/vue/3.4.21/vue.global.prod.js
// @require      https://cdn.bootcdn.net/ajax/libs/vue-demi/0.14.6/index.iife.js
// @require      data:application/javascript,%3Bwindow.Vue%3DVue%3B
// @require      https://cdn.bootcdn.net/ajax/libs/element-plus/2.6.3/index.full.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/highlight.js/11.9.0/highlight.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/markdown-it/13.0.1/markdown-it.min.js
// @require      https://cdn.bootcdn.net/ajax/libs/dompurify/3.0.11/purify.min.js
// @resource     ttf   https://www.forestpolice.org/ttf/2.0/table.json
// @resource     ttf2  https://cdn.jsdmirror.com/gh/chengbianruan/staticfile/1.json
// @connect      127.0.0.1
// @connect      icodef.com
// @connect      muketool.com
// @connect      wk66.top
// @connect      82.157.105.20
// @connect      tikuhai.com
// @connect      zhihuishu.com
// @connect      yuketang.cn
// @connect      greasyfork.org
// @grant        GM_addStyle
// @grant        GM_deleteValue
// @grant        GM_getResourceText
// @grant        GM_getValue
// @grant        GM_info
// @grant        GM_listValues
// @grant        GM_setValue
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @run-at       document-start
// @antifeature  payment  第三方接口存在付费项
// ==/UserScript==

(a=>{if(typeof GM_addStyle=="function"){GM_addStyle(a);return}const o=document.createElement("style");o.textContent=a,document.head.append(o)})(` @charset "UTF-8";:root{--aah-color-white: #ffffff;--aah-color-black: #000000;--aah-color-primary-rgb: 64, 158, 255;--aah-color-success-rgb: 103, 194, 58;--aah-color-warning-rgb: 230, 162, 60;--aah-color-danger-rgb: 245, 108, 108;--aah-color-error-rgb: 245, 108, 108;--aah-color-info-rgb: 144, 147, 153;--aah-font-size-extra-large: 20px;--aah-font-size-large: 18px;--aah-font-size-medium: 16px;--aah-font-size-base: 14px;--aah-font-size-small: 13px;--aah-font-size-extra-small: 12px;--aah-font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "\u5FAE\u8F6F\u96C5\u9ED1", Arial, sans-serif;--aah-font-weight-primary: 500;--aah-font-line-height-primary: 24px;--aah-index-normal: 1;--aah-index-top: 1000;--aah-index-popper: 2000;--aah-border-radius-base: 4px;--aah-border-radius-small: 2px;--aah-border-radius-round: 20px;--aah-border-radius-circle: 100%;--aah-transition-duration: .3s;--aah-transition-duration-fast: .2s;--aah-transition-function-ease-in-out-bezier: cubic-bezier(.645, .045, .355, 1);--aah-transition-function-fast-bezier: cubic-bezier(.23, 1, .32, 1);--aah-transition-all: all var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-fade: opacity var(--aah-transition-duration) var(--aah-transition-function-fast-bezier);--aah-transition-md-fade: transform var(--aah-transition-duration) var(--aah-transition-function-fast-bezier), opacity var(--aah-transition-duration) var(--aah-transition-function-fast-bezier);--aah-transition-fade-linear: opacity var(--aah-transition-duration-fast) linear;--aah-transition-border: border-color var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-box-shadow: box-shadow var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-color: color var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-component-size-large: 40px;--aah-component-size: 32px;--aah-component-size-small: 24px}:root{color-scheme:light;--aah-color-primary: #409eff;--aah-color-primary-light-3: #79bbff;--aah-color-primary-light-5: #a0cfff;--aah-color-primary-light-7: #c6e2ff;--aah-color-primary-light-8: #d9ecff;--aah-color-primary-light-9: #ecf5ff;--aah-color-primary-dark-2: #337ecc;--aah-color-success: #67c23a;--aah-color-success-light-3: #95d475;--aah-color-success-light-5: #b3e19d;--aah-color-success-light-7: #d1edc4;--aah-color-success-light-8: #e1f3d8;--aah-color-success-light-9: #f0f9eb;--aah-color-success-dark-2: #529b2e;--aah-color-warning: #e6a23c;--aah-color-warning-light-3: #eebe77;--aah-color-warning-light-5: #f3d19e;--aah-color-warning-light-7: #f8e3c5;--aah-color-warning-light-8: #faecd8;--aah-color-warning-light-9: #fdf6ec;--aah-color-warning-dark-2: #b88230;--aah-color-danger: #f56c6c;--aah-color-danger-light-3: #f89898;--aah-color-danger-light-5: #fab6b6;--aah-color-danger-light-7: #fcd3d3;--aah-color-danger-light-8: #fde2e2;--aah-color-danger-light-9: #fef0f0;--aah-color-danger-dark-2: #c45656;--aah-color-error: #f56c6c;--aah-color-error-light-3: #f89898;--aah-color-error-light-5: #fab6b6;--aah-color-error-light-7: #fcd3d3;--aah-color-error-light-8: #fde2e2;--aah-color-error-light-9: #fef0f0;--aah-color-error-dark-2: #c45656;--aah-color-info: #909399;--aah-color-info-light-3: #b1b3b8;--aah-color-info-light-5: #c8c9cc;--aah-color-info-light-7: #dedfe0;--aah-color-info-light-8: #e9e9eb;--aah-color-info-light-9: #f4f4f5;--aah-color-info-dark-2: #73767a;--aah-bg-color: #ffffff;--aah-bg-color-page: #f2f3f5;--aah-bg-color-overlay: #ffffff;--aah-text-color-primary: #303133;--aah-text-color-regular: #606266;--aah-text-color-secondary: #909399;--aah-text-color-placeholder: #a8abb2;--aah-text-color-disabled: #c0c4cc;--aah-border-color: #dcdfe6;--aah-border-color-light: #e4e7ed;--aah-border-color-lighter: #ebeef5;--aah-border-color-extra-light: #f2f6fc;--aah-border-color-dark: #d4d7de;--aah-border-color-darker: #cdd0d6;--aah-fill-color: #f0f2f5;--aah-fill-color-light: #f5f7fa;--aah-fill-color-lighter: #fafafa;--aah-fill-color-extra-light: #fafcff;--aah-fill-color-dark: #ebedf0;--aah-fill-color-darker: #e6e8eb;--aah-fill-color-blank: #ffffff;--aah-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .04), 0px 8px 20px rgba(0, 0, 0, .08);--aah-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .12);--aah-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .12);--aah-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .08), 0px 12px 32px rgba(0, 0, 0, .12), 0px 8px 16px -8px rgba(0, 0, 0, .16);--aah-disabled-bg-color: var(--aah-fill-color-light);--aah-disabled-text-color: var(--aah-text-color-placeholder);--aah-disabled-border-color: var(--aah-border-color-light);--aah-overlay-color: rgba(0, 0, 0, .8);--aah-overlay-color-light: rgba(0, 0, 0, .7);--aah-overlay-color-lighter: rgba(0, 0, 0, .5);--aah-mask-color: rgba(255, 255, 255, .9);--aah-mask-color-extra-light: rgba(255, 255, 255, .3);--aah-border-width: 1px;--aah-border-style: solid;--aah-border-color-hover: var(--aah-text-color-disabled);--aah-border: var(--aah-border-width) var(--aah-border-style) var(--aah-border-color);--aah-svg-monochrome-grey: var(--aah-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--aah-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.aah-fade-in-linear-enter-active,.aah-fade-in-linear-leave-active{transition:var(--aah-transition-fade-linear)}.aah-fade-in-linear-enter-from,.aah-fade-in-linear-leave-to{opacity:0}.aah-fade-in-enter-active,.aah-fade-in-leave-active{transition:all var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-fade-in-enter-from,.aah-fade-in-leave-active{opacity:0}.aah-zoom-in-center-enter-active,.aah-zoom-in-center-leave-active{transition:all var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-zoom-in-center-enter-from,.aah-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.aah-zoom-in-top-enter-active,.aah-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--aah-transition-md-fade);transform-origin:center top}.aah-zoom-in-top-enter-active[data-popper-placement^=top],.aah-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.aah-zoom-in-top-enter-from,.aah-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.aah-zoom-in-bottom-enter-active,.aah-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--aah-transition-md-fade);transform-origin:center bottom}.aah-zoom-in-bottom-enter-from,.aah-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.aah-zoom-in-left-enter-active,.aah-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--aah-transition-md-fade);transform-origin:top left}.aah-zoom-in-left-enter-from,.aah-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--aah-transition-duration) height ease-in-out,var(--aah-transition-duration) padding-top ease-in-out,var(--aah-transition-duration) padding-bottom ease-in-out}.aah-collapse-transition-leave-active,.aah-collapse-transition-enter-active{transition:var(--aah-transition-duration) max-height ease-in-out,var(--aah-transition-duration) padding-top ease-in-out,var(--aah-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--aah-transition-duration) width ease-in-out,var(--aah-transition-duration) padding-left ease-in-out,var(--aah-transition-duration) padding-right ease-in-out}.aah-list-enter-active,.aah-list-leave-active{transition:all 1s}.aah-list-enter-from,.aah-list-leave-to{opacity:0;transform:translateY(-30px)}.aah-list-leave-active{position:absolute!important}.aah-opacity-transition{transition:opacity var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-icon-loading{animation:rotating 2s linear infinite}.aah-icon--right{margin-left:5px}.aah-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.aah-icon{--color: inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.aah-icon.is-loading{animation:rotating 2s linear infinite}.aah-icon svg{height:1em;width:1em}.aah-dialog{--aah-dialog-width: 50%;--aah-dialog-margin-top: 15vh;--aah-dialog-bg-color: var(--aah-bg-color);--aah-dialog-box-shadow: var(--aah-box-shadow);--aah-dialog-title-font-size: var(--aah-font-size-large);--aah-dialog-content-font-size: 14px;--aah-dialog-font-line-height: var(--aah-font-line-height-primary);--aah-dialog-padding-primary: 16px;--aah-dialog-border-radius: var(--aah-border-radius-small);position:relative;margin:var(--aah-dialog-margin-top, 15vh) auto 50px;background:var(--aah-dialog-bg-color);border-radius:var(--aah-dialog-border-radius);box-shadow:var(--aah-dialog-box-shadow);box-sizing:border-box;padding:var(--aah-dialog-padding-primary);width:var(--aah-dialog-width, 50%);overflow-wrap:break-word}.aah-dialog:focus{outline:none!important}.aah-dialog.is-align-center{margin:auto}.aah-dialog.is-fullscreen{--aah-dialog-width: 100%;--aah-dialog-margin-top: 0;margin-bottom:0;height:100%;overflow:auto}.aah-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.aah-dialog.is-draggable .aah-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.aah-dialog__header{padding-bottom:var(--aah-dialog-padding-primary)}.aah-dialog__header.show-close{padding-right:calc(var(--aah-dialog-padding-primary) + var(--aah-message-close-size, 16px))}.aah-dialog__headerbtn{position:absolute;top:0;right:0;padding:0;width:48px;height:48px;background:transparent;border:none;outline:none;cursor:pointer;font-size:var(--aah-message-close-size, 16px)}.aah-dialog__headerbtn .aah-dialog__close{color:var(--aah-color-info);font-size:inherit}.aah-dialog__headerbtn:focus .aah-dialog__close,.aah-dialog__headerbtn:hover .aah-dialog__close{color:var(--aah-color-primary)}.aah-dialog__title{line-height:var(--aah-dialog-font-line-height);font-size:var(--aah-dialog-title-font-size);color:var(--aah-text-color-primary)}.aah-dialog__body{color:var(--aah-text-color-regular);font-size:var(--aah-dialog-content-font-size)}.aah-dialog__footer{padding-top:var(--aah-dialog-padding-primary);text-align:right;box-sizing:border-box}.aah-dialog--center{text-align:center}.aah-dialog--center .aah-dialog__body{text-align:initial}.aah-dialog--center .aah-dialog__footer{text-align:inherit}.aah-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{animation:modal-fade-in var(--aah-transition-duration)}.dialog-fade-enter-active .aah-overlay-dialog{animation:dialog-fade-in var(--aah-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--aah-transition-duration)}.dialog-fade-leave-active .aah-overlay-dialog{animation:dialog-fade-out var(--aah-transition-duration)}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.aah-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--aah-overlay-color-lighter);overflow:auto}.aah-overlay .aah-overlay-root{height:0}.aah-scrollbar{--aah-scrollbar-opacity: .3;--aah-scrollbar-bg-color: var(--aah-text-color-secondary);--aah-scrollbar-hover-opacity: .5;--aah-scrollbar-hover-bg-color: var(--aah-text-color-secondary)}.aah-scrollbar{overflow:hidden;position:relative;height:100%}.aah-scrollbar__wrap{overflow:auto;height:100%}.aah-scrollbar__wrap--hidden-default{scrollbar-width:none}.aah-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.aah-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--aah-scrollbar-bg-color, var(--aah-text-color-secondary));transition:var(--aah-transition-duration) background-color;opacity:var(--aah-scrollbar-opacity, .3)}.aah-scrollbar__thumb:hover{background-color:var(--aah-scrollbar-hover-bg-color, var(--aah-text-color-secondary));opacity:var(--aah-scrollbar-hover-opacity, .5)}.aah-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.aah-scrollbar__bar.is-vertical{width:6px;top:2px}.aah-scrollbar__bar.is-vertical>div{width:100%}.aah-scrollbar__bar.is-horizontal{height:6px;left:2px}.aah-scrollbar__bar.is-horizontal>div{height:100%}.aah-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.aah-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.aah-scrollbar-fade-enter-from,.aah-scrollbar-fade-leave-active{opacity:0}.aah-breadcrumb{font-size:14px;line-height:1}.aah-breadcrumb:before,.aah-breadcrumb:after{display:table;content:""}.aah-breadcrumb:after{clear:both}.aah-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--aah-text-color-placeholder)}.aah-breadcrumb__separator.aah-icon{margin:0 6px;font-weight:400}.aah-breadcrumb__separator.aah-icon svg{vertical-align:middle}.aah-breadcrumb__item{float:left;display:inline-flex;align-items:center}.aah-breadcrumb__inner{color:var(--aah-text-color-regular)}.aah-breadcrumb__inner.is-link,.aah-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:var(--aah-transition-color);color:var(--aah-text-color-primary)}.aah-breadcrumb__inner.is-link:hover,.aah-breadcrumb__inner a:hover{color:var(--aah-color-primary);cursor:pointer}.aah-breadcrumb__item:last-child .aah-breadcrumb__inner,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner:hover,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner a,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner a:hover{font-weight:400;color:var(--aah-text-color-regular);cursor:text}.aah-breadcrumb__item:last-child .aah-breadcrumb__separator{display:none}.aah-button{--aah-button-font-weight: var(--aah-font-weight-primary);--aah-button-border-color: var(--aah-border-color);--aah-button-bg-color: var(--aah-fill-color-blank);--aah-button-text-color: var(--aah-text-color-regular);--aah-button-disabled-text-color: var(--aah-disabled-text-color);--aah-button-disabled-bg-color: var(--aah-fill-color-blank);--aah-button-disabled-border-color: var(--aah-border-color-light);--aah-button-divide-border-color: rgba(255, 255, 255, .5);--aah-button-hover-text-color: var(--aah-color-primary);--aah-button-hover-bg-color: var(--aah-color-primary-light-9);--aah-button-hover-border-color: var(--aah-color-primary-light-7);--aah-button-active-text-color: var(--aah-button-hover-text-color);--aah-button-active-border-color: var(--aah-color-primary);--aah-button-active-bg-color: var(--aah-button-hover-bg-color);--aah-button-outline-color: var(--aah-color-primary-light-5);--aah-button-hover-link-text-color: var(--aah-color-info);--aah-button-active-color: var(--aah-text-color-primary)}.aah-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;color:var(--aah-button-text-color);text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:var(--aah-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--aah-button-bg-color);border:var(--aah-border);border-color:var(--aah-button-border-color);padding:8px 15px;font-size:var(--aah-font-size-base);border-radius:var(--aah-border-radius-base)}.aah-button:hover{color:var(--aah-button-hover-text-color);border-color:var(--aah-button-hover-border-color);background-color:var(--aah-button-hover-bg-color);outline:none}.aah-button:active{color:var(--aah-button-active-text-color);border-color:var(--aah-button-active-border-color);background-color:var(--aah-button-active-bg-color);outline:none}.aah-button:focus-visible{outline:2px solid var(--aah-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.aah-button>span{display:inline-flex;align-items:center}.aah-button+.aah-button{margin-left:12px}.aah-button.is-round{padding:8px 15px}.aah-button::-moz-focus-inner{border:0}.aah-button [class*=aah-icon]+span{margin-left:6px}.aah-button [class*=aah-icon] svg{vertical-align:bottom}.aah-button.is-plain{--aah-button-hover-text-color: var(--aah-color-primary);--aah-button-hover-bg-color: var(--aah-fill-color-blank);--aah-button-hover-border-color: var(--aah-color-primary)}.aah-button.is-active{color:var(--aah-button-active-text-color);border-color:var(--aah-button-active-border-color);background-color:var(--aah-button-active-bg-color);outline:none}.aah-button.is-disabled,.aah-button.is-disabled:hover{color:var(--aah-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--aah-button-disabled-bg-color);border-color:var(--aah-button-disabled-border-color)}.aah-button.is-loading{position:relative;pointer-events:none}.aah-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--aah-mask-color-extra-light)}.aah-button.is-round{border-radius:var(--aah-border-radius-round)}.aah-button.is-circle{width:32px;border-radius:50%;padding:8px}.aah-button.is-text{color:var(--aah-button-text-color);border:0 solid transparent;background-color:transparent}.aah-button.is-text.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important}.aah-button.is-text:not(.is-disabled):hover{background-color:var(--aah-fill-color-light)}.aah-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--aah-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.aah-button.is-text:not(.is-disabled):active{background-color:var(--aah-fill-color)}.aah-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--aah-fill-color-light)}.aah-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--aah-fill-color)}.aah-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--aah-fill-color-dark)}.aah-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.aah-button.is-link{border-color:transparent;color:var(--aah-button-text-color);background:transparent;padding:2px;height:auto}.aah-button.is-link:hover{color:var(--aah-button-hover-link-text-color)}.aah-button.is-link.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.aah-button.is-link:not(.is-disabled):hover{border-color:transparent;background-color:transparent}.aah-button.is-link:not(.is-disabled):active{color:var(--aah-button-active-color);border-color:transparent;background-color:transparent}.aah-button--text{border-color:transparent;background:transparent;color:var(--aah-color-primary);padding-left:0;padding-right:0}.aah-button--text.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.aah-button--text:not(.is-disabled):hover{color:var(--aah-color-primary-light-3);border-color:transparent;background-color:transparent}.aah-button--text:not(.is-disabled):active{color:var(--aah-color-primary-dark-2);border-color:transparent;background-color:transparent}.aah-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.aah-button--primary{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-primary);--aah-button-border-color: var(--aah-color-primary);--aah-button-outline-color: var(--aah-color-primary-light-5);--aah-button-active-color: var(--aah-color-primary-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-primary-light-5);--aah-button-hover-bg-color: var(--aah-color-primary-light-3);--aah-button-hover-border-color: var(--aah-color-primary-light-3);--aah-button-active-bg-color: var(--aah-color-primary-dark-2);--aah-button-active-border-color: var(--aah-color-primary-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-primary-light-5);--aah-button-disabled-border-color: var(--aah-color-primary-light-5)}.aah-button--primary.is-plain,.aah-button--primary.is-text,.aah-button--primary.is-link{--aah-button-text-color: var(--aah-color-primary);--aah-button-bg-color: var(--aah-color-primary-light-9);--aah-button-border-color: var(--aah-color-primary-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-primary);--aah-button-hover-border-color: var(--aah-color-primary);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--primary.is-plain.is-disabled,.aah-button--primary.is-plain.is-disabled:hover,.aah-button--primary.is-plain.is-disabled:focus,.aah-button--primary.is-plain.is-disabled:active,.aah-button--primary.is-text.is-disabled,.aah-button--primary.is-text.is-disabled:hover,.aah-button--primary.is-text.is-disabled:focus,.aah-button--primary.is-text.is-disabled:active,.aah-button--primary.is-link.is-disabled,.aah-button--primary.is-link.is-disabled:hover,.aah-button--primary.is-link.is-disabled:focus,.aah-button--primary.is-link.is-disabled:active{color:var(--aah-color-primary-light-5);background-color:var(--aah-color-primary-light-9);border-color:var(--aah-color-primary-light-8)}.aah-button--success{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-success);--aah-button-border-color: var(--aah-color-success);--aah-button-outline-color: var(--aah-color-success-light-5);--aah-button-active-color: var(--aah-color-success-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-success-light-5);--aah-button-hover-bg-color: var(--aah-color-success-light-3);--aah-button-hover-border-color: var(--aah-color-success-light-3);--aah-button-active-bg-color: var(--aah-color-success-dark-2);--aah-button-active-border-color: var(--aah-color-success-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-success-light-5);--aah-button-disabled-border-color: var(--aah-color-success-light-5)}.aah-button--success.is-plain,.aah-button--success.is-text,.aah-button--success.is-link{--aah-button-text-color: var(--aah-color-success);--aah-button-bg-color: var(--aah-color-success-light-9);--aah-button-border-color: var(--aah-color-success-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-success);--aah-button-hover-border-color: var(--aah-color-success);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--success.is-plain.is-disabled,.aah-button--success.is-plain.is-disabled:hover,.aah-button--success.is-plain.is-disabled:focus,.aah-button--success.is-plain.is-disabled:active,.aah-button--success.is-text.is-disabled,.aah-button--success.is-text.is-disabled:hover,.aah-button--success.is-text.is-disabled:focus,.aah-button--success.is-text.is-disabled:active,.aah-button--success.is-link.is-disabled,.aah-button--success.is-link.is-disabled:hover,.aah-button--success.is-link.is-disabled:focus,.aah-button--success.is-link.is-disabled:active{color:var(--aah-color-success-light-5);background-color:var(--aah-color-success-light-9);border-color:var(--aah-color-success-light-8)}.aah-button--warning{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-warning);--aah-button-border-color: var(--aah-color-warning);--aah-button-outline-color: var(--aah-color-warning-light-5);--aah-button-active-color: var(--aah-color-warning-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-warning-light-5);--aah-button-hover-bg-color: var(--aah-color-warning-light-3);--aah-button-hover-border-color: var(--aah-color-warning-light-3);--aah-button-active-bg-color: var(--aah-color-warning-dark-2);--aah-button-active-border-color: var(--aah-color-warning-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-warning-light-5);--aah-button-disabled-border-color: var(--aah-color-warning-light-5)}.aah-button--warning.is-plain,.aah-button--warning.is-text,.aah-button--warning.is-link{--aah-button-text-color: var(--aah-color-warning);--aah-button-bg-color: var(--aah-color-warning-light-9);--aah-button-border-color: var(--aah-color-warning-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-warning);--aah-button-hover-border-color: var(--aah-color-warning);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--warning.is-plain.is-disabled,.aah-button--warning.is-plain.is-disabled:hover,.aah-button--warning.is-plain.is-disabled:focus,.aah-button--warning.is-plain.is-disabled:active,.aah-button--warning.is-text.is-disabled,.aah-button--warning.is-text.is-disabled:hover,.aah-button--warning.is-text.is-disabled:focus,.aah-button--warning.is-text.is-disabled:active,.aah-button--warning.is-link.is-disabled,.aah-button--warning.is-link.is-disabled:hover,.aah-button--warning.is-link.is-disabled:focus,.aah-button--warning.is-link.is-disabled:active{color:var(--aah-color-warning-light-5);background-color:var(--aah-color-warning-light-9);border-color:var(--aah-color-warning-light-8)}.aah-button--danger{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-danger);--aah-button-border-color: var(--aah-color-danger);--aah-button-outline-color: var(--aah-color-danger-light-5);--aah-button-active-color: var(--aah-color-danger-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-danger-light-5);--aah-button-hover-bg-color: var(--aah-color-danger-light-3);--aah-button-hover-border-color: var(--aah-color-danger-light-3);--aah-button-active-bg-color: var(--aah-color-danger-dark-2);--aah-button-active-border-color: var(--aah-color-danger-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-danger-light-5);--aah-button-disabled-border-color: var(--aah-color-danger-light-5)}.aah-button--danger.is-plain,.aah-button--danger.is-text,.aah-button--danger.is-link{--aah-button-text-color: var(--aah-color-danger);--aah-button-bg-color: var(--aah-color-danger-light-9);--aah-button-border-color: var(--aah-color-danger-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-danger);--aah-button-hover-border-color: var(--aah-color-danger);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--danger.is-plain.is-disabled,.aah-button--danger.is-plain.is-disabled:hover,.aah-button--danger.is-plain.is-disabled:focus,.aah-button--danger.is-plain.is-disabled:active,.aah-button--danger.is-text.is-disabled,.aah-button--danger.is-text.is-disabled:hover,.aah-button--danger.is-text.is-disabled:focus,.aah-button--danger.is-text.is-disabled:active,.aah-button--danger.is-link.is-disabled,.aah-button--danger.is-link.is-disabled:hover,.aah-button--danger.is-link.is-disabled:focus,.aah-button--danger.is-link.is-disabled:active{color:var(--aah-color-danger-light-5);background-color:var(--aah-color-danger-light-9);border-color:var(--aah-color-danger-light-8)}.aah-button--info{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-info);--aah-button-border-color: var(--aah-color-info);--aah-button-outline-color: var(--aah-color-info-light-5);--aah-button-active-color: var(--aah-color-info-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-info-light-5);--aah-button-hover-bg-color: var(--aah-color-info-light-3);--aah-button-hover-border-color: var(--aah-color-info-light-3);--aah-button-active-bg-color: var(--aah-color-info-dark-2);--aah-button-active-border-color: var(--aah-color-info-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-info-light-5);--aah-button-disabled-border-color: var(--aah-color-info-light-5)}.aah-button--info.is-plain,.aah-button--info.is-text,.aah-button--info.is-link{--aah-button-text-color: var(--aah-color-info);--aah-button-bg-color: var(--aah-color-info-light-9);--aah-button-border-color: var(--aah-color-info-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-info);--aah-button-hover-border-color: var(--aah-color-info);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--info.is-plain.is-disabled,.aah-button--info.is-plain.is-disabled:hover,.aah-button--info.is-plain.is-disabled:focus,.aah-button--info.is-plain.is-disabled:active,.aah-button--info.is-text.is-disabled,.aah-button--info.is-text.is-disabled:hover,.aah-button--info.is-text.is-disabled:focus,.aah-button--info.is-text.is-disabled:active,.aah-button--info.is-link.is-disabled,.aah-button--info.is-link.is-disabled:hover,.aah-button--info.is-link.is-disabled:focus,.aah-button--info.is-link.is-disabled:active{color:var(--aah-color-info-light-5);background-color:var(--aah-color-info-light-9);border-color:var(--aah-color-info-light-8)}.aah-button--large{--aah-button-size: 40px;height:var(--aah-button-size);padding:12px 19px;font-size:var(--aah-font-size-base);border-radius:var(--aah-border-radius-base)}.aah-button--large [class*=aah-icon]+span{margin-left:8px}.aah-button--large.is-round{padding:12px 19px}.aah-button--large.is-circle{width:var(--aah-button-size);padding:12px}.aah-button--small{--aah-button-size: 24px;height:var(--aah-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--aah-border-radius-base) - 1px)}.aah-button--small [class*=aah-icon]+span{margin-left:4px}.aah-button--small.is-round{padding:5px 11px}.aah-button--small.is-circle{width:var(--aah-button-size);padding:5px}.aah-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.aah-row.is-justify-center{justify-content:center}.aah-row.is-justify-end{justify-content:flex-end}.aah-row.is-justify-space-between{justify-content:space-between}.aah-row.is-justify-space-around{justify-content:space-around}.aah-row.is-justify-space-evenly{justify-content:space-evenly}.aah-row.is-align-top{align-items:flex-start}.aah-row.is-align-middle{align-items:center}.aah-row.is-align-bottom{align-items:flex-end}[class*=aah-col-]{box-sizing:border-box}[class*=aah-col-].is-guttered{display:block;min-height:1px}.aah-col-0,.aah-col-0.is-guttered{display:none}.aah-col-0{max-width:0%;flex:0 0 0%}.aah-col-offset-0{margin-left:0%}.aah-col-pull-0{position:relative;right:0%}.aah-col-push-0{position:relative;left:0%}.aah-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-offset-1{margin-left:4.1666666667%}.aah-col-pull-1{position:relative;right:4.1666666667%}.aah-col-push-1{position:relative;left:4.1666666667%}.aah-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-offset-2{margin-left:8.3333333333%}.aah-col-pull-2{position:relative;right:8.3333333333%}.aah-col-push-2{position:relative;left:8.3333333333%}.aah-col-3{max-width:12.5%;flex:0 0 12.5%}.aah-col-offset-3{margin-left:12.5%}.aah-col-pull-3{position:relative;right:12.5%}.aah-col-push-3{position:relative;left:12.5%}.aah-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-offset-4{margin-left:16.6666666667%}.aah-col-pull-4{position:relative;right:16.6666666667%}.aah-col-push-4{position:relative;left:16.6666666667%}.aah-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-offset-5{margin-left:20.8333333333%}.aah-col-pull-5{position:relative;right:20.8333333333%}.aah-col-push-5{position:relative;left:20.8333333333%}.aah-col-6{max-width:25%;flex:0 0 25%}.aah-col-offset-6{margin-left:25%}.aah-col-pull-6{position:relative;right:25%}.aah-col-push-6{position:relative;left:25%}.aah-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-offset-7{margin-left:29.1666666667%}.aah-col-pull-7{position:relative;right:29.1666666667%}.aah-col-push-7{position:relative;left:29.1666666667%}.aah-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-offset-8{margin-left:33.3333333333%}.aah-col-pull-8{position:relative;right:33.3333333333%}.aah-col-push-8{position:relative;left:33.3333333333%}.aah-col-9{max-width:37.5%;flex:0 0 37.5%}.aah-col-offset-9{margin-left:37.5%}.aah-col-pull-9{position:relative;right:37.5%}.aah-col-push-9{position:relative;left:37.5%}.aah-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-offset-10{margin-left:41.6666666667%}.aah-col-pull-10{position:relative;right:41.6666666667%}.aah-col-push-10{position:relative;left:41.6666666667%}.aah-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-offset-11{margin-left:45.8333333333%}.aah-col-pull-11{position:relative;right:45.8333333333%}.aah-col-push-11{position:relative;left:45.8333333333%}.aah-col-12{max-width:50%;flex:0 0 50%}.aah-col-offset-12{margin-left:50%}.aah-col-pull-12{position:relative;right:50%}.aah-col-push-12{position:relative;left:50%}.aah-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-offset-13{margin-left:54.1666666667%}.aah-col-pull-13{position:relative;right:54.1666666667%}.aah-col-push-13{position:relative;left:54.1666666667%}.aah-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-offset-14{margin-left:58.3333333333%}.aah-col-pull-14{position:relative;right:58.3333333333%}.aah-col-push-14{position:relative;left:58.3333333333%}.aah-col-15{max-width:62.5%;flex:0 0 62.5%}.aah-col-offset-15{margin-left:62.5%}.aah-col-pull-15{position:relative;right:62.5%}.aah-col-push-15{position:relative;left:62.5%}.aah-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-offset-16{margin-left:66.6666666667%}.aah-col-pull-16{position:relative;right:66.6666666667%}.aah-col-push-16{position:relative;left:66.6666666667%}.aah-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-offset-17{margin-left:70.8333333333%}.aah-col-pull-17{position:relative;right:70.8333333333%}.aah-col-push-17{position:relative;left:70.8333333333%}.aah-col-18{max-width:75%;flex:0 0 75%}.aah-col-offset-18{margin-left:75%}.aah-col-pull-18{position:relative;right:75%}.aah-col-push-18{position:relative;left:75%}.aah-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-offset-19{margin-left:79.1666666667%}.aah-col-pull-19{position:relative;right:79.1666666667%}.aah-col-push-19{position:relative;left:79.1666666667%}.aah-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-offset-20{margin-left:83.3333333333%}.aah-col-pull-20{position:relative;right:83.3333333333%}.aah-col-push-20{position:relative;left:83.3333333333%}.aah-col-21{max-width:87.5%;flex:0 0 87.5%}.aah-col-offset-21{margin-left:87.5%}.aah-col-pull-21{position:relative;right:87.5%}.aah-col-push-21{position:relative;left:87.5%}.aah-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-offset-22{margin-left:91.6666666667%}.aah-col-pull-22{position:relative;right:91.6666666667%}.aah-col-push-22{position:relative;left:91.6666666667%}.aah-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-offset-23{margin-left:95.8333333333%}.aah-col-pull-23{position:relative;right:95.8333333333%}.aah-col-push-23{position:relative;left:95.8333333333%}.aah-col-24{max-width:100%;flex:0 0 100%}.aah-col-offset-24{margin-left:100%}.aah-col-pull-24{position:relative;right:100%}.aah-col-push-24{position:relative;left:100%}@media only screen and (max-width: 767px){.aah-col-xs-0,.aah-col-xs-0.is-guttered{display:none}.aah-col-xs-0{max-width:0%;flex:0 0 0%}.aah-col-xs-offset-0{margin-left:0%}.aah-col-xs-pull-0{position:relative;right:0%}.aah-col-xs-push-0{position:relative;left:0%}.aah-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-xs-offset-1{margin-left:4.1666666667%}.aah-col-xs-pull-1{position:relative;right:4.1666666667%}.aah-col-xs-push-1{position:relative;left:4.1666666667%}.aah-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-xs-offset-2{margin-left:8.3333333333%}.aah-col-xs-pull-2{position:relative;right:8.3333333333%}.aah-col-xs-push-2{position:relative;left:8.3333333333%}.aah-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-xs-offset-3{margin-left:12.5%}.aah-col-xs-pull-3{position:relative;right:12.5%}.aah-col-xs-push-3{position:relative;left:12.5%}.aah-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-xs-offset-4{margin-left:16.6666666667%}.aah-col-xs-pull-4{position:relative;right:16.6666666667%}.aah-col-xs-push-4{position:relative;left:16.6666666667%}.aah-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-xs-offset-5{margin-left:20.8333333333%}.aah-col-xs-pull-5{position:relative;right:20.8333333333%}.aah-col-xs-push-5{position:relative;left:20.8333333333%}.aah-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-xs-offset-6{margin-left:25%}.aah-col-xs-pull-6{position:relative;right:25%}.aah-col-xs-push-6{position:relative;left:25%}.aah-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-xs-offset-7{margin-left:29.1666666667%}.aah-col-xs-pull-7{position:relative;right:29.1666666667%}.aah-col-xs-push-7{position:relative;left:29.1666666667%}.aah-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-xs-offset-8{margin-left:33.3333333333%}.aah-col-xs-pull-8{position:relative;right:33.3333333333%}.aah-col-xs-push-8{position:relative;left:33.3333333333%}.aah-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-xs-offset-9{margin-left:37.5%}.aah-col-xs-pull-9{position:relative;right:37.5%}.aah-col-xs-push-9{position:relative;left:37.5%}.aah-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-xs-offset-10{margin-left:41.6666666667%}.aah-col-xs-pull-10{position:relative;right:41.6666666667%}.aah-col-xs-push-10{position:relative;left:41.6666666667%}.aah-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-xs-offset-11{margin-left:45.8333333333%}.aah-col-xs-pull-11{position:relative;right:45.8333333333%}.aah-col-xs-push-11{position:relative;left:45.8333333333%}.aah-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-xs-offset-12{margin-left:50%}.aah-col-xs-pull-12{position:relative;right:50%}.aah-col-xs-push-12{position:relative;left:50%}.aah-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-xs-offset-13{margin-left:54.1666666667%}.aah-col-xs-pull-13{position:relative;right:54.1666666667%}.aah-col-xs-push-13{position:relative;left:54.1666666667%}.aah-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-xs-offset-14{margin-left:58.3333333333%}.aah-col-xs-pull-14{position:relative;right:58.3333333333%}.aah-col-xs-push-14{position:relative;left:58.3333333333%}.aah-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-xs-offset-15{margin-left:62.5%}.aah-col-xs-pull-15{position:relative;right:62.5%}.aah-col-xs-push-15{position:relative;left:62.5%}.aah-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-xs-offset-16{margin-left:66.6666666667%}.aah-col-xs-pull-16{position:relative;right:66.6666666667%}.aah-col-xs-push-16{position:relative;left:66.6666666667%}.aah-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-xs-offset-17{margin-left:70.8333333333%}.aah-col-xs-pull-17{position:relative;right:70.8333333333%}.aah-col-xs-push-17{position:relative;left:70.8333333333%}.aah-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-xs-offset-18{margin-left:75%}.aah-col-xs-pull-18{position:relative;right:75%}.aah-col-xs-push-18{position:relative;left:75%}.aah-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-xs-offset-19{margin-left:79.1666666667%}.aah-col-xs-pull-19{position:relative;right:79.1666666667%}.aah-col-xs-push-19{position:relative;left:79.1666666667%}.aah-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-xs-offset-20{margin-left:83.3333333333%}.aah-col-xs-pull-20{position:relative;right:83.3333333333%}.aah-col-xs-push-20{position:relative;left:83.3333333333%}.aah-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-xs-offset-21{margin-left:87.5%}.aah-col-xs-pull-21{position:relative;right:87.5%}.aah-col-xs-push-21{position:relative;left:87.5%}.aah-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-xs-offset-22{margin-left:91.6666666667%}.aah-col-xs-pull-22{position:relative;right:91.6666666667%}.aah-col-xs-push-22{position:relative;left:91.6666666667%}.aah-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-xs-offset-23{margin-left:95.8333333333%}.aah-col-xs-pull-23{position:relative;right:95.8333333333%}.aah-col-xs-push-23{position:relative;left:95.8333333333%}.aah-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-xs-offset-24{margin-left:100%}.aah-col-xs-pull-24{position:relative;right:100%}.aah-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width: 768px){.aah-col-sm-0,.aah-col-sm-0.is-guttered{display:none}.aah-col-sm-0{max-width:0%;flex:0 0 0%}.aah-col-sm-offset-0{margin-left:0%}.aah-col-sm-pull-0{position:relative;right:0%}.aah-col-sm-push-0{position:relative;left:0%}.aah-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-sm-offset-1{margin-left:4.1666666667%}.aah-col-sm-pull-1{position:relative;right:4.1666666667%}.aah-col-sm-push-1{position:relative;left:4.1666666667%}.aah-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-sm-offset-2{margin-left:8.3333333333%}.aah-col-sm-pull-2{position:relative;right:8.3333333333%}.aah-col-sm-push-2{position:relative;left:8.3333333333%}.aah-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-sm-offset-3{margin-left:12.5%}.aah-col-sm-pull-3{position:relative;right:12.5%}.aah-col-sm-push-3{position:relative;left:12.5%}.aah-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-sm-offset-4{margin-left:16.6666666667%}.aah-col-sm-pull-4{position:relative;right:16.6666666667%}.aah-col-sm-push-4{position:relative;left:16.6666666667%}.aah-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-sm-offset-5{margin-left:20.8333333333%}.aah-col-sm-pull-5{position:relative;right:20.8333333333%}.aah-col-sm-push-5{position:relative;left:20.8333333333%}.aah-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-sm-offset-6{margin-left:25%}.aah-col-sm-pull-6{position:relative;right:25%}.aah-col-sm-push-6{position:relative;left:25%}.aah-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-sm-offset-7{margin-left:29.1666666667%}.aah-col-sm-pull-7{position:relative;right:29.1666666667%}.aah-col-sm-push-7{position:relative;left:29.1666666667%}.aah-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-sm-offset-8{margin-left:33.3333333333%}.aah-col-sm-pull-8{position:relative;right:33.3333333333%}.aah-col-sm-push-8{position:relative;left:33.3333333333%}.aah-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-sm-offset-9{margin-left:37.5%}.aah-col-sm-pull-9{position:relative;right:37.5%}.aah-col-sm-push-9{position:relative;left:37.5%}.aah-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-sm-offset-10{margin-left:41.6666666667%}.aah-col-sm-pull-10{position:relative;right:41.6666666667%}.aah-col-sm-push-10{position:relative;left:41.6666666667%}.aah-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-sm-offset-11{margin-left:45.8333333333%}.aah-col-sm-pull-11{position:relative;right:45.8333333333%}.aah-col-sm-push-11{position:relative;left:45.8333333333%}.aah-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-sm-offset-12{margin-left:50%}.aah-col-sm-pull-12{position:relative;right:50%}.aah-col-sm-push-12{position:relative;left:50%}.aah-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-sm-offset-13{margin-left:54.1666666667%}.aah-col-sm-pull-13{position:relative;right:54.1666666667%}.aah-col-sm-push-13{position:relative;left:54.1666666667%}.aah-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-sm-offset-14{margin-left:58.3333333333%}.aah-col-sm-pull-14{position:relative;right:58.3333333333%}.aah-col-sm-push-14{position:relative;left:58.3333333333%}.aah-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-sm-offset-15{margin-left:62.5%}.aah-col-sm-pull-15{position:relative;right:62.5%}.aah-col-sm-push-15{position:relative;left:62.5%}.aah-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-sm-offset-16{margin-left:66.6666666667%}.aah-col-sm-pull-16{position:relative;right:66.6666666667%}.aah-col-sm-push-16{position:relative;left:66.6666666667%}.aah-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-sm-offset-17{margin-left:70.8333333333%}.aah-col-sm-pull-17{position:relative;right:70.8333333333%}.aah-col-sm-push-17{position:relative;left:70.8333333333%}.aah-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-sm-offset-18{margin-left:75%}.aah-col-sm-pull-18{position:relative;right:75%}.aah-col-sm-push-18{position:relative;left:75%}.aah-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-sm-offset-19{margin-left:79.1666666667%}.aah-col-sm-pull-19{position:relative;right:79.1666666667%}.aah-col-sm-push-19{position:relative;left:79.1666666667%}.aah-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-sm-offset-20{margin-left:83.3333333333%}.aah-col-sm-pull-20{position:relative;right:83.3333333333%}.aah-col-sm-push-20{position:relative;left:83.3333333333%}.aah-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-sm-offset-21{margin-left:87.5%}.aah-col-sm-pull-21{position:relative;right:87.5%}.aah-col-sm-push-21{position:relative;left:87.5%}.aah-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-sm-offset-22{margin-left:91.6666666667%}.aah-col-sm-pull-22{position:relative;right:91.6666666667%}.aah-col-sm-push-22{position:relative;left:91.6666666667%}.aah-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-sm-offset-23{margin-left:95.8333333333%}.aah-col-sm-pull-23{position:relative;right:95.8333333333%}.aah-col-sm-push-23{position:relative;left:95.8333333333%}.aah-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-sm-offset-24{margin-left:100%}.aah-col-sm-pull-24{position:relative;right:100%}.aah-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width: 992px){.aah-col-md-0,.aah-col-md-0.is-guttered{display:none}.aah-col-md-0{max-width:0%;flex:0 0 0%}.aah-col-md-offset-0{margin-left:0%}.aah-col-md-pull-0{position:relative;right:0%}.aah-col-md-push-0{position:relative;left:0%}.aah-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-md-offset-1{margin-left:4.1666666667%}.aah-col-md-pull-1{position:relative;right:4.1666666667%}.aah-col-md-push-1{position:relative;left:4.1666666667%}.aah-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-md-offset-2{margin-left:8.3333333333%}.aah-col-md-pull-2{position:relative;right:8.3333333333%}.aah-col-md-push-2{position:relative;left:8.3333333333%}.aah-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-md-offset-3{margin-left:12.5%}.aah-col-md-pull-3{position:relative;right:12.5%}.aah-col-md-push-3{position:relative;left:12.5%}.aah-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-md-offset-4{margin-left:16.6666666667%}.aah-col-md-pull-4{position:relative;right:16.6666666667%}.aah-col-md-push-4{position:relative;left:16.6666666667%}.aah-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-md-offset-5{margin-left:20.8333333333%}.aah-col-md-pull-5{position:relative;right:20.8333333333%}.aah-col-md-push-5{position:relative;left:20.8333333333%}.aah-col-md-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-md-offset-6{margin-left:25%}.aah-col-md-pull-6{position:relative;right:25%}.aah-col-md-push-6{position:relative;left:25%}.aah-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-md-offset-7{margin-left:29.1666666667%}.aah-col-md-pull-7{position:relative;right:29.1666666667%}.aah-col-md-push-7{position:relative;left:29.1666666667%}.aah-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-md-offset-8{margin-left:33.3333333333%}.aah-col-md-pull-8{position:relative;right:33.3333333333%}.aah-col-md-push-8{position:relative;left:33.3333333333%}.aah-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-md-offset-9{margin-left:37.5%}.aah-col-md-pull-9{position:relative;right:37.5%}.aah-col-md-push-9{position:relative;left:37.5%}.aah-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-md-offset-10{margin-left:41.6666666667%}.aah-col-md-pull-10{position:relative;right:41.6666666667%}.aah-col-md-push-10{position:relative;left:41.6666666667%}.aah-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-md-offset-11{margin-left:45.8333333333%}.aah-col-md-pull-11{position:relative;right:45.8333333333%}.aah-col-md-push-11{position:relative;left:45.8333333333%}.aah-col-md-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-md-offset-12{margin-left:50%}.aah-col-md-pull-12{position:relative;right:50%}.aah-col-md-push-12{position:relative;left:50%}.aah-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-md-offset-13{margin-left:54.1666666667%}.aah-col-md-pull-13{position:relative;right:54.1666666667%}.aah-col-md-push-13{position:relative;left:54.1666666667%}.aah-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-md-offset-14{margin-left:58.3333333333%}.aah-col-md-pull-14{position:relative;right:58.3333333333%}.aah-col-md-push-14{position:relative;left:58.3333333333%}.aah-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-md-offset-15{margin-left:62.5%}.aah-col-md-pull-15{position:relative;right:62.5%}.aah-col-md-push-15{position:relative;left:62.5%}.aah-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-md-offset-16{margin-left:66.6666666667%}.aah-col-md-pull-16{position:relative;right:66.6666666667%}.aah-col-md-push-16{position:relative;left:66.6666666667%}.aah-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-md-offset-17{margin-left:70.8333333333%}.aah-col-md-pull-17{position:relative;right:70.8333333333%}.aah-col-md-push-17{position:relative;left:70.8333333333%}.aah-col-md-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-md-offset-18{margin-left:75%}.aah-col-md-pull-18{position:relative;right:75%}.aah-col-md-push-18{position:relative;left:75%}.aah-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-md-offset-19{margin-left:79.1666666667%}.aah-col-md-pull-19{position:relative;right:79.1666666667%}.aah-col-md-push-19{position:relative;left:79.1666666667%}.aah-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-md-offset-20{margin-left:83.3333333333%}.aah-col-md-pull-20{position:relative;right:83.3333333333%}.aah-col-md-push-20{position:relative;left:83.3333333333%}.aah-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-md-offset-21{margin-left:87.5%}.aah-col-md-pull-21{position:relative;right:87.5%}.aah-col-md-push-21{position:relative;left:87.5%}.aah-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-md-offset-22{margin-left:91.6666666667%}.aah-col-md-pull-22{position:relative;right:91.6666666667%}.aah-col-md-push-22{position:relative;left:91.6666666667%}.aah-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-md-offset-23{margin-left:95.8333333333%}.aah-col-md-pull-23{position:relative;right:95.8333333333%}.aah-col-md-push-23{position:relative;left:95.8333333333%}.aah-col-md-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-md-offset-24{margin-left:100%}.aah-col-md-pull-24{position:relative;right:100%}.aah-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width: 1200px){.aah-col-lg-0,.aah-col-lg-0.is-guttered{display:none}.aah-col-lg-0{max-width:0%;flex:0 0 0%}.aah-col-lg-offset-0{margin-left:0%}.aah-col-lg-pull-0{position:relative;right:0%}.aah-col-lg-push-0{position:relative;left:0%}.aah-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-lg-offset-1{margin-left:4.1666666667%}.aah-col-lg-pull-1{position:relative;right:4.1666666667%}.aah-col-lg-push-1{position:relative;left:4.1666666667%}.aah-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-lg-offset-2{margin-left:8.3333333333%}.aah-col-lg-pull-2{position:relative;right:8.3333333333%}.aah-col-lg-push-2{position:relative;left:8.3333333333%}.aah-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-lg-offset-3{margin-left:12.5%}.aah-col-lg-pull-3{position:relative;right:12.5%}.aah-col-lg-push-3{position:relative;left:12.5%}.aah-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-lg-offset-4{margin-left:16.6666666667%}.aah-col-lg-pull-4{position:relative;right:16.6666666667%}.aah-col-lg-push-4{position:relative;left:16.6666666667%}.aah-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-lg-offset-5{margin-left:20.8333333333%}.aah-col-lg-pull-5{position:relative;right:20.8333333333%}.aah-col-lg-push-5{position:relative;left:20.8333333333%}.aah-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-lg-offset-6{margin-left:25%}.aah-col-lg-pull-6{position:relative;right:25%}.aah-col-lg-push-6{position:relative;left:25%}.aah-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-lg-offset-7{margin-left:29.1666666667%}.aah-col-lg-pull-7{position:relative;right:29.1666666667%}.aah-col-lg-push-7{position:relative;left:29.1666666667%}.aah-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-lg-offset-8{margin-left:33.3333333333%}.aah-col-lg-pull-8{position:relative;right:33.3333333333%}.aah-col-lg-push-8{position:relative;left:33.3333333333%}.aah-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-lg-offset-9{margin-left:37.5%}.aah-col-lg-pull-9{position:relative;right:37.5%}.aah-col-lg-push-9{position:relative;left:37.5%}.aah-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-lg-offset-10{margin-left:41.6666666667%}.aah-col-lg-pull-10{position:relative;right:41.6666666667%}.aah-col-lg-push-10{position:relative;left:41.6666666667%}.aah-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-lg-offset-11{margin-left:45.8333333333%}.aah-col-lg-pull-11{position:relative;right:45.8333333333%}.aah-col-lg-push-11{position:relative;left:45.8333333333%}.aah-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-lg-offset-12{margin-left:50%}.aah-col-lg-pull-12{position:relative;right:50%}.aah-col-lg-push-12{position:relative;left:50%}.aah-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-lg-offset-13{margin-left:54.1666666667%}.aah-col-lg-pull-13{position:relative;right:54.1666666667%}.aah-col-lg-push-13{position:relative;left:54.1666666667%}.aah-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-lg-offset-14{margin-left:58.3333333333%}.aah-col-lg-pull-14{position:relative;right:58.3333333333%}.aah-col-lg-push-14{position:relative;left:58.3333333333%}.aah-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-lg-offset-15{margin-left:62.5%}.aah-col-lg-pull-15{position:relative;right:62.5%}.aah-col-lg-push-15{position:relative;left:62.5%}.aah-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-lg-offset-16{margin-left:66.6666666667%}.aah-col-lg-pull-16{position:relative;right:66.6666666667%}.aah-col-lg-push-16{position:relative;left:66.6666666667%}.aah-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-lg-offset-17{margin-left:70.8333333333%}.aah-col-lg-pull-17{position:relative;right:70.8333333333%}.aah-col-lg-push-17{position:relative;left:70.8333333333%}.aah-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-lg-offset-18{margin-left:75%}.aah-col-lg-pull-18{position:relative;right:75%}.aah-col-lg-push-18{position:relative;left:75%}.aah-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-lg-offset-19{margin-left:79.1666666667%}.aah-col-lg-pull-19{position:relative;right:79.1666666667%}.aah-col-lg-push-19{position:relative;left:79.1666666667%}.aah-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-lg-offset-20{margin-left:83.3333333333%}.aah-col-lg-pull-20{position:relative;right:83.3333333333%}.aah-col-lg-push-20{position:relative;left:83.3333333333%}.aah-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-lg-offset-21{margin-left:87.5%}.aah-col-lg-pull-21{position:relative;right:87.5%}.aah-col-lg-push-21{position:relative;left:87.5%}.aah-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-lg-offset-22{margin-left:91.6666666667%}.aah-col-lg-pull-22{position:relative;right:91.6666666667%}.aah-col-lg-push-22{position:relative;left:91.6666666667%}.aah-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-lg-offset-23{margin-left:95.8333333333%}.aah-col-lg-pull-23{position:relative;right:95.8333333333%}.aah-col-lg-push-23{position:relative;left:95.8333333333%}.aah-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-lg-offset-24{margin-left:100%}.aah-col-lg-pull-24{position:relative;right:100%}.aah-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width: 1920px){.aah-col-xl-0,.aah-col-xl-0.is-guttered{display:none}.aah-col-xl-0{max-width:0%;flex:0 0 0%}.aah-col-xl-offset-0{margin-left:0%}.aah-col-xl-pull-0{position:relative;right:0%}.aah-col-xl-push-0{position:relative;left:0%}.aah-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-xl-offset-1{margin-left:4.1666666667%}.aah-col-xl-pull-1{position:relative;right:4.1666666667%}.aah-col-xl-push-1{position:relative;left:4.1666666667%}.aah-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-xl-offset-2{margin-left:8.3333333333%}.aah-col-xl-pull-2{position:relative;right:8.3333333333%}.aah-col-xl-push-2{position:relative;left:8.3333333333%}.aah-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-xl-offset-3{margin-left:12.5%}.aah-col-xl-pull-3{position:relative;right:12.5%}.aah-col-xl-push-3{position:relative;left:12.5%}.aah-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-xl-offset-4{margin-left:16.6666666667%}.aah-col-xl-pull-4{position:relative;right:16.6666666667%}.aah-col-xl-push-4{position:relative;left:16.6666666667%}.aah-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-xl-offset-5{margin-left:20.8333333333%}.aah-col-xl-pull-5{position:relative;right:20.8333333333%}.aah-col-xl-push-5{position:relative;left:20.8333333333%}.aah-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-xl-offset-6{margin-left:25%}.aah-col-xl-pull-6{position:relative;right:25%}.aah-col-xl-push-6{position:relative;left:25%}.aah-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-xl-offset-7{margin-left:29.1666666667%}.aah-col-xl-pull-7{position:relative;right:29.1666666667%}.aah-col-xl-push-7{position:relative;left:29.1666666667%}.aah-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-xl-offset-8{margin-left:33.3333333333%}.aah-col-xl-pull-8{position:relative;right:33.3333333333%}.aah-col-xl-push-8{position:relative;left:33.3333333333%}.aah-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-xl-offset-9{margin-left:37.5%}.aah-col-xl-pull-9{position:relative;right:37.5%}.aah-col-xl-push-9{position:relative;left:37.5%}.aah-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-xl-offset-10{margin-left:41.6666666667%}.aah-col-xl-pull-10{position:relative;right:41.6666666667%}.aah-col-xl-push-10{position:relative;left:41.6666666667%}.aah-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-xl-offset-11{margin-left:45.8333333333%}.aah-col-xl-pull-11{position:relative;right:45.8333333333%}.aah-col-xl-push-11{position:relative;left:45.8333333333%}.aah-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-xl-offset-12{margin-left:50%}.aah-col-xl-pull-12{position:relative;right:50%}.aah-col-xl-push-12{position:relative;left:50%}.aah-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-xl-offset-13{margin-left:54.1666666667%}.aah-col-xl-pull-13{position:relative;right:54.1666666667%}.aah-col-xl-push-13{position:relative;left:54.1666666667%}.aah-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-xl-offset-14{margin-left:58.3333333333%}.aah-col-xl-pull-14{position:relative;right:58.3333333333%}.aah-col-xl-push-14{position:relative;left:58.3333333333%}.aah-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-xl-offset-15{margin-left:62.5%}.aah-col-xl-pull-15{position:relative;right:62.5%}.aah-col-xl-push-15{position:relative;left:62.5%}.aah-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-xl-offset-16{margin-left:66.6666666667%}.aah-col-xl-pull-16{position:relative;right:66.6666666667%}.aah-col-xl-push-16{position:relative;left:66.6666666667%}.aah-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-xl-offset-17{margin-left:70.8333333333%}.aah-col-xl-pull-17{position:relative;right:70.8333333333%}.aah-col-xl-push-17{position:relative;left:70.8333333333%}.aah-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-xl-offset-18{margin-left:75%}.aah-col-xl-pull-18{position:relative;right:75%}.aah-col-xl-push-18{position:relative;left:75%}.aah-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-xl-offset-19{margin-left:79.1666666667%}.aah-col-xl-pull-19{position:relative;right:79.1666666667%}.aah-col-xl-push-19{position:relative;left:79.1666666667%}.aah-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-xl-offset-20{margin-left:83.3333333333%}.aah-col-xl-pull-20{position:relative;right:83.3333333333%}.aah-col-xl-push-20{position:relative;left:83.3333333333%}.aah-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-xl-offset-21{margin-left:87.5%}.aah-col-xl-pull-21{position:relative;right:87.5%}.aah-col-xl-push-21{position:relative;left:87.5%}.aah-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-xl-offset-22{margin-left:91.6666666667%}.aah-col-xl-pull-22{position:relative;right:91.6666666667%}.aah-col-xl-push-22{position:relative;left:91.6666666667%}.aah-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-xl-offset-23{margin-left:95.8333333333%}.aah-col-xl-pull-23{position:relative;right:95.8333333333%}.aah-col-xl-push-23{position:relative;left:95.8333333333%}.aah-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-xl-offset-24{margin-left:100%}.aah-col-xl-pull-24{position:relative;right:100%}.aah-col-xl-push-24{position:relative;left:100%}}.aah-text{--aah-text-font-size: var(--aah-font-size-base);--aah-text-color: var(--aah-text-color-regular)}.aah-text{align-self:center;margin:0;padding:0;font-size:var(--aah-text-font-size);color:var(--aah-text-color);overflow-wrap:break-word}.aah-text.is-truncated{display:inline-block;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aah-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.aah-text--large{--aah-text-font-size: var(--aah-font-size-medium)}.aah-text--default{--aah-text-font-size: var(--aah-font-size-base)}.aah-text--small{--aah-text-font-size: var(--aah-font-size-extra-small)}.aah-text.aah-text--primary{--aah-text-color: var(--aah-color-primary)}.aah-text.aah-text--success{--aah-text-color: var(--aah-color-success)}.aah-text.aah-text--warning{--aah-text-color: var(--aah-color-warning)}.aah-text.aah-text--danger{--aah-text-color: var(--aah-color-danger)}.aah-text.aah-text--error{--aah-text-color: var(--aah-color-error)}.aah-text.aah-text--info{--aah-text-color: var(--aah-color-info)}.aah-text>.aah-icon{vertical-align:-2px}.aah-tag{--aah-tag-font-size: 12px;--aah-tag-border-radius: 4px;--aah-tag-border-radius-rounded: 9999px}.aah-tag{--aah-tag-bg-color: var(--aah-color-primary-light-9);--aah-tag-border-color: var(--aah-color-primary-light-8);--aah-tag-hover-color: var(--aah-color-primary);background-color:var(--aah-tag-bg-color);border-color:var(--aah-tag-border-color);color:var(--aah-tag-text-color);display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:24px;padding:0 9px;font-size:var(--aah-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--aah-tag-border-radius);box-sizing:border-box;white-space:nowrap;--aah-icon-size: 14px}.aah-tag.aah-tag--primary{--aah-tag-bg-color: var(--aah-color-primary-light-9);--aah-tag-border-color: var(--aah-color-primary-light-8);--aah-tag-hover-color: var(--aah-color-primary)}.aah-tag.aah-tag--success{--aah-tag-bg-color: var(--aah-color-success-light-9);--aah-tag-border-color: var(--aah-color-success-light-8);--aah-tag-hover-color: var(--aah-color-success)}.aah-tag.aah-tag--warning{--aah-tag-bg-color: var(--aah-color-warning-light-9);--aah-tag-border-color: var(--aah-color-warning-light-8);--aah-tag-hover-color: var(--aah-color-warning)}.aah-tag.aah-tag--danger{--aah-tag-bg-color: var(--aah-color-danger-light-9);--aah-tag-border-color: var(--aah-color-danger-light-8);--aah-tag-hover-color: var(--aah-color-danger)}.aah-tag.aah-tag--error{--aah-tag-bg-color: var(--aah-color-error-light-9);--aah-tag-border-color: var(--aah-color-error-light-8);--aah-tag-hover-color: var(--aah-color-error)}.aah-tag.aah-tag--info{--aah-tag-bg-color: var(--aah-color-info-light-9);--aah-tag-border-color: var(--aah-color-info-light-8);--aah-tag-hover-color: var(--aah-color-info)}.aah-tag.aah-tag--primary{--aah-tag-text-color: var(--aah-color-primary)}.aah-tag.aah-tag--success{--aah-tag-text-color: var(--aah-color-success)}.aah-tag.aah-tag--warning{--aah-tag-text-color: var(--aah-color-warning)}.aah-tag.aah-tag--danger{--aah-tag-text-color: var(--aah-color-danger)}.aah-tag.aah-tag--error{--aah-tag-text-color: var(--aah-color-error)}.aah-tag.aah-tag--info{--aah-tag-text-color: var(--aah-color-info)}.aah-tag.is-hit{border-color:var(--aah-color-primary)}.aah-tag.is-round{border-radius:var(--aah-tag-border-radius-rounded)}.aah-tag .aah-tag__close{flex-shrink:0;color:var(--aah-tag-text-color)}.aah-tag .aah-tag__close:hover{color:var(--aah-color-white);background-color:var(--aah-tag-hover-color)}.aah-tag .aah-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--aah-icon-size) - 2px);height:var(--aah-icon-size);width:var(--aah-icon-size)}.aah-tag .aah-tag__close{margin-left:6px}.aah-tag--dark{--aah-tag-bg-color: var(--aah-color-primary);--aah-tag-border-color: var(--aah-color-primary);--aah-tag-hover-color: var(--aah-color-primary-light-3);--aah-tag-text-color: var(--aah-color-white)}.aah-tag--dark.aah-tag--primary{--aah-tag-bg-color: var(--aah-color-primary);--aah-tag-border-color: var(--aah-color-primary);--aah-tag-hover-color: var(--aah-color-primary-light-3)}.aah-tag--dark.aah-tag--success{--aah-tag-bg-color: var(--aah-color-success);--aah-tag-border-color: var(--aah-color-success);--aah-tag-hover-color: var(--aah-color-success-light-3)}.aah-tag--dark.aah-tag--warning{--aah-tag-bg-color: var(--aah-color-warning);--aah-tag-border-color: var(--aah-color-warning);--aah-tag-hover-color: var(--aah-color-warning-light-3)}.aah-tag--dark.aah-tag--danger{--aah-tag-bg-color: var(--aah-color-danger);--aah-tag-border-color: var(--aah-color-danger);--aah-tag-hover-color: var(--aah-color-danger-light-3)}.aah-tag--dark.aah-tag--error{--aah-tag-bg-color: var(--aah-color-error);--aah-tag-border-color: var(--aah-color-error);--aah-tag-hover-color: var(--aah-color-error-light-3)}.aah-tag--dark.aah-tag--info{--aah-tag-bg-color: var(--aah-color-info);--aah-tag-border-color: var(--aah-color-info);--aah-tag-hover-color: var(--aah-color-info-light-3)}.aah-tag--dark.aah-tag--primary,.aah-tag--dark.aah-tag--success,.aah-tag--dark.aah-tag--warning,.aah-tag--dark.aah-tag--danger,.aah-tag--dark.aah-tag--error,.aah-tag--dark.aah-tag--info{--aah-tag-text-color: var(--aah-color-white)}.aah-tag--plain{--aah-tag-border-color: var(--aah-color-primary-light-5);--aah-tag-hover-color: var(--aah-color-primary);--aah-tag-bg-color: var(--aah-fill-color-blank)}.aah-tag--plain.aah-tag--primary{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-primary-light-5);--aah-tag-hover-color: var(--aah-color-primary)}.aah-tag--plain.aah-tag--success{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-success-light-5);--aah-tag-hover-color: var(--aah-color-success)}.aah-tag--plain.aah-tag--warning{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-warning-light-5);--aah-tag-hover-color: var(--aah-color-warning)}.aah-tag--plain.aah-tag--danger{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-danger-light-5);--aah-tag-hover-color: var(--aah-color-danger)}.aah-tag--plain.aah-tag--error{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-error-light-5);--aah-tag-hover-color: var(--aah-color-error)}.aah-tag--plain.aah-tag--info{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-info-light-5);--aah-tag-hover-color: var(--aah-color-info)}.aah-tag.is-closable{padding-right:5px}.aah-tag--large{padding:0 11px;height:32px;--aah-icon-size: 16px}.aah-tag--large .aah-tag__close{margin-left:8px}.aah-tag--large.is-closable{padding-right:7px}.aah-tag--small{padding:0 7px;height:20px;--aah-icon-size: 12px}.aah-tag--small .aah-tag__close{margin-left:4px}.aah-tag--small.is-closable{padding-right:3px}.aah-tag--small .aah-icon-close{transform:scale(.8)}.aah-tag.aah-tag--primary.is-hit{border-color:var(--aah-color-primary)}.aah-tag.aah-tag--success.is-hit{border-color:var(--aah-color-success)}.aah-tag.aah-tag--warning.is-hit{border-color:var(--aah-color-warning)}.aah-tag.aah-tag--danger.is-hit{border-color:var(--aah-color-danger)}.aah-tag.aah-tag--error.is-hit{border-color:var(--aah-color-error)}.aah-tag.aah-tag--info.is-hit{border-color:var(--aah-color-info)}.aah-divider{position:relative}.aah-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--aah-border-color) var(--aah-border-style)}.aah-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--aah-border-color) var(--aah-border-style)}.aah-divider__text{position:absolute;background-color:var(--aah-bg-color);padding:0 20px;font-weight:500;color:var(--aah-text-color-primary);font-size:14px}.aah-divider__text.is-left{left:20px;transform:translateY(-50%)}.aah-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.aah-divider__text.is-right{right:20px;transform:translateY(-50%)}.aah-alert{--aah-alert-padding: 8px 16px;--aah-alert-border-radius-base: var(--aah-border-radius-base);--aah-alert-title-font-size: 14px;--aah-alert-title-with-description-font-size: 16px;--aah-alert-description-font-size: 14px;--aah-alert-close-font-size: 16px;--aah-alert-close-customed-font-size: 14px;--aah-alert-icon-size: 16px;--aah-alert-icon-large-size: 28px;width:100%;padding:var(--aah-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--aah-alert-border-radius-base);position:relative;background-color:var(--aah-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--aah-transition-duration-fast)}.aah-alert.is-light .aah-alert__close-btn{color:var(--aah-text-color-placeholder)}.aah-alert.is-dark .aah-alert__close-btn,.aah-alert.is-dark .aah-alert__description{color:var(--aah-color-white)}.aah-alert.is-center{justify-content:center}.aah-alert--success{--aah-alert-bg-color: var(--aah-color-success-light-9)}.aah-alert--success.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-success)}.aah-alert--success.is-light .aah-alert__description{color:var(--aah-color-success)}.aah-alert--success.is-dark{background-color:var(--aah-color-success);color:var(--aah-color-white)}.aah-alert--info{--aah-alert-bg-color: var(--aah-color-info-light-9)}.aah-alert--info.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-info)}.aah-alert--info.is-light .aah-alert__description{color:var(--aah-color-info)}.aah-alert--info.is-dark{background-color:var(--aah-color-info);color:var(--aah-color-white)}.aah-alert--warning{--aah-alert-bg-color: var(--aah-color-warning-light-9)}.aah-alert--warning.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-warning)}.aah-alert--warning.is-light .aah-alert__description{color:var(--aah-color-warning)}.aah-alert--warning.is-dark{background-color:var(--aah-color-warning);color:var(--aah-color-white)}.aah-alert--error{--aah-alert-bg-color: var(--aah-color-error-light-9)}.aah-alert--error.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-error)}.aah-alert--error.is-light .aah-alert__description{color:var(--aah-color-error)}.aah-alert--error.is-dark{background-color:var(--aah-color-error);color:var(--aah-color-white)}.aah-alert__content{display:flex;flex-direction:column;gap:4px}.aah-alert .aah-alert__icon{font-size:var(--aah-alert-icon-size);width:var(--aah-alert-icon-size);margin-right:8px}.aah-alert .aah-alert__icon.is-big{font-size:var(--aah-alert-icon-large-size);width:var(--aah-alert-icon-large-size);margin-right:12px}.aah-alert__title{font-size:var(--aah-alert-title-font-size);line-height:24px}.aah-alert__title.with-description{font-size:var(--aah-alert-title-with-description-font-size)}.aah-alert .aah-alert__description{font-size:var(--aah-alert-description-font-size);margin:0}.aah-alert .aah-alert__close-btn{font-size:var(--aah-alert-close-font-size);opacity:1;position:absolute;top:12px;right:16px;cursor:pointer}.aah-alert .aah-alert__close-btn.is-customed{font-style:normal;font-size:var(--aah-alert-close-customed-font-size);line-height:24px;top:8px}.aah-alert-fade-enter-from,.aah-alert-fade-leave-active{opacity:0}button[data-v-f6a83a85]{margin:10px}.aah_plat span[data-v-f6a83a85]{margin:5px}.aah-popper{--aah-popper-border-radius: var(--aah-popover-border-radius, 4px)}.aah-popper{position:absolute;border-radius:var(--aah-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;visibility:visible}.aah-popper.is-dark{color:var(--aah-bg-color);background:var(--aah-text-color-primary);border:1px solid var(--aah-text-color-primary)}.aah-popper.is-dark .aah-popper__arrow:before{border:1px solid var(--aah-text-color-primary);background:var(--aah-text-color-primary);right:0}.aah-popper.is-light{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light)}.aah-popper.is-light .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light);background:var(--aah-bg-color-overlay);right:0}.aah-popper.is-pure{padding:0}.aah-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.aah-popper__arrow:before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--aah-text-color-primary);box-sizing:border-box}.aah-popper[data-popper-placement^=top]>.aah-popper__arrow{bottom:-5px}.aah-popper[data-popper-placement^=top]>.aah-popper__arrow:before{border-bottom-right-radius:2px}.aah-popper[data-popper-placement^=bottom]>.aah-popper__arrow{top:-5px}.aah-popper[data-popper-placement^=bottom]>.aah-popper__arrow:before{border-top-left-radius:2px}.aah-popper[data-popper-placement^=left]>.aah-popper__arrow{right:-5px}.aah-popper[data-popper-placement^=left]>.aah-popper__arrow:before{border-top-right-radius:2px}.aah-popper[data-popper-placement^=right]>.aah-popper__arrow{left:-5px}.aah-popper[data-popper-placement^=right]>.aah-popper__arrow:before{border-bottom-left-radius:2px}.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent!important;border-left-color:transparent!important}.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent!important;border-bottom-color:transparent!important}.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.aah-checkbox-group{font-size:0;line-height:0}.aah-checkbox{--aah-checkbox-font-size: 14px;--aah-checkbox-font-weight: var(--aah-font-weight-primary);--aah-checkbox-text-color: var(--aah-text-color-regular);--aah-checkbox-input-height: 14px;--aah-checkbox-input-width: 14px;--aah-checkbox-border-radius: var(--aah-border-radius-small);--aah-checkbox-bg-color: var(--aah-fill-color-blank);--aah-checkbox-input-border: var(--aah-border);--aah-checkbox-disabled-border-color: var(--aah-border-color);--aah-checkbox-disabled-input-fill: var(--aah-fill-color-light);--aah-checkbox-disabled-icon-color: var(--aah-text-color-placeholder);--aah-checkbox-disabled-checked-input-fill: var(--aah-border-color-extra-light);--aah-checkbox-disabled-checked-input-border-color: var(--aah-border-color);--aah-checkbox-disabled-checked-icon-color: var(--aah-text-color-placeholder);--aah-checkbox-checked-text-color: var(--aah-color-primary);--aah-checkbox-checked-input-border-color: var(--aah-color-primary);--aah-checkbox-checked-bg-color: var(--aah-color-primary);--aah-checkbox-checked-icon-color: var(--aah-color-white);--aah-checkbox-input-border-color-hover: var(--aah-color-primary)}.aah-checkbox{color:var(--aah-checkbox-text-color);font-weight:var(--aah-checkbox-font-weight);font-size:var(--aah-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;user-select:none;margin-right:30px;height:var(--aah-checkbox-height, 32px)}.aah-checkbox.is-disabled{cursor:not-allowed}.aah-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--aah-border-radius-base);border:var(--aah-border);box-sizing:border-box}.aah-checkbox.is-bordered.is-checked{border-color:var(--aah-color-primary)}.aah-checkbox.is-bordered.is-disabled{border-color:var(--aah-border-color-lighter)}.aah-checkbox.is-bordered.aah-checkbox--large{padding:0 19px 0 11px;border-radius:var(--aah-border-radius-base)}.aah-checkbox.is-bordered.aah-checkbox--large .aah-checkbox__label{font-size:var(--aah-font-size-base)}.aah-checkbox.is-bordered.aah-checkbox--large .aah-checkbox__inner{height:14px;width:14px}.aah-checkbox.is-bordered.aah-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--aah-border-radius-base) - 1px)}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__label{font-size:12px}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__inner{height:12px;width:12px}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__inner:after{height:6px;width:2px}.aah-checkbox input:focus-visible+.aah-checkbox__inner{outline:2px solid var(--aah-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--aah-checkbox-border-radius)}.aah-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.aah-checkbox__input.is-disabled .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-input-fill);border-color:var(--aah-checkbox-disabled-border-color);cursor:not-allowed}.aah-checkbox__input.is-disabled .aah-checkbox__inner:after{cursor:not-allowed;border-color:var(--aah-checkbox-disabled-icon-color)}.aah-checkbox__input.is-disabled.is-checked .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-checked-input-fill);border-color:var(--aah-checkbox-disabled-checked-input-border-color)}.aah-checkbox__input.is-disabled.is-checked .aah-checkbox__inner:after{border-color:var(--aah-checkbox-disabled-checked-icon-color)}.aah-checkbox__input.is-disabled.is-indeterminate .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-checked-input-fill);border-color:var(--aah-checkbox-disabled-checked-input-border-color)}.aah-checkbox__input.is-disabled.is-indeterminate .aah-checkbox__inner:before{background-color:var(--aah-checkbox-disabled-checked-icon-color);border-color:var(--aah-checkbox-disabled-checked-icon-color)}.aah-checkbox__input.is-disabled+span.aah-checkbox__label{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-checkbox__input.is-checked .aah-checkbox__inner{background-color:var(--aah-checkbox-checked-bg-color);border-color:var(--aah-checkbox-checked-input-border-color)}.aah-checkbox__input.is-checked .aah-checkbox__inner:after{transform:rotate(45deg) scaleY(1);border-color:var(--aah-checkbox-checked-icon-color)}.aah-checkbox__input.is-checked+.aah-checkbox__label{color:var(--aah-checkbox-checked-text-color)}.aah-checkbox__input.is-focus:not(.is-checked) .aah-checkbox__original:not(:focus-visible){border-color:var(--aah-checkbox-input-border-color-hover)}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner{background-color:var(--aah-checkbox-checked-bg-color);border-color:var(--aah-checkbox-checked-input-border-color)}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner:before{content:"";position:absolute;display:block;background-color:var(--aah-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner:after{display:none}.aah-checkbox__inner{display:inline-block;position:relative;border:var(--aah-checkbox-input-border);border-radius:var(--aah-checkbox-border-radius);box-sizing:border-box;width:var(--aah-checkbox-input-width);height:var(--aah-checkbox-input-height);background-color:var(--aah-checkbox-bg-color);z-index:var(--aah-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46)}.aah-checkbox__inner:hover{border-color:var(--aah-checkbox-input-border-color-hover)}.aah-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid transparent;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.aah-checkbox__original{opacity:0;outline:none;position:absolute;margin:0;width:0;height:0;z-index:-1}.aah-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--aah-checkbox-font-size)}.aah-checkbox.aah-checkbox--large{height:40px}.aah-checkbox.aah-checkbox--large .aah-checkbox__label{font-size:14px}.aah-checkbox.aah-checkbox--large .aah-checkbox__inner{width:14px;height:14px}.aah-checkbox.aah-checkbox--small{height:24px}.aah-checkbox.aah-checkbox--small .aah-checkbox__label{font-size:12px}.aah-checkbox.aah-checkbox--small .aah-checkbox__inner{width:12px;height:12px}.aah-checkbox.aah-checkbox--small .aah-checkbox__input.is-indeterminate .aah-checkbox__inner:before{top:4px}.aah-checkbox.aah-checkbox--small .aah-checkbox__inner:after{width:2px;height:6px}.aah-checkbox:last-of-type{margin-right:0}.aah-textarea{--aah-input-text-color: var(--aah-text-color-regular);--aah-input-border: var(--aah-border);--aah-input-hover-border: var(--aah-border-color-hover);--aah-input-focus-border: var(--aah-color-primary);--aah-input-transparent-border: 0 0 0 1px transparent inset;--aah-input-border-color: var(--aah-border-color);--aah-input-border-radius: var(--aah-border-radius-base);--aah-input-bg-color: var(--aah-fill-color-blank);--aah-input-icon-color: var(--aah-text-color-placeholder);--aah-input-placeholder-color: var(--aah-text-color-placeholder);--aah-input-hover-border-color: var(--aah-border-color-hover);--aah-input-clear-hover-color: var(--aah-text-color-secondary);--aah-input-focus-border-color: var(--aah-color-primary);--aah-input-width: 100%}.aah-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--aah-font-size-base)}.aah-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 11px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--aah-input-text-color, var(--aah-text-color-regular));background-color:var(--aah-input-bg-color, var(--aah-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--aah-input-border-color, var(--aah-border-color)) inset;border-radius:var(--aah-input-border-radius, var(--aah-border-radius-base));transition:var(--aah-transition-box-shadow);border:none}.aah-textarea__inner::placeholder{color:var(--aah-input-placeholder-color, var(--aah-text-color-placeholder))}.aah-textarea__inner:hover{box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-textarea__inner:focus{outline:none;box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-textarea .aah-input__count{color:var(--aah-color-info);background:var(--aah-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.aah-textarea.is-disabled .aah-textarea__inner{box-shadow:0 0 0 1px var(--aah-disabled-border-color) inset;background-color:var(--aah-disabled-bg-color);color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-textarea.is-disabled .aah-textarea__inner::placeholder{color:var(--aah-text-color-placeholder)}.aah-textarea.is-exceed .aah-textarea__inner{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-textarea.is-exceed .aah-input__count{color:var(--aah-color-danger)}.aah-input{--aah-input-text-color: var(--aah-text-color-regular);--aah-input-border: var(--aah-border);--aah-input-hover-border: var(--aah-border-color-hover);--aah-input-focus-border: var(--aah-color-primary);--aah-input-transparent-border: 0 0 0 1px transparent inset;--aah-input-border-color: var(--aah-border-color);--aah-input-border-radius: var(--aah-border-radius-base);--aah-input-bg-color: var(--aah-fill-color-blank);--aah-input-icon-color: var(--aah-text-color-placeholder);--aah-input-placeholder-color: var(--aah-text-color-placeholder);--aah-input-hover-border-color: var(--aah-border-color-hover);--aah-input-clear-hover-color: var(--aah-text-color-secondary);--aah-input-focus-border-color: var(--aah-color-primary);--aah-input-width: 100%}.aah-input{--aah-input-height: var(--aah-component-size);position:relative;font-size:var(--aah-font-size-base);display:inline-flex;width:var(--aah-input-width);line-height:var(--aah-input-height);box-sizing:border-box;vertical-align:middle}.aah-input::-webkit-scrollbar{z-index:11;width:6px}.aah-input::-webkit-scrollbar:horizontal{height:6px}.aah-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--aah-text-color-disabled)}.aah-input::-webkit-scrollbar-corner{background:var(--aah-fill-color-blank)}.aah-input::-webkit-scrollbar-track{background:var(--aah-fill-color-blank)}.aah-input::-webkit-scrollbar-track-piece{background:var(--aah-fill-color-blank);width:6px}.aah-input .aah-input__clear,.aah-input .aah-input__password{color:var(--aah-input-icon-color);font-size:14px;cursor:pointer}.aah-input .aah-input__clear:hover,.aah-input .aah-input__password:hover{color:var(--aah-input-clear-hover-color)}.aah-input .aah-input__count{height:100%;display:inline-flex;align-items:center;color:var(--aah-color-info);font-size:12px}.aah-input .aah-input__count .aah-input__count-inner{background:var(--aah-fill-color-blank);line-height:initial;display:inline-block;padding-left:8px}.aah-input__wrapper{display:inline-flex;flex-grow:1;align-items:center;justify-content:center;padding:1px 11px;background-color:var(--aah-input-bg-color, var(--aah-fill-color-blank));background-image:none;border-radius:var(--aah-input-border-radius, var(--aah-border-radius-base));cursor:text;transition:var(--aah-transition-box-shadow);transform:translateZ(0);box-shadow:0 0 0 1px var(--aah-input-border-color, var(--aah-border-color)) inset}.aah-input__wrapper:hover{box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 32px) - 2px);width:100%;flex-grow:1;-webkit-appearance:none;color:var(--aah-input-text-color, var(--aah-text-color-regular));font-size:inherit;height:var(--aah-input-inner-height);line-height:var(--aah-input-inner-height);padding:0;outline:none;border:none;background:none;box-sizing:border-box}.aah-input__inner:focus{outline:none}.aah-input__inner::placeholder{color:var(--aah-input-placeholder-color, var(--aah-text-color-placeholder))}.aah-input__inner[type=password]::-ms-reveal{display:none}.aah-input__inner[type=number]{line-height:1}.aah-input__prefix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder));transition:all var(--aah-transition-duration);pointer-events:none}.aah-input__prefix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.aah-input__prefix-inner>:last-child{margin-right:8px}.aah-input__prefix-inner>:first-child,.aah-input__prefix-inner>:first-child.aah-input__icon{margin-left:0}.aah-input__suffix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder));transition:all var(--aah-transition-duration);pointer-events:none}.aah-input__suffix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.aah-input__suffix-inner>:first-child{margin-left:8px}.aah-input .aah-input__icon{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--aah-transition-duration);margin-left:8px}.aah-input__validateIcon{pointer-events:none}.aah-input.is-active .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-focus-color, ) inset}.aah-input.is-disabled{cursor:not-allowed}.aah-input.is-disabled .aah-input__wrapper{background-color:var(--aah-disabled-bg-color);box-shadow:0 0 0 1px var(--aah-disabled-border-color) inset}.aah-input.is-disabled .aah-input__inner{color:var(--aah-disabled-text-color);-webkit-text-fill-color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-input.is-disabled .aah-input__inner::placeholder{color:var(--aah-text-color-placeholder)}.aah-input.is-disabled .aah-input__icon{cursor:not-allowed}.aah-input.is-exceed .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-input.is-exceed .aah-input__suffix .aah-input__count{color:var(--aah-color-danger)}.aah-input--large{--aah-input-height: var(--aah-component-size-large);font-size:14px}.aah-input--large .aah-input__wrapper{padding:1px 15px}.aah-input--large .aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 40px) - 2px)}.aah-input--small{--aah-input-height: var(--aah-component-size-small);font-size:12px}.aah-input--small .aah-input__wrapper{padding:1px 7px}.aah-input--small .aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 24px) - 2px)}.aah-input-group{display:inline-flex;width:100%;align-items:stretch}.aah-input-group__append,.aah-input-group__prepend{background-color:var(--aah-fill-color-light);color:var(--aah-color-info);position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:100%;border-radius:var(--aah-input-border-radius);padding:0 20px;white-space:nowrap}.aah-input-group__append:focus,.aah-input-group__prepend:focus{outline:none}.aah-input-group__append .aah-select,.aah-input-group__append .aah-button,.aah-input-group__prepend .aah-select,.aah-input-group__prepend .aah-button{display:inline-block;margin:0 -20px}.aah-input-group__append button.aah-button,.aah-input-group__append button.aah-button:hover,.aah-input-group__append div.aah-select .aah-select__wrapper,.aah-input-group__append div.aah-select:hover .aah-select__wrapper,.aah-input-group__prepend button.aah-button,.aah-input-group__prepend button.aah-button:hover,.aah-input-group__prepend div.aah-select .aah-select__wrapper,.aah-input-group__prepend div.aah-select:hover .aah-select__wrapper{border-color:transparent;background-color:transparent;color:inherit}.aah-input-group__append .aah-button,.aah-input-group__append .aah-input,.aah-input-group__prepend .aah-button,.aah-input-group__prepend .aah-input{font-size:inherit}.aah-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--aah-input-border-color) inset,0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset}.aah-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset,-1px 0 0 0 var(--aah-input-border-color) inset}.aah-input-group--prepend>.aah-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.aah-input-group--prepend .aah-input-group__prepend .aah-select .aah-select__wrapper{border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--aah-input-border-color) inset,0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset}.aah-input-group--append>.aah-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.aah-input-group--append .aah-input-group__append .aah-select .aah-select__wrapper{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset,-1px 0 0 0 var(--aah-input-border-color) inset}.aah-input-hidden{display:none!important}.aah-select-dropdown.is-multiple .aah-select-dropdown__item.is-selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--aah-color-primary);mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.aah-select-dropdown{z-index:calc(var(--aah-index-top) + 1);border-radius:var(--aah-border-radius-base);box-sizing:border-box}.aah-select-dropdown .aah-scrollbar.is-empty .aah-select-dropdown__list{padding:0}.aah-select-dropdown__loading,.aah-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--aah-text-color-secondary);font-size:var(--aah-select-font-size)}.aah-select-dropdown__wrap{max-height:274px}.aah-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.aah-select-dropdown__list.aah-vl__window{margin:6px 0;padding:0}.aah-select-dropdown__header{padding:10px;border-bottom:1px solid var(--aah-border-color-light)}.aah-select-dropdown__footer{padding:10px;border-top:1px solid var(--aah-border-color-light)}.aah-select-dropdown__item{font-size:var(--aah-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--aah-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.aah-select-dropdown__item.is-hovering{background-color:var(--aah-fill-color-light)}.aah-select-dropdown__item.is-selected{color:var(--aah-color-primary);font-weight:700}.aah-select-dropdown__item.is-disabled{color:var(--aah-text-color-placeholder);cursor:not-allowed;background-color:unset}.aah-select-dropdown.is-multiple .aah-select-dropdown__item.is-selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--aah-color-primary);mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.aah-select-dropdown.is-multiple .aah-select-dropdown__item.is-disabled:after{background-color:var(--aah-text-color-placeholder)}.aah-select-group{margin:0;padding:0}.aah-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.aah-select-group__wrap:not(:last-of-type){padding-bottom:24px}.aah-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--aah-border-color-light)}.aah-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--aah-border-color-light)}.aah-select-group__title{padding-left:20px;font-size:12px;color:var(--aah-color-info);line-height:30px}.aah-select-group .aah-select-dropdown__item{padding-left:20px}.aah-select{--aah-select-border-color-hover: var(--aah-border-color-hover);--aah-select-disabled-color: var(--aah-disabled-text-color);--aah-select-disabled-border: var(--aah-disabled-border-color);--aah-select-font-size: var(--aah-font-size-base);--aah-select-close-hover-color: var(--aah-text-color-secondary);--aah-select-input-color: var(--aah-text-color-placeholder);--aah-select-multiple-input-color: var(--aah-text-color-regular);--aah-select-input-focus-border-color: var(--aah-color-primary);--aah-select-input-font-size: 14px;--aah-select-width: 100%}.aah-select{display:inline-block;position:relative;vertical-align:middle;width:var(--aah-select-width)}.aah-select__wrapper{display:flex;align-items:center;position:relative;box-sizing:border-box;cursor:pointer;text-align:left;font-size:14px;padding:4px 12px;gap:6px;min-height:32px;line-height:24px;border-radius:var(--aah-border-radius-base);background-color:var(--aah-fill-color-blank);transition:var(--aah-transition-duration);box-shadow:0 0 0 1px var(--aah-border-color) inset}.aah-select__wrapper:hover{box-shadow:0 0 0 1px var(--aah-text-color) inset}.aah-select__wrapper.is-filterable{cursor:text}.aah-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--aah-color-primary) inset}.aah-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--aah-border-color-hover) inset}.aah-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--aah-fill-color-light);color:var(--aah-text-color-placeholder);box-shadow:0 0 0 1px var(--aah-select-disabled-border) inset}.aah-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--aah-select-disabled-border) inset}.aah-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-select__wrapper.is-disabled .aah-select__selected-item{color:var(--aah-select-disabled-color)}.aah-select__wrapper.is-disabled .aah-select__caret,.aah-select__wrapper.is-disabled .aah-tag{cursor:not-allowed}.aah-select__prefix,.aah-select__suffix{display:flex;align-items:center;flex-shrink:0;gap:6px;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder))}.aah-select__caret{color:var(--aah-select-input-color);font-size:var(--aah-select-input-font-size);transition:var(--aah-transition-duration);transform:rotate(0);cursor:pointer}.aah-select__caret.is-reverse{transform:rotate(180deg)}.aah-select__selection{position:relative;display:flex;flex-wrap:wrap;align-items:center;flex:1;min-width:0;gap:6px}.aah-select__selection.is-near{margin-left:-8px}.aah-select__selection .aah-tag{cursor:pointer;border-color:transparent}.aah-select__selection .aah-tag .aah-tag__content{min-width:0}.aah-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.aah-select__tags-text{display:block;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-select__placeholder{position:absolute;display:block;top:50%;transform:translateY(-50%);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--aah-input-text-color, var(--aah-text-color-regular))}.aah-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--aah-text-color-placeholder)}.aah-select__popper.aah-popper{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light);box-shadow:var(--aah-box-shadow-light)}.aah-select__popper.aah-popper .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light)}.aah-select__popper.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-select__input-wrapper{max-width:100%}.aah-select__input-wrapper.is-hidden{position:absolute;opacity:0}.aah-select__input{border:none;outline:none;padding:0;color:var(--aah-select-multiple-input-color);font-size:inherit;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:24px;max-width:100%;background-color:transparent}.aah-select__input.is-disabled{cursor:not-allowed}.aah-select__input-calculator{position:absolute;left:0;top:0;max-width:100%;visibility:hidden;white-space:pre;overflow:hidden}.aah-select--large .aah-select__wrapper{gap:6px;padding:8px 16px;min-height:40px;line-height:24px;font-size:14px}.aah-select--large .aah-select__selection{gap:6px}.aah-select--large .aah-select__selection.is-near{margin-left:-8px}.aah-select--large .aah-select__prefix,.aah-select--large .aah-select__suffix{gap:6px}.aah-select--large .aah-select__input{height:24px}.aah-select--small .aah-select__wrapper{gap:4px;padding:2px 8px;min-height:24px;line-height:20px;font-size:12px}.aah-select--small .aah-select__selection{gap:4px}.aah-select--small .aah-select__selection.is-near{margin-left:-6px}.aah-select--small .aah-select__prefix,.aah-select--small .aah-select__suffix{gap:4px}.aah-select--small .aah-select__input{height:20px}.aah-input-number{position:relative;display:inline-flex;width:150px;line-height:30px}.aah-input-number .aah-input__wrapper{padding-left:42px;padding-right:42px}.aah-input-number .aah-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.aah-input-number .aah-input__inner::-webkit-inner-spin-button,.aah-input-number .aah-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.aah-input-number__increase,.aah-input-number__decrease{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--aah-fill-color-light);color:var(--aah-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.aah-input-number__increase:hover,.aah-input-number__decrease:hover{color:var(--aah-color-primary)}.aah-input-number__increase:hover~.aah-input:not(.is-disabled) .aah-input__wrapper,.aah-input-number__decrease:hover~.aah-input:not(.is-disabled) .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-focus-border-color, var(--aah-color-primary)) inset}.aah-input-number__increase.is-disabled,.aah-input-number__decrease.is-disabled{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-input-number__increase{right:1px;border-radius:0 var(--aah-border-radius-base) var(--aah-border-radius-base) 0;border-left:var(--aah-border)}.aah-input-number__decrease{left:1px;border-radius:var(--aah-border-radius-base) 0 0 var(--aah-border-radius-base);border-right:var(--aah-border)}.aah-input-number.is-disabled .aah-input-number__increase,.aah-input-number.is-disabled .aah-input-number__decrease{border-color:var(--aah-disabled-border-color);color:var(--aah-disabled-border-color)}.aah-input-number.is-disabled .aah-input-number__increase:hover,.aah-input-number.is-disabled .aah-input-number__decrease:hover{color:var(--aah-disabled-border-color);cursor:not-allowed}.aah-input-number--large{width:180px;line-height:38px}.aah-input-number--large .aah-input-number__increase,.aah-input-number--large .aah-input-number__decrease{width:40px;font-size:14px}.aah-input-number--large .aah-input__wrapper{padding-left:47px;padding-right:47px}.aah-input-number--small{width:120px;line-height:22px}.aah-input-number--small .aah-input-number__increase,.aah-input-number--small .aah-input-number__decrease{width:24px;font-size:12px}.aah-input-number--small .aah-input__wrapper{padding-left:31px;padding-right:31px}.aah-input-number--small .aah-input-number__increase [class*=aah-icon],.aah-input-number--small .aah-input-number__decrease [class*=aah-icon]{transform:scale(.9)}.aah-input-number.is-without-controls .aah-input__wrapper{padding-left:15px;padding-right:15px}.aah-input-number.is-controls-right .aah-input__wrapper{padding-left:15px;padding-right:42px}.aah-input-number.is-controls-right .aah-input-number__increase,.aah-input-number.is-controls-right .aah-input-number__decrease{--aah-input-number-controls-height: 15px;height:var(--aah-input-number-controls-height);line-height:var(--aah-input-number-controls-height)}.aah-input-number.is-controls-right .aah-input-number__increase [class*=aah-icon],.aah-input-number.is-controls-right .aah-input-number__decrease [class*=aah-icon]{transform:scale(.8)}.aah-input-number.is-controls-right .aah-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--aah-border-radius-base) 0 0;border-bottom:var(--aah-border)}.aah-input-number.is-controls-right .aah-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--aah-border);border-radius:0 0 var(--aah-border-radius-base) 0}.aah-input-number.is-controls-right[class*=large] [class*=increase],.aah-input-number.is-controls-right[class*=large] [class*=decrease]{--aah-input-number-controls-height: 19px}.aah-input-number.is-controls-right[class*=small] [class*=increase],.aah-input-number.is-controls-right[class*=small] [class*=decrease]{--aah-input-number-controls-height: 11px}.aah-switch{--aah-switch-on-color: var(--aah-color-primary);--aah-switch-off-color: var(--aah-border-color)}.aah-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:32px;vertical-align:middle}.aah-switch.is-disabled .aah-switch__core,.aah-switch.is-disabled .aah-switch__label{cursor:not-allowed}.aah-switch__label{transition:var(--aah-transition-duration-fast);height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--aah-text-color-primary)}.aah-switch__label.is-active{color:var(--aah-color-primary)}.aah-switch__label--left{margin-right:10px}.aah-switch__label--right{margin-left:10px}.aah-switch__label *{line-height:1;font-size:14px;display:inline-block}.aah-switch__label .aah-icon{height:inherit}.aah-switch__label .aah-icon svg{vertical-align:middle}.aah-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.aah-switch__input:focus-visible~.aah-switch__core{outline:2px solid var(--aah-switch-on-color);outline-offset:1px}.aah-switch__core{display:inline-flex;position:relative;align-items:center;min-width:40px;height:20px;border:1px solid var(--aah-switch-border-color, var(--aah-switch-off-color));outline:none;border-radius:10px;box-sizing:border-box;background:var(--aah-switch-off-color);cursor:pointer;transition:border-color var(--aah-transition-duration),background-color var(--aah-transition-duration)}.aah-switch__core .aah-switch__inner{width:100%;transition:all var(--aah-transition-duration);height:16px;display:flex;justify-content:center;align-items:center;overflow:hidden;padding:0 4px 0 18px}.aah-switch__core .aah-switch__inner .is-icon,.aah-switch__core .aah-switch__inner .is-text{font-size:12px;color:var(--aah-color-white);-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-switch__core .aah-switch__action{position:absolute;left:1px;border-radius:var(--aah-border-radius-circle);transition:all var(--aah-transition-duration);width:16px;height:16px;background-color:var(--aah-color-white);display:flex;justify-content:center;align-items:center;color:var(--aah-switch-off-color)}.aah-switch.is-checked .aah-switch__core{border-color:var(--aah-switch-border-color, var(--aah-switch-on-color));background-color:var(--aah-switch-on-color)}.aah-switch.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 17px);color:var(--aah-switch-on-color)}.aah-switch.is-checked .aah-switch__core .aah-switch__inner{padding:0 18px 0 4px}.aah-switch.is-disabled{opacity:.6}.aah-switch--wide .aah-switch__label.aah-switch__label--left span{left:10px}.aah-switch--wide .aah-switch__label.aah-switch__label--right span{right:10px}.aah-switch .label-fade-enter-from,.aah-switch .label-fade-leave-active{opacity:0}.aah-switch--large{font-size:14px;line-height:24px;height:40px}.aah-switch--large .aah-switch__label{height:24px;font-size:14px}.aah-switch--large .aah-switch__label *{font-size:14px}.aah-switch--large .aah-switch__core{min-width:50px;height:24px;border-radius:12px}.aah-switch--large .aah-switch__core .aah-switch__inner{height:20px;padding:0 6px 0 22px}.aah-switch--large .aah-switch__core .aah-switch__action{width:20px;height:20px}.aah-switch--large.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 21px)}.aah-switch--large.is-checked .aah-switch__core .aah-switch__inner{padding:0 22px 0 6px}.aah-switch--small{font-size:12px;line-height:16px;height:24px}.aah-switch--small .aah-switch__label{height:16px;font-size:12px}.aah-switch--small .aah-switch__label *{font-size:12px}.aah-switch--small .aah-switch__core{min-width:30px;height:16px;border-radius:8px}.aah-switch--small .aah-switch__core .aah-switch__inner{height:12px;padding:0 2px 0 14px}.aah-switch--small .aah-switch__core .aah-switch__action{width:12px;height:12px}.aah-switch--small.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 13px)}.aah-switch--small.is-checked .aah-switch__core .aah-switch__inner{padding:0 14px 0 2px}.el-row{margin-bottom:20px}.el-row:last-child{margin-bottom:0}.el-col{border-radius:4px}.grid-content{border-radius:4px;min-height:36px}:root{--aah-loading-spinner-size: 42px;--aah-loading-fullscreen-spinner-size: 50px}.aah-loading-parent--relative{position:relative!important}.aah-loading-parent--hidden{overflow:hidden!important}.aah-loading-mask{position:absolute;z-index:2000;background-color:var(--aah-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--aah-transition-duration)}.aah-loading-mask.is-fullscreen{position:fixed}.aah-loading-mask.is-fullscreen .aah-loading-spinner{margin-top:calc((0px - var(--aah-loading-fullscreen-spinner-size)) / 2)}.aah-loading-mask.is-fullscreen .aah-loading-spinner .circular{height:var(--aah-loading-fullscreen-spinner-size);width:var(--aah-loading-fullscreen-spinner-size)}.aah-loading-spinner{top:50%;margin-top:calc((0px - var(--aah-loading-spinner-size)) / 2);width:100%;text-align:center;position:absolute}.aah-loading-spinner .aah-loading-text{color:var(--aah-color-primary);margin:3px 0;font-size:14px}.aah-loading-spinner .circular{display:inline;height:var(--aah-loading-spinner-size);width:var(--aah-loading-spinner-size);animation:loading-rotate 2s linear infinite}.aah-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--aah-color-primary);stroke-linecap:round}.aah-loading-spinner i{color:var(--aah-color-primary)}.aah-loading-fade-enter-from,.aah-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.aah-empty{--aah-empty-padding: 40px 0;--aah-empty-image-width: 160px;--aah-empty-description-margin-top: 20px;--aah-empty-bottom-margin-top: 20px;--aah-empty-fill-color-0: var(--aah-color-white);--aah-empty-fill-color-1: #fcfcfd;--aah-empty-fill-color-2: #f8f9fb;--aah-empty-fill-color-3: #f7f8fc;--aah-empty-fill-color-4: #eeeff3;--aah-empty-fill-color-5: #edeef2;--aah-empty-fill-color-6: #e9ebef;--aah-empty-fill-color-7: #e5e7e9;--aah-empty-fill-color-8: #e0e3e9;--aah-empty-fill-color-9: #d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--aah-empty-padding)}.aah-empty__image{width:var(--aah-empty-image-width)}.aah-empty__image img{-webkit-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;object-fit:contain}.aah-empty__image svg{color:var(--aah-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.aah-empty__description{margin-top:var(--aah-empty-description-margin-top)}.aah-empty__description p{margin:0;font-size:var(--aah-font-size-base);color:var(--aah-text-color-secondary)}.aah-empty__bottom{margin-top:var(--aah-empty-bottom-margin-top)}.aah-form{--aah-form-label-font-size: var(--aah-font-size-base);--aah-form-inline-content-width: 220px}.aah-form--label-left .aah-form-item__label{justify-content:flex-start}.aah-form--label-top .aah-form-item{display:block}.aah-form--label-top .aah-form-item .aah-form-item__label{display:block;height:auto;text-align:left;margin-bottom:8px;line-height:22px}.aah-form--inline .aah-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.aah-form--inline.aah-form--label-top{display:flex;flex-wrap:wrap}.aah-form--inline.aah-form--label-top .aah-form-item{display:block}.aah-form--large.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:12px;line-height:22px}.aah-form--default.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:8px;line-height:22px}.aah-form--small.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:4px;line-height:20px}.aah-form-item{display:flex;--font-size: 14px;margin-bottom:18px}.aah-form-item .aah-form-item{margin-bottom:0}.aah-form-item .aah-input__validateIcon{display:none}.aah-form-item--large{--font-size: 14px;--aah-form-label-font-size: var(--font-size);margin-bottom:22px}.aah-form-item--large .aah-form-item__label{height:40px;line-height:40px}.aah-form-item--large .aah-form-item__content{line-height:40px}.aah-form-item--large .aah-form-item__error{padding-top:4px}.aah-form-item--default{--font-size: 14px;--aah-form-label-font-size: var(--font-size);margin-bottom:18px}.aah-form-item--default .aah-form-item__label{height:32px;line-height:32px}.aah-form-item--default .aah-form-item__content{line-height:32px}.aah-form-item--default .aah-form-item__error{padding-top:2px}.aah-form-item--small{--font-size: 12px;--aah-form-label-font-size: var(--font-size);margin-bottom:18px}.aah-form-item--small .aah-form-item__label{height:24px;line-height:24px}.aah-form-item--small .aah-form-item__content{line-height:24px}.aah-form-item--small .aah-form-item__error{padding-top:2px}.aah-form-item__label-wrap{display:flex}.aah-form-item__label{display:inline-flex;justify-content:flex-end;align-items:flex-start;flex:0 0 auto;font-size:var(--aah-form-label-font-size);color:var(--aah-text-color-regular);height:32px;line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.aah-form-item__content{display:flex;flex-wrap:wrap;align-items:center;flex:1;line-height:32px;position:relative;font-size:var(--font-size);min-width:0}.aah-form-item__content .aah-input-group{vertical-align:top}.aah-form-item__error{color:var(--aah-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.aah-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.aah-form-item.is-required:not(.is-no-asterisk).asterisk-left>.aah-form-item__label:before,.aah-form-item.is-required:not(.is-no-asterisk).asterisk-left>.aah-form-item__label-wrap>.aah-form-item__label:before{content:"*";color:var(--aah-color-danger);margin-right:4px}.aah-form-item.is-required:not(.is-no-asterisk).asterisk-right>.aah-form-item__label:after,.aah-form-item.is-required:not(.is-no-asterisk).asterisk-right>.aah-form-item__label-wrap>.aah-form-item__label:after{content:"*";color:var(--aah-color-danger);margin-left:4px}.aah-form-item.is-error .aah-input__wrapper,.aah-form-item.is-error .aah-input__wrapper:hover,.aah-form-item.is-error .aah-input__wrapper:focus,.aah-form-item.is-error .aah-input__wrapper.is-focus,.aah-form-item.is-error .aah-textarea__inner,.aah-form-item.is-error .aah-textarea__inner:hover,.aah-form-item.is-error .aah-textarea__inner:focus,.aah-form-item.is-error .aah-textarea__inner.is-focus,.aah-form-item.is-error .aah-select__wrapper,.aah-form-item.is-error .aah-select__wrapper:hover,.aah-form-item.is-error .aah-select__wrapper:focus,.aah-form-item.is-error .aah-select__wrapper.is-focus{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-form-item.is-error .aah-input-group__append .aah-input__wrapper,.aah-form-item.is-error .aah-input-group__prepend .aah-input__wrapper{box-shadow:0 0 0 1px transparent inset}.aah-form-item.is-error .aah-input__validateIcon{color:var(--aah-color-danger)}.aah-form-item--feedback .aah-input__validateIcon{display:inline-flex}.aah_btn{width:100%}.aah_title img{max-width:100%;height:auto;overflow:hidden}.aah_title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:10px}.aah_active{box-shadow:0 0 5px #0af}.aah_password input{--el-input-inner-height: calc(var(--el-input-height, 32px) - 2px);background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color, var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%;margin:auto}.el-input__inner{border:none!important;margin:auto;--el-input-inner-height: calc(var(--el-input-height, 32px) - 2px);background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color, var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.aah_bomHet50{padding:13px 0 13px 10px}.aah_bomHet50 span{display:inline-block;line-height:24px;padding-left:14px;color:#a8a8b3}.aah_bomHet50 span i{display:inline-block;width:10px;height:10px;border:1px solid #DBDFE9;border-radius:2px;vertical-align:middle;margin-right:4px;margin-top:-2px}.aah_bomHet50 .dq i{background-color:#ecf5ff;box-shadow:0 0 5px #0af}.aah_bomHet50 .yp i{background-color:#f0f9eb;border-color:#409eff}.aah_bomHet50 .wp i{background-color:#fef0f0;border-color:#f56c6c}.aah-table{--aah-table-border-color: var(--aah-border-color-lighter);--aah-table-border: 1px solid var(--aah-table-border-color);--aah-table-text-color: var(--aah-text-color-regular);--aah-table-header-text-color: var(--aah-text-color-secondary);--aah-table-row-hover-bg-color: var(--aah-fill-color-light);--aah-table-current-row-bg-color: var(--aah-color-primary-light-9);--aah-table-header-bg-color: var(--aah-bg-color);--aah-table-fixed-box-shadow: var(--aah-box-shadow-light);--aah-table-bg-color: var(--aah-fill-color-blank);--aah-table-tr-bg-color: var(--aah-bg-color);--aah-table-expanded-cell-bg-color: var(--aah-fill-color-blank);--aah-table-fixed-left-column: inset 10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-fixed-right-column: inset -10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-index: var(--aah-index-normal)}.aah-table{position:relative;overflow:hidden;box-sizing:border-box;height:fit-content;width:100%;max-width:100%;background-color:var(--aah-table-bg-color);font-size:14px;color:var(--aah-table-text-color)}.aah-table__inner-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.aah-table__inner-wrapper:before{left:0;bottom:0;width:100%;height:1px}.aah-table tbody:focus-visible{outline:none}.aah-table.has-footer.aah-table--scrollable-y tr:last-child td.aah-table__cell,.aah-table.has-footer.aah-table--fluid-height tr:last-child td.aah-table__cell{border-bottom-color:transparent}.aah-table__empty-block{position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.aah-table__empty-text{line-height:60px;width:50%;color:var(--aah-text-color-secondary)}.aah-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.aah-table__expand-icon{position:relative;cursor:pointer;color:var(--aah-text-color-regular);font-size:12px;transition:transform var(--aah-transition-duration-fast) ease-in-out;height:20px}.aah-table__expand-icon--expanded{transform:rotate(90deg)}.aah-table__expand-icon>.aah-icon{font-size:12px}.aah-table__expanded-cell{background-color:var(--aah-table-expanded-cell-bg-color)}.aah-table__expanded-cell[class*=cell]{padding:20px 50px}.aah-table__expanded-cell:hover{background-color:transparent!important}.aah-table__placeholder{display:inline-block;width:20px}.aah-table__append-wrapper{overflow:hidden}.aah-table--fit{border-right:0;border-bottom:0}.aah-table--fit .aah-table__cell.gutter{border-right-width:1px}.aah-table thead{color:var(--aah-table-header-text-color)}.aah-table thead th{font-weight:600}.aah-table thead.is-group th.aah-table__cell{background:var(--aah-fill-color-light)}.aah-table .aah-table__cell{padding:8px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left;z-index:var(--aah-table-index)}.aah-table .aah-table__cell.is-center{text-align:center}.aah-table .aah-table__cell.is-right{text-align:right}.aah-table .aah-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.aah-table .aah-table__cell.is-hidden>*{visibility:hidden}.aah-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;line-height:23px;padding:0 12px}.aah-table .cell.aah-tooltip{white-space:nowrap;min-width:50px}.aah-table--large{font-size:var(--aah-font-size-base)}.aah-table--large .aah-table__cell{padding:12px 0}.aah-table--large .cell{padding:0 16px}.aah-table--default{font-size:14px}.aah-table--default .aah-table__cell{padding:8px 0}.aah-table--default .cell{padding:0 12px}.aah-table--small{font-size:12px}.aah-table--small .aah-table__cell{padding:4px 0}.aah-table--small .cell{padding:0 8px}.aah-table tr{background-color:var(--aah-table-tr-bg-color)}.aah-table tr input[type=checkbox]{margin:0}.aah-table th.aah-table__cell.is-leaf,.aah-table td.aah-table__cell{border-bottom:var(--aah-table-border)}.aah-table th.aah-table__cell.is-sortable{cursor:pointer}.aah-table th.aah-table__cell{-webkit-user-select:none;user-select:none;background-color:var(--aah-table-header-bg-color)}.aah-table th.aah-table__cell>.cell.highlight{color:var(--aah-color-primary)}.aah-table th.aah-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.aah-table td.aah-table__cell div{box-sizing:border-box}.aah-table td.aah-table__cell.gutter{width:0}.aah-table--border:after,.aah-table--border:before,.aah-table--border .aah-table__inner-wrapper:after,.aah-table__inner-wrapper:before{content:"";position:absolute;background-color:var(--aah-table-border-color);z-index:calc(var(--aah-table-index) + 2)}.aah-table--border .aah-table__inner-wrapper:after{left:0;top:0;width:100%;height:1px;z-index:calc(var(--aah-table-index) + 2)}.aah-table--border:before{top:-1px;left:0;width:1px;height:100%}.aah-table--border:after{top:-1px;right:0;width:1px;height:100%}.aah-table--border .aah-table__inner-wrapper{border-right:none;border-bottom:none}.aah-table--border .aah-table__footer-wrapper{position:relative;flex-shrink:0}.aah-table--border .aah-table__cell{border-right:var(--aah-table-border)}.aah-table--border th.aah-table__cell.gutter:last-of-type{border-bottom:var(--aah-table-border);border-bottom-width:1px}.aah-table--border th.aah-table__cell{border-bottom:var(--aah-table-border)}.aah-table--hidden{visibility:hidden}.aah-table__header-wrapper,.aah-table__body-wrapper,.aah-table__footer-wrapper{width:100%}.aah-table__header-wrapper tr td.aah-table-fixed-column--left,.aah-table__header-wrapper tr td.aah-table-fixed-column--right,.aah-table__header-wrapper tr th.aah-table-fixed-column--left,.aah-table__header-wrapper tr th.aah-table-fixed-column--right,.aah-table__body-wrapper tr td.aah-table-fixed-column--left,.aah-table__body-wrapper tr td.aah-table-fixed-column--right,.aah-table__body-wrapper tr th.aah-table-fixed-column--left,.aah-table__body-wrapper tr th.aah-table-fixed-column--right,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right{position:sticky!important;background:inherit;z-index:calc(var(--aah-table-index) + 1)}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-first-column:before{content:"";position:absolute;top:0;width:10px;bottom:-1px;overflow-x:hidden;overflow-y:hidden;box-shadow:none;touch-action:none;pointer-events:none}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-first-column:before{left:-10px}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-last-column:before{right:-10px;box-shadow:none}.aah-table__header-wrapper tr td.aah-table__fixed-right-patch,.aah-table__header-wrapper tr th.aah-table__fixed-right-patch,.aah-table__body-wrapper tr td.aah-table__fixed-right-patch,.aah-table__body-wrapper tr th.aah-table__fixed-right-patch,.aah-table__footer-wrapper tr td.aah-table__fixed-right-patch,.aah-table__footer-wrapper tr th.aah-table__fixed-right-patch{position:sticky!important;z-index:calc(var(--aah-table-index) + 1);background:#fff;right:0}.aah-table__header-wrapper{flex-shrink:0}.aah-table__header-wrapper tr th.aah-table-fixed-column--left,.aah-table__header-wrapper tr th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table__header,.aah-table__body,.aah-table__footer{table-layout:fixed;border-collapse:separate}.aah-table__header-wrapper{overflow:hidden}.aah-table__header-wrapper tbody td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color);color:var(--aah-table-text-color)}.aah-table__footer-wrapper{overflow:hidden;flex-shrink:0}.aah-table__footer-wrapper tfoot td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color);color:var(--aah-table-text-color)}.aah-table__header-wrapper .aah-table-column--selection>.cell,.aah-table__body-wrapper .aah-table-column--selection>.cell{display:inline-flex;align-items:center;height:23px}.aah-table__header-wrapper .aah-table-column--selection .aah-checkbox,.aah-table__body-wrapper .aah-table-column--selection .aah-checkbox{height:unset}.aah-table.is-scrolling-left .aah-table-fixed-column--right.is-first-column:before{box-shadow:var(--aah-table-fixed-right-column)}.aah-table.is-scrolling-left.aah-table--border .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:var(--aah-table-border)}.aah-table.is-scrolling-left th.aah-table-fixed-column--left{background-color:var(--aah-table-header-bg-color)}.aah-table.is-scrolling-right .aah-table-fixed-column--left.is-last-column:before{box-shadow:var(--aah-table-fixed-left-column)}.aah-table.is-scrolling-right .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:none}.aah-table.is-scrolling-right th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table.is-scrolling-middle .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:none}.aah-table.is-scrolling-middle .aah-table-fixed-column--right.is-first-column:before{box-shadow:var(--aah-table-fixed-right-column)}.aah-table.is-scrolling-middle .aah-table-fixed-column--left.is-last-column:before{box-shadow:var(--aah-table-fixed-left-column)}.aah-table.is-scrolling-none .aah-table-fixed-column--left.is-first-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--left.is-last-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--right.is-first-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--right.is-last-column:before{box-shadow:none}.aah-table.is-scrolling-none th.aah-table-fixed-column--left,.aah-table.is-scrolling-none th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table__body-wrapper{overflow:hidden;position:relative;flex:1}.aah-table__body-wrapper .aah-scrollbar__bar{z-index:calc(var(--aah-table-index) + 2)}.aah-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:14px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.aah-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.aah-table .sort-caret.ascending{border-bottom-color:var(--aah-text-color-placeholder);top:-5px}.aah-table .sort-caret.descending{border-top-color:var(--aah-text-color-placeholder);bottom:-3px}.aah-table .ascending .sort-caret.ascending{border-bottom-color:var(--aah-color-primary)}.aah-table .descending .sort-caret.descending{border-top-color:var(--aah-color-primary)}.aah-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.aah-table--striped .aah-table__body tr.aah-table__row--striped td.aah-table__cell{background:var(--aah-fill-color-lighter)}.aah-table--striped .aah-table__body tr.aah-table__row--striped.current-row td.aah-table__cell{background-color:var(--aah-table-current-row-bg-color)}.aah-table__body tr.hover-row>td.aah-table__cell,.aah-table__body tr.hover-row.current-row>td.aah-table__cell,.aah-table__body tr.hover-row.aah-table__row--striped>td.aah-table__cell,.aah-table__body tr.hover-row.aah-table__row--striped.current-row>td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table__body tr>td.hover-cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table__body tr.current-row>td.aah-table__cell{background-color:var(--aah-table-current-row-bg-color)}.aah-table.aah-table--scrollable-y .aah-table__body-header{position:sticky;top:0;z-index:calc(var(--aah-table-index) + 2)}.aah-table.aah-table--scrollable-y .aah-table__body-footer{position:sticky;bottom:0;z-index:calc(var(--aah-table-index) + 2)}.aah-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--aah-table-border);z-index:calc(var(--aah-table-index) + 9)}.aah-table__column-filter-trigger{display:inline-block;cursor:pointer}.aah-table__column-filter-trigger i{color:var(--aah-color-info);font-size:14px;vertical-align:middle}.aah-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table__border-bottom-patch{left:0;height:1px;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table__border-right-patch{top:0;height:100%;width:1px;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table--enable-row-transition .aah-table__body td.aah-table__cell{transition:background-color .25s ease}.aah-table--enable-row-hover .aah-table__body tr:hover>td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table [class*=aah-table__row--level] .aah-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.aah-table .aah-table.aah-table--border .aah-table__cell{border-right:var(--aah-table-border)}.aah-table:not(.aah-table--border) .aah-table__cell{border-right:none}.aah-table:not(.aah-table--border)>.aah-table__inner-wrapper:after{content:none}.aah-table-column--selection .cell{padding-left:14px;padding-right:14px}.aah-table-filter{border:solid 1px var(--aah-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--aah-box-shadow-light);box-sizing:border-box}.aah-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.aah-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--aah-font-size-base)}.aah-table-filter__list-item:hover{background-color:var(--aah-color-primary-light-9);color:var(--aah-color-primary)}.aah-table-filter__list-item.is-active{background-color:var(--aah-color-primary);color:#fff}.aah-table-filter__content{min-width:100px}.aah-table-filter__bottom{border-top:1px solid var(--aah-border-color-lighter);padding:8px}.aah-table-filter__bottom button{background:transparent;border:none;color:var(--aah-text-color-regular);cursor:pointer;font-size:var(--aah-font-size-small);padding:0 3px}.aah-table-filter__bottom button:hover{color:var(--aah-color-primary)}.aah-table-filter__bottom button:focus{outline:none}.aah-table-filter__bottom button.is-disabled{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-table-filter__wrap{max-height:280px}.aah-table-filter__checkbox-group{padding:10px}.aah-table-filter__checkbox-group label.aah-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.aah-table-filter__checkbox-group .aah-checkbox:last-child{margin-bottom:0}.aah-popconfirm__main{display:flex;align-items:center}.aah-popconfirm__icon{margin-right:5px}.aah-popconfirm__action{text-align:right;margin-top:8px}.aah-popover{--aah-popover-bg-color: var(--aah-bg-color-overlay);--aah-popover-font-size: var(--aah-font-size-base);--aah-popover-border-color: var(--aah-border-color-lighter);--aah-popover-padding: 12px;--aah-popover-padding-large: 18px 20px;--aah-popover-title-font-size: 16px;--aah-popover-title-text-color: var(--aah-text-color-primary);--aah-popover-border-radius: 4px}.aah-popover.aah-popper{background:var(--aah-popover-bg-color);min-width:150px;border-radius:var(--aah-popover-border-radius);border:1px solid var(--aah-popover-border-color);padding:var(--aah-popover-padding);z-index:var(--aah-index-popper);color:var(--aah-text-color-regular);line-height:1.4;font-size:var(--aah-popover-font-size);box-shadow:var(--aah-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.aah-popover.aah-popper--plain{padding:var(--aah-popover-padding-large)}.aah-popover__title{color:var(--aah-popover-title-text-color);font-size:var(--aah-popover-title-font-size);line-height:1;margin-bottom:12px}.aah-popover__reference:focus:not(.focusing),.aah-popover__reference:focus:hover{outline-width:0}.aah-popover.aah-popper.is-dark{--aah-popover-bg-color: var(--aah-text-color-primary);--aah-popover-border-color: var(--aah-text-color-primary);--aah-popover-title-text-color: var(--aah-bg-color);color:var(--aah-bg-color)}.aah-popover.aah-popper:focus:active,.aah-popover.aah-popper:focus{outline-width:0}.aah-statistic{--aah-statistic-title-font-weight: 400;--aah-statistic-title-font-size: var(--aah-font-size-extra-small);--aah-statistic-title-color: var(--aah-text-color-regular);--aah-statistic-content-font-weight: 400;--aah-statistic-content-font-size: var(--aah-font-size-extra-large);--aah-statistic-content-color: var(--aah-text-color-primary)}.aah-statistic__head{font-weight:var(--aah-statistic-title-font-weight);font-size:var(--aah-statistic-title-font-size);color:var(--aah-statistic-title-color);line-height:20px;margin-bottom:4px}.aah-statistic__content{font-weight:var(--aah-statistic-content-font-weight);font-size:var(--aah-statistic-content-font-size);color:var(--aah-statistic-content-color)}.aah-statistic__value{display:inline-block}.aah-statistic__prefix{margin-right:4px;display:inline-block}.aah-statistic__suffix{margin-left:4px;display:inline-block}#AiAskApp .aah_wrapper>div{pointer-events:none}#AiAskApp .aah_wrapper>div>div{pointer-events:none}.aah-dialog{pointer-events:auto}@media (max-width: 600px){#AiAskApp .aah-scrollbar,#AiAskApp .aah-scrollbar__wrap{max-height:50vh!important}}@media (min-width: 601px){#AiAskApp .aah-scrollbar,#AiAskApp .aah-scrollbar__wrap{max-height:700px!important}}.minimized-dialog img{pointer-events:auto;width:50px!important;z-index:999;position:fixed;bottom:0;right:0}.aah_breadcrumb{margin-bottom:20px}html.dark{color-scheme:dark;--aah-color-primary: #409eff;--aah-color-primary-light-3: #3375b9;--aah-color-primary-light-5: #2a598a;--aah-color-primary-light-7: #213d5b;--aah-color-primary-light-8: #1d3043;--aah-color-primary-light-9: #18222c;--aah-color-primary-dark-2: #66b1ff;--aah-color-success: #67c23a;--aah-color-success-light-3: #4e8e2f;--aah-color-success-light-5: #3e6b27;--aah-color-success-light-7: #2d481f;--aah-color-success-light-8: #25371c;--aah-color-success-light-9: #1c2518;--aah-color-success-dark-2: #85ce61;--aah-color-warning: #e6a23c;--aah-color-warning-light-3: #a77730;--aah-color-warning-light-5: #7d5b28;--aah-color-warning-light-7: #533f20;--aah-color-warning-light-8: #3e301c;--aah-color-warning-light-9: #292218;--aah-color-warning-dark-2: #ebb563;--aah-color-danger: #f56c6c;--aah-color-danger-light-3: #b25252;--aah-color-danger-light-5: #854040;--aah-color-danger-light-7: #582e2e;--aah-color-danger-light-8: #412626;--aah-color-danger-light-9: #2b1d1d;--aah-color-danger-dark-2: #f78989;--aah-color-error: #f56c6c;--aah-color-error-light-3: #b25252;--aah-color-error-light-5: #854040;--aah-color-error-light-7: #582e2e;--aah-color-error-light-8: #412626;--aah-color-error-light-9: #2b1d1d;--aah-color-error-dark-2: #f78989;--aah-color-info: #909399;--aah-color-info-light-3: #6b6d71;--aah-color-info-light-5: #525457;--aah-color-info-light-7: #393a3c;--aah-color-info-light-8: #2d2d2f;--aah-color-info-light-9: #202121;--aah-color-info-dark-2: #a6a9ad;--aah-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .36), 0px 8px 20px rgba(0, 0, 0, .72);--aah-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .72);--aah-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .72);--aah-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .72), 0px 12px 32px #000000, 0px 8px 16px -8px #000000;--aah-bg-color-page: #0a0a0a;--aah-bg-color: #141414;--aah-bg-color-overlay: #1d1e1f;--aah-text-color-primary: #E5EAF3;--aah-text-color-regular: #CFD3DC;--aah-text-color-secondary: #A3A6AD;--aah-text-color-placeholder: #8D9095;--aah-text-color-disabled: #6C6E72;--aah-border-color-darker: #636466;--aah-border-color-dark: #58585B;--aah-border-color: #4C4D4F;--aah-border-color-light: #414243;--aah-border-color-lighter: #363637;--aah-border-color-extra-light: #2B2B2C;--aah-fill-color-darker: #424243;--aah-fill-color-dark: #39393A;--aah-fill-color: #303030;--aah-fill-color-light: #262727;--aah-fill-color-lighter: #1D1D1D;--aah-fill-color-extra-light: #191919;--aah-fill-color-blank: transparent;--aah-mask-color: rgba(0, 0, 0, .8);--aah-mask-color-extra-light: rgba(0, 0, 0, .3)}html.dark .aah-button{--aah-button-disabled-text-color: rgba(255, 255, 255, .5)}html.dark .aah-card{--aah-card-bg-color: var(--aah-bg-color-overlay)}html.dark .aah-empty{--aah-empty-fill-color-0: var(--aah-color-black);--aah-empty-fill-color-1: #4b4b52;--aah-empty-fill-color-2: #36383d;--aah-empty-fill-color-3: #1e1e20;--aah-empty-fill-color-4: #262629;--aah-empty-fill-color-5: #202124;--aah-empty-fill-color-6: #212224;--aah-empty-fill-color-7: #1b1c1f;--aah-empty-fill-color-8: #1c1d1f;--aah-empty-fill-color-9: #18181a}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.fixed{position:fixed}.mx-1{margin-left:.25rem;margin-right:.25rem}.inline-block{display:inline-block}.hidden{display:none}.flex-grow{flex-grow:1}.table{display:table}.border{border-width:1px}[align~=middle]{vertical-align:middle}.outline{outline-style:solid}.aah-message{--aah-message-bg-color: var(--aah-color-info-light-9);--aah-message-border-color: var(--aah-border-color-lighter);--aah-message-padding: 11px 15px;--aah-message-close-size: 16px;--aah-message-close-icon-color: var(--aah-text-color-placeholder);--aah-message-close-hover-color: var(--aah-text-color-secondary)}.aah-message{width:fit-content;max-width:calc(100% - 32px);box-sizing:border-box;border-radius:var(--aah-border-radius-base);border-width:var(--aah-border-width);border-style:var(--aah-border-style);border-color:var(--aah-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);background-color:var(--aah-message-bg-color);transition:opacity var(--aah-transition-duration),transform .4s,top .4s;padding:var(--aah-message-padding);display:flex;align-items:center;gap:8px}.aah-message.is-center{justify-content:center}.aah-message.is-plain{background-color:var(--aah-bg-color-overlay);border-color:var(--aah-bg-color-overlay);box-shadow:var(--aah-box-shadow-light)}.aah-message p{margin:0}.aah-message--success{--aah-message-bg-color: var(--aah-color-success-light-9);--aah-message-border-color: var(--aah-color-success-light-8);--aah-message-text-color: var(--aah-color-success)}.aah-message--success .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--success{color:var(--aah-message-text-color)}.aah-message--info{--aah-message-bg-color: var(--aah-color-info-light-9);--aah-message-border-color: var(--aah-color-info-light-8);--aah-message-text-color: var(--aah-color-info)}.aah-message--info .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--info{color:var(--aah-message-text-color)}.aah-message--warning{--aah-message-bg-color: var(--aah-color-warning-light-9);--aah-message-border-color: var(--aah-color-warning-light-8);--aah-message-text-color: var(--aah-color-warning)}.aah-message--warning .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--warning{color:var(--aah-message-text-color)}.aah-message--error{--aah-message-bg-color: var(--aah-color-error-light-9);--aah-message-border-color: var(--aah-color-error-light-8);--aah-message-text-color: var(--aah-color-error)}.aah-message--error .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--error{color:var(--aah-message-text-color)}.aah-message .aah-message__badge{position:absolute;top:-8px;right:-8px}.aah-message__content{padding:0;font-size:14px;line-height:1}.aah-message__content:focus{outline-width:0}.aah-message .aah-message__closeBtn{cursor:pointer;color:var(--aah-message-close-icon-color);font-size:var(--aah-message-close-size)}.aah-message .aah-message__closeBtn:focus{outline-width:0}.aah-message .aah-message__closeBtn:hover{color:var(--aah-message-close-hover-color)}.aah-message-fade-enter-from,.aah-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}:root{--aah-popup-modal-bg-color: var(--aah-color-black);--aah-popup-modal-opacity: .5}.v-modal-enter{animation:v-modal-in var(--aah-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--aah-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--aah-popup-modal-opacity);background:var(--aah-popup-modal-bg-color)}.aah-popup-parent--hidden{overflow:hidden}.aah-message-box{--aah-messagebox-title-color: var(--aah-text-color-primary);--aah-messagebox-width: 420px;--aah-messagebox-border-radius: 4px;--aah-messagebox-box-shadow: var(--aah-box-shadow);--aah-messagebox-font-size: var(--aah-font-size-large);--aah-messagebox-content-font-size: var(--aah-font-size-base);--aah-messagebox-content-color: var(--aah-text-color-regular);--aah-messagebox-error-font-size: 12px;--aah-messagebox-padding-primary: 12px;--aah-messagebox-font-line-height: var(--aah-font-line-height-primary)}.aah-message-box{display:inline-block;position:relative;max-width:var(--aah-messagebox-width);width:100%;padding:var(--aah-messagebox-padding-primary);vertical-align:middle;background-color:var(--aah-bg-color);border-radius:var(--aah-messagebox-border-radius);font-size:var(--aah-messagebox-font-size);box-shadow:var(--aah-messagebox-box-shadow);text-align:left;overflow:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word}.aah-message-box:focus{outline:none!important}.aah-overlay.is-message-box .aah-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;padding:16px;overflow:auto}.aah-overlay.is-message-box .aah-overlay-message-box:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.aah-message-box.is-draggable .aah-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.aah-message-box__header{padding-bottom:var(--aah-messagebox-padding-primary)}.aah-message-box__header.show-close{padding-right:calc(var(--aah-messagebox-padding-primary) + var(--aah-message-close-size, 16px))}.aah-message-box__title{font-size:var(--aah-messagebox-font-size);line-height:var(--aah-messagebox-font-line-height);color:var(--aah-messagebox-title-color)}.aah-message-box__headerbtn{position:absolute;top:0;right:0;padding:0;width:40px;height:40px;border:none;outline:none;background:transparent;font-size:var(--aah-message-close-size, 16px);cursor:pointer}.aah-message-box__headerbtn .aah-message-box__close{color:var(--aah-color-info);font-size:inherit}.aah-message-box__headerbtn:focus .aah-message-box__close,.aah-message-box__headerbtn:hover .aah-message-box__close{color:var(--aah-color-primary)}.aah-message-box__content{color:var(--aah-messagebox-content-color);font-size:var(--aah-messagebox-content-font-size)}.aah-message-box__container{display:flex;align-items:center;gap:12px}.aah-message-box__input{padding-top:12px}.aah-message-box__input div.invalid>input{border-color:var(--aah-color-error)}.aah-message-box__input div.invalid>input:focus{border-color:var(--aah-color-error)}.aah-message-box__status{font-size:24px}.aah-message-box__status.aah-message-box-icon--success{--aah-messagebox-color: var(--aah-color-success);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--info{--aah-messagebox-color: var(--aah-color-info);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--warning{--aah-messagebox-color: var(--aah-color-warning);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--error{--aah-messagebox-color: var(--aah-color-error);color:var(--aah-messagebox-color)}.aah-message-box__message{margin:0}.aah-message-box__message p{margin:0;line-height:var(--aah-messagebox-font-line-height)}.aah-message-box__errormsg{color:var(--aah-color-error);font-size:var(--aah-messagebox-error-font-size);line-height:var(--aah-messagebox-font-line-height)}.aah-message-box__btns{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;padding-top:var(--aah-messagebox-padding-primary)}.aah-message-box--center .aah-message-box__title{display:flex;align-items:center;justify-content:center;gap:6px}.aah-message-box--center .aah-message-box__status{font-size:inherit}.aah-message-box--center .aah-message-box__btns,.aah-message-box--center .aah-message-box__container{justify-content:center}.fade-in-linear-enter-active .aah-overlay-message-box{animation:msgbox-fade-in var(--aah-transition-duration)}.fade-in-linear-leave-active .aah-overlay-message-box{animation:msgbox-fade-in var(--aah-transition-duration) reverse}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}.aah-notification{--aah-notification-width: 330px;--aah-notification-padding: 14px 26px 14px 13px;--aah-notification-radius: 8px;--aah-notification-shadow: var(--aah-box-shadow-light);--aah-notification-border-color: var(--aah-border-color-lighter);--aah-notification-icon-size: 24px;--aah-notification-close-font-size: var(--aah-message-close-size, 16px);--aah-notification-group-margin-left: 13px;--aah-notification-group-margin-right: 8px;--aah-notification-content-font-size: var(--aah-font-size-base);--aah-notification-content-color: var(--aah-text-color-regular);--aah-notification-title-font-size: 16px;--aah-notification-title-color: var(--aah-text-color-primary);--aah-notification-close-color: var(--aah-text-color-secondary);--aah-notification-close-hover-color: var(--aah-text-color-regular)}.aah-notification{display:flex;width:var(--aah-notification-width);padding:var(--aah-notification-padding);border-radius:var(--aah-notification-radius);box-sizing:border-box;border:1px solid var(--aah-notification-border-color);position:fixed;background-color:var(--aah-bg-color-overlay);box-shadow:var(--aah-notification-shadow);transition:opacity var(--aah-transition-duration),transform var(--aah-transition-duration),left var(--aah-transition-duration),right var(--aah-transition-duration),top .4s,bottom var(--aah-transition-duration);overflow-wrap:break-word;overflow:hidden;z-index:9999}.aah-notification.right{right:16px}.aah-notification.left{left:16px}.aah-notification__group{margin-left:var(--aah-notification-group-margin-left);margin-right:var(--aah-notification-group-margin-right)}.aah-notification__title{font-weight:700;font-size:var(--aah-notification-title-font-size);line-height:var(--aah-notification-icon-size);color:var(--aah-notification-title-color);margin:0}.aah-notification__content{font-size:var(--aah-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--aah-notification-content-color)}.aah-notification__content p{margin:0}.aah-notification .aah-notification__icon{height:var(--aah-notification-icon-size);width:var(--aah-notification-icon-size);font-size:var(--aah-notification-icon-size)}.aah-notification .aah-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--aah-notification-close-color);font-size:var(--aah-notification-close-font-size)}.aah-notification .aah-notification__closeBtn:hover{color:var(--aah-notification-close-hover-color)}.aah-notification .aah-notification--success{--aah-notification-icon-color: var(--aah-color-success);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--info{--aah-notification-icon-color: var(--aah-color-info);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--warning{--aah-notification-icon-color: var(--aah-color-warning);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--error{--aah-notification-icon-color: var(--aah-color-error);color:var(--aah-notification-icon-color)}.aah-notification-fade-enter-from.right{right:0;transform:translate(100%)}.aah-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.aah-notification-fade-leave-to{opacity:0} `);

(function (vue, ElementPlus, DOMPurify, $, markdownit, hljs) {
  'use strict';

  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __commonJS = (cb, mod) => function __require() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var require_main_001 = __commonJS({
    "main-DgvrpIZ2.js"(exports, module) {
      var _GM_deleteValue = /* @__PURE__ */ (() => typeof GM_deleteValue != "undefined" ? GM_deleteValue : void 0)();
      var _GM_getResourceText = /* @__PURE__ */ (() => typeof GM_getResourceText != "undefined" ? GM_getResourceText : void 0)();
      var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)();
      var _GM_info = /* @__PURE__ */ (() => typeof GM_info != "undefined" ? GM_info : void 0)();
      var _GM_listValues = /* @__PURE__ */ (() => typeof GM_listValues != "undefined" ? GM_listValues : void 0)();
      var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)();
      var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
      var _unsafeWindow = /* @__PURE__ */ (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)();
      const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => {
        const handleEvent = (event2) => {
          const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event2);
          if (checkForDefaultPrevented === false || !shouldPrevent) {
            return oursHandler == null ? void 0 : oursHandler(event2);
          }
        };
        return handleEvent;
      };
      var isVue2 = false;
      var _a;
      const isClient = typeof window !== "undefined";
      const isString$1 = (val) => typeof val === "string";
      const noop$1 = () => {
      };
      const isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
      function resolveUnref(r) {
        return typeof r === "function" ? r() : vue.unref(r);
      }
      function createFilterWrapper(filter, fn2) {
        function wrapper(...args) {
          return new Promise((resolve, reject) => {
            Promise.resolve(filter(() => fn2.apply(this, args), { fn: fn2, thisArg: this, args })).then(resolve).catch(reject);
          });
        }
        return wrapper;
      }
      function debounceFilter(ms, options = {}) {
        let timer;
        let maxTimer;
        let lastRejector = noop$1;
        const _clearTimeout = (timer2) => {
          clearTimeout(timer2);
          lastRejector();
          lastRejector = noop$1;
        };
        const filter = (invoke) => {
          const duration = resolveUnref(ms);
          const maxDuration = resolveUnref(options.maxWait);
          if (timer)
            _clearTimeout(timer);
          if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) {
            if (maxTimer) {
              _clearTimeout(maxTimer);
              maxTimer = null;
            }
            return Promise.resolve(invoke());
          }
          return new Promise((resolve, reject) => {
            lastRejector = options.rejectOnCancel ? reject : resolve;
            if (maxDuration && !maxTimer) {
              maxTimer = setTimeout(() => {
                if (timer)
                  _clearTimeout(timer);
                maxTimer = null;
                resolve(invoke());
              }, maxDuration);
            }
            timer = setTimeout(() => {
              if (maxTimer)
                _clearTimeout(maxTimer);
              maxTimer = null;
              resolve(invoke());
            }, duration);
          });
        };
        return filter;
      }
      function identity$1(arg) {
        return arg;
      }
      function tryOnScopeDispose(fn2) {
        if (vue.getCurrentScope()) {
          vue.onScopeDispose(fn2);
          return true;
        }
        return false;
      }
      function useDebounceFn(fn2, ms = 200, options = {}) {
        return createFilterWrapper(debounceFilter(ms, options), fn2);
      }
      function refDebounced(value, ms = 200, options = {}) {
        const debounced = vue.ref(value.value);
        const updater = useDebounceFn(() => {
          debounced.value = value.value;
        }, ms, options);
        vue.watch(value, () => updater());
        return debounced;
      }
      function tryOnMounted(fn2, sync = true) {
        if (vue.getCurrentInstance())
          vue.onMounted(fn2);
        else if (sync)
          fn2();
        else
          vue.nextTick(fn2);
      }
      function useTimeoutFn(cb, interval, options = {}) {
        const {
          immediate = true
        } = options;
        const isPending = vue.ref(false);
        let timer = null;
        function clear() {
          if (timer) {
            clearTimeout(timer);
            timer = null;
          }
        }
        function stop() {
          isPending.value = false;
          clear();
        }
        function start(...args) {
          clear();
          isPending.value = true;
          timer = setTimeout(() => {
            isPending.value = false;
            timer = null;
            cb(...args);
          }, resolveUnref(interval));
        }
        if (immediate) {
          isPending.value = true;
          if (isClient)
            start();
        }
        tryOnScopeDispose(stop);
        return {
          isPending: vue.readonly(isPending),
          start,
          stop
        };
      }
      function unrefElement(elRef) {
        var _a2;
        const plain = resolveUnref(elRef);
        return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
      }
      const defaultWindow = isClient ? window : void 0;
      function useEventListener(...args) {
        let target;
        let events;
        let listeners;
        let options;
        if (isString$1(args[0]) || Array.isArray(args[0])) {
          [events, listeners, options] = args;
          target = defaultWindow;
        } else {
          [target, events, listeners, options] = args;
        }
        if (!target)
          return noop$1;
        if (!Array.isArray(events))
          events = [events];
        if (!Array.isArray(listeners))
          listeners = [listeners];
        const cleanups = [];
        const cleanup = () => {
          cleanups.forEach((fn2) => fn2());
          cleanups.length = 0;
        };
        const register = (el, event2, listener, options2) => {
          el.addEventListener(event2, listener, options2);
          return () => el.removeEventListener(event2, listener, options2);
        };
        const stopWatch = vue.watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => {
          cleanup();
          if (!el)
            return;
          cleanups.push(...events.flatMap((event2) => {
            return listeners.map((listener) => register(el, event2, listener, options2));
          }));
        }, { immediate: true, flush: "post" });
        const stop = () => {
          stopWatch();
          cleanup();
        };
        tryOnScopeDispose(stop);
        return stop;
      }
      let _iOSWorkaround = false;
      function onClickOutside(target, handler, options = {}) {
        const { window: window2 = defaultWindow, ignore = [], capture = true, detectIframe = false } = options;
        if (!window2)
          return;
        if (isIOS && !_iOSWorkaround) {
          _iOSWorkaround = true;
          Array.from(window2.document.body.children).forEach((el) => el.addEventListener("click", noop$1));
        }
        let shouldListen = true;
        const shouldIgnore = (event2) => {
          return ignore.some((target2) => {
            if (typeof target2 === "string") {
              return Array.from(window2.document.querySelectorAll(target2)).some((el) => el === event2.target || event2.composedPath().includes(el));
            } else {
              const el = unrefElement(target2);
              return el && (event2.target === el || event2.composedPath().includes(el));
            }
          });
        };
        const listener = (event2) => {
          const el = unrefElement(target);
          if (!el || el === event2.target || event2.composedPath().includes(el))
            return;
          if (event2.detail === 0)
            shouldListen = !shouldIgnore(event2);
          if (!shouldListen) {
            shouldListen = true;
            return;
          }
          handler(event2);
        };
        const cleanup = [
          useEventListener(window2, "click", listener, { passive: true, capture }),
          useEventListener(window2, "pointerdown", (e) => {
            const el = unrefElement(target);
            if (el)
              shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e);
          }, { passive: true }),
          detectIframe && useEventListener(window2, "blur", (event2) => {
            var _a2;
            const el = unrefElement(target);
            if (((_a2 = window2.document.activeElement) == null ? void 0 : _a2.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window2.document.activeElement)))
              handler(event2);
          })
        ].filter(Boolean);
        const stop = () => cleanup.forEach((fn2) => fn2());
        return stop;
      }
      function useSupported(callback, sync = false) {
        const isSupported = vue.ref();
        const update = () => isSupported.value = Boolean(callback());
        update();
        tryOnMounted(update, sync);
        return isSupported;
      }
      const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
      const globalKey = "__vueuse_ssr_handlers__";
      _global[globalKey] = _global[globalKey] || {};
      var __getOwnPropSymbols$g = Object.getOwnPropertySymbols;
      var __hasOwnProp$g = Object.prototype.hasOwnProperty;
      var __propIsEnum$g = Object.prototype.propertyIsEnumerable;
      var __objRest$2 = (source, exclude) => {
        var target = {};
        for (var prop in source)
          if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0)
            target[prop] = source[prop];
        if (source != null && __getOwnPropSymbols$g)
          for (var prop of __getOwnPropSymbols$g(source)) {
            if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop))
              target[prop] = source[prop];
          }
        return target;
      };
      function useResizeObserver(target, callback, options = {}) {
        const _a2 = options, { window: window2 = defaultWindow } = _a2, observerOptions = __objRest$2(_a2, ["window"]);
        let observer;
        const isSupported = useSupported(() => window2 && "ResizeObserver" in window2);
        const cleanup = () => {
          if (observer) {
            observer.disconnect();
            observer = void 0;
          }
        };
        const stopWatch = vue.watch(() => unrefElement(target), (el) => {
          cleanup();
          if (isSupported.value && window2 && el) {
            observer = new ResizeObserver(callback);
            observer.observe(el, observerOptions);
          }
        }, { immediate: true, flush: "post" });
        const stop = () => {
          cleanup();
          stopWatch();
        };
        tryOnScopeDispose(stop);
        return {
          isSupported,
          stop
        };
      }
      var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols;
      var __hasOwnProp$8 = Object.prototype.hasOwnProperty;
      var __propIsEnum$8 = Object.prototype.propertyIsEnumerable;
      var __objRest$1 = (source, exclude) => {
        var target = {};
        for (var prop in source)
          if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0)
            target[prop] = source[prop];
        if (source != null && __getOwnPropSymbols$8)
          for (var prop of __getOwnPropSymbols$8(source)) {
            if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop))
              target[prop] = source[prop];
          }
        return target;
      };
      function useMutationObserver(target, callback, options = {}) {
        const _a2 = options, { window: window2 = defaultWindow } = _a2, mutationOptions = __objRest$1(_a2, ["window"]);
        let observer;
        const isSupported = useSupported(() => window2 && "MutationObserver" in window2);
        const cleanup = () => {
          if (observer) {
            observer.disconnect();
            observer = void 0;
          }
        };
        const stopWatch = vue.watch(() => unrefElement(target), (el) => {
          cleanup();
          if (isSupported.value && window2 && el) {
            observer = new MutationObserver(callback);
            observer.observe(el, mutationOptions);
          }
        }, { immediate: true });
        const stop = () => {
          cleanup();
          stopWatch();
        };
        tryOnScopeDispose(stop);
        return {
          isSupported,
          stop
        };
      }
      var SwipeDirection;
      (function(SwipeDirection2) {
        SwipeDirection2["UP"] = "UP";
        SwipeDirection2["RIGHT"] = "RIGHT";
        SwipeDirection2["DOWN"] = "DOWN";
        SwipeDirection2["LEFT"] = "LEFT";
        SwipeDirection2["NONE"] = "NONE";
      })(SwipeDirection || (SwipeDirection = {}));
      var __defProp = Object.defineProperty;
      var __getOwnPropSymbols = Object.getOwnPropertySymbols;
      var __hasOwnProp = Object.prototype.hasOwnProperty;
      var __propIsEnum = Object.prototype.propertyIsEnumerable;
      var __defNormalProp = (obj, key2, value) => key2 in obj ? __defProp(obj, key2, { enumerable: true, configurable: true, writable: true, value }) : obj[key2] = value;
      var __spreadValues = (a2, b2) => {
        for (var prop in b2 || (b2 = {}))
          if (__hasOwnProp.call(b2, prop))
            __defNormalProp(a2, prop, b2[prop]);
        if (__getOwnPropSymbols)
          for (var prop of __getOwnPropSymbols(b2)) {
            if (__propIsEnum.call(b2, prop))
              __defNormalProp(a2, prop, b2[prop]);
          }
        return a2;
      };
      const _TransitionPresets = {
        easeInSine: [0.12, 0, 0.39, 0],
        easeOutSine: [0.61, 1, 0.88, 1],
        easeInOutSine: [0.37, 0, 0.63, 1],
        easeInQuad: [0.11, 0, 0.5, 0],
        easeOutQuad: [0.5, 1, 0.89, 1],
        easeInOutQuad: [0.45, 0, 0.55, 1],
        easeInCubic: [0.32, 0, 0.67, 0],
        easeOutCubic: [0.33, 1, 0.68, 1],
        easeInOutCubic: [0.65, 0, 0.35, 1],
        easeInQuart: [0.5, 0, 0.75, 0],
        easeOutQuart: [0.25, 1, 0.5, 1],
        easeInOutQuart: [0.76, 0, 0.24, 1],
        easeInQuint: [0.64, 0, 0.78, 0],
        easeOutQuint: [0.22, 1, 0.36, 1],
        easeInOutQuint: [0.83, 0, 0.17, 1],
        easeInExpo: [0.7, 0, 0.84, 0],
        easeOutExpo: [0.16, 1, 0.3, 1],
        easeInOutExpo: [0.87, 0, 0.13, 1],
        easeInCirc: [0.55, 0, 1, 0.45],
        easeOutCirc: [0, 0.55, 0.45, 1],
        easeInOutCirc: [0.85, 0, 0.15, 1],
        easeInBack: [0.36, 0, 0.66, -0.56],
        easeOutBack: [0.34, 1.56, 0.64, 1],
        easeInOutBack: [0.68, -0.6, 0.32, 1.6]
      };
      __spreadValues({
        linear: identity$1
      }, _TransitionPresets);
      const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent);
      /**
      * @vue/shared v3.4.21
      * (c) 2018-present Yuxi (Evan) You and Vue contributors
      * @license MIT
      **/
      const NOOP = () => {
      };
      const hasOwnProperty$d = Object.prototype.hasOwnProperty;
      const hasOwn = (val, key2) => hasOwnProperty$d.call(val, key2);
      const isArray$1 = Array.isArray;
      const isFunction$1 = (val) => typeof val === "function";
      const isString = (val) => typeof val === "string";
      const isSymbol$1 = (val) => typeof val === "symbol";
      const isObject$1 = (val) => val !== null && typeof val === "object";
      const isPromise = (val) => {
        return (isObject$1(val) || isFunction$1(val)) && isFunction$1(val.then) && isFunction$1(val.catch);
      };
      const objectToString$1 = Object.prototype.toString;
      const toTypeString = (value) => objectToString$1.call(value);
      const toRawType = (value) => {
        return toTypeString(value).slice(8, -1);
      };
      const cacheStringFunction = (fn2) => {
        const cache = /* @__PURE__ */ Object.create(null);
        return (str) => {
          const hit = cache[str];
          return hit || (cache[str] = fn2(str));
        };
      };
      const camelizeRE = /-(\w)/g;
      const camelize = cacheStringFunction((str) => {
        return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : "");
      });
      const hyphenateRE = /\B([A-Z])/g;
      const hyphenate = cacheStringFunction(
        (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
      );
      const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
      var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
      var freeSelf = typeof self == "object" && self && self.Object === Object && self;
      var root = freeGlobal || freeSelf || Function("return this")();
      var Symbol$1 = root.Symbol;
      var objectProto$f = Object.prototype;
      var hasOwnProperty$c = objectProto$f.hasOwnProperty;
      var nativeObjectToString$1 = objectProto$f.toString;
      var symToStringTag$1 = Symbol$1 ? Symbol$1.toStringTag : void 0;
      function getRawTag(value) {
        var isOwn = hasOwnProperty$c.call(value, symToStringTag$1), tag = value[symToStringTag$1];
        try {
          value[symToStringTag$1] = void 0;
          var unmasked = true;
        } catch (e) {
        }
        var result = nativeObjectToString$1.call(value);
        if (unmasked) {
          if (isOwn) {
            value[symToStringTag$1] = tag;
          } else {
            delete value[symToStringTag$1];
          }
        }
        return result;
      }
      var objectProto$e = Object.prototype;
      var nativeObjectToString = objectProto$e.toString;
      function objectToString(value) {
        return nativeObjectToString.call(value);
      }
      var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
      var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0;
      function baseGetTag(value) {
        if (value == null) {
          return value === void 0 ? undefinedTag : nullTag;
        }
        return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
      }
      function isObjectLike(value) {
        return value != null && typeof value == "object";
      }
      var symbolTag$3 = "[object Symbol]";
      function isSymbol(value) {
        return typeof value == "symbol" || isObjectLike(value) && baseGetTag(value) == symbolTag$3;
      }
      function arrayMap(array, iteratee) {
        var index = -1, length = array == null ? 0 : array.length, result = Array(length);
        while (++index < length) {
          result[index] = iteratee(array[index], index, array);
        }
        return result;
      }
      var isArray = Array.isArray;
      var INFINITY$2 = 1 / 0;
      var symbolProto$2 = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto$2 ? symbolProto$2.toString : void 0;
      function baseToString(value) {
        if (typeof value == "string") {
          return value;
        }
        if (isArray(value)) {
          return arrayMap(value, baseToString) + "";
        }
        if (isSymbol(value)) {
          return symbolToString ? symbolToString.call(value) : "";
        }
        var result = value + "";
        return result == "0" && 1 / value == -INFINITY$2 ? "-0" : result;
      }
      var reWhitespace = /\s/;
      function trimmedEndIndex(string2) {
        var index = string2.length;
        while (index-- && reWhitespace.test(string2.charAt(index))) {
        }
        return index;
      }
      var reTrimStart = /^\s+/;
      function baseTrim(string2) {
        return string2 ? string2.slice(0, trimmedEndIndex(string2) + 1).replace(reTrimStart, "") : string2;
      }
      function isObject(value) {
        var type = typeof value;
        return value != null && (type == "object" || type == "function");
      }
      var NAN = 0 / 0;
      var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
      var reIsBinary = /^0b[01]+$/i;
      var reIsOctal = /^0o[0-7]+$/i;
      var freeParseInt = parseInt;
      function toNumber(value) {
        if (typeof value == "number") {
          return value;
        }
        if (isSymbol(value)) {
          return NAN;
        }
        if (isObject(value)) {
          var other = typeof value.valueOf == "function" ? value.valueOf() : value;
          value = isObject(other) ? other + "" : other;
        }
        if (typeof value != "string") {
          return value === 0 ? value : +value;
        }
        value = baseTrim(value);
        var isBinary = reIsBinary.test(value);
        return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
      }
      var INFINITY$1 = 1 / 0, MAX_INTEGER = 17976931348623157e292;
      function toFinite(value) {
        if (!value) {
          return value === 0 ? value : 0;
        }
        value = toNumber(value);
        if (value === INFINITY$1 || value === -INFINITY$1) {
          var sign = value < 0 ? -1 : 1;
          return sign * MAX_INTEGER;
        }
        return value === value ? value : 0;
      }
      function toInteger(value) {
        var result = toFinite(value), remainder = result % 1;
        return result === result ? remainder ? result - remainder : result : 0;
      }
      function identity(value) {
        return value;
      }
      var asyncTag = "[object AsyncFunction]", funcTag$2 = "[object Function]", genTag$1 = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
      function isFunction(value) {
        if (!isObject(value)) {
          return false;
        }
        var tag = baseGetTag(value);
        return tag == funcTag$2 || tag == genTag$1 || tag == asyncTag || tag == proxyTag;
      }
      var coreJsData = root["__core-js_shared__"];
      var maskSrcKey = function() {
        var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
        return uid ? "Symbol(src)_1." + uid : "";
      }();
      function isMasked(func) {
        return !!maskSrcKey && maskSrcKey in func;
      }
      var funcProto$2 = Function.prototype;
      var funcToString$2 = funcProto$2.toString;
      function toSource(func) {
        if (func != null) {
          try {
            return funcToString$2.call(func);
          } catch (e) {
          }
          try {
            return func + "";
          } catch (e) {
          }
        }
        return "";
      }
      var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
      var reIsHostCtor = /^\[object .+?Constructor\]$/;
      var funcProto$1 = Function.prototype, objectProto$d = Object.prototype;
      var funcToString$1 = funcProto$1.toString;
      var hasOwnProperty$b = objectProto$d.hasOwnProperty;
      var reIsNative = RegExp(
        "^" + funcToString$1.call(hasOwnProperty$b).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
      );
      function baseIsNative(value) {
        if (!isObject(value) || isMasked(value)) {
          return false;
        }
        var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
        return pattern.test(toSource(value));
      }
      function getValue$1(object, key2) {
        return object == null ? void 0 : object[key2];
      }
      function getNative(object, key2) {
        var value = getValue$1(object, key2);
        return baseIsNative(value) ? value : void 0;
      }
      var WeakMap = getNative(root, "WeakMap");
      var objectCreate = Object.create;
      var baseCreate = /* @__PURE__ */ function() {
        function object() {
        }
        return function(proto) {
          if (!isObject(proto)) {
            return {};
          }
          if (objectCreate) {
            return objectCreate(proto);
          }
          object.prototype = proto;
          var result = new object();
          object.prototype = void 0;
          return result;
        };
      }();
      function apply(func, thisArg, args) {
        switch (args.length) {
          case 0:
            return func.call(thisArg);
          case 1:
            return func.call(thisArg, args[0]);
          case 2:
            return func.call(thisArg, args[0], args[1]);
          case 3:
            return func.call(thisArg, args[0], args[1], args[2]);
        }
        return func.apply(thisArg, args);
      }
      function copyArray(source, array) {
        var index = -1, length = source.length;
        array || (array = Array(length));
        while (++index < length) {
          array[index] = source[index];
        }
        return array;
      }
      var HOT_COUNT = 800, HOT_SPAN = 16;
      var nativeNow = Date.now;
      function shortOut(func) {
        var count = 0, lastCalled = 0;
        return function() {
          var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
          lastCalled = stamp;
          if (remaining > 0) {
            if (++count >= HOT_COUNT) {
              return arguments[0];
            }
          } else {
            count = 0;
          }
          return func.apply(void 0, arguments);
        };
      }
      function constant(value) {
        return function() {
          return value;
        };
      }
      var defineProperty = function() {
        try {
          var func = getNative(Object, "defineProperty");
          func({}, "", {});
          return func;
        } catch (e) {
        }
      }();
      var baseSetToString = !defineProperty ? identity : function(func, string2) {
        return defineProperty(func, "toString", {
          "configurable": true,
          "enumerable": false,
          "value": constant(string2),
          "writable": true
        });
      };
      const baseSetToString$1 = baseSetToString;
      var setToString = shortOut(baseSetToString$1);
      function arrayEach(array, iteratee) {
        var index = -1, length = array == null ? 0 : array.length;
        while (++index < length) {
          if (iteratee(array[index], index, array) === false) {
            break;
          }
        }
        return array;
      }
      function baseFindIndex(array, predicate, fromIndex, fromRight) {
        var length = array.length, index = fromIndex + (fromRight ? 1 : -1);
        while (fromRight ? index-- : ++index < length) {
          if (predicate(array[index], index, array)) {
            return index;
          }
        }
        return -1;
      }
      var MAX_SAFE_INTEGER$1 = 9007199254740991;
      var reIsUint = /^(?:0|[1-9]\d*)$/;
      function isIndex(value, length) {
        var type = typeof value;
        length = length == null ? MAX_SAFE_INTEGER$1 : length;
        return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
      }
      function baseAssignValue(object, key2, value) {
        if (key2 == "__proto__" && defineProperty) {
          defineProperty(object, key2, {
            "configurable": true,
            "enumerable": true,
            "value": value,
            "writable": true
          });
        } else {
          object[key2] = value;
        }
      }
      function eq(value, other) {
        return value === other || value !== value && other !== other;
      }
      var objectProto$c = Object.prototype;
      var hasOwnProperty$a = objectProto$c.hasOwnProperty;
      function assignValue(object, key2, value) {
        var objValue = object[key2];
        if (!(hasOwnProperty$a.call(object, key2) && eq(objValue, value)) || value === void 0 && !(key2 in object)) {
          baseAssignValue(object, key2, value);
        }
      }
      function copyObject(source, props, object, customizer) {
        var isNew = !object;
        object || (object = {});
        var index = -1, length = props.length;
        while (++index < length) {
          var key2 = props[index];
          var newValue = customizer ? customizer(object[key2], source[key2], key2, object, source) : void 0;
          if (newValue === void 0) {
            newValue = source[key2];
          }
          if (isNew) {
            baseAssignValue(object, key2, newValue);
          } else {
            assignValue(object, key2, newValue);
          }
        }
        return object;
      }
      var nativeMax$2 = Math.max;
      function overRest(func, start, transform) {
        start = nativeMax$2(start === void 0 ? func.length - 1 : start, 0);
        return function() {
          var args = arguments, index = -1, length = nativeMax$2(args.length - start, 0), array = Array(length);
          while (++index < length) {
            array[index] = args[start + index];
          }
          index = -1;
          var otherArgs = Array(start + 1);
          while (++index < start) {
            otherArgs[index] = args[index];
          }
          otherArgs[start] = transform(array);
          return apply(func, this, otherArgs);
        };
      }
      function baseRest(func, start) {
        return setToString(overRest(func, start, identity), func + "");
      }
      var MAX_SAFE_INTEGER = 9007199254740991;
      function isLength(value) {
        return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
      }
      function isArrayLike(value) {
        return value != null && isLength(value.length) && !isFunction(value);
      }
      function isIterateeCall(value, index, object) {
        if (!isObject(object)) {
          return false;
        }
        var type = typeof index;
        if (type == "number" ? isArrayLike(object) && isIndex(index, object.length) : type == "string" && index in object) {
          return eq(object[index], value);
        }
        return false;
      }
      function createAssigner(assigner) {
        return baseRest(function(object, sources) {
          var index = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
          customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
          if (guard && isIterateeCall(sources[0], sources[1], guard)) {
            customizer = length < 3 ? void 0 : customizer;
            length = 1;
          }
          object = Object(object);
          while (++index < length) {
            var source = sources[index];
            if (source) {
              assigner(object, source, index, customizer);
            }
          }
          return object;
        });
      }
      var objectProto$b = Object.prototype;
      function isPrototype(value) {
        var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$b;
        return value === proto;
      }
      function baseTimes(n, iteratee) {
        var index = -1, result = Array(n);
        while (++index < n) {
          result[index] = iteratee(index);
        }
        return result;
      }
      var argsTag$3 = "[object Arguments]";
      function baseIsArguments(value) {
        return isObjectLike(value) && baseGetTag(value) == argsTag$3;
      }
      var objectProto$a = Object.prototype;
      var hasOwnProperty$9 = objectProto$a.hasOwnProperty;
      var propertyIsEnumerable$1 = objectProto$a.propertyIsEnumerable;
      var isArguments = baseIsArguments(/* @__PURE__ */ function() {
        return arguments;
      }()) ? baseIsArguments : function(value) {
        return isObjectLike(value) && hasOwnProperty$9.call(value, "callee") && !propertyIsEnumerable$1.call(value, "callee");
      };
      function stubFalse() {
        return false;
      }
      var freeExports$2 = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule$2 = freeExports$2 && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;
      var Buffer$1 = moduleExports$2 ? root.Buffer : void 0;
      var nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : void 0;
      var isBuffer = nativeIsBuffer || stubFalse;
      var argsTag$2 = "[object Arguments]", arrayTag$2 = "[object Array]", boolTag$3 = "[object Boolean]", dateTag$3 = "[object Date]", errorTag$2 = "[object Error]", funcTag$1 = "[object Function]", mapTag$5 = "[object Map]", numberTag$3 = "[object Number]", objectTag$4 = "[object Object]", regexpTag$3 = "[object RegExp]", setTag$5 = "[object Set]", stringTag$3 = "[object String]", weakMapTag$2 = "[object WeakMap]";
      var arrayBufferTag$3 = "[object ArrayBuffer]", dataViewTag$4 = "[object DataView]", float32Tag$2 = "[object Float32Array]", float64Tag$2 = "[object Float64Array]", int8Tag$2 = "[object Int8Array]", int16Tag$2 = "[object Int16Array]", int32Tag$2 = "[object Int32Array]", uint8Tag$2 = "[object Uint8Array]", uint8ClampedTag$2 = "[object Uint8ClampedArray]", uint16Tag$2 = "[object Uint16Array]", uint32Tag$2 = "[object Uint32Array]";
      var typedArrayTags = {};
      typedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;
      typedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$1] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$3] = typedArrayTags[weakMapTag$2] = false;
      function baseIsTypedArray(value) {
        return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
      }
      function baseUnary(func) {
        return function(value) {
          return func(value);
        };
      }
      var freeExports$1 = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule$1 = freeExports$1 && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;
      var freeProcess = moduleExports$1 && freeGlobal.process;
      var nodeUtil = function() {
        try {
          var types2 = freeModule$1 && freeModule$1.require && freeModule$1.require("util").types;
          if (types2) {
            return types2;
          }
          return freeProcess && freeProcess.binding && freeProcess.binding("util");
        } catch (e) {
        }
      }();
      var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
      var objectProto$9 = Object.prototype;
      var hasOwnProperty$8 = objectProto$9.hasOwnProperty;
      function arrayLikeKeys(value, inherited) {
        var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
        for (var key2 in value) {
          if ((inherited || hasOwnProperty$8.call(value, key2)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
          (key2 == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
          isBuff && (key2 == "offset" || key2 == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
          isType && (key2 == "buffer" || key2 == "byteLength" || key2 == "byteOffset") || // Skip index properties.
          isIndex(key2, length)))) {
            result.push(key2);
          }
        }
        return result;
      }
      function overArg(func, transform) {
        return function(arg) {
          return func(transform(arg));
        };
      }
      var nativeKeys = overArg(Object.keys, Object);
      var objectProto$8 = Object.prototype;
      var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
      function baseKeys(object) {
        if (!isPrototype(object)) {
          return nativeKeys(object);
        }
        var result = [];
        for (var key2 in Object(object)) {
          if (hasOwnProperty$7.call(object, key2) && key2 != "constructor") {
            result.push(key2);
          }
        }
        return result;
      }
      function keys(object) {
        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
      }
      function nativeKeysIn(object) {
        var result = [];
        if (object != null) {
          for (var key2 in Object(object)) {
            result.push(key2);
          }
        }
        return result;
      }
      var objectProto$7 = Object.prototype;
      var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
      function baseKeysIn(object) {
        if (!isObject(object)) {
          return nativeKeysIn(object);
        }
        var isProto = isPrototype(object), result = [];
        for (var key2 in object) {
          if (!(key2 == "constructor" && (isProto || !hasOwnProperty$6.call(object, key2)))) {
            result.push(key2);
          }
        }
        return result;
      }
      function keysIn(object) {
        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
      }
      var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, reIsPlainProp = /^\w*$/;
      function isKey(value, object) {
        if (isArray(value)) {
          return false;
        }
        var type = typeof value;
        if (type == "number" || type == "symbol" || type == "boolean" || value == null || isSymbol(value)) {
          return true;
        }
        return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
      }
      var nativeCreate = getNative(Object, "create");
      function hashClear() {
        this.__data__ = nativeCreate ? nativeCreate(null) : {};
        this.size = 0;
      }
      function hashDelete(key2) {
        var result = this.has(key2) && delete this.__data__[key2];
        this.size -= result ? 1 : 0;
        return result;
      }
      var HASH_UNDEFINED$2 = "__lodash_hash_undefined__";
      var objectProto$6 = Object.prototype;
      var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
      function hashGet(key2) {
        var data = this.__data__;
        if (nativeCreate) {
          var result = data[key2];
          return result === HASH_UNDEFINED$2 ? void 0 : result;
        }
        return hasOwnProperty$5.call(data, key2) ? data[key2] : void 0;
      }
      var objectProto$5 = Object.prototype;
      var hasOwnProperty$4 = objectProto$5.hasOwnProperty;
      function hashHas(key2) {
        var data = this.__data__;
        return nativeCreate ? data[key2] !== void 0 : hasOwnProperty$4.call(data, key2);
      }
      var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
      function hashSet(key2, value) {
        var data = this.__data__;
        this.size += this.has(key2) ? 0 : 1;
        data[key2] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;
        return this;
      }
      function Hash(entries) {
        var index = -1, length = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      Hash.prototype.clear = hashClear;
      Hash.prototype["delete"] = hashDelete;
      Hash.prototype.get = hashGet;
      Hash.prototype.has = hashHas;
      Hash.prototype.set = hashSet;
      function listCacheClear() {
        this.__data__ = [];
        this.size = 0;
      }
      function assocIndexOf(array, key2) {
        var length = array.length;
        while (length--) {
          if (eq(array[length][0], key2)) {
            return length;
          }
        }
        return -1;
      }
      var arrayProto = Array.prototype;
      var splice = arrayProto.splice;
      function listCacheDelete(key2) {
        var data = this.__data__, index = assocIndexOf(data, key2);
        if (index < 0) {
          return false;
        }
        var lastIndex = data.length - 1;
        if (index == lastIndex) {
          data.pop();
        } else {
          splice.call(data, index, 1);
        }
        --this.size;
        return true;
      }
      function listCacheGet(key2) {
        var data = this.__data__, index = assocIndexOf(data, key2);
        return index < 0 ? void 0 : data[index][1];
      }
      function listCacheHas(key2) {
        return assocIndexOf(this.__data__, key2) > -1;
      }
      function listCacheSet(key2, value) {
        var data = this.__data__, index = assocIndexOf(data, key2);
        if (index < 0) {
          ++this.size;
          data.push([key2, value]);
        } else {
          data[index][1] = value;
        }
        return this;
      }
      function ListCache(entries) {
        var index = -1, length = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      ListCache.prototype.clear = listCacheClear;
      ListCache.prototype["delete"] = listCacheDelete;
      ListCache.prototype.get = listCacheGet;
      ListCache.prototype.has = listCacheHas;
      ListCache.prototype.set = listCacheSet;
      var Map$1 = getNative(root, "Map");
      function mapCacheClear() {
        this.size = 0;
        this.__data__ = {
          "hash": new Hash(),
          "map": new (Map$1 || ListCache)(),
          "string": new Hash()
        };
      }
      function isKeyable(value) {
        var type = typeof value;
        return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
      }
      function getMapData(map2, key2) {
        var data = map2.__data__;
        return isKeyable(key2) ? data[typeof key2 == "string" ? "string" : "hash"] : data.map;
      }
      function mapCacheDelete(key2) {
        var result = getMapData(this, key2)["delete"](key2);
        this.size -= result ? 1 : 0;
        return result;
      }
      function mapCacheGet(key2) {
        return getMapData(this, key2).get(key2);
      }
      function mapCacheHas(key2) {
        return getMapData(this, key2).has(key2);
      }
      function mapCacheSet(key2, value) {
        var data = getMapData(this, key2), size = data.size;
        data.set(key2, value);
        this.size += data.size == size ? 0 : 1;
        return this;
      }
      function MapCache(entries) {
        var index = -1, length = entries == null ? 0 : entries.length;
        this.clear();
        while (++index < length) {
          var entry = entries[index];
          this.set(entry[0], entry[1]);
        }
      }
      MapCache.prototype.clear = mapCacheClear;
      MapCache.prototype["delete"] = mapCacheDelete;
      MapCache.prototype.get = mapCacheGet;
      MapCache.prototype.has = mapCacheHas;
      MapCache.prototype.set = mapCacheSet;
      var FUNC_ERROR_TEXT$1 = "Expected a function";
      function memoize(func, resolver) {
        if (typeof func != "function" || resolver != null && typeof resolver != "function") {
          throw new TypeError(FUNC_ERROR_TEXT$1);
        }
        var memoized = function() {
          var args = arguments, key2 = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache;
          if (cache.has(key2)) {
            return cache.get(key2);
          }
          var result = func.apply(this, args);
          memoized.cache = cache.set(key2, result) || cache;
          return result;
        };
        memoized.cache = new (memoize.Cache || MapCache)();
        return memoized;
      }
      memoize.Cache = MapCache;
      var MAX_MEMOIZE_SIZE = 500;
      function memoizeCapped(func) {
        var result = memoize(func, function(key2) {
          if (cache.size === MAX_MEMOIZE_SIZE) {
            cache.clear();
          }
          return key2;
        });
        var cache = result.cache;
        return result;
      }
      var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
      var reEscapeChar = /\\(\\)?/g;
      var stringToPath = memoizeCapped(function(string2) {
        var result = [];
        if (string2.charCodeAt(0) === 46) {
          result.push("");
        }
        string2.replace(rePropName, function(match, number, quote, subString) {
          result.push(quote ? subString.replace(reEscapeChar, "$1") : number || match);
        });
        return result;
      });
      function toString(value) {
        return value == null ? "" : baseToString(value);
      }
      function castPath(value, object) {
        if (isArray(value)) {
          return value;
        }
        return isKey(value, object) ? [value] : stringToPath(toString(value));
      }
      var INFINITY = 1 / 0;
      function toKey(value) {
        if (typeof value == "string" || isSymbol(value)) {
          return value;
        }
        var result = value + "";
        return result == "0" && 1 / value == -INFINITY ? "-0" : result;
      }
      function baseGet(object, path) {
        path = castPath(path, object);
        var index = 0, length = path.length;
        while (object != null && index < length) {
          object = object[toKey(path[index++])];
        }
        return index && index == length ? object : void 0;
      }
      function get(object, path, defaultValue) {
        var result = object == null ? void 0 : baseGet(object, path);
        return result === void 0 ? defaultValue : result;
      }
      function arrayPush(array, values) {
        var index = -1, length = values.length, offset = array.length;
        while (++index < length) {
          array[offset + index] = values[index];
        }
        return array;
      }
      var spreadableSymbol = Symbol$1 ? Symbol$1.isConcatSpreadable : void 0;
      function isFlattenable(value) {
        return isArray(value) || isArguments(value) || !!(spreadableSymbol && value && value[spreadableSymbol]);
      }
      function baseFlatten(array, depth, predicate, isStrict, result) {
        var index = -1, length = array.length;
        predicate || (predicate = isFlattenable);
        result || (result = []);
        while (++index < length) {
          var value = array[index];
          if (depth > 0 && predicate(value)) {
            if (depth > 1) {
              baseFlatten(value, depth - 1, predicate, isStrict, result);
            } else {
              arrayPush(result, value);
            }
          } else if (!isStrict) {
            result[result.length] = value;
          }
        }
        return result;
      }
      function flatten(array) {
        var length = array == null ? 0 : array.length;
        return length ? baseFlatten(array, 1) : [];
      }
      function flatRest(func) {
        return setToString(overRest(func, void 0, flatten), func + "");
      }
      var getPrototype = overArg(Object.getPrototypeOf, Object);
      const getPrototype$1 = getPrototype;
      var objectTag$3 = "[object Object]";
      var funcProto = Function.prototype, objectProto$4 = Object.prototype;
      var funcToString = funcProto.toString;
      var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
      var objectCtorString = funcToString.call(Object);
      function isPlainObject$1(value) {
        if (!isObjectLike(value) || baseGetTag(value) != objectTag$3) {
          return false;
        }
        var proto = getPrototype$1(value);
        if (proto === null) {
          return true;
        }
        var Ctor = hasOwnProperty$3.call(proto, "constructor") && proto.constructor;
        return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
      }
      function castArray() {
        if (!arguments.length) {
          return [];
        }
        var value = arguments[0];
        return isArray(value) ? value : [value];
      }
      function stackClear() {
        this.__data__ = new ListCache();
        this.size = 0;
      }
      function stackDelete(key2) {
        var data = this.__data__, result = data["delete"](key2);
        this.size = data.size;
        return result;
      }
      function stackGet(key2) {
        return this.__data__.get(key2);
      }
      function stackHas(key2) {
        return this.__data__.has(key2);
      }
      var LARGE_ARRAY_SIZE = 200;
      function stackSet(key2, value) {
        var data = this.__data__;
        if (data instanceof ListCache) {
          var pairs = data.__data__;
          if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
            pairs.push([key2, value]);
            this.size = ++data.size;
            return this;
          }
          data = this.__data__ = new MapCache(pairs);
        }
        data.set(key2, value);
        this.size = data.size;
        return this;
      }
      function Stack(entries) {
        var data = this.__data__ = new ListCache(entries);
        this.size = data.size;
      }
      Stack.prototype.clear = stackClear;
      Stack.prototype["delete"] = stackDelete;
      Stack.prototype.get = stackGet;
      Stack.prototype.has = stackHas;
      Stack.prototype.set = stackSet;
      function baseAssign(object, source) {
        return object && copyObject(source, keys(source), object);
      }
      function baseAssignIn(object, source) {
        return object && copyObject(source, keysIn(source), object);
      }
      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
      var moduleExports = freeModule && freeModule.exports === freeExports;
      var Buffer2 = moduleExports ? root.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
      function cloneBuffer(buffer, isDeep) {
        if (isDeep) {
          return buffer.slice();
        }
        var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
        buffer.copy(result);
        return result;
      }
      function arrayFilter(array, predicate) {
        var index = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];
        while (++index < length) {
          var value = array[index];
          if (predicate(value, index, array)) {
            result[resIndex++] = value;
          }
        }
        return result;
      }
      function stubArray() {
        return [];
      }
      var objectProto$3 = Object.prototype;
      var propertyIsEnumerable = objectProto$3.propertyIsEnumerable;
      var nativeGetSymbols$1 = Object.getOwnPropertySymbols;
      var getSymbols = !nativeGetSymbols$1 ? stubArray : function(object) {
        if (object == null) {
          return [];
        }
        object = Object(object);
        return arrayFilter(nativeGetSymbols$1(object), function(symbol) {
          return propertyIsEnumerable.call(object, symbol);
        });
      };
      function copySymbols(source, object) {
        return copyObject(source, getSymbols(source), object);
      }
      var nativeGetSymbols = Object.getOwnPropertySymbols;
      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
        var result = [];
        while (object) {
          arrayPush(result, getSymbols(object));
          object = getPrototype$1(object);
        }
        return result;
      };
      function copySymbolsIn(source, object) {
        return copyObject(source, getSymbolsIn(source), object);
      }
      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
        var result = keysFunc(object);
        return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
      }
      function getAllKeys(object) {
        return baseGetAllKeys(object, keys, getSymbols);
      }
      function getAllKeysIn(object) {
        return baseGetAllKeys(object, keysIn, getSymbolsIn);
      }
      var DataView = getNative(root, "DataView");
      var Promise$1 = getNative(root, "Promise");
      var Set$1 = getNative(root, "Set");
      var mapTag$4 = "[object Map]", objectTag$2 = "[object Object]", promiseTag = "[object Promise]", setTag$4 = "[object Set]", weakMapTag$1 = "[object WeakMap]";
      var dataViewTag$3 = "[object DataView]";
      var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map$1), promiseCtorString = toSource(Promise$1), setCtorString = toSource(Set$1), weakMapCtorString = toSource(WeakMap);
      var getTag = baseGetTag;
      if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag$3 || Map$1 && getTag(new Map$1()) != mapTag$4 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$4 || WeakMap && getTag(new WeakMap()) != weakMapTag$1) {
        getTag = function(value) {
          var result = baseGetTag(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
          if (ctorString) {
            switch (ctorString) {
              case dataViewCtorString:
                return dataViewTag$3;
              case mapCtorString:
                return mapTag$4;
              case promiseCtorString:
                return promiseTag;
              case setCtorString:
                return setTag$4;
              case weakMapCtorString:
                return weakMapTag$1;
            }
          }
          return result;
        };
      }
      const getTag$1 = getTag;
      var objectProto$2 = Object.prototype;
      var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
      function initCloneArray(array) {
        var length = array.length, result = new array.constructor(length);
        if (length && typeof array[0] == "string" && hasOwnProperty$2.call(array, "index")) {
          result.index = array.index;
          result.input = array.input;
        }
        return result;
      }
      var Uint8Array$1 = root.Uint8Array;
      function cloneArrayBuffer(arrayBuffer) {
        var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
        new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer));
        return result;
      }
      function cloneDataView(dataView, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
      }
      var reFlags = /\w*$/;
      function cloneRegExp(regexp) {
        var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
        result.lastIndex = regexp.lastIndex;
        return result;
      }
      var symbolProto$1 = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf$1 = symbolProto$1 ? symbolProto$1.valueOf : void 0;
      function cloneSymbol(symbol) {
        return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};
      }
      function cloneTypedArray(typedArray, isDeep) {
        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
      }
      var boolTag$2 = "[object Boolean]", dateTag$2 = "[object Date]", mapTag$3 = "[object Map]", numberTag$2 = "[object Number]", regexpTag$2 = "[object RegExp]", setTag$3 = "[object Set]", stringTag$2 = "[object String]", symbolTag$2 = "[object Symbol]";
      var arrayBufferTag$2 = "[object ArrayBuffer]", dataViewTag$2 = "[object DataView]", float32Tag$1 = "[object Float32Array]", float64Tag$1 = "[object Float64Array]", int8Tag$1 = "[object Int8Array]", int16Tag$1 = "[object Int16Array]", int32Tag$1 = "[object Int32Array]", uint8Tag$1 = "[object Uint8Array]", uint8ClampedTag$1 = "[object Uint8ClampedArray]", uint16Tag$1 = "[object Uint16Array]", uint32Tag$1 = "[object Uint32Array]";
      function initCloneByTag(object, tag, isDeep) {
        var Ctor = object.constructor;
        switch (tag) {
          case arrayBufferTag$2:
            return cloneArrayBuffer(object);
          case boolTag$2:
          case dateTag$2:
            return new Ctor(+object);
          case dataViewTag$2:
            return cloneDataView(object, isDeep);
          case float32Tag$1:
          case float64Tag$1:
          case int8Tag$1:
          case int16Tag$1:
          case int32Tag$1:
          case uint8Tag$1:
          case uint8ClampedTag$1:
          case uint16Tag$1:
          case uint32Tag$1:
            return cloneTypedArray(object, isDeep);
          case mapTag$3:
            return new Ctor();
          case numberTag$2:
          case stringTag$2:
            return new Ctor(object);
          case regexpTag$2:
            return cloneRegExp(object);
          case setTag$3:
            return new Ctor();
          case symbolTag$2:
            return cloneSymbol(object);
        }
      }
      function initCloneObject(object) {
        return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype$1(object)) : {};
      }
      var mapTag$2 = "[object Map]";
      function baseIsMap(value) {
        return isObjectLike(value) && getTag$1(value) == mapTag$2;
      }
      var nodeIsMap = nodeUtil && nodeUtil.isMap;
      var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
      var setTag$2 = "[object Set]";
      function baseIsSet(value) {
        return isObjectLike(value) && getTag$1(value) == setTag$2;
      }
      var nodeIsSet = nodeUtil && nodeUtil.isSet;
      var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
      var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG$1 = 4;
      var argsTag$1 = "[object Arguments]", arrayTag$1 = "[object Array]", boolTag$1 = "[object Boolean]", dateTag$1 = "[object Date]", errorTag$1 = "[object Error]", funcTag = "[object Function]", genTag = "[object GeneratorFunction]", mapTag$1 = "[object Map]", numberTag$1 = "[object Number]", objectTag$1 = "[object Object]", regexpTag$1 = "[object RegExp]", setTag$1 = "[object Set]", stringTag$1 = "[object String]", symbolTag$1 = "[object Symbol]", weakMapTag = "[object WeakMap]";
      var arrayBufferTag$1 = "[object ArrayBuffer]", dataViewTag$1 = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
      var cloneableTags = {};
      cloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$1] = cloneableTags[numberTag$1] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$1] = cloneableTags[stringTag$1] = cloneableTags[symbolTag$1] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
      cloneableTags[errorTag$1] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
      function baseClone(value, bitmask, customizer, key2, object, stack) {
        var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG$1;
        if (customizer) {
          result = object ? customizer(value, key2, object, stack) : customizer(value);
        }
        if (result !== void 0) {
          return result;
        }
        if (!isObject(value)) {
          return value;
        }
        var isArr = isArray(value);
        if (isArr) {
          result = initCloneArray(value);
          if (!isDeep) {
            return copyArray(value, result);
          }
        } else {
          var tag = getTag$1(value), isFunc = tag == funcTag || tag == genTag;
          if (isBuffer(value)) {
            return cloneBuffer(value, isDeep);
          }
          if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) {
            result = isFlat || isFunc ? {} : initCloneObject(value);
            if (!isDeep) {
              return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));
            }
          } else {
            if (!cloneableTags[tag]) {
              return object ? value : {};
            }
            result = initCloneByTag(value, tag, isDeep);
          }
        }
        stack || (stack = new Stack());
        var stacked = stack.get(value);
        if (stacked) {
          return stacked;
        }
        stack.set(value, result);
        if (isSet(value)) {
          value.forEach(function(subValue) {
            result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));
          });
        } else if (isMap(value)) {
          value.forEach(function(subValue, key3) {
            result.set(key3, baseClone(subValue, bitmask, customizer, key3, value, stack));
          });
        }
        var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
        var props = isArr ? void 0 : keysFunc(value);
        arrayEach(props || value, function(subValue, key3) {
          if (props) {
            key3 = subValue;
            subValue = value[key3];
          }
          assignValue(result, key3, baseClone(subValue, bitmask, customizer, key3, value, stack));
        });
        return result;
      }
      var CLONE_SYMBOLS_FLAG = 4;
      function clone(value) {
        return baseClone(value, CLONE_SYMBOLS_FLAG);
      }
      var HASH_UNDEFINED = "__lodash_hash_undefined__";
      function setCacheAdd(value) {
        this.__data__.set(value, HASH_UNDEFINED);
        return this;
      }
      function setCacheHas(value) {
        return this.__data__.has(value);
      }
      function SetCache(values) {
        var index = -1, length = values == null ? 0 : values.length;
        this.__data__ = new MapCache();
        while (++index < length) {
          this.add(values[index]);
        }
      }
      SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
      SetCache.prototype.has = setCacheHas;
      function arraySome(array, predicate) {
        var index = -1, length = array == null ? 0 : array.length;
        while (++index < length) {
          if (predicate(array[index], index, array)) {
            return true;
          }
        }
        return false;
      }
      function cacheHas(cache, key2) {
        return cache.has(key2);
      }
      var COMPARE_PARTIAL_FLAG$5 = 1, COMPARE_UNORDERED_FLAG$3 = 2;
      function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG$5, arrLength = array.length, othLength = other.length;
        if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
          return false;
        }
        var arrStacked = stack.get(array);
        var othStacked = stack.get(other);
        if (arrStacked && othStacked) {
          return arrStacked == other && othStacked == array;
        }
        var index = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$3 ? new SetCache() : void 0;
        stack.set(array, other);
        stack.set(other, array);
        while (++index < arrLength) {
          var arrValue = array[index], othValue = other[index];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
          }
          if (compared !== void 0) {
            if (compared) {
              continue;
            }
            result = false;
            break;
          }
          if (seen) {
            if (!arraySome(other, function(othValue2, othIndex) {
              if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {
                return seen.push(othIndex);
              }
            })) {
              result = false;
              break;
            }
          } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
            result = false;
            break;
          }
        }
        stack["delete"](array);
        stack["delete"](other);
        return result;
      }
      function mapToArray(map2) {
        var index = -1, result = Array(map2.size);
        map2.forEach(function(value, key2) {
          result[++index] = [key2, value];
        });
        return result;
      }
      function setToArray(set2) {
        var index = -1, result = Array(set2.size);
        set2.forEach(function(value) {
          result[++index] = value;
        });
        return result;
      }
      var COMPARE_PARTIAL_FLAG$4 = 1, COMPARE_UNORDERED_FLAG$2 = 2;
      var boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", mapTag = "[object Map]", numberTag = "[object Number]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", symbolTag = "[object Symbol]";
      var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]";
      var symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
      function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
        switch (tag) {
          case dataViewTag:
            if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
              return false;
            }
            object = object.buffer;
            other = other.buffer;
          case arrayBufferTag:
            if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {
              return false;
            }
            return true;
          case boolTag:
          case dateTag:
          case numberTag:
            return eq(+object, +other);
          case errorTag:
            return object.name == other.name && object.message == other.message;
          case regexpTag:
          case stringTag:
            return object == other + "";
          case mapTag:
            var convert = mapToArray;
          case setTag:
            var isPartial = bitmask & COMPARE_PARTIAL_FLAG$4;
            convert || (convert = setToArray);
            if (object.size != other.size && !isPartial) {
              return false;
            }
            var stacked = stack.get(object);
            if (stacked) {
              return stacked == other;
            }
            bitmask |= COMPARE_UNORDERED_FLAG$2;
            stack.set(object, other);
            var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
            stack["delete"](object);
            return result;
          case symbolTag:
            if (symbolValueOf) {
              return symbolValueOf.call(object) == symbolValueOf.call(other);
            }
        }
        return false;
      }
      var COMPARE_PARTIAL_FLAG$3 = 1;
      var objectProto$1 = Object.prototype;
      var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
      function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
        var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;
        if (objLength != othLength && !isPartial) {
          return false;
        }
        var index = objLength;
        while (index--) {
          var key2 = objProps[index];
          if (!(isPartial ? key2 in other : hasOwnProperty$1.call(other, key2))) {
            return false;
          }
        }
        var objStacked = stack.get(object);
        var othStacked = stack.get(other);
        if (objStacked && othStacked) {
          return objStacked == other && othStacked == object;
        }
        var result = true;
        stack.set(object, other);
        stack.set(other, object);
        var skipCtor = isPartial;
        while (++index < objLength) {
          key2 = objProps[index];
          var objValue = object[key2], othValue = other[key2];
          if (customizer) {
            var compared = isPartial ? customizer(othValue, objValue, key2, other, object, stack) : customizer(objValue, othValue, key2, object, other, stack);
          }
          if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {
            result = false;
            break;
          }
          skipCtor || (skipCtor = key2 == "constructor");
        }
        if (result && !skipCtor) {
          var objCtor = object.constructor, othCtor = other.constructor;
          if (objCtor != othCtor && ("constructor" in object && "constructor" in other) && !(typeof objCtor == "function" && objCtor instanceof objCtor && typeof othCtor == "function" && othCtor instanceof othCtor)) {
            result = false;
          }
        }
        stack["delete"](object);
        stack["delete"](other);
        return result;
      }
      var COMPARE_PARTIAL_FLAG$2 = 1;
      var argsTag = "[object Arguments]", arrayTag = "[object Array]", objectTag = "[object Object]";
      var objectProto = Object.prototype;
      var hasOwnProperty = objectProto.hasOwnProperty;
      function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
        var objIsArr = isArray(object), othIsArr = isArray(other), objTag = objIsArr ? arrayTag : getTag$1(object), othTag = othIsArr ? arrayTag : getTag$1(other);
        objTag = objTag == argsTag ? objectTag : objTag;
        othTag = othTag == argsTag ? objectTag : othTag;
        var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;
        if (isSameTag && isBuffer(object)) {
          if (!isBuffer(other)) {
            return false;
          }
          objIsArr = true;
          objIsObj = false;
        }
        if (isSameTag && !objIsObj) {
          stack || (stack = new Stack());
          return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
        }
        if (!(bitmask & COMPARE_PARTIAL_FLAG$2)) {
          var objIsWrapped = objIsObj && hasOwnProperty.call(object, "__wrapped__"), othIsWrapped = othIsObj && hasOwnProperty.call(other, "__wrapped__");
          if (objIsWrapped || othIsWrapped) {
            var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;
            stack || (stack = new Stack());
            return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
          }
        }
        if (!isSameTag) {
          return false;
        }
        stack || (stack = new Stack());
        return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
      }
      function baseIsEqual(value, other, bitmask, customizer, stack) {
        if (value === other) {
          return true;
        }
        if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {
          return value !== value && other !== other;
        }
        return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
      }
      var COMPARE_PARTIAL_FLAG$1 = 1, COMPARE_UNORDERED_FLAG$1 = 2;
      function baseIsMatch(object, source, matchData, customizer) {
        var index = matchData.length, length = index, noCustomizer = !customizer;
        if (object == null) {
          return !length;
        }
        object = Object(object);
        while (index--) {
          var data = matchData[index];
          if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
            return false;
          }
        }
        while (++index < length) {
          data = matchData[index];
          var key2 = data[0], objValue = object[key2], srcValue = data[1];
          if (noCustomizer && data[2]) {
            if (objValue === void 0 && !(key2 in object)) {
              return false;
            }
          } else {
            var stack = new Stack();
            if (customizer) {
              var result = customizer(objValue, srcValue, key2, object, source, stack);
            }
            if (!(result === void 0 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG$1 | COMPARE_UNORDERED_FLAG$1, customizer, stack) : result)) {
              return false;
            }
          }
        }
        return true;
      }
      function isStrictComparable(value) {
        return value === value && !isObject(value);
      }
      function getMatchData(object) {
        var result = keys(object), length = result.length;
        while (length--) {
          var key2 = result[length], value = object[key2];
          result[length] = [key2, value, isStrictComparable(value)];
        }
        return result;
      }
      function matchesStrictComparable(key2, srcValue) {
        return function(object) {
          if (object == null) {
            return false;
          }
          return object[key2] === srcValue && (srcValue !== void 0 || key2 in Object(object));
        };
      }
      function baseMatches(source) {
        var matchData = getMatchData(source);
        if (matchData.length == 1 && matchData[0][2]) {
          return matchesStrictComparable(matchData[0][0], matchData[0][1]);
        }
        return function(object) {
          return object === source || baseIsMatch(object, source, matchData);
        };
      }
      function baseHasIn(object, key2) {
        return object != null && key2 in Object(object);
      }
      function hasPath(object, path, hasFunc) {
        path = castPath(path, object);
        var index = -1, length = path.length, result = false;
        while (++index < length) {
          var key2 = toKey(path[index]);
          if (!(result = object != null && hasFunc(object, key2))) {
            break;
          }
          object = object[key2];
        }
        if (result || ++index != length) {
          return result;
        }
        length = object == null ? 0 : object.length;
        return !!length && isLength(length) && isIndex(key2, length) && (isArray(object) || isArguments(object));
      }
      function hasIn(object, path) {
        return object != null && hasPath(object, path, baseHasIn);
      }
      var COMPARE_PARTIAL_FLAG = 1, COMPARE_UNORDERED_FLAG = 2;
      function baseMatchesProperty(path, srcValue) {
        if (isKey(path) && isStrictComparable(srcValue)) {
          return matchesStrictComparable(toKey(path), srcValue);
        }
        return function(object) {
          var objValue = get(object, path);
          return objValue === void 0 && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
        };
      }
      function baseProperty(key2) {
        return function(object) {
          return object == null ? void 0 : object[key2];
        };
      }
      function basePropertyDeep(path) {
        return function(object) {
          return baseGet(object, path);
        };
      }
      function property(path) {
        return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
      }
      function baseIteratee(value) {
        if (typeof value == "function") {
          return value;
        }
        if (value == null) {
          return identity;
        }
        if (typeof value == "object") {
          return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
        }
        return property(value);
      }
      function createBaseFor(fromRight) {
        return function(object, iteratee, keysFunc) {
          var index = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
          while (length--) {
            var key2 = props[fromRight ? length : ++index];
            if (iteratee(iterable[key2], key2, iterable) === false) {
              break;
            }
          }
          return object;
        };
      }
      var baseFor = createBaseFor();
      function baseForOwn(object, iteratee) {
        return object && baseFor(object, iteratee, keys);
      }
      function createBaseEach(eachFunc, fromRight) {
        return function(collection, iteratee) {
          if (collection == null) {
            return collection;
          }
          if (!isArrayLike(collection)) {
            return eachFunc(collection, iteratee);
          }
          var length = collection.length, index = fromRight ? length : -1, iterable = Object(collection);
          while (fromRight ? index-- : ++index < length) {
            if (iteratee(iterable[index], index, iterable) === false) {
              break;
            }
          }
          return collection;
        };
      }
      var baseEach = createBaseEach(baseForOwn);
      var now = function() {
        return root.Date.now();
      };
      var FUNC_ERROR_TEXT = "Expected a function";
      var nativeMax$1 = Math.max, nativeMin$1 = Math.min;
      function debounce(func, wait, options) {
        var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
        if (typeof func != "function") {
          throw new TypeError(FUNC_ERROR_TEXT);
        }
        wait = toNumber(wait) || 0;
        if (isObject(options)) {
          leading = !!options.leading;
          maxing = "maxWait" in options;
          maxWait = maxing ? nativeMax$1(toNumber(options.maxWait) || 0, wait) : maxWait;
          trailing = "trailing" in options ? !!options.trailing : trailing;
        }
        function invokeFunc(time) {
          var args = lastArgs, thisArg = lastThis;
          lastArgs = lastThis = void 0;
          lastInvokeTime = time;
          result = func.apply(thisArg, args);
          return result;
        }
        function leadingEdge(time) {
          lastInvokeTime = time;
          timerId = setTimeout(timerExpired, wait);
          return leading ? invokeFunc(time) : result;
        }
        function remainingWait(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
          return maxing ? nativeMin$1(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
        }
        function shouldInvoke(time) {
          var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
          return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
        }
        function timerExpired() {
          var time = now();
          if (shouldInvoke(time)) {
            return trailingEdge(time);
          }
          timerId = setTimeout(timerExpired, remainingWait(time));
        }
        function trailingEdge(time) {
          timerId = void 0;
          if (trailing && lastArgs) {
            return invokeFunc(time);
          }
          lastArgs = lastThis = void 0;
          return result;
        }
        function cancel() {
          if (timerId !== void 0) {
            clearTimeout(timerId);
          }
          lastInvokeTime = 0;
          lastArgs = lastCallTime = lastThis = timerId = void 0;
        }
        function flush() {
          return timerId === void 0 ? result : trailingEdge(now());
        }
        function debounced() {
          var time = now(), isInvoking = shouldInvoke(time);
          lastArgs = arguments;
          lastThis = this;
          lastCallTime = time;
          if (isInvoking) {
            if (timerId === void 0) {
              return leadingEdge(lastCallTime);
            }
            if (maxing) {
              clearTimeout(timerId);
              timerId = setTimeout(timerExpired, wait);
              return invokeFunc(lastCallTime);
            }
          }
          if (timerId === void 0) {
            timerId = setTimeout(timerExpired, wait);
          }
          return result;
        }
        debounced.cancel = cancel;
        debounced.flush = flush;
        return debounced;
      }
      function assignMergeValue(object, key2, value) {
        if (value !== void 0 && !eq(object[key2], value) || value === void 0 && !(key2 in object)) {
          baseAssignValue(object, key2, value);
        }
      }
      function isArrayLikeObject(value) {
        return isObjectLike(value) && isArrayLike(value);
      }
      function safeGet(object, key2) {
        if (key2 === "constructor" && typeof object[key2] === "function") {
          return;
        }
        if (key2 == "__proto__") {
          return;
        }
        return object[key2];
      }
      function toPlainObject(value) {
        return copyObject(value, keysIn(value));
      }
      function baseMergeDeep(object, source, key2, srcIndex, mergeFunc, customizer, stack) {
        var objValue = safeGet(object, key2), srcValue = safeGet(source, key2), stacked = stack.get(srcValue);
        if (stacked) {
          assignMergeValue(object, key2, stacked);
          return;
        }
        var newValue = customizer ? customizer(objValue, srcValue, key2 + "", object, source, stack) : void 0;
        var isCommon = newValue === void 0;
        if (isCommon) {
          var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
          newValue = srcValue;
          if (isArr || isBuff || isTyped) {
            if (isArray(objValue)) {
              newValue = objValue;
            } else if (isArrayLikeObject(objValue)) {
              newValue = copyArray(objValue);
            } else if (isBuff) {
              isCommon = false;
              newValue = cloneBuffer(srcValue, true);
            } else if (isTyped) {
              isCommon = false;
              newValue = cloneTypedArray(srcValue, true);
            } else {
              newValue = [];
            }
          } else if (isPlainObject$1(srcValue) || isArguments(srcValue)) {
            newValue = objValue;
            if (isArguments(objValue)) {
              newValue = toPlainObject(objValue);
            } else if (!isObject(objValue) || isFunction(objValue)) {
              newValue = initCloneObject(srcValue);
            }
          } else {
            isCommon = false;
          }
        }
        if (isCommon) {
          stack.set(srcValue, newValue);
          mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
          stack["delete"](srcValue);
        }
        assignMergeValue(object, key2, newValue);
      }
      function baseMerge(object, source, srcIndex, customizer, stack) {
        if (object === source) {
          return;
        }
        baseFor(source, function(srcValue, key2) {
          stack || (stack = new Stack());
          if (isObject(srcValue)) {
            baseMergeDeep(object, source, key2, srcIndex, baseMerge, customizer, stack);
          } else {
            var newValue = customizer ? customizer(safeGet(object, key2), srcValue, key2 + "", object, source, stack) : void 0;
            if (newValue === void 0) {
              newValue = srcValue;
            }
            assignMergeValue(object, key2, newValue);
          }
        }, keysIn);
      }
      var nativeMax = Math.max, nativeMin = Math.min;
      function findLastIndex(array, predicate, fromIndex) {
        var length = array == null ? 0 : array.length;
        if (!length) {
          return -1;
        }
        var index = length - 1;
        if (fromIndex !== void 0) {
          index = toInteger(fromIndex);
          index = fromIndex < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);
        }
        return baseFindIndex(array, baseIteratee(predicate), index, true);
      }
      function baseMap(collection, iteratee) {
        var index = -1, result = isArrayLike(collection) ? Array(collection.length) : [];
        baseEach(collection, function(value, key2, collection2) {
          result[++index] = iteratee(value, key2, collection2);
        });
        return result;
      }
      function map(collection, iteratee) {
        var func = isArray(collection) ? arrayMap : baseMap;
        return func(collection, baseIteratee(iteratee));
      }
      function flatMap(collection, iteratee) {
        return baseFlatten(map(collection, iteratee), 1);
      }
      function fromPairs(pairs) {
        var index = -1, length = pairs == null ? 0 : pairs.length, result = {};
        while (++index < length) {
          var pair = pairs[index];
          result[pair[0]] = pair[1];
        }
        return result;
      }
      function isEqual(value, other) {
        return baseIsEqual(value, other);
      }
      function isNil(value) {
        return value == null;
      }
      function isUndefined$1(value) {
        return value === void 0;
      }
      var merge = createAssigner(function(object, source, srcIndex) {
        baseMerge(object, source, srcIndex);
      });
      const merge$1 = merge;
      function baseSet(object, path, value, customizer) {
        if (!isObject(object)) {
          return object;
        }
        path = castPath(path, object);
        var index = -1, length = path.length, lastIndex = length - 1, nested = object;
        while (nested != null && ++index < length) {
          var key2 = toKey(path[index]), newValue = value;
          if (key2 === "__proto__" || key2 === "constructor" || key2 === "prototype") {
            return object;
          }
          if (index != lastIndex) {
            var objValue = nested[key2];
            newValue = customizer ? customizer(objValue, key2, nested) : void 0;
            if (newValue === void 0) {
              newValue = isObject(objValue) ? objValue : isIndex(path[index + 1]) ? [] : {};
            }
          }
          assignValue(nested, key2, newValue);
          nested = nested[key2];
        }
        return object;
      }
      function basePickBy(object, paths, predicate) {
        var index = -1, length = paths.length, result = {};
        while (++index < length) {
          var path = paths[index], value = baseGet(object, path);
          if (predicate(value, path)) {
            baseSet(result, castPath(path, object), value);
          }
        }
        return result;
      }
      function basePick(object, paths) {
        return basePickBy(object, paths, function(value, path) {
          return hasIn(object, path);
        });
      }
      var pick = flatRest(function(object, paths) {
        return object == null ? {} : basePick(object, paths);
      });
      function set(object, path, value) {
        return object == null ? object : baseSet(object, path, value);
      }
      const isUndefined = (val) => val === void 0;
      const isBoolean = (val) => typeof val === "boolean";
      const isNumber = (val) => typeof val === "number";
      const isElement = (e) => {
        if (typeof Element === "undefined")
          return false;
        return e instanceof Element;
      };
      const isPropAbsent = (prop) => {
        return isNil(prop);
      };
      const isStringNumber = (val) => {
        if (!isString(val)) {
          return false;
        }
        return !Number.isNaN(Number(val));
      };
      const rAF = (fn2) => isClient ? window.requestAnimationFrame(fn2) : setTimeout(fn2, 16);
      const escapeStringRegexp = (string2 = "") => string2.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
      const keysOf = (arr) => Object.keys(arr);
      const getProp = (obj, path, defaultValue) => {
        return {
          get value() {
            return get(obj, path, defaultValue);
          },
          set value(val) {
            set(obj, path, val);
          }
        };
      };
      class ElementPlusError extends Error {
        constructor(m2) {
          super(m2);
          this.name = "ElementPlusError";
        }
      }
      function throwError(scope, m2) {
        throw new ElementPlusError(`[${scope}] ${m2}`);
      }
      function debugWarn(scope, message) {
      }
      const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim());
      const hasClass = (el, cls) => {
        if (!el || !cls)
          return false;
        if (cls.includes(" "))
          throw new Error("className should not contain space.");
        return el.classList.contains(cls);
      };
      const addClass = (el, cls) => {
        if (!el || !cls.trim())
          return;
        el.classList.add(...classNameToArray(cls));
      };
      const removeClass = (el, cls) => {
        if (!el || !cls.trim())
          return;
        el.classList.remove(...classNameToArray(cls));
      };
      const getStyle = (element, styleName) => {
        var _a2;
        if (!isClient || !element || !styleName)
          return "";
        let key2 = camelize(styleName);
        if (key2 === "float")
          key2 = "cssFloat";
        try {
          const style = element.style[key2];
          if (style)
            return style;
          const computed2 = (_a2 = document.defaultView) == null ? void 0 : _a2.getComputedStyle(element, "");
          return computed2 ? computed2[key2] : "";
        } catch (e) {
          return element.style[key2];
        }
      };
      function addUnit(value, defaultUnit = "px") {
        if (!value)
          return "";
        if (isNumber(value) || isStringNumber(value)) {
          return `${value}${defaultUnit}`;
        } else if (isString(value)) {
          return value;
        }
      }
      let scrollBarWidth;
      const getScrollBarWidth = (namespace) => {
        var _a2;
        if (!isClient)
          return 0;
        if (scrollBarWidth !== void 0)
          return scrollBarWidth;
        const outer = document.createElement("div");
        outer.className = `${namespace}-scrollbar__wrap`;
        outer.style.visibility = "hidden";
        outer.style.width = "100px";
        outer.style.position = "absolute";
        outer.style.top = "-9999px";
        document.body.appendChild(outer);
        const widthNoScroll = outer.offsetWidth;
        outer.style.overflow = "scroll";
        const inner = document.createElement("div");
        inner.style.width = "100%";
        outer.appendChild(inner);
        const widthWithScroll = inner.offsetWidth;
        (_a2 = outer.parentNode) == null ? void 0 : _a2.removeChild(outer);
        scrollBarWidth = widthNoScroll - widthWithScroll;
        return scrollBarWidth;
      };
      function scrollIntoView(container, selected) {
        if (!isClient)
          return;
        if (!selected) {
          container.scrollTop = 0;
          return;
        }
        const offsetParents = [];
        let pointer = selected.offsetParent;
        while (pointer !== null && container !== pointer && container.contains(pointer)) {
          offsetParents.push(pointer);
          pointer = pointer.offsetParent;
        }
        const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
        const bottom = top + selected.offsetHeight;
        const viewRectTop = container.scrollTop;
        const viewRectBottom = viewRectTop + container.clientHeight;
        if (top < viewRectTop) {
          container.scrollTop = top;
        } else if (bottom > viewRectBottom) {
          container.scrollTop = bottom - container.clientHeight;
        }
      }
      /*! Element Plus Icons Vue v2.3.1 */
      var arrow_down_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "ArrowDown",
        __name: "arrow-down",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"
            })
          ]));
        }
      });
      var arrow_down_default = arrow_down_vue_vue_type_script_setup_true_lang_default;
      var arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "ArrowRight",
        __name: "arrow-right",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
            })
          ]));
        }
      });
      var arrow_right_default = arrow_right_vue_vue_type_script_setup_true_lang_default;
      var arrow_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "ArrowUp",
        __name: "arrow-up",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"
            })
          ]));
        }
      });
      var arrow_up_default = arrow_up_vue_vue_type_script_setup_true_lang_default;
      var circle_check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "CircleCheck",
        __name: "circle-check",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
            }),
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z"
            })
          ]));
        }
      });
      var circle_check_default = circle_check_vue_vue_type_script_setup_true_lang_default;
      var circle_close_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "CircleCloseFilled",
        __name: "circle-close-filled",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"
            })
          ]));
        }
      });
      var circle_close_filled_default = circle_close_filled_vue_vue_type_script_setup_true_lang_default;
      var circle_close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "CircleClose",
        __name: "circle-close",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z"
            }),
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896"
            })
          ]));
        }
      });
      var circle_close_default = circle_close_vue_vue_type_script_setup_true_lang_default;
      var close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "Close",
        __name: "close",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"
            })
          ]));
        }
      });
      var close_default = close_vue_vue_type_script_setup_true_lang_default;
      var hide_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "Hide",
        __name: "hide",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z"
            }),
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z"
            })
          ]));
        }
      });
      var hide_default = hide_vue_vue_type_script_setup_true_lang_default;
      var info_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "InfoFilled",
        __name: "info-filled",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"
            })
          ]));
        }
      });
      var info_filled_default = info_filled_vue_vue_type_script_setup_true_lang_default;
      var loading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "Loading",
        __name: "loading",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"
            })
          ]));
        }
      });
      var loading_default = loading_vue_vue_type_script_setup_true_lang_default;
      var minus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "Minus",
        __name: "minus",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"
            })
          ]));
        }
      });
      var minus_default = minus_vue_vue_type_script_setup_true_lang_default;
      var plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "Plus",
        __name: "plus",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
            })
          ]));
        }
      });
      var plus_default = plus_vue_vue_type_script_setup_true_lang_default;
      var question_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "QuestionFilled",
        __name: "question-filled",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"
            })
          ]));
        }
      });
      var question_filled_default = question_filled_vue_vue_type_script_setup_true_lang_default;
      var success_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "SuccessFilled",
        __name: "success-filled",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"
            })
          ]));
        }
      });
      var success_filled_default = success_filled_vue_vue_type_script_setup_true_lang_default;
      var view_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "View",
        __name: "view",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160"
            })
          ]));
        }
      });
      var view_default = view_vue_vue_type_script_setup_true_lang_default;
      var warning_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
        name: "WarningFilled",
        __name: "warning-filled",
        setup(__props) {
          return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
            xmlns: "http://www.w3.org/2000/svg",
            viewBox: "0 0 1024 1024"
          }, [
            vue.createElementVNode("path", {
              fill: "currentColor",
              d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"
            })
          ]));
        }
      });
      var warning_filled_default = warning_filled_vue_vue_type_script_setup_true_lang_default;
      const epPropKey = "__epPropKey";
      const definePropType = (val) => val;
      const isEpProp = (val) => isObject$1(val) && !!val[epPropKey];
      const buildProp = (prop, key2) => {
        if (!isObject$1(prop) || isEpProp(prop))
          return prop;
        const { values, required, default: defaultValue, type, validator } = prop;
        const _validator = values || validator ? (val) => {
          let valid = false;
          let allowedValues = [];
          if (values) {
            allowedValues = Array.from(values);
            if (hasOwn(prop, "default")) {
              allowedValues.push(defaultValue);
            }
            valid || (valid = allowedValues.includes(val));
          }
          if (validator)
            valid || (valid = validator(val));
          if (!valid && allowedValues.length > 0) {
            const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", ");
            vue.warn(`Invalid prop: validation failed${key2 ? ` for prop "${key2}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`);
          }
          return valid;
        } : void 0;
        const epProp = {
          type,
          required: !!required,
          validator: _validator,
          [epPropKey]: true
        };
        if (hasOwn(prop, "default"))
          epProp.default = defaultValue;
        return epProp;
      };
      const buildProps = (props) => fromPairs(Object.entries(props).map(([key2, option]) => [
        key2,
        buildProp(option, key2)
      ]));
      const iconPropType = definePropType([
        String,
        Object,
        Function
      ]);
      const CloseComponents = {
        Close: close_default
      };
      const TypeComponents = {
        Close: close_default,
        SuccessFilled: success_filled_default,
        InfoFilled: info_filled_default,
        WarningFilled: warning_filled_default,
        CircleCloseFilled: circle_close_filled_default
      };
      const TypeComponentsMap = {
        success: success_filled_default,
        warning: warning_filled_default,
        error: circle_close_filled_default,
        info: info_filled_default
      };
      const ValidateComponentsMap = {
        validating: loading_default,
        success: circle_check_default,
        error: circle_close_default
      };
      const withInstall = (main, extra) => {
        main.install = (app) => {
          for (const comp of [main, ...Object.values(extra != null ? extra : {})]) {
            app.component(comp.name, comp);
          }
        };
        if (extra) {
          for (const [key2, comp] of Object.entries(extra)) {
            main[key2] = comp;
          }
        }
        return main;
      };
      const withNoopInstall = (component) => {
        component.install = NOOP;
        return component;
      };
      const composeRefs = (...refs) => {
        return (el) => {
          refs.forEach((ref2) => {
            if (isFunction$1(ref2)) {
              ref2(el);
            } else {
              ref2.value = el;
            }
          });
        };
      };
      const EVENT_CODE = {
        tab: "Tab",
        enter: "Enter",
        space: "Space",
        left: "ArrowLeft",
        up: "ArrowUp",
        right: "ArrowRight",
        down: "ArrowDown",
        esc: "Escape",
        delete: "Delete",
        backspace: "Backspace",
        numpadEnter: "NumpadEnter",
        pageUp: "PageUp",
        pageDown: "PageDown",
        home: "Home",
        end: "End"
      };
      const UPDATE_MODEL_EVENT = "update:modelValue";
      const CHANGE_EVENT = "change";
      const INPUT_EVENT = "input";
      const componentSizes = ["", "default", "small", "large"];
      const isValidComponentSize = (val) => ["", ...componentSizes].includes(val);
      var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => {
        PatchFlags2[PatchFlags2["TEXT"] = 1] = "TEXT";
        PatchFlags2[PatchFlags2["CLASS"] = 2] = "CLASS";
        PatchFlags2[PatchFlags2["STYLE"] = 4] = "STYLE";
        PatchFlags2[PatchFlags2["PROPS"] = 8] = "PROPS";
        PatchFlags2[PatchFlags2["FULL_PROPS"] = 16] = "FULL_PROPS";
        PatchFlags2[PatchFlags2["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS";
        PatchFlags2[PatchFlags2["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT";
        PatchFlags2[PatchFlags2["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT";
        PatchFlags2[PatchFlags2["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT";
        PatchFlags2[PatchFlags2["NEED_PATCH"] = 512] = "NEED_PATCH";
        PatchFlags2[PatchFlags2["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS";
        PatchFlags2[PatchFlags2["HOISTED"] = -1] = "HOISTED";
        PatchFlags2[PatchFlags2["BAIL"] = -2] = "BAIL";
        return PatchFlags2;
      })(PatchFlags || {});
      const isKorean = (text) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(text);
      const mutable = (val) => val;
      const DEFAULT_EXCLUDE_KEYS = ["class", "style"];
      const LISTENER_PREFIX = /^on[A-Z]/;
      const useAttrs = (params = {}) => {
        const { excludeListeners = false, excludeKeys } = params;
        const allExcludeKeys = vue.computed(() => {
          return ((excludeKeys == null ? void 0 : excludeKeys.value) || []).concat(DEFAULT_EXCLUDE_KEYS);
        });
        const instance = vue.getCurrentInstance();
        if (!instance) {
          return vue.computed(() => ({}));
        }
        return vue.computed(() => {
          var _a2;
          return fromPairs(Object.entries((_a2 = instance.proxy) == null ? void 0 : _a2.$attrs).filter(([key2]) => !allExcludeKeys.value.includes(key2) && !(excludeListeners && LISTENER_PREFIX.test(key2))));
        });
      };
      const useDeprecated = ({ from, replacement, scope, version, ref: ref2, type = "API" }, condition) => {
        vue.watch(() => vue.unref(condition), (val) => {
        }, {
          immediate: true
        });
      };
      const useDraggable = (targetRef, dragRef, draggable, overflow) => {
        let transform = {
          offsetX: 0,
          offsetY: 0
        };
        const onMousedown = (e) => {
          const downX = e.clientX;
          const downY = e.clientY;
          const { offsetX, offsetY } = transform;
          const targetRect = targetRef.value.getBoundingClientRect();
          const targetLeft = targetRect.left;
          const targetTop = targetRect.top;
          const targetWidth = targetRect.width;
          const targetHeight = targetRect.height;
          const clientWidth = document.documentElement.clientWidth;
          const clientHeight = document.documentElement.clientHeight;
          const minLeft = -targetLeft + offsetX;
          const minTop = -targetTop + offsetY;
          const maxLeft = clientWidth - targetLeft - targetWidth + offsetX;
          const maxTop = clientHeight - targetTop - targetHeight + offsetY;
          const onMousemove = (e2) => {
            let moveX = offsetX + e2.clientX - downX;
            let moveY = offsetY + e2.clientY - downY;
            if (!(overflow == null ? void 0 : overflow.value)) {
              moveX = Math.min(Math.max(moveX, minLeft), maxLeft);
              moveY = Math.min(Math.max(moveY, minTop), maxTop);
            }
            transform = {
              offsetX: moveX,
              offsetY: moveY
            };
            if (targetRef.value) {
              targetRef.value.style.transform = `translate(${addUnit(moveX)}, ${addUnit(moveY)})`;
            }
          };
          const onMouseup = () => {
            document.removeEventListener("mousemove", onMousemove);
            document.removeEventListener("mouseup", onMouseup);
          };
          document.addEventListener("mousemove", onMousemove);
          document.addEventListener("mouseup", onMouseup);
        };
        const onDraggable = () => {
          if (dragRef.value && targetRef.value) {
            dragRef.value.addEventListener("mousedown", onMousedown);
          }
        };
        const offDraggable = () => {
          if (dragRef.value && targetRef.value) {
            dragRef.value.removeEventListener("mousedown", onMousedown);
          }
        };
        vue.onMounted(() => {
          vue.watchEffect(() => {
            if (draggable.value) {
              onDraggable();
            } else {
              offDraggable();
            }
          });
        });
        vue.onBeforeUnmount(() => {
          offDraggable();
        });
      };
      var English = {
        name: "en",
        el: {
          breadcrumb: {
            label: "Breadcrumb"
          },
          colorpicker: {
            confirm: "OK",
            clear: "Clear",
            defaultLabel: "color picker",
            description: "current color is {color}. press enter to select a new color."
          },
          datepicker: {
            now: "Now",
            today: "Today",
            cancel: "Cancel",
            clear: "Clear",
            confirm: "OK",
            dateTablePrompt: "Use the arrow keys and enter to select the day of the month",
            monthTablePrompt: "Use the arrow keys and enter to select the month",
            yearTablePrompt: "Use the arrow keys and enter to select the year",
            selectedDate: "Selected date",
            selectDate: "Select date",
            selectTime: "Select time",
            startDate: "Start Date",
            startTime: "Start Time",
            endDate: "End Date",
            endTime: "End Time",
            prevYear: "Previous Year",
            nextYear: "Next Year",
            prevMonth: "Previous Month",
            nextMonth: "Next Month",
            year: "",
            month1: "January",
            month2: "February",
            month3: "March",
            month4: "April",
            month5: "May",
            month6: "June",
            month7: "July",
            month8: "August",
            month9: "September",
            month10: "October",
            month11: "November",
            month12: "December",
            week: "week",
            weeks: {
              sun: "Sun",
              mon: "Mon",
              tue: "Tue",
              wed: "Wed",
              thu: "Thu",
              fri: "Fri",
              sat: "Sat"
            },
            weeksFull: {
              sun: "Sunday",
              mon: "Monday",
              tue: "Tuesday",
              wed: "Wednesday",
              thu: "Thursday",
              fri: "Friday",
              sat: "Saturday"
            },
            months: {
              jan: "Jan",
              feb: "Feb",
              mar: "Mar",
              apr: "Apr",
              may: "May",
              jun: "Jun",
              jul: "Jul",
              aug: "Aug",
              sep: "Sep",
              oct: "Oct",
              nov: "Nov",
              dec: "Dec"
            }
          },
          inputNumber: {
            decrease: "decrease number",
            increase: "increase number"
          },
          select: {
            loading: "Loading",
            noMatch: "No matching data",
            noData: "No data",
            placeholder: "Select"
          },
          dropdown: {
            toggleDropdown: "Toggle Dropdown"
          },
          cascader: {
            noMatch: "No matching data",
            loading: "Loading",
            placeholder: "Select",
            noData: "No data"
          },
          pagination: {
            goto: "Go to",
            pagesize: "/page",
            total: "Total {total}",
            pageClassifier: "",
            page: "Page",
            prev: "Go to previous page",
            next: "Go to next page",
            currentPage: "page {pager}",
            prevPages: "Previous {pager} pages",
            nextPages: "Next {pager} pages",
            deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details"
          },
          dialog: {
            close: "Close this dialog"
          },
          drawer: {
            close: "Close this dialog"
          },
          messagebox: {
            title: "Message",
            confirm: "OK",
            cancel: "Cancel",
            error: "Illegal input",
            close: "Close this dialog"
          },
          upload: {
            deleteTip: "press delete to remove",
            delete: "Delete",
            preview: "Preview",
            continue: "Continue"
          },
          slider: {
            defaultLabel: "slider between {min} and {max}",
            defaultRangeStartLabel: "pick start value",
            defaultRangeEndLabel: "pick end value"
          },
          table: {
            emptyText: "No Data",
            confirmFilter: "Confirm",
            resetFilter: "Reset",
            clearFilter: "All",
            sumText: "Sum"
          },
          tour: {
            next: "Next",
            previous: "Previous",
            finish: "Finish"
          },
          tree: {
            emptyText: "No Data"
          },
          transfer: {
            noMatch: "No matching data",
            noData: "No data",
            titles: ["List 1", "List 2"],
            filterPlaceholder: "Enter keyword",
            noCheckedFormat: "{total} items",
            hasCheckedFormat: "{checked}/{total} checked"
          },
          image: {
            error: "FAILED"
          },
          pageHeader: {
            title: "Back"
          },
          popconfirm: {
            confirmButtonText: "Yes",
            cancelButtonText: "No"
          },
          carousel: {
            leftArrow: "Carousel arrow left",
            rightArrow: "Carousel arrow right",
            indicator: "Carousel switch to index {index}"
          }
        }
      };
      const buildTranslator = (locale) => (path, option) => translate(path, option, vue.unref(locale));
      const translate = (path, option, locale) => get(locale, path, path).replace(/\{(\w+)\}/g, (_2, key2) => {
        var _a2;
        return `${(_a2 = option == null ? void 0 : option[key2]) != null ? _a2 : `{${key2}}`}`;
      });
      const buildLocaleContext = (locale) => {
        const lang = vue.computed(() => vue.unref(locale).name);
        const localeRef = vue.isRef(locale) ? locale : vue.ref(locale);
        return {
          lang,
          locale: localeRef,
          t: buildTranslator(locale)
        };
      };
      const localeContextKey = Symbol("localeContextKey");
      const useLocale = (localeOverrides) => {
        const locale = localeOverrides || vue.inject(localeContextKey, vue.ref());
        return buildLocaleContext(vue.computed(() => locale.value || English));
      };
      /**
      * @vue/reactivity v3.4.21
      * (c) 2018-present Yuxi (Evan) You and Vue contributors
      * @license MIT
      **/
      let activeEffectScope;
      function recordEffectScope(effect2, scope = activeEffectScope) {
        if (scope && scope.active) {
          scope.effects.push(effect2);
        }
      }
      let activeEffect;
      class ReactiveEffect {
        constructor(fn2, trigger2, scheduler, scope) {
          this.fn = fn2;
          this.trigger = trigger2;
          this.scheduler = scheduler;
          this.active = true;
          this.deps = [];
          this._dirtyLevel = 4;
          this._trackId = 0;
          this._runnings = 0;
          this._shouldSchedule = false;
          this._depsLength = 0;
          recordEffectScope(this, scope);
        }
        get dirty() {
          if (this._dirtyLevel === 2 || this._dirtyLevel === 3) {
            this._dirtyLevel = 1;
            pauseTracking();
            for (let i = 0; i < this._depsLength; i++) {
              const dep = this.deps[i];
              if (dep.computed) {
                triggerComputed(dep.computed);
                if (this._dirtyLevel >= 4) {
                  break;
                }
              }
            }
            if (this._dirtyLevel === 1) {
              this._dirtyLevel = 0;
            }
            resetTracking();
          }
          return this._dirtyLevel >= 4;
        }
        set dirty(v2) {
          this._dirtyLevel = v2 ? 4 : 0;
        }
        run() {
          this._dirtyLevel = 0;
          if (!this.active) {
            return this.fn();
          }
          let lastShouldTrack = shouldTrack;
          let lastEffect = activeEffect;
          try {
            shouldTrack = true;
            activeEffect = this;
            this._runnings++;
            preCleanupEffect(this);
            return this.fn();
          } finally {
            postCleanupEffect(this);
            this._runnings--;
            activeEffect = lastEffect;
            shouldTrack = lastShouldTrack;
          }
        }
        stop() {
          var _a2;
          if (this.active) {
            preCleanupEffect(this);
            postCleanupEffect(this);
            (_a2 = this.onStop) == null ? void 0 : _a2.call(this);
            this.active = false;
          }
        }
      }
      function triggerComputed(computed2) {
        return computed2.value;
      }
      function preCleanupEffect(effect2) {
        effect2._trackId++;
        effect2._depsLength = 0;
      }
      function postCleanupEffect(effect2) {
        if (effect2.deps.length > effect2._depsLength) {
          for (let i = effect2._depsLength; i < effect2.deps.length; i++) {
            cleanupDepEffect(effect2.deps[i], effect2);
          }
          effect2.deps.length = effect2._depsLength;
        }
      }
      function cleanupDepEffect(dep, effect2) {
        const trackId = dep.get(effect2);
        if (trackId !== void 0 && effect2._trackId !== trackId) {
          dep.delete(effect2);
          if (dep.size === 0) {
            dep.cleanup();
          }
        }
      }
      let shouldTrack = true;
      let pauseScheduleStack = 0;
      const trackStack = [];
      function pauseTracking() {
        trackStack.push(shouldTrack);
        shouldTrack = false;
      }
      function resetTracking() {
        const last = trackStack.pop();
        shouldTrack = last === void 0 ? true : last;
      }
      function pauseScheduling() {
        pauseScheduleStack++;
      }
      function resetScheduling() {
        pauseScheduleStack--;
        while (!pauseScheduleStack && queueEffectSchedulers.length) {
          queueEffectSchedulers.shift()();
        }
      }
      function trackEffect(effect2, dep, debuggerEventExtraInfo) {
        if (dep.get(effect2) !== effect2._trackId) {
          dep.set(effect2, effect2._trackId);
          const oldDep = effect2.deps[effect2._depsLength];
          if (oldDep !== dep) {
            if (oldDep) {
              cleanupDepEffect(oldDep, effect2);
            }
            effect2.deps[effect2._depsLength++] = dep;
          } else {
            effect2._depsLength++;
          }
        }
      }
      const queueEffectSchedulers = [];
      function triggerEffects(dep, dirtyLevel, debuggerEventExtraInfo) {
        pauseScheduling();
        for (const effect2 of dep.keys()) {
          let tracking;
          if (effect2._dirtyLevel < dirtyLevel && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {
            effect2._shouldSchedule || (effect2._shouldSchedule = effect2._dirtyLevel === 0);
            effect2._dirtyLevel = dirtyLevel;
          }
          if (effect2._shouldSchedule && (tracking != null ? tracking : tracking = dep.get(effect2) === effect2._trackId)) {
            effect2.trigger();
            if ((!effect2._runnings || effect2.allowRecurse) && effect2._dirtyLevel !== 2) {
              effect2._shouldSchedule = false;
              if (effect2.scheduler) {
                queueEffectSchedulers.push(effect2.scheduler);
              }
            }
          }
        }
        resetScheduling();
      }
      const createDep = (cleanup, computed2) => {
        const dep = /* @__PURE__ */ new Map();
        dep.cleanup = cleanup;
        dep.computed = computed2;
        return dep;
      };
      new Set(
        /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key2) => key2 !== "arguments" && key2 !== "caller").map((key2) => Symbol[key2]).filter(isSymbol$1)
      );
      function toRaw(observed) {
        const raw = observed && observed["__v_raw"];
        return raw ? toRaw(raw) : observed;
      }
      class ComputedRefImpl {
        constructor(getter, _setter, isReadonly2, isSSR) {
          this.getter = getter;
          this._setter = _setter;
          this.dep = void 0;
          this.__v_isRef = true;
          this["__v_isReadonly"] = false;
          this.effect = new ReactiveEffect(
            () => getter(this._value),
            () => triggerRefValue(
              this,
              this.effect._dirtyLevel === 2 ? 2 : 3
            )
          );
          this.effect.computed = this;
          this.effect.active = this._cacheable = !isSSR;
          this["__v_isReadonly"] = isReadonly2;
        }
        get value() {
          const self2 = toRaw(this);
          if ((!self2._cacheable || self2.effect.dirty) && hasChanged(self2._value, self2._value = self2.effect.run())) {
            triggerRefValue(self2, 4);
          }
          trackRefValue(self2);
          if (self2.effect._dirtyLevel >= 2) {
            triggerRefValue(self2, 2);
          }
          return self2._value;
        }
        set value(newValue) {
          this._setter(newValue);
        }
        // #region polyfill _dirty for backward compatibility third party code for Vue <= 3.3.x
        get _dirty() {
          return this.effect.dirty;
        }
        set _dirty(v2) {
          this.effect.dirty = v2;
        }
        // #endregion
      }
      function computed(getterOrOptions, debugOptions, isSSR = false) {
        let getter;
        let setter;
        const onlyGetter = isFunction$1(getterOrOptions);
        if (onlyGetter) {
          getter = getterOrOptions;
          setter = NOOP;
        } else {
          getter = getterOrOptions.get;
          setter = getterOrOptions.set;
        }
        const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);
        return cRef;
      }
      function trackRefValue(ref2) {
        var _a2;
        if (shouldTrack && activeEffect) {
          ref2 = toRaw(ref2);
          trackEffect(
            activeEffect,
            (_a2 = ref2.dep) != null ? _a2 : ref2.dep = createDep(
              () => ref2.dep = void 0,
              ref2 instanceof ComputedRefImpl ? ref2 : void 0
            )
          );
        }
      }
      function triggerRefValue(ref2, dirtyLevel = 4, newVal) {
        ref2 = toRaw(ref2);
        const dep = ref2.dep;
        if (dep) {
          triggerEffects(
            dep,
            dirtyLevel
          );
        }
      }
      const defaultNamespace = "el";
      const statePrefix = "is-";
      const _bem = (namespace, block, blockSuffix, element, modifier) => {
        let cls = `${namespace}-${block}`;
        if (blockSuffix) {
          cls += `-${blockSuffix}`;
        }
        if (element) {
          cls += `__${element}`;
        }
        if (modifier) {
          cls += `--${modifier}`;
        }
        return cls;
      };
      const namespaceContextKey = Symbol("namespaceContextKey");
      const useGetDerivedNamespace = (namespaceOverrides) => {
        const derivedNamespace = namespaceOverrides || (vue.getCurrentInstance() ? vue.inject(namespaceContextKey, vue.ref(defaultNamespace)) : vue.ref(defaultNamespace));
        const namespace = vue.computed(() => {
          return vue.unref(derivedNamespace) || defaultNamespace;
        });
        return namespace;
      };
      const useNamespace = (block, namespaceOverrides) => {
        const namespace = useGetDerivedNamespace(namespaceOverrides);
        const b2 = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", "");
        const e = (element) => element ? _bem(namespace.value, block, "", element, "") : "";
        const m2 = (modifier) => modifier ? _bem(namespace.value, block, "", "", modifier) : "";
        const be2 = (blockSuffix, element) => blockSuffix && element ? _bem(namespace.value, block, blockSuffix, element, "") : "";
        const em = (element, modifier) => element && modifier ? _bem(namespace.value, block, "", element, modifier) : "";
        const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(namespace.value, block, blockSuffix, "", modifier) : "";
        const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(namespace.value, block, blockSuffix, element, modifier) : "";
        const is = (name, ...args) => {
          const state = args.length >= 1 ? args[0] : true;
          return name && state ? `${statePrefix}${name}` : "";
        };
        const cssVar = (object) => {
          const styles = {};
          for (const key2 in object) {
            if (object[key2]) {
              styles[`--${namespace.value}-${key2}`] = object[key2];
            }
          }
          return styles;
        };
        const cssVarBlock = (object) => {
          const styles = {};
          for (const key2 in object) {
            if (object[key2]) {
              styles[`--${namespace.value}-${block}-${key2}`] = object[key2];
            }
          }
          return styles;
        };
        const cssVarName = (name) => `--${namespace.value}-${name}`;
        const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`;
        return {
          namespace,
          b: b2,
          e,
          m: m2,
          be: be2,
          em,
          bm,
          bem,
          is,
          cssVar,
          cssVarName,
          cssVarBlock,
          cssVarBlockName
        };
      };
      const useLockscreen = (trigger, options = {}) => {
        if (!vue.isRef(trigger)) {
          throwError("[useLockscreen]", "You need to pass a ref param to this function");
        }
        const ns = options.ns || useNamespace("popup");
        const hiddenCls = computed(() => ns.bm("parent", "hidden"));
        if (!isClient || hasClass(document.body, hiddenCls.value)) {
          return;
        }
        let scrollBarWidth2 = 0;
        let withoutHiddenClass = false;
        let bodyWidth = "0";
        const cleanup = () => {
          setTimeout(() => {
            removeClass(document == null ? void 0 : document.body, hiddenCls.value);
            if (withoutHiddenClass && document) {
              document.body.style.width = bodyWidth;
            }
          }, 200);
        };
        vue.watch(trigger, (val) => {
          if (!val) {
            cleanup();
            return;
          }
          withoutHiddenClass = !hasClass(document.body, hiddenCls.value);
          if (withoutHiddenClass) {
            bodyWidth = document.body.style.width;
          }
          scrollBarWidth2 = getScrollBarWidth(ns.namespace.value);
          const bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight;
          const bodyOverflowY = getStyle(document.body, "overflowY");
          if (scrollBarWidth2 > 0 && (bodyHasOverflow || bodyOverflowY === "scroll") && withoutHiddenClass) {
            document.body.style.width = `calc(100% - ${scrollBarWidth2}px)`;
          }
          addClass(document.body, hiddenCls.value);
        });
        vue.onScopeDispose(() => cleanup());
      };
      const _prop = buildProp({
        type: definePropType(Boolean),
        default: null
      });
      const _event = buildProp({
        type: definePropType(Function)
      });
      const createModelToggleComposable = (name) => {
        const updateEventKey = `update:${name}`;
        const updateEventKeyRaw = `onUpdate:${name}`;
        const useModelToggleEmits2 = [updateEventKey];
        const useModelToggleProps2 = {
          [name]: _prop,
          [updateEventKeyRaw]: _event
        };
        const useModelToggle2 = ({
          indicator,
          toggleReason,
          shouldHideWhenRouteChanges,
          shouldProceed,
          onShow,
          onHide
        }) => {
          const instance = vue.getCurrentInstance();
          const { emit } = instance;
          const props = instance.props;
          const hasUpdateHandler = vue.computed(() => isFunction$1(props[updateEventKeyRaw]));
          const isModelBindingAbsent = vue.computed(() => props[name] === null);
          const doShow = (event2) => {
            if (indicator.value === true) {
              return;
            }
            indicator.value = true;
            if (toggleReason) {
              toggleReason.value = event2;
            }
            if (isFunction$1(onShow)) {
              onShow(event2);
            }
          };
          const doHide = (event2) => {
            if (indicator.value === false) {
              return;
            }
            indicator.value = false;
            if (toggleReason) {
              toggleReason.value = event2;
            }
            if (isFunction$1(onHide)) {
              onHide(event2);
            }
          };
          const show = (event2) => {
            if (props.disabled === true || isFunction$1(shouldProceed) && !shouldProceed())
              return;
            const shouldEmit = hasUpdateHandler.value && isClient;
            if (shouldEmit) {
              emit(updateEventKey, true);
            }
            if (isModelBindingAbsent.value || !shouldEmit) {
              doShow(event2);
            }
          };
          const hide = (event2) => {
            if (props.disabled === true || !isClient)
              return;
            const shouldEmit = hasUpdateHandler.value && isClient;
            if (shouldEmit) {
              emit(updateEventKey, false);
            }
            if (isModelBindingAbsent.value || !shouldEmit) {
              doHide(event2);
            }
          };
          const onChange = (val) => {
            if (!isBoolean(val))
              return;
            if (props.disabled && val) {
              if (hasUpdateHandler.value) {
                emit(updateEventKey, false);
              }
            } else if (indicator.value !== val) {
              if (val) {
                doShow();
              } else {
                doHide();
              }
            }
          };
          const toggle = () => {
            if (indicator.value) {
              hide();
            } else {
              show();
            }
          };
          vue.watch(() => props[name], onChange);
          if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) {
            vue.watch(() => ({
              ...instance.proxy.$route
            }), () => {
              if (shouldHideWhenRouteChanges.value && indicator.value) {
                hide();
              }
            });
          }
          vue.onMounted(() => {
            onChange(props[name]);
          });
          return {
            hide,
            show,
            toggle,
            hasUpdateHandler
          };
        };
        return {
          useModelToggle: useModelToggle2,
          useModelToggleProps: useModelToggleProps2,
          useModelToggleEmits: useModelToggleEmits2
        };
      };
      const useProp = (name) => {
        const vm = vue.getCurrentInstance();
        return vue.computed(() => {
          var _a2, _b;
          return (_b = (_a2 = vm == null ? void 0 : vm.proxy) == null ? void 0 : _a2.$props) == null ? void 0 : _b[name];
        });
      };
      var E$1 = "top", R = "bottom", W = "right", P$1 = "left", me = "auto", G = [E$1, R, W, P$1], U$1 = "start", J = "end", Xe = "clippingParents", je = "viewport", K = "popper", Ye = "reference", De = G.reduce(function(t, e) {
        return t.concat([e + "-" + U$1, e + "-" + J]);
      }, []), Ee = [].concat(G, [me]).reduce(function(t, e) {
        return t.concat([e, e + "-" + U$1, e + "-" + J]);
      }, []), Ge = "beforeRead", Je = "read", Ke = "afterRead", Qe = "beforeMain", Ze = "main", et = "afterMain", tt = "beforeWrite", nt = "write", rt = "afterWrite", ot = [Ge, Je, Ke, Qe, Ze, et, tt, nt, rt];
      function C(t) {
        return t ? (t.nodeName || "").toLowerCase() : null;
      }
      function H(t) {
        if (t == null)
          return window;
        if (t.toString() !== "[object Window]") {
          var e = t.ownerDocument;
          return e && e.defaultView || window;
        }
        return t;
      }
      function Q(t) {
        var e = H(t).Element;
        return t instanceof e || t instanceof Element;
      }
      function B(t) {
        var e = H(t).HTMLElement;
        return t instanceof e || t instanceof HTMLElement;
      }
      function Pe(t) {
        if (typeof ShadowRoot == "undefined")
          return false;
        var e = H(t).ShadowRoot;
        return t instanceof e || t instanceof ShadowRoot;
      }
      function Mt(t) {
        var e = t.state;
        Object.keys(e.elements).forEach(function(n) {
          var r = e.styles[n] || {}, o2 = e.attributes[n] || {}, i = e.elements[n];
          !B(i) || !C(i) || (Object.assign(i.style, r), Object.keys(o2).forEach(function(a2) {
            var s2 = o2[a2];
            s2 === false ? i.removeAttribute(a2) : i.setAttribute(a2, s2 === true ? "" : s2);
          }));
        });
      }
      function Rt(t) {
        var e = t.state, n = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} };
        return Object.assign(e.elements.popper.style, n.popper), e.styles = n, e.elements.arrow && Object.assign(e.elements.arrow.style, n.arrow), function() {
          Object.keys(e.elements).forEach(function(r) {
            var o2 = e.elements[r], i = e.attributes[r] || {}, a2 = Object.keys(e.styles.hasOwnProperty(r) ? e.styles[r] : n[r]), s2 = a2.reduce(function(f2, c2) {
              return f2[c2] = "", f2;
            }, {});
            !B(o2) || !C(o2) || (Object.assign(o2.style, s2), Object.keys(i).forEach(function(f2) {
              o2.removeAttribute(f2);
            }));
          });
        };
      }
      var Ae = { name: "applyStyles", enabled: true, phase: "write", fn: Mt, effect: Rt, requires: ["computeStyles"] };
      function q(t) {
        return t.split("-")[0];
      }
      var X$1 = Math.max, ve = Math.min, Z = Math.round;
      function ee(t, e) {
        e === void 0 && (e = false);
        var n = t.getBoundingClientRect(), r = 1, o2 = 1;
        if (B(t) && e) {
          var i = t.offsetHeight, a2 = t.offsetWidth;
          a2 > 0 && (r = Z(n.width) / a2 || 1), i > 0 && (o2 = Z(n.height) / i || 1);
        }
        return { width: n.width / r, height: n.height / o2, top: n.top / o2, right: n.right / r, bottom: n.bottom / o2, left: n.left / r, x: n.left / r, y: n.top / o2 };
      }
      function ke(t) {
        var e = ee(t), n = t.offsetWidth, r = t.offsetHeight;
        return Math.abs(e.width - n) <= 1 && (n = e.width), Math.abs(e.height - r) <= 1 && (r = e.height), { x: t.offsetLeft, y: t.offsetTop, width: n, height: r };
      }
      function it(t, e) {
        var n = e.getRootNode && e.getRootNode();
        if (t.contains(e))
          return true;
        if (n && Pe(n)) {
          var r = e;
          do {
            if (r && t.isSameNode(r))
              return true;
            r = r.parentNode || r.host;
          } while (r);
        }
        return false;
      }
      function N$1(t) {
        return H(t).getComputedStyle(t);
      }
      function Wt(t) {
        return ["table", "td", "th"].indexOf(C(t)) >= 0;
      }
      function I$1(t) {
        return ((Q(t) ? t.ownerDocument : t.document) || window.document).documentElement;
      }
      function ge(t) {
        return C(t) === "html" ? t : t.assignedSlot || t.parentNode || (Pe(t) ? t.host : null) || I$1(t);
      }
      function at(t) {
        return !B(t) || N$1(t).position === "fixed" ? null : t.offsetParent;
      }
      function Bt(t) {
        var e = navigator.userAgent.toLowerCase().indexOf("firefox") !== -1, n = navigator.userAgent.indexOf("Trident") !== -1;
        if (n && B(t)) {
          var r = N$1(t);
          if (r.position === "fixed")
            return null;
        }
        var o2 = ge(t);
        for (Pe(o2) && (o2 = o2.host); B(o2) && ["html", "body"].indexOf(C(o2)) < 0; ) {
          var i = N$1(o2);
          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")
            return o2;
          o2 = o2.parentNode;
        }
        return null;
      }
      function se(t) {
        for (var e = H(t), n = at(t); n && Wt(n) && N$1(n).position === "static"; )
          n = at(n);
        return n && (C(n) === "html" || C(n) === "body" && N$1(n).position === "static") ? e : n || Bt(t) || e;
      }
      function Le(t) {
        return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y";
      }
      function fe(t, e, n) {
        return X$1(t, ve(e, n));
      }
      function St(t, e, n) {
        var r = fe(t, e, n);
        return r > n ? n : r;
      }
      function st() {
        return { top: 0, right: 0, bottom: 0, left: 0 };
      }
      function ft(t) {
        return Object.assign({}, st(), t);
      }
      function ct(t, e) {
        return e.reduce(function(n, r) {
          return n[r] = t, n;
        }, {});
      }
      var Tt = function(t, e) {
        return t = typeof t == "function" ? t(Object.assign({}, e.rects, { placement: e.placement })) : t, ft(typeof t != "number" ? t : ct(t, G));
      };
      function Ht(t) {
        var e, n = t.state, r = t.name, o2 = t.options, i = n.elements.arrow, a2 = n.modifiersData.popperOffsets, s2 = q(n.placement), f2 = Le(s2), c2 = [P$1, W].indexOf(s2) >= 0, u2 = c2 ? "height" : "width";
        if (!(!i || !a2)) {
          var m2 = Tt(o2.padding, n), v2 = ke(i), l2 = f2 === "y" ? E$1 : P$1, h2 = f2 === "y" ? R : W, p2 = n.rects.reference[u2] + n.rects.reference[f2] - a2[f2] - n.rects.popper[u2], g = a2[f2] - n.rects.reference[f2], x2 = se(i), y = x2 ? f2 === "y" ? x2.clientHeight || 0 : x2.clientWidth || 0 : 0, $2 = p2 / 2 - g / 2, d2 = m2[l2], b2 = y - v2[u2] - m2[h2], w2 = y / 2 - v2[u2] / 2 + $2, O2 = fe(d2, w2, b2), j = f2;
          n.modifiersData[r] = (e = {}, e[j] = O2, e.centerOffset = O2 - w2, e);
        }
      }
      function Ct(t) {
        var e = t.state, n = t.options, r = n.element, o2 = r === void 0 ? "[data-popper-arrow]" : r;
        o2 != null && (typeof o2 == "string" && (o2 = e.elements.popper.querySelector(o2), !o2) || !it(e.elements.popper, o2) || (e.elements.arrow = o2));
      }
      var pt = { name: "arrow", enabled: true, phase: "main", fn: Ht, effect: Ct, requires: ["popperOffsets"], requiresIfExists: ["preventOverflow"] };
      function te(t) {
        return t.split("-")[1];
      }
      var qt = { top: "auto", right: "auto", bottom: "auto", left: "auto" };
      function Vt(t) {
        var e = t.x, n = t.y, r = window, o2 = r.devicePixelRatio || 1;
        return { x: Z(e * o2) / o2 || 0, y: Z(n * o2) / o2 || 0 };
      }
      function ut(t) {
        var e, n = t.popper, r = t.popperRect, o2 = t.placement, i = t.variation, a2 = t.offsets, s2 = t.position, f2 = t.gpuAcceleration, c2 = t.adaptive, u2 = t.roundOffsets, m2 = t.isFixed, v2 = a2.x, l2 = v2 === void 0 ? 0 : v2, h2 = a2.y, p2 = h2 === void 0 ? 0 : h2, g = typeof u2 == "function" ? u2({ x: l2, y: p2 }) : { x: l2, y: p2 };
        l2 = g.x, p2 = g.y;
        var x2 = a2.hasOwnProperty("x"), y = a2.hasOwnProperty("y"), $2 = P$1, d2 = E$1, b2 = window;
        if (c2) {
          var w2 = se(n), O2 = "clientHeight", j = "clientWidth";
          if (w2 === H(n) && (w2 = I$1(n), N$1(w2).position !== "static" && s2 === "absolute" && (O2 = "scrollHeight", j = "scrollWidth")), w2 = w2, o2 === E$1 || (o2 === P$1 || o2 === W) && i === J) {
            d2 = R;
            var A2 = m2 && w2 === b2 && b2.visualViewport ? b2.visualViewport.height : w2[O2];
            p2 -= A2 - r.height, p2 *= f2 ? 1 : -1;
          }
          if (o2 === P$1 || (o2 === E$1 || o2 === R) && i === J) {
            $2 = W;
            var k = m2 && w2 === b2 && b2.visualViewport ? b2.visualViewport.width : w2[j];
            l2 -= k - r.width, l2 *= f2 ? 1 : -1;
          }
        }
        var D2 = Object.assign({ position: s2 }, c2 && qt), S2 = u2 === true ? Vt({ x: l2, y: p2 }) : { x: l2, y: p2 };
        if (l2 = S2.x, p2 = S2.y, f2) {
          var L;
          return Object.assign({}, D2, (L = {}, L[d2] = y ? "0" : "", L[$2] = x2 ? "0" : "", L.transform = (b2.devicePixelRatio || 1) <= 1 ? "translate(" + l2 + "px, " + p2 + "px)" : "translate3d(" + l2 + "px, " + p2 + "px, 0)", L));
        }
        return Object.assign({}, D2, (e = {}, e[d2] = y ? p2 + "px" : "", e[$2] = x2 ? l2 + "px" : "", e.transform = "", e));
      }
      function Nt(t) {
        var e = t.state, n = t.options, r = n.gpuAcceleration, o2 = r === void 0 ? true : r, i = n.adaptive, a2 = i === void 0 ? true : i, s2 = n.roundOffsets, f2 = s2 === void 0 ? true : s2, c2 = { placement: q(e.placement), variation: te(e.placement), popper: e.elements.popper, popperRect: e.rects.popper, gpuAcceleration: o2, isFixed: e.options.strategy === "fixed" };
        e.modifiersData.popperOffsets != null && (e.styles.popper = Object.assign({}, e.styles.popper, ut(Object.assign({}, c2, { offsets: e.modifiersData.popperOffsets, position: e.options.strategy, adaptive: a2, roundOffsets: f2 })))), e.modifiersData.arrow != null && (e.styles.arrow = Object.assign({}, e.styles.arrow, ut(Object.assign({}, c2, { offsets: e.modifiersData.arrow, position: "absolute", adaptive: false, roundOffsets: f2 })))), e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-placement": e.placement });
      }
      var Me = { name: "computeStyles", enabled: true, phase: "beforeWrite", fn: Nt, data: {} }, ye = { passive: true };
      function It(t) {
        var e = t.state, n = t.instance, r = t.options, o2 = r.scroll, i = o2 === void 0 ? true : o2, a2 = r.resize, s2 = a2 === void 0 ? true : a2, f2 = H(e.elements.popper), c2 = [].concat(e.scrollParents.reference, e.scrollParents.popper);
        return i && c2.forEach(function(u2) {
          u2.addEventListener("scroll", n.update, ye);
        }), s2 && f2.addEventListener("resize", n.update, ye), function() {
          i && c2.forEach(function(u2) {
            u2.removeEventListener("scroll", n.update, ye);
          }), s2 && f2.removeEventListener("resize", n.update, ye);
        };
      }
      var Re = { name: "eventListeners", enabled: true, phase: "write", fn: function() {
      }, effect: It, data: {} }, _t = { left: "right", right: "left", bottom: "top", top: "bottom" };
      function be(t) {
        return t.replace(/left|right|bottom|top/g, function(e) {
          return _t[e];
        });
      }
      var zt = { start: "end", end: "start" };
      function lt(t) {
        return t.replace(/start|end/g, function(e) {
          return zt[e];
        });
      }
      function We(t) {
        var e = H(t), n = e.pageXOffset, r = e.pageYOffset;
        return { scrollLeft: n, scrollTop: r };
      }
      function Be(t) {
        return ee(I$1(t)).left + We(t).scrollLeft;
      }
      function Ft(t) {
        var e = H(t), n = I$1(t), r = e.visualViewport, o2 = n.clientWidth, i = n.clientHeight, a2 = 0, s2 = 0;
        return r && (o2 = r.width, i = r.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (a2 = r.offsetLeft, s2 = r.offsetTop)), { width: o2, height: i, x: a2 + Be(t), y: s2 };
      }
      function Ut(t) {
        var e, n = I$1(t), r = We(t), o2 = (e = t.ownerDocument) == null ? void 0 : e.body, i = X$1(n.scrollWidth, n.clientWidth, o2 ? o2.scrollWidth : 0, o2 ? o2.clientWidth : 0), a2 = X$1(n.scrollHeight, n.clientHeight, o2 ? o2.scrollHeight : 0, o2 ? o2.clientHeight : 0), s2 = -r.scrollLeft + Be(t), f2 = -r.scrollTop;
        return N$1(o2 || n).direction === "rtl" && (s2 += X$1(n.clientWidth, o2 ? o2.clientWidth : 0) - i), { width: i, height: a2, x: s2, y: f2 };
      }
      function Se(t) {
        var e = N$1(t), n = e.overflow, r = e.overflowX, o2 = e.overflowY;
        return /auto|scroll|overlay|hidden/.test(n + o2 + r);
      }
      function dt(t) {
        return ["html", "body", "#document"].indexOf(C(t)) >= 0 ? t.ownerDocument.body : B(t) && Se(t) ? t : dt(ge(t));
      }
      function ce(t, e) {
        var n;
        e === void 0 && (e = []);
        var r = dt(t), o2 = r === ((n = t.ownerDocument) == null ? void 0 : n.body), i = H(r), a2 = o2 ? [i].concat(i.visualViewport || [], Se(r) ? r : []) : r, s2 = e.concat(a2);
        return o2 ? s2 : s2.concat(ce(ge(a2)));
      }
      function Te(t) {
        return Object.assign({}, t, { left: t.x, top: t.y, right: t.x + t.width, bottom: t.y + t.height });
      }
      function Xt(t) {
        var e = ee(t);
        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;
      }
      function ht(t, e) {
        return e === je ? Te(Ft(t)) : Q(e) ? Xt(e) : Te(Ut(I$1(t)));
      }
      function Yt(t) {
        var e = ce(ge(t)), n = ["absolute", "fixed"].indexOf(N$1(t).position) >= 0, r = n && B(t) ? se(t) : t;
        return Q(r) ? e.filter(function(o2) {
          return Q(o2) && it(o2, r) && C(o2) !== "body";
        }) : [];
      }
      function Gt(t, e, n) {
        var r = e === "clippingParents" ? Yt(t) : [].concat(e), o2 = [].concat(r, [n]), i = o2[0], a2 = o2.reduce(function(s2, f2) {
          var c2 = ht(t, f2);
          return s2.top = X$1(c2.top, s2.top), s2.right = ve(c2.right, s2.right), s2.bottom = ve(c2.bottom, s2.bottom), s2.left = X$1(c2.left, s2.left), s2;
        }, ht(t, i));
        return a2.width = a2.right - a2.left, a2.height = a2.bottom - a2.top, a2.x = a2.left, a2.y = a2.top, a2;
      }
      function mt(t) {
        var e = t.reference, n = t.element, r = t.placement, o2 = r ? q(r) : null, i = r ? te(r) : null, a2 = e.x + e.width / 2 - n.width / 2, s2 = e.y + e.height / 2 - n.height / 2, f2;
        switch (o2) {
          case E$1:
            f2 = { x: a2, y: e.y - n.height };
            break;
          case R:
            f2 = { x: a2, y: e.y + e.height };
            break;
          case W:
            f2 = { x: e.x + e.width, y: s2 };
            break;
          case P$1:
            f2 = { x: e.x - n.width, y: s2 };
            break;
          default:
            f2 = { x: e.x, y: e.y };
        }
        var c2 = o2 ? Le(o2) : null;
        if (c2 != null) {
          var u2 = c2 === "y" ? "height" : "width";
          switch (i) {
            case U$1:
              f2[c2] = f2[c2] - (e[u2] / 2 - n[u2] / 2);
              break;
            case J:
              f2[c2] = f2[c2] + (e[u2] / 2 - n[u2] / 2);
              break;
          }
        }
        return f2;
      }
      function ne(t, e) {
        e === void 0 && (e = {});
        var n = e, r = n.placement, o2 = r === void 0 ? t.placement : r, i = n.boundary, a2 = i === void 0 ? Xe : i, s2 = n.rootBoundary, f2 = s2 === void 0 ? je : s2, c2 = n.elementContext, u2 = c2 === void 0 ? K : c2, m2 = n.altBoundary, v2 = m2 === void 0 ? false : m2, l2 = n.padding, h2 = l2 === void 0 ? 0 : l2, p2 = ft(typeof h2 != "number" ? h2 : ct(h2, G)), g = u2 === K ? Ye : K, x2 = t.rects.popper, y = t.elements[v2 ? g : u2], $2 = Gt(Q(y) ? y : y.contextElement || I$1(t.elements.popper), a2, f2), d2 = ee(t.elements.reference), b2 = mt({ reference: d2, element: x2, strategy: "absolute", placement: o2 }), w2 = Te(Object.assign({}, x2, b2)), O2 = u2 === K ? w2 : d2, j = { top: $2.top - O2.top + p2.top, bottom: O2.bottom - $2.bottom + p2.bottom, left: $2.left - O2.left + p2.left, right: O2.right - $2.right + p2.right }, A2 = t.modifiersData.offset;
        if (u2 === K && A2) {
          var k = A2[o2];
          Object.keys(j).forEach(function(D2) {
            var S2 = [W, R].indexOf(D2) >= 0 ? 1 : -1, L = [E$1, R].indexOf(D2) >= 0 ? "y" : "x";
            j[D2] += k[L] * S2;
          });
        }
        return j;
      }
      function Jt(t, e) {
        e === void 0 && (e = {});
        var n = e, r = n.placement, o2 = n.boundary, i = n.rootBoundary, a2 = n.padding, s2 = n.flipVariations, f2 = n.allowedAutoPlacements, c2 = f2 === void 0 ? Ee : f2, u2 = te(r), m2 = u2 ? s2 ? De : De.filter(function(h2) {
          return te(h2) === u2;
        }) : G, v2 = m2.filter(function(h2) {
          return c2.indexOf(h2) >= 0;
        });
        v2.length === 0 && (v2 = m2);
        var l2 = v2.reduce(function(h2, p2) {
          return h2[p2] = ne(t, { placement: p2, boundary: o2, rootBoundary: i, padding: a2 })[q(p2)], h2;
        }, {});
        return Object.keys(l2).sort(function(h2, p2) {
          return l2[h2] - l2[p2];
        });
      }
      function Kt(t) {
        if (q(t) === me)
          return [];
        var e = be(t);
        return [lt(t), e, lt(e)];
      }
      function Qt(t) {
        var e = t.state, n = t.options, r = t.name;
        if (!e.modifiersData[r]._skip) {
          for (var o2 = n.mainAxis, i = o2 === void 0 ? true : o2, a2 = n.altAxis, s2 = a2 === void 0 ? true : a2, f2 = n.fallbackPlacements, c2 = n.padding, u2 = n.boundary, m2 = n.rootBoundary, v2 = n.altBoundary, l2 = n.flipVariations, h2 = l2 === void 0 ? true : l2, p2 = n.allowedAutoPlacements, g = e.options.placement, x2 = q(g), y = x2 === g, $2 = f2 || (y || !h2 ? [be(g)] : Kt(g)), d2 = [g].concat($2).reduce(function(z, V) {
            return z.concat(q(V) === me ? Jt(e, { placement: V, boundary: u2, rootBoundary: m2, padding: c2, flipVariations: h2, allowedAutoPlacements: p2 }) : V);
          }, []), b2 = e.rects.reference, w2 = e.rects.popper, O2 = /* @__PURE__ */ new Map(), j = true, A2 = d2[0], k = 0; k < d2.length; k++) {
            var D2 = d2[k], S2 = q(D2), L = te(D2) === U$1, re = [E$1, R].indexOf(S2) >= 0, oe = re ? "width" : "height", M2 = ne(e, { placement: D2, boundary: u2, rootBoundary: m2, altBoundary: v2, padding: c2 }), T2 = re ? L ? W : P$1 : L ? R : E$1;
            b2[oe] > w2[oe] && (T2 = be(T2));
            var pe = be(T2), _2 = [];
            if (i && _2.push(M2[S2] <= 0), s2 && _2.push(M2[T2] <= 0, M2[pe] <= 0), _2.every(function(z) {
              return z;
            })) {
              A2 = D2, j = false;
              break;
            }
            O2.set(D2, _2);
          }
          if (j)
            for (var ue = h2 ? 3 : 1, xe = function(z) {
              var V = d2.find(function(de) {
                var ae = O2.get(de);
                if (ae)
                  return ae.slice(0, z).every(function(Y2) {
                    return Y2;
                  });
              });
              if (V)
                return A2 = V, "break";
            }, ie = ue; ie > 0; ie--) {
              var le = xe(ie);
              if (le === "break")
                break;
            }
          e.placement !== A2 && (e.modifiersData[r]._skip = true, e.placement = A2, e.reset = true);
        }
      }
      var vt = { name: "flip", enabled: true, phase: "main", fn: Qt, requiresIfExists: ["offset"], data: { _skip: false } };
      function gt(t, e, n) {
        return n === void 0 && (n = { x: 0, y: 0 }), { top: t.top - e.height - n.y, right: t.right - e.width + n.x, bottom: t.bottom - e.height + n.y, left: t.left - e.width - n.x };
      }
      function yt(t) {
        return [E$1, W, R, P$1].some(function(e) {
          return t[e] >= 0;
        });
      }
      function Zt(t) {
        var e = t.state, n = t.name, r = e.rects.reference, o2 = e.rects.popper, i = e.modifiersData.preventOverflow, a2 = ne(e, { elementContext: "reference" }), s2 = ne(e, { altBoundary: true }), f2 = gt(a2, r), c2 = gt(s2, o2, i), u2 = yt(f2), m2 = yt(c2);
        e.modifiersData[n] = { referenceClippingOffsets: f2, popperEscapeOffsets: c2, isReferenceHidden: u2, hasPopperEscaped: m2 }, e.attributes.popper = Object.assign({}, e.attributes.popper, { "data-popper-reference-hidden": u2, "data-popper-escaped": m2 });
      }
      var bt = { name: "hide", enabled: true, phase: "main", requiresIfExists: ["preventOverflow"], fn: Zt };
      function en(t, e, n) {
        var r = q(t), o2 = [P$1, E$1].indexOf(r) >= 0 ? -1 : 1, i = typeof n == "function" ? n(Object.assign({}, e, { placement: t })) : n, a2 = i[0], s2 = i[1];
        return a2 = a2 || 0, s2 = (s2 || 0) * o2, [P$1, W].indexOf(r) >= 0 ? { x: s2, y: a2 } : { x: a2, y: s2 };
      }
      function tn(t) {
        var e = t.state, n = t.options, r = t.name, o2 = n.offset, i = o2 === void 0 ? [0, 0] : o2, a2 = Ee.reduce(function(u2, m2) {
          return u2[m2] = en(m2, e.rects, i), u2;
        }, {}), s2 = a2[e.placement], f2 = s2.x, c2 = s2.y;
        e.modifiersData.popperOffsets != null && (e.modifiersData.popperOffsets.x += f2, e.modifiersData.popperOffsets.y += c2), e.modifiersData[r] = a2;
      }
      var wt = { name: "offset", enabled: true, phase: "main", requires: ["popperOffsets"], fn: tn };
      function nn(t) {
        var e = t.state, n = t.name;
        e.modifiersData[n] = mt({ reference: e.rects.reference, element: e.rects.popper, strategy: "absolute", placement: e.placement });
      }
      var He = { name: "popperOffsets", enabled: true, phase: "read", fn: nn, data: {} };
      function rn(t) {
        return t === "x" ? "y" : "x";
      }
      function on(t) {
        var e = t.state, n = t.options, r = t.name, o2 = n.mainAxis, i = o2 === void 0 ? true : o2, a2 = n.altAxis, s2 = a2 === void 0 ? false : a2, f2 = n.boundary, c2 = n.rootBoundary, u2 = n.altBoundary, m2 = n.padding, v2 = n.tether, l2 = v2 === void 0 ? true : v2, h2 = n.tetherOffset, p2 = h2 === void 0 ? 0 : h2, g = ne(e, { boundary: f2, rootBoundary: c2, padding: m2, altBoundary: u2 }), x2 = q(e.placement), y = te(e.placement), $2 = !y, d2 = Le(x2), b2 = rn(d2), w2 = e.modifiersData.popperOffsets, O2 = e.rects.reference, j = e.rects.popper, A2 = typeof p2 == "function" ? p2(Object.assign({}, e.rects, { placement: e.placement })) : p2, k = typeof A2 == "number" ? { mainAxis: A2, altAxis: A2 } : Object.assign({ mainAxis: 0, altAxis: 0 }, A2), D2 = e.modifiersData.offset ? e.modifiersData.offset[e.placement] : null, S2 = { x: 0, y: 0 };
        if (w2) {
          if (i) {
            var L, re = d2 === "y" ? E$1 : P$1, oe = d2 === "y" ? R : W, M2 = d2 === "y" ? "height" : "width", T2 = w2[d2], pe = T2 + g[re], _2 = T2 - g[oe], ue = l2 ? -j[M2] / 2 : 0, xe = y === U$1 ? O2[M2] : j[M2], ie = y === U$1 ? -j[M2] : -O2[M2], le = e.elements.arrow, z = l2 && le ? ke(le) : { width: 0, height: 0 }, V = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : st(), de = V[re], ae = V[oe], Y2 = fe(0, O2[M2], z[M2]), jt = $2 ? O2[M2] / 2 - ue - Y2 - de - k.mainAxis : xe - Y2 - de - k.mainAxis, Dt = $2 ? -O2[M2] / 2 + ue + Y2 + ae + k.mainAxis : ie + Y2 + ae + k.mainAxis, Oe = e.elements.arrow && se(e.elements.arrow), Et = Oe ? d2 === "y" ? Oe.clientTop || 0 : Oe.clientLeft || 0 : 0, Ce = (L = D2 == null ? void 0 : D2[d2]) != null ? L : 0, Pt = T2 + jt - Ce - Et, At = T2 + Dt - Ce, qe = fe(l2 ? ve(pe, Pt) : pe, T2, l2 ? X$1(_2, At) : _2);
            w2[d2] = qe, S2[d2] = qe - T2;
          }
          if (s2) {
            var Ve, kt = d2 === "x" ? E$1 : P$1, Lt = d2 === "x" ? R : W, F2 = w2[b2], he = b2 === "y" ? "height" : "width", Ne = F2 + g[kt], Ie = F2 - g[Lt], $e = [E$1, P$1].indexOf(x2) !== -1, _e = (Ve = D2 == null ? void 0 : D2[b2]) != null ? Ve : 0, ze = $e ? Ne : F2 - O2[he] - j[he] - _e + k.altAxis, Fe = $e ? F2 + O2[he] + j[he] - _e - k.altAxis : Ie, Ue = l2 && $e ? St(ze, F2, Fe) : fe(l2 ? ze : Ne, F2, l2 ? Fe : Ie);
            w2[b2] = Ue, S2[b2] = Ue - F2;
          }
          e.modifiersData[r] = S2;
        }
      }
      var xt = { name: "preventOverflow", enabled: true, phase: "main", fn: on, requiresIfExists: ["offset"] };
      function an(t) {
        return { scrollLeft: t.scrollLeft, scrollTop: t.scrollTop };
      }
      function sn(t) {
        return t === H(t) || !B(t) ? We(t) : an(t);
      }
      function fn(t) {
        var e = t.getBoundingClientRect(), n = Z(e.width) / t.offsetWidth || 1, r = Z(e.height) / t.offsetHeight || 1;
        return n !== 1 || r !== 1;
      }
      function cn(t, e, n) {
        n === void 0 && (n = false);
        var r = B(e), o2 = B(e) && fn(e), i = I$1(e), a2 = ee(t, o2), s2 = { scrollLeft: 0, scrollTop: 0 }, f2 = { x: 0, y: 0 };
        return (r || !r && !n) && ((C(e) !== "body" || Se(i)) && (s2 = sn(e)), B(e) ? (f2 = ee(e, true), f2.x += e.clientLeft, f2.y += e.clientTop) : i && (f2.x = Be(i))), { x: a2.left + s2.scrollLeft - f2.x, y: a2.top + s2.scrollTop - f2.y, width: a2.width, height: a2.height };
      }
      function pn(t) {
        var e = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Set(), r = [];
        t.forEach(function(i) {
          e.set(i.name, i);
        });
        function o2(i) {
          n.add(i.name);
          var a2 = [].concat(i.requires || [], i.requiresIfExists || []);
          a2.forEach(function(s2) {
            if (!n.has(s2)) {
              var f2 = e.get(s2);
              f2 && o2(f2);
            }
          }), r.push(i);
        }
        return t.forEach(function(i) {
          n.has(i.name) || o2(i);
        }), r;
      }
      function un(t) {
        var e = pn(t);
        return ot.reduce(function(n, r) {
          return n.concat(e.filter(function(o2) {
            return o2.phase === r;
          }));
        }, []);
      }
      function ln(t) {
        var e;
        return function() {
          return e || (e = new Promise(function(n) {
            Promise.resolve().then(function() {
              e = void 0, n(t());
            });
          })), e;
        };
      }
      function dn(t) {
        var e = t.reduce(function(n, r) {
          var o2 = n[r.name];
          return n[r.name] = o2 ? Object.assign({}, o2, r, { options: Object.assign({}, o2.options, r.options), data: Object.assign({}, o2.data, r.data) }) : r, n;
        }, {});
        return Object.keys(e).map(function(n) {
          return e[n];
        });
      }
      var Ot = { placement: "bottom", modifiers: [], strategy: "absolute" };
      function $t() {
        for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)
          e[n] = arguments[n];
        return !e.some(function(r) {
          return !(r && typeof r.getBoundingClientRect == "function");
        });
      }
      function we(t) {
        t === void 0 && (t = {});
        var e = t, n = e.defaultModifiers, r = n === void 0 ? [] : n, o2 = e.defaultOptions, i = o2 === void 0 ? Ot : o2;
        return function(a2, s2, f2) {
          f2 === void 0 && (f2 = i);
          var c2 = { placement: "bottom", orderedModifiers: [], options: Object.assign({}, Ot, i), modifiersData: {}, elements: { reference: a2, popper: s2 }, attributes: {}, styles: {} }, u2 = [], m2 = false, v2 = { state: c2, setOptions: function(p2) {
            var g = typeof p2 == "function" ? p2(c2.options) : p2;
            h2(), c2.options = Object.assign({}, i, c2.options, g), c2.scrollParents = { reference: Q(a2) ? ce(a2) : a2.contextElement ? ce(a2.contextElement) : [], popper: ce(s2) };
            var x2 = un(dn([].concat(r, c2.options.modifiers)));
            return c2.orderedModifiers = x2.filter(function(y) {
              return y.enabled;
            }), l2(), v2.update();
          }, forceUpdate: function() {
            if (!m2) {
              var p2 = c2.elements, g = p2.reference, x2 = p2.popper;
              if ($t(g, x2)) {
                c2.rects = { reference: cn(g, se(x2), c2.options.strategy === "fixed"), popper: ke(x2) }, c2.reset = false, c2.placement = c2.options.placement, c2.orderedModifiers.forEach(function(j) {
                  return c2.modifiersData[j.name] = Object.assign({}, j.data);
                });
                for (var y = 0; y < c2.orderedModifiers.length; y++) {
                  if (c2.reset === true) {
                    c2.reset = false, y = -1;
                    continue;
                  }
                  var $2 = c2.orderedModifiers[y], d2 = $2.fn, b2 = $2.options, w2 = b2 === void 0 ? {} : b2, O2 = $2.name;
                  typeof d2 == "function" && (c2 = d2({ state: c2, options: w2, name: O2, instance: v2 }) || c2);
                }
              }
            }
          }, update: ln(function() {
            return new Promise(function(p2) {
              v2.forceUpdate(), p2(c2);
            });
          }), destroy: function() {
            h2(), m2 = true;
          } };
          if (!$t(a2, s2))
            return v2;
          v2.setOptions(f2).then(function(p2) {
            !m2 && f2.onFirstUpdate && f2.onFirstUpdate(p2);
          });
          function l2() {
            c2.orderedModifiers.forEach(function(p2) {
              var g = p2.name, x2 = p2.options, y = x2 === void 0 ? {} : x2, $2 = p2.effect;
              if (typeof $2 == "function") {
                var d2 = $2({ state: c2, name: g, instance: v2, options: y }), b2 = function() {
                };
                u2.push(d2 || b2);
              }
            });
          }
          function h2() {
            u2.forEach(function(p2) {
              return p2();
            }), u2 = [];
          }
          return v2;
        };
      }
      we();
      var mn = [Re, He, Me, Ae];
      we({ defaultModifiers: mn });
      var gn = [Re, He, Me, Ae, wt, vt, xt, pt, bt], yn = we({ defaultModifiers: gn });
      const usePopper = (referenceElementRef, popperElementRef, opts = {}) => {
        const stateUpdater = {
          name: "updateState",
          enabled: true,
          phase: "write",
          fn: ({ state }) => {
            const derivedState = deriveState(state);
            Object.assign(states.value, derivedState);
          },
          requires: ["computeStyles"]
        };
        const options = vue.computed(() => {
          const { onFirstUpdate, placement, strategy, modifiers } = vue.unref(opts);
          return {
            onFirstUpdate,
            placement: placement || "bottom",
            strategy: strategy || "absolute",
            modifiers: [
              ...modifiers || [],
              stateUpdater,
              { name: "applyStyles", enabled: false }
            ]
          };
        });
        const instanceRef = vue.shallowRef();
        const states = vue.ref({
          styles: {
            popper: {
              position: vue.unref(options).strategy,
              left: "0",
              top: "0"
            },
            arrow: {
              position: "absolute"
            }
          },
          attributes: {}
        });
        const destroy = () => {
          if (!instanceRef.value)
            return;
          instanceRef.value.destroy();
          instanceRef.value = void 0;
        };
        vue.watch(options, (newOptions) => {
          const instance = vue.unref(instanceRef);
          if (instance) {
            instance.setOptions(newOptions);
          }
        }, {
          deep: true
        });
        vue.watch([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => {
          destroy();
          if (!referenceElement || !popperElement)
            return;
          instanceRef.value = yn(referenceElement, popperElement, vue.unref(options));
        });
        vue.onBeforeUnmount(() => {
          destroy();
        });
        return {
          state: vue.computed(() => {
            var _a2;
            return { ...((_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.state) || {} };
          }),
          styles: vue.computed(() => vue.unref(states).styles),
          attributes: vue.computed(() => vue.unref(states).attributes),
          update: () => {
            var _a2;
            return (_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.update();
          },
          forceUpdate: () => {
            var _a2;
            return (_a2 = vue.unref(instanceRef)) == null ? void 0 : _a2.forceUpdate();
          },
          instanceRef: vue.computed(() => vue.unref(instanceRef))
        };
      };
      function deriveState(state) {
        const elements = Object.keys(state.elements);
        const styles = fromPairs(elements.map((element) => [element, state.styles[element] || {}]));
        const attributes = fromPairs(elements.map((element) => [element, state.attributes[element]]));
        return {
          styles,
          attributes
        };
      }
      const useSameTarget = (handleClick) => {
        if (!handleClick) {
          return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP };
        }
        let mousedownTarget = false;
        let mouseupTarget = false;
        const onClick = (e) => {
          if (mousedownTarget && mouseupTarget) {
            handleClick(e);
          }
          mousedownTarget = mouseupTarget = false;
        };
        const onMousedown = (e) => {
          mousedownTarget = e.target === e.currentTarget;
        };
        const onMouseup = (e) => {
          mouseupTarget = e.target === e.currentTarget;
        };
        return { onClick, onMousedown, onMouseup };
      };
      function useTimeout() {
        let timeoutHandle;
        const registerTimeout = (fn2, delay) => {
          cancelTimeout();
          timeoutHandle = window.setTimeout(fn2, delay);
        };
        const cancelTimeout = () => window.clearTimeout(timeoutHandle);
        tryOnScopeDispose(() => cancelTimeout());
        return {
          registerTimeout,
          cancelTimeout
        };
      }
      const defaultIdInjection = {
        prefix: Math.floor(Math.random() * 1e4),
        current: 0
      };
      const ID_INJECTION_KEY = Symbol("elIdInjection");
      const useIdInjection = () => {
        return vue.getCurrentInstance() ? vue.inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection;
      };
      const useId = (deterministicId) => {
        const idInjection = useIdInjection();
        const namespace = useGetDerivedNamespace();
        const idRef = vue.computed(() => vue.unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`);
        return idRef;
      };
      let registeredEscapeHandlers = [];
      const cachedHandler = (e) => {
        const event2 = e;
        if (event2.key === EVENT_CODE.esc) {
          registeredEscapeHandlers.forEach((registeredHandler) => registeredHandler(event2));
        }
      };
      const useEscapeKeydown = (handler) => {
        vue.onMounted(() => {
          if (registeredEscapeHandlers.length === 0) {
            document.addEventListener("keydown", cachedHandler);
          }
          if (isClient)
            registeredEscapeHandlers.push(handler);
        });
        vue.onBeforeUnmount(() => {
          registeredEscapeHandlers = registeredEscapeHandlers.filter((registeredHandler) => registeredHandler !== handler);
          if (registeredEscapeHandlers.length === 0) {
            if (isClient)
              document.removeEventListener("keydown", cachedHandler);
          }
        });
      };
      let cachedContainer;
      const usePopperContainerId = () => {
        const namespace = useGetDerivedNamespace();
        const idInjection = useIdInjection();
        const id = vue.computed(() => {
          return `${namespace.value}-popper-container-${idInjection.prefix}`;
        });
        const selector = vue.computed(() => `#${id.value}`);
        return {
          id,
          selector
        };
      };
      const createContainer = (id) => {
        const container = document.createElement("div");
        container.id = id;
        document.body.appendChild(container);
        return container;
      };
      const usePopperContainer = () => {
        const { id, selector } = usePopperContainerId();
        vue.onBeforeMount(() => {
          if (!isClient)
            return;
          if (!cachedContainer && !document.body.querySelector(selector.value)) {
            cachedContainer = createContainer(id.value);
          }
        });
        return {
          id,
          selector
        };
      };
      const useDelayedToggleProps = buildProps({
        showAfter: {
          type: Number,
          default: 0
        },
        hideAfter: {
          type: Number,
          default: 200
        },
        autoClose: {
          type: Number,
          default: 0
        }
      });
      const useDelayedToggle = ({
        showAfter,
        hideAfter,
        autoClose,
        open,
        close
      }) => {
        const { registerTimeout } = useTimeout();
        const {
          registerTimeout: registerTimeoutForAutoClose,
          cancelTimeout: cancelTimeoutForAutoClose
        } = useTimeout();
        const onOpen = (event2) => {
          registerTimeout(() => {
            open(event2);
            const _autoClose = vue.unref(autoClose);
            if (isNumber(_autoClose) && _autoClose > 0) {
              registerTimeoutForAutoClose(() => {
                close(event2);
              }, _autoClose);
            }
          }, vue.unref(showAfter));
        };
        const onClose = (event2) => {
          cancelTimeoutForAutoClose();
          registerTimeout(() => {
            close(event2);
          }, vue.unref(hideAfter));
        };
        return {
          onOpen,
          onClose
        };
      };
      const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef");
      const useForwardRef = (forwardRef) => {
        const setForwardRef = (el) => {
          forwardRef.value = el;
        };
        vue.provide(FORWARD_REF_INJECTION_KEY, {
          setForwardRef
        });
      };
      const useForwardRefDirective = (setForwardRef) => {
        return {
          mounted(el) {
            setForwardRef(el);
          },
          updated(el) {
            setForwardRef(el);
          },
          unmounted() {
            setForwardRef(null);
          }
        };
      };
      const initial = {
        current: 0
      };
      const zIndex = vue.ref(0);
      const defaultInitialZIndex = 2e3;
      const ZINDEX_INJECTION_KEY = Symbol("elZIndexContextKey");
      const zIndexContextKey = Symbol("zIndexContextKey");
      const useZIndex = (zIndexOverrides) => {
        const increasingInjection = vue.getCurrentInstance() ? vue.inject(ZINDEX_INJECTION_KEY, initial) : initial;
        const zIndexInjection = zIndexOverrides || (vue.getCurrentInstance() ? vue.inject(zIndexContextKey, void 0) : void 0);
        const initialZIndex = vue.computed(() => {
          const zIndexFromInjection = vue.unref(zIndexInjection);
          return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex;
        });
        const currentZIndex = vue.computed(() => initialZIndex.value + zIndex.value);
        const nextZIndex = () => {
          increasingInjection.current++;
          zIndex.value = increasingInjection.current;
          return currentZIndex.value;
        };
        if (!isClient && !vue.inject(ZINDEX_INJECTION_KEY))
          ;
        return {
          initialZIndex,
          currentZIndex,
          nextZIndex
        };
      };
      function useCursor(input) {
        const selectionRef = vue.ref();
        function recordCursor() {
          if (input.value == void 0)
            return;
          const { selectionStart, selectionEnd, value } = input.value;
          if (selectionStart == null || selectionEnd == null)
            return;
          const beforeTxt = value.slice(0, Math.max(0, selectionStart));
          const afterTxt = value.slice(Math.max(0, selectionEnd));
          selectionRef.value = {
            selectionStart,
            selectionEnd,
            value,
            beforeTxt,
            afterTxt
          };
        }
        function setCursor() {
          if (input.value == void 0 || selectionRef.value == void 0)
            return;
          const { value } = input.value;
          const { beforeTxt, afterTxt, selectionStart } = selectionRef.value;
          if (beforeTxt == void 0 || afterTxt == void 0 || selectionStart == void 0)
            return;
          let startPos = value.length;
          if (value.endsWith(afterTxt)) {
            startPos = value.length - afterTxt.length;
          } else if (value.startsWith(beforeTxt)) {
            startPos = beforeTxt.length;
          } else {
            const beforeLastChar = beforeTxt[selectionStart - 1];
            const newIndex = value.indexOf(beforeLastChar, selectionStart - 1);
            if (newIndex !== -1) {
              startPos = newIndex + 1;
            }
          }
          input.value.setSelectionRange(startPos, startPos);
        }
        return [recordCursor, setCursor];
      }
      const useSizeProp = buildProp({
        type: String,
        values: componentSizes,
        required: false
      });
      const SIZE_INJECTION_KEY = Symbol("size");
      const useGlobalSize = () => {
        const injectedSize = vue.inject(SIZE_INJECTION_KEY, {});
        return vue.computed(() => {
          return vue.unref(injectedSize.size) || "";
        });
      };
      function useFocusController(target, { afterFocus, beforeBlur, afterBlur } = {}) {
        const instance = vue.getCurrentInstance();
        const { emit } = instance;
        const wrapperRef = vue.shallowRef();
        const isFocused = vue.ref(false);
        const handleFocus = (event2) => {
          if (isFocused.value)
            return;
          isFocused.value = true;
          emit("focus", event2);
          afterFocus == null ? void 0 : afterFocus();
        };
        const handleBlur = (event2) => {
          var _a2;
          const cancelBlur = isFunction$1(beforeBlur) ? beforeBlur(event2) : false;
          if (cancelBlur || event2.relatedTarget && ((_a2 = wrapperRef.value) == null ? void 0 : _a2.contains(event2.relatedTarget)))
            return;
          isFocused.value = false;
          emit("blur", event2);
          afterBlur == null ? void 0 : afterBlur();
        };
        const handleClick = () => {
          var _a2;
          (_a2 = target.value) == null ? void 0 : _a2.focus();
        };
        vue.watch(wrapperRef, (el) => {
          if (el) {
            el.setAttribute("tabindex", "-1");
          }
        });
        useEventListener(wrapperRef, "click", handleClick);
        return {
          wrapperRef,
          isFocused,
          handleFocus,
          handleBlur
        };
      }
      const configProviderContextKey = Symbol();
      const globalConfig = vue.ref();
      function useGlobalConfig(key2, defaultValue = void 0) {
        const config = vue.getCurrentInstance() ? vue.inject(configProviderContextKey, globalConfig) : globalConfig;
        if (key2) {
          return vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = config.value) == null ? void 0 : _a2[key2]) != null ? _b : defaultValue;
          });
        } else {
          return config;
        }
      }
      function useGlobalComponentSettings(block, sizeFallback) {
        const config = useGlobalConfig();
        const ns = useNamespace(block, vue.computed(() => {
          var _a2;
          return ((_a2 = config.value) == null ? void 0 : _a2.namespace) || defaultNamespace;
        }));
        const locale = useLocale(vue.computed(() => {
          var _a2;
          return (_a2 = config.value) == null ? void 0 : _a2.locale;
        }));
        const zIndex2 = useZIndex(vue.computed(() => {
          var _a2;
          return ((_a2 = config.value) == null ? void 0 : _a2.zIndex) || defaultInitialZIndex;
        }));
        const size = vue.computed(() => {
          var _a2;
          return vue.unref(sizeFallback) || ((_a2 = config.value) == null ? void 0 : _a2.size) || "";
        });
        provideGlobalConfig(vue.computed(() => vue.unref(config) || {}));
        return {
          ns,
          locale,
          zIndex: zIndex2,
          size
        };
      }
      const provideGlobalConfig = (config, app, global2 = false) => {
        var _a2;
        const inSetup = !!vue.getCurrentInstance();
        const oldConfig = inSetup ? useGlobalConfig() : void 0;
        const provideFn = (_a2 = app == null ? void 0 : app.provide) != null ? _a2 : inSetup ? vue.provide : void 0;
        if (!provideFn) {
          return;
        }
        const context = vue.computed(() => {
          const cfg = vue.unref(config);
          if (!(oldConfig == null ? void 0 : oldConfig.value))
            return cfg;
          return mergeConfig(oldConfig.value, cfg);
        });
        provideFn(configProviderContextKey, context);
        provideFn(localeContextKey, vue.computed(() => context.value.locale));
        provideFn(namespaceContextKey, vue.computed(() => context.value.namespace));
        provideFn(zIndexContextKey, vue.computed(() => context.value.zIndex));
        provideFn(SIZE_INJECTION_KEY, {
          size: vue.computed(() => context.value.size || "")
        });
        if (global2 || !globalConfig.value) {
          globalConfig.value = context.value;
        }
        return context;
      };
      const mergeConfig = (a2, b2) => {
        var _a2;
        const keys2 = [.../* @__PURE__ */ new Set([...keysOf(a2), ...keysOf(b2)])];
        const obj = {};
        for (const key2 of keys2) {
          obj[key2] = (_a2 = b2[key2]) != null ? _a2 : a2[key2];
        }
        return obj;
      };
      var _export_sfc$1 = (sfc, props) => {
        const target = sfc.__vccOpts || sfc;
        for (const [key2, val] of props) {
          target[key2] = val;
        }
        return target;
      };
      const iconProps = buildProps({
        size: {
          type: definePropType([Number, String])
        },
        color: {
          type: String
        }
      });
      const __default__$x = vue.defineComponent({
        name: "ElIcon",
        inheritAttrs: false
      });
      const _sfc_main$O = /* @__PURE__ */ vue.defineComponent({
        ...__default__$x,
        props: iconProps,
        setup(__props) {
          const props = __props;
          const ns = useNamespace("icon");
          const style = vue.computed(() => {
            const { size, color } = props;
            if (!size && !color)
              return {};
            return {
              fontSize: isUndefined(size) ? void 0 : addUnit(size),
              "--color": color
            };
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("i", vue.mergeProps({
              class: vue.unref(ns).b(),
              style: vue.unref(style)
            }, _ctx.$attrs), [
              vue.renderSlot(_ctx.$slots, "default")
            ], 16);
          };
        }
      });
      var Icon = /* @__PURE__ */ _export_sfc$1(_sfc_main$O, [["__file", "icon.vue"]]);
      const ElIcon = withInstall(Icon);
      const alertEffects = ["light", "dark"];
      const alertProps = buildProps({
        title: {
          type: String,
          default: ""
        },
        description: {
          type: String,
          default: ""
        },
        type: {
          type: String,
          values: keysOf(TypeComponentsMap),
          default: "info"
        },
        closable: {
          type: Boolean,
          default: true
        },
        closeText: {
          type: String,
          default: ""
        },
        showIcon: Boolean,
        center: Boolean,
        effect: {
          type: String,
          values: alertEffects,
          default: "light"
        }
      });
      const alertEmits = {
        close: (evt) => evt instanceof MouseEvent
      };
      const __default__$w = vue.defineComponent({
        name: "ElAlert"
      });
      const _sfc_main$N = /* @__PURE__ */ vue.defineComponent({
        ...__default__$w,
        props: alertProps,
        emits: alertEmits,
        setup(__props, { emit }) {
          const props = __props;
          const { Close } = TypeComponents;
          const slots = vue.useSlots();
          const ns = useNamespace("alert");
          const visible = vue.ref(true);
          const iconComponent = vue.computed(() => TypeComponentsMap[props.type]);
          const iconClass = vue.computed(() => [
            ns.e("icon"),
            { [ns.is("big")]: !!props.description || !!slots.default }
          ]);
          const withDescription = vue.computed(() => {
            return { "with-description": props.description || slots.default };
          });
          const close = (evt) => {
            visible.value = false;
            emit("close", evt);
          };
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.Transition, {
              name: vue.unref(ns).b("fade"),
              persisted: ""
            }, {
              default: vue.withCtx(() => [
                vue.withDirectives(vue.createElementVNode("div", {
                  class: vue.normalizeClass([vue.unref(ns).b(), vue.unref(ns).m(_ctx.type), vue.unref(ns).is("center", _ctx.center), vue.unref(ns).is(_ctx.effect)]),
                  role: "alert"
                }, [
                  _ctx.showIcon && vue.unref(iconComponent) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(iconClass))
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(iconComponent))))
                    ]),
                    _: 1
                  }, 8, ["class"])) : vue.createCommentVNode("v-if", true),
                  vue.createElementVNode("div", {
                    class: vue.normalizeClass(vue.unref(ns).e("content"))
                  }, [
                    _ctx.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", {
                      key: 0,
                      class: vue.normalizeClass([vue.unref(ns).e("title"), vue.unref(withDescription)])
                    }, [
                      vue.renderSlot(_ctx.$slots, "title", {}, () => [
                        vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
                      ])
                    ], 2)) : vue.createCommentVNode("v-if", true),
                    _ctx.$slots.default || _ctx.description ? (vue.openBlock(), vue.createElementBlock("p", {
                      key: 1,
                      class: vue.normalizeClass(vue.unref(ns).e("description"))
                    }, [
                      vue.renderSlot(_ctx.$slots, "default", {}, () => [
                        vue.createTextVNode(vue.toDisplayString(_ctx.description), 1)
                      ])
                    ], 2)) : vue.createCommentVNode("v-if", true),
                    _ctx.closable ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
                      _ctx.closeText ? (vue.openBlock(), vue.createElementBlock("div", {
                        key: 0,
                        class: vue.normalizeClass([vue.unref(ns).e("close-btn"), vue.unref(ns).is("customed")]),
                        onClick: close
                      }, vue.toDisplayString(_ctx.closeText), 3)) : (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                        key: 1,
                        class: vue.normalizeClass(vue.unref(ns).e("close-btn")),
                        onClick: close
                      }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(vue.unref(Close))
                        ]),
                        _: 1
                      }, 8, ["class"]))
                    ], 64)) : vue.createCommentVNode("v-if", true)
                  ], 2)
                ], 2), [
                  [vue.vShow, visible.value]
                ])
              ]),
              _: 3
            }, 8, ["name"]);
          };
        }
      });
      var Alert = /* @__PURE__ */ _export_sfc$1(_sfc_main$N, [["__file", "alert.vue"]]);
      const ElAlert = withInstall(Alert);
      const formContextKey = Symbol("formContextKey");
      const formItemContextKey = Symbol("formItemContextKey");
      const useFormSize = (fallback, ignore = {}) => {
        const emptyRef = vue.ref(void 0);
        const size = ignore.prop ? emptyRef : useProp("size");
        const globalConfig2 = ignore.global ? emptyRef : useGlobalSize();
        const form = ignore.form ? { size: void 0 } : vue.inject(formContextKey, void 0);
        const formItem = ignore.formItem ? { size: void 0 } : vue.inject(formItemContextKey, void 0);
        return vue.computed(() => size.value || vue.unref(fallback) || (formItem == null ? void 0 : formItem.size) || (form == null ? void 0 : form.size) || globalConfig2.value || "");
      };
      const useFormDisabled = (fallback) => {
        const disabled = useProp("disabled");
        const form = vue.inject(formContextKey, void 0);
        return vue.computed(() => disabled.value || vue.unref(fallback) || (form == null ? void 0 : form.disabled) || false);
      };
      const useFormItem = () => {
        const form = vue.inject(formContextKey, void 0);
        const formItem = vue.inject(formItemContextKey, void 0);
        return {
          form,
          formItem
        };
      };
      const useFormItemInputId = (props, {
        formItemContext,
        disableIdGeneration,
        disableIdManagement
      }) => {
        if (!disableIdGeneration) {
          disableIdGeneration = vue.ref(false);
        }
        if (!disableIdManagement) {
          disableIdManagement = vue.ref(false);
        }
        const inputId = vue.ref();
        let idUnwatch = void 0;
        const isLabeledByFormItem = vue.computed(() => {
          var _a2;
          return !!(!props.label && formItemContext && formItemContext.inputIds && ((_a2 = formItemContext.inputIds) == null ? void 0 : _a2.length) <= 1);
        });
        vue.onMounted(() => {
          idUnwatch = vue.watch([vue.toRef(props, "id"), disableIdGeneration], ([id, disableIdGeneration2]) => {
            const newId = id != null ? id : !disableIdGeneration2 ? useId().value : void 0;
            if (newId !== inputId.value) {
              if (formItemContext == null ? void 0 : formItemContext.removeInputId) {
                inputId.value && formItemContext.removeInputId(inputId.value);
                if (!(disableIdManagement == null ? void 0 : disableIdManagement.value) && !disableIdGeneration2 && newId) {
                  formItemContext.addInputId(newId);
                }
              }
              inputId.value = newId;
            }
          }, { immediate: true });
        });
        vue.onUnmounted(() => {
          idUnwatch && idUnwatch();
          if (formItemContext == null ? void 0 : formItemContext.removeInputId) {
            inputId.value && formItemContext.removeInputId(inputId.value);
          }
        });
        return {
          isLabeledByFormItem,
          inputId
        };
      };
      const formMetaProps = buildProps({
        size: {
          type: String,
          values: componentSizes
        },
        disabled: Boolean
      });
      const formProps = buildProps({
        ...formMetaProps,
        model: Object,
        rules: {
          type: definePropType(Object)
        },
        labelPosition: {
          type: String,
          values: ["left", "right", "top"],
          default: "right"
        },
        requireAsteriskPosition: {
          type: String,
          values: ["left", "right"],
          default: "left"
        },
        labelWidth: {
          type: [String, Number],
          default: ""
        },
        labelSuffix: {
          type: String,
          default: ""
        },
        inline: Boolean,
        inlineMessage: Boolean,
        statusIcon: Boolean,
        showMessage: {
          type: Boolean,
          default: true
        },
        validateOnRuleChange: {
          type: Boolean,
          default: true
        },
        hideRequiredAsterisk: Boolean,
        scrollToError: Boolean,
        scrollIntoViewOptions: {
          type: [Object, Boolean]
        }
      });
      const formEmits = {
        validate: (prop, isValid, message) => (isArray$1(prop) || isString(prop)) && isBoolean(isValid) && isString(message)
      };
      function useFormLabelWidth() {
        const potentialLabelWidthArr = vue.ref([]);
        const autoLabelWidth = vue.computed(() => {
          if (!potentialLabelWidthArr.value.length)
            return "0";
          const max = Math.max(...potentialLabelWidthArr.value);
          return max ? `${max}px` : "";
        });
        function getLabelWidthIndex(width) {
          const index = potentialLabelWidthArr.value.indexOf(width);
          if (index === -1 && autoLabelWidth.value === "0")
            ;
          return index;
        }
        function registerLabelWidth(val, oldVal) {
          if (val && oldVal) {
            const index = getLabelWidthIndex(oldVal);
            potentialLabelWidthArr.value.splice(index, 1, val);
          } else if (val) {
            potentialLabelWidthArr.value.push(val);
          }
        }
        function deregisterLabelWidth(val) {
          const index = getLabelWidthIndex(val);
          if (index > -1) {
            potentialLabelWidthArr.value.splice(index, 1);
          }
        }
        return {
          autoLabelWidth,
          registerLabelWidth,
          deregisterLabelWidth
        };
      }
      const filterFields = (fields, props) => {
        const normalized = castArray(props);
        return normalized.length > 0 ? fields.filter((field) => field.prop && normalized.includes(field.prop)) : fields;
      };
      const COMPONENT_NAME$5 = "ElForm";
      const __default__$v = vue.defineComponent({
        name: COMPONENT_NAME$5
      });
      const _sfc_main$M = /* @__PURE__ */ vue.defineComponent({
        ...__default__$v,
        props: formProps,
        emits: formEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const fields = [];
          const formSize = useFormSize();
          const ns = useNamespace("form");
          const formClasses = vue.computed(() => {
            const { labelPosition, inline } = props;
            return [
              ns.b(),
              ns.m(formSize.value || "default"),
              {
                [ns.m(`label-${labelPosition}`)]: labelPosition,
                [ns.m("inline")]: inline
              }
            ];
          });
          const getField = (prop) => {
            return fields.find((field) => field.prop === prop);
          };
          const addField = (field) => {
            fields.push(field);
          };
          const removeField = (field) => {
            if (field.prop) {
              fields.splice(fields.indexOf(field), 1);
            }
          };
          const resetFields = (properties = []) => {
            if (!props.model) {
              return;
            }
            filterFields(fields, properties).forEach((field) => field.resetField());
          };
          const clearValidate = (props2 = []) => {
            filterFields(fields, props2).forEach((field) => field.clearValidate());
          };
          const isValidatable = vue.computed(() => {
            const hasModel = !!props.model;
            return hasModel;
          });
          const obtainValidateFields = (props2) => {
            if (fields.length === 0)
              return [];
            const filteredFields = filterFields(fields, props2);
            if (!filteredFields.length) {
              return [];
            }
            return filteredFields;
          };
          const validate = async (callback) => validateField(void 0, callback);
          const doValidateField = async (props2 = []) => {
            if (!isValidatable.value)
              return false;
            const fields2 = obtainValidateFields(props2);
            if (fields2.length === 0)
              return true;
            let validationErrors = {};
            for (const field of fields2) {
              try {
                await field.validate("");
              } catch (fields3) {
                validationErrors = {
                  ...validationErrors,
                  ...fields3
                };
              }
            }
            if (Object.keys(validationErrors).length === 0)
              return true;
            return Promise.reject(validationErrors);
          };
          const validateField = async (modelProps = [], callback) => {
            const shouldThrow = !isFunction$1(callback);
            try {
              const result = await doValidateField(modelProps);
              if (result === true) {
                callback == null ? void 0 : callback(result);
              }
              return result;
            } catch (e) {
              if (e instanceof Error)
                throw e;
              const invalidFields = e;
              if (props.scrollToError) {
                scrollToField(Object.keys(invalidFields)[0]);
              }
              callback == null ? void 0 : callback(false, invalidFields);
              return shouldThrow && Promise.reject(invalidFields);
            }
          };
          const scrollToField = (prop) => {
            var _a2;
            const field = filterFields(fields, prop)[0];
            if (field) {
              (_a2 = field.$el) == null ? void 0 : _a2.scrollIntoView(props.scrollIntoViewOptions);
            }
          };
          vue.watch(() => props.rules, () => {
            if (props.validateOnRuleChange) {
              validate().catch((err) => debugWarn());
            }
          }, { deep: true });
          vue.provide(formContextKey, vue.reactive({
            ...vue.toRefs(props),
            emit,
            resetFields,
            clearValidate,
            validateField,
            getField,
            addField,
            removeField,
            ...useFormLabelWidth()
          }));
          expose({
            validate,
            validateField,
            resetFields,
            clearValidate,
            scrollToField
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("form", {
              class: vue.normalizeClass(vue.unref(formClasses))
            }, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 2);
          };
        }
      });
      var Form = /* @__PURE__ */ _export_sfc$1(_sfc_main$M, [["__file", "form.vue"]]);
      var define_process_env_default = {};
      function _extends() {
        _extends = Object.assign ? Object.assign.bind() : function(target) {
          for (var i = 1; i < arguments.length; i++) {
            var source = arguments[i];
            for (var key2 in source) {
              if (Object.prototype.hasOwnProperty.call(source, key2)) {
                target[key2] = source[key2];
              }
            }
          }
          return target;
        };
        return _extends.apply(this, arguments);
      }
      function _inheritsLoose(subClass, superClass) {
        subClass.prototype = Object.create(superClass.prototype);
        subClass.prototype.constructor = subClass;
        _setPrototypeOf(subClass, superClass);
      }
      function _getPrototypeOf(o2) {
        _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf2(o22) {
          return o22.__proto__ || Object.getPrototypeOf(o22);
        };
        return _getPrototypeOf(o2);
      }
      function _setPrototypeOf(o2, p2) {
        _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o22, p22) {
          o22.__proto__ = p22;
          return o22;
        };
        return _setPrototypeOf(o2, p2);
      }
      function _isNativeReflectConstruct() {
        if (typeof Reflect === "undefined" || !Reflect.construct)
          return false;
        if (Reflect.construct.sham)
          return false;
        if (typeof Proxy === "function")
          return true;
        try {
          Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {
          }));
          return true;
        } catch (e) {
          return false;
        }
      }
      function _construct(Parent, args, Class) {
        if (_isNativeReflectConstruct()) {
          _construct = Reflect.construct.bind();
        } else {
          _construct = function _construct2(Parent2, args2, Class2) {
            var a2 = [null];
            a2.push.apply(a2, args2);
            var Constructor = Function.bind.apply(Parent2, a2);
            var instance = new Constructor();
            if (Class2)
              _setPrototypeOf(instance, Class2.prototype);
            return instance;
          };
        }
        return _construct.apply(null, arguments);
      }
      function _isNativeFunction(fn2) {
        return Function.toString.call(fn2).indexOf("[native code]") !== -1;
      }
      function _wrapNativeSuper(Class) {
        var _cache = typeof Map === "function" ? /* @__PURE__ */ new Map() : void 0;
        _wrapNativeSuper = function _wrapNativeSuper2(Class2) {
          if (Class2 === null || !_isNativeFunction(Class2))
            return Class2;
          if (typeof Class2 !== "function") {
            throw new TypeError("Super expression must either be null or a function");
          }
          if (typeof _cache !== "undefined") {
            if (_cache.has(Class2))
              return _cache.get(Class2);
            _cache.set(Class2, Wrapper);
          }
          function Wrapper() {
            return _construct(Class2, arguments, _getPrototypeOf(this).constructor);
          }
          Wrapper.prototype = Object.create(Class2.prototype, {
            constructor: {
              value: Wrapper,
              enumerable: false,
              writable: true,
              configurable: true
            }
          });
          return _setPrototypeOf(Wrapper, Class2);
        };
        return _wrapNativeSuper(Class);
      }
      var formatRegExp = /%[sdj%]/g;
      var warning = function warning2() {
      };
      if (typeof process !== "undefined" && define_process_env_default && false) {
        warning = function warning3(type4, errors) {
          if (typeof console !== "undefined" && console.warn && typeof ASYNC_VALIDATOR_NO_WARNING === "undefined") {
            if (errors.every(function(e) {
              return typeof e === "string";
            })) {
              console.warn(type4, errors);
            }
          }
        };
      }
      function convertFieldsError(errors) {
        if (!errors || !errors.length)
          return null;
        var fields = {};
        errors.forEach(function(error) {
          var field = error.field;
          fields[field] = fields[field] || [];
          fields[field].push(error);
        });
        return fields;
      }
      function format(template) {
        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
          args[_key - 1] = arguments[_key];
        }
        var i = 0;
        var len = args.length;
        if (typeof template === "function") {
          return template.apply(null, args);
        }
        if (typeof template === "string") {
          var str = template.replace(formatRegExp, function(x2) {
            if (x2 === "%%") {
              return "%";
            }
            if (i >= len) {
              return x2;
            }
            switch (x2) {
              case "%s":
                return String(args[i++]);
              case "%d":
                return Number(args[i++]);
              case "%j":
                try {
                  return JSON.stringify(args[i++]);
                } catch (_2) {
                  return "[Circular]";
                }
                break;
              default:
                return x2;
            }
          });
          return str;
        }
        return template;
      }
      function isNativeStringType(type4) {
        return type4 === "string" || type4 === "url" || type4 === "hex" || type4 === "email" || type4 === "date" || type4 === "pattern";
      }
      function isEmptyValue(value, type4) {
        if (value === void 0 || value === null) {
          return true;
        }
        if (type4 === "array" && Array.isArray(value) && !value.length) {
          return true;
        }
        if (isNativeStringType(type4) && typeof value === "string" && !value) {
          return true;
        }
        return false;
      }
      function asyncParallelArray(arr, func, callback) {
        var results = [];
        var total = 0;
        var arrLength = arr.length;
        function count(errors) {
          results.push.apply(results, errors || []);
          total++;
          if (total === arrLength) {
            callback(results);
          }
        }
        arr.forEach(function(a2) {
          func(a2, count);
        });
      }
      function asyncSerialArray(arr, func, callback) {
        var index = 0;
        var arrLength = arr.length;
        function next(errors) {
          if (errors && errors.length) {
            callback(errors);
            return;
          }
          var original = index;
          index = index + 1;
          if (original < arrLength) {
            func(arr[original], next);
          } else {
            callback([]);
          }
        }
        next([]);
      }
      function flattenObjArr(objArr) {
        var ret = [];
        Object.keys(objArr).forEach(function(k) {
          ret.push.apply(ret, objArr[k] || []);
        });
        return ret;
      }
      var AsyncValidationError = /* @__PURE__ */ function(_Error) {
        _inheritsLoose(AsyncValidationError2, _Error);
        function AsyncValidationError2(errors, fields) {
          var _this;
          _this = _Error.call(this, "Async Validation Error") || this;
          _this.errors = errors;
          _this.fields = fields;
          return _this;
        }
        return AsyncValidationError2;
      }(/* @__PURE__ */ _wrapNativeSuper(Error));
      function asyncMap(objArr, option, func, callback, source) {
        if (option.first) {
          var _pending = new Promise(function(resolve, reject) {
            var next = function next2(errors) {
              callback(errors);
              return errors.length ? reject(new AsyncValidationError(errors, convertFieldsError(errors))) : resolve(source);
            };
            var flattenArr = flattenObjArr(objArr);
            asyncSerialArray(flattenArr, func, next);
          });
          _pending["catch"](function(e) {
            return e;
          });
          return _pending;
        }
        var firstFields = option.firstFields === true ? Object.keys(objArr) : option.firstFields || [];
        var objArrKeys = Object.keys(objArr);
        var objArrLength = objArrKeys.length;
        var total = 0;
        var results = [];
        var pending = new Promise(function(resolve, reject) {
          var next = function next2(errors) {
            results.push.apply(results, errors);
            total++;
            if (total === objArrLength) {
              callback(results);
              return results.length ? reject(new AsyncValidationError(results, convertFieldsError(results))) : resolve(source);
            }
          };
          if (!objArrKeys.length) {
            callback(results);
            resolve(source);
          }
          objArrKeys.forEach(function(key2) {
            var arr = objArr[key2];
            if (firstFields.indexOf(key2) !== -1) {
              asyncSerialArray(arr, func, next);
            } else {
              asyncParallelArray(arr, func, next);
            }
          });
        });
        pending["catch"](function(e) {
          return e;
        });
        return pending;
      }
      function isErrorObj(obj) {
        return !!(obj && obj.message !== void 0);
      }
      function getValue(value, path) {
        var v2 = value;
        for (var i = 0; i < path.length; i++) {
          if (v2 == void 0) {
            return v2;
          }
          v2 = v2[path[i]];
        }
        return v2;
      }
      function complementError(rule2, source) {
        return function(oe) {
          var fieldValue;
          if (rule2.fullFields) {
            fieldValue = getValue(source, rule2.fullFields);
          } else {
            fieldValue = source[oe.field || rule2.fullField];
          }
          if (isErrorObj(oe)) {
            oe.field = oe.field || rule2.fullField;
            oe.fieldValue = fieldValue;
            return oe;
          }
          return {
            message: typeof oe === "function" ? oe() : oe,
            fieldValue,
            field: oe.field || rule2.fullField
          };
        };
      }
      function deepMerge(target, source) {
        if (source) {
          for (var s2 in source) {
            if (source.hasOwnProperty(s2)) {
              var value = source[s2];
              if (typeof value === "object" && typeof target[s2] === "object") {
                target[s2] = _extends({}, target[s2], value);
              } else {
                target[s2] = value;
              }
            }
          }
        }
        return target;
      }
      var required$1 = function required(rule2, value, source, errors, options, type4) {
        if (rule2.required && (!source.hasOwnProperty(rule2.field) || isEmptyValue(value, type4 || rule2.type))) {
          errors.push(format(options.messages.required, rule2.fullField));
        }
      };
      var whitespace = function whitespace2(rule2, value, source, errors, options) {
        if (/^\s+$/.test(value) || value === "") {
          errors.push(format(options.messages.whitespace, rule2.fullField));
        }
      };
      var urlReg;
      var getUrlRegex = function() {
        if (urlReg) {
          return urlReg;
        }
        var word = "[a-fA-F\\d:]";
        var b2 = function b22(options) {
          return options && options.includeBoundaries ? "(?:(?<=\\s|^)(?=" + word + ")|(?<=" + word + ")(?=\\s|$))" : "";
        };
        var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
        var v6seg = "[a-fA-F\\d]{1,4}";
        var v6 = ("\n(?:\n(?:" + v6seg + ":){7}(?:" + v6seg + "|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:" + v6seg + ":){6}(?:" + v4 + "|:" + v6seg + "|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:" + v6seg + ":){5}(?::" + v4 + "|(?::" + v6seg + "){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:" + v6seg + ":){4}(?:(?::" + v6seg + "){0,1}:" + v4 + "|(?::" + v6seg + "){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:" + v6seg + ":){3}(?:(?::" + v6seg + "){0,2}:" + v4 + "|(?::" + v6seg + "){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:" + v6seg + ":){2}(?:(?::" + v6seg + "){0,3}:" + v4 + "|(?::" + v6seg + "){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:" + v6seg + ":){1}(?:(?::" + v6seg + "){0,4}:" + v4 + "|(?::" + v6seg + "){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::" + v6seg + "){0,5}:" + v4 + "|(?::" + v6seg + "){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n").replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
        var v46Exact = new RegExp("(?:^" + v4 + "$)|(?:^" + v6 + "$)");
        var v4exact = new RegExp("^" + v4 + "$");
        var v6exact = new RegExp("^" + v6 + "$");
        var ip = function ip2(options) {
          return options && options.exact ? v46Exact : new RegExp("(?:" + b2(options) + v4 + b2(options) + ")|(?:" + b2(options) + v6 + b2(options) + ")", "g");
        };
        ip.v4 = function(options) {
          return options && options.exact ? v4exact : new RegExp("" + b2(options) + v4 + b2(options), "g");
        };
        ip.v6 = function(options) {
          return options && options.exact ? v6exact : new RegExp("" + b2(options) + v6 + b2(options), "g");
        };
        var protocol = "(?:(?:[a-z]+:)?//)";
        var auth = "(?:\\S+(?::\\S*)?@)?";
        var ipv4 = ip.v4().source;
        var ipv6 = ip.v6().source;
        var host = "(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)";
        var domain = "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*";
        var tld = "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))";
        var port = "(?::\\d{2,5})?";
        var path = '(?:[/?#][^\\s"]*)?';
        var regex = "(?:" + protocol + "|www\\.)" + auth + "(?:localhost|" + ipv4 + "|" + ipv6 + "|" + host + domain + tld + ")" + port + path;
        urlReg = new RegExp("(?:^" + regex + "$)", "i");
        return urlReg;
      };
      var pattern$2 = {
        // http://emailregex.com/
        email: /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,
        // url: new RegExp(
        //   '^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$',
        //   'i',
        // ),
        hex: /^#?([a-f0-9]{6}|[a-f0-9]{3})$/i
      };
      var types = {
        integer: function integer(value) {
          return types.number(value) && parseInt(value, 10) === value;
        },
        "float": function float(value) {
          return types.number(value) && !types.integer(value);
        },
        array: function array(value) {
          return Array.isArray(value);
        },
        regexp: function regexp(value) {
          if (value instanceof RegExp) {
            return true;
          }
          try {
            return !!new RegExp(value);
          } catch (e) {
            return false;
          }
        },
        date: function date(value) {
          return typeof value.getTime === "function" && typeof value.getMonth === "function" && typeof value.getYear === "function" && !isNaN(value.getTime());
        },
        number: function number(value) {
          if (isNaN(value)) {
            return false;
          }
          return typeof value === "number";
        },
        object: function object(value) {
          return typeof value === "object" && !types.array(value);
        },
        method: function method(value) {
          return typeof value === "function";
        },
        email: function email(value) {
          return typeof value === "string" && value.length <= 320 && !!value.match(pattern$2.email);
        },
        url: function url(value) {
          return typeof value === "string" && value.length <= 2048 && !!value.match(getUrlRegex());
        },
        hex: function hex(value) {
          return typeof value === "string" && !!value.match(pattern$2.hex);
        }
      };
      var type$1 = function type(rule2, value, source, errors, options) {
        if (rule2.required && value === void 0) {
          required$1(rule2, value, source, errors, options);
          return;
        }
        var custom = ["integer", "float", "array", "regexp", "object", "method", "email", "number", "date", "url", "hex"];
        var ruleType = rule2.type;
        if (custom.indexOf(ruleType) > -1) {
          if (!types[ruleType](value)) {
            errors.push(format(options.messages.types[ruleType], rule2.fullField, rule2.type));
          }
        } else if (ruleType && typeof value !== rule2.type) {
          errors.push(format(options.messages.types[ruleType], rule2.fullField, rule2.type));
        }
      };
      var range = function range2(rule2, value, source, errors, options) {
        var len = typeof rule2.len === "number";
        var min = typeof rule2.min === "number";
        var max = typeof rule2.max === "number";
        var spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
        var val = value;
        var key2 = null;
        var num = typeof value === "number";
        var str = typeof value === "string";
        var arr = Array.isArray(value);
        if (num) {
          key2 = "number";
        } else if (str) {
          key2 = "string";
        } else if (arr) {
          key2 = "array";
        }
        if (!key2) {
          return false;
        }
        if (arr) {
          val = value.length;
        }
        if (str) {
          val = value.replace(spRegexp, "_").length;
        }
        if (len) {
          if (val !== rule2.len) {
            errors.push(format(options.messages[key2].len, rule2.fullField, rule2.len));
          }
        } else if (min && !max && val < rule2.min) {
          errors.push(format(options.messages[key2].min, rule2.fullField, rule2.min));
        } else if (max && !min && val > rule2.max) {
          errors.push(format(options.messages[key2].max, rule2.fullField, rule2.max));
        } else if (min && max && (val < rule2.min || val > rule2.max)) {
          errors.push(format(options.messages[key2].range, rule2.fullField, rule2.min, rule2.max));
        }
      };
      var ENUM$1 = "enum";
      var enumerable$1 = function enumerable(rule2, value, source, errors, options) {
        rule2[ENUM$1] = Array.isArray(rule2[ENUM$1]) ? rule2[ENUM$1] : [];
        if (rule2[ENUM$1].indexOf(value) === -1) {
          errors.push(format(options.messages[ENUM$1], rule2.fullField, rule2[ENUM$1].join(", ")));
        }
      };
      var pattern$1 = function pattern(rule2, value, source, errors, options) {
        if (rule2.pattern) {
          if (rule2.pattern instanceof RegExp) {
            rule2.pattern.lastIndex = 0;
            if (!rule2.pattern.test(value)) {
              errors.push(format(options.messages.pattern.mismatch, rule2.fullField, value, rule2.pattern));
            }
          } else if (typeof rule2.pattern === "string") {
            var _pattern = new RegExp(rule2.pattern);
            if (!_pattern.test(value)) {
              errors.push(format(options.messages.pattern.mismatch, rule2.fullField, value, rule2.pattern));
            }
          }
        }
      };
      var rules = {
        required: required$1,
        whitespace,
        type: type$1,
        range,
        "enum": enumerable$1,
        pattern: pattern$1
      };
      var string = function string2(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value, "string") && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options, "string");
          if (!isEmptyValue(value, "string")) {
            rules.type(rule2, value, source, errors, options);
            rules.range(rule2, value, source, errors, options);
            rules.pattern(rule2, value, source, errors, options);
            if (rule2.whitespace === true) {
              rules.whitespace(rule2, value, source, errors, options);
            }
          }
        }
        callback(errors);
      };
      var method2 = function method3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var number2 = function number3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (value === "") {
            value = void 0;
          }
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
            rules.range(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var _boolean = function _boolean2(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var regexp2 = function regexp3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (!isEmptyValue(value)) {
            rules.type(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var integer2 = function integer3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
            rules.range(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var floatFn = function floatFn2(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
            rules.range(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var array2 = function array3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if ((value === void 0 || value === null) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options, "array");
          if (value !== void 0 && value !== null) {
            rules.type(rule2, value, source, errors, options);
            rules.range(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var object2 = function object3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules.type(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var ENUM = "enum";
      var enumerable2 = function enumerable3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (value !== void 0) {
            rules[ENUM](rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var pattern2 = function pattern3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value, "string") && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (!isEmptyValue(value, "string")) {
            rules.pattern(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var date2 = function date3(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value, "date") && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
          if (!isEmptyValue(value, "date")) {
            var dateObject;
            if (value instanceof Date) {
              dateObject = value;
            } else {
              dateObject = new Date(value);
            }
            rules.type(rule2, dateObject, source, errors, options);
            if (dateObject) {
              rules.range(rule2, dateObject.getTime(), source, errors, options);
            }
          }
        }
        callback(errors);
      };
      var required2 = function required3(rule2, value, callback, source, options) {
        var errors = [];
        var type4 = Array.isArray(value) ? "array" : typeof value;
        rules.required(rule2, value, source, errors, options, type4);
        callback(errors);
      };
      var type2 = function type3(rule2, value, callback, source, options) {
        var ruleType = rule2.type;
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value, ruleType) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options, ruleType);
          if (!isEmptyValue(value, ruleType)) {
            rules.type(rule2, value, source, errors, options);
          }
        }
        callback(errors);
      };
      var any = function any2(rule2, value, callback, source, options) {
        var errors = [];
        var validate = rule2.required || !rule2.required && source.hasOwnProperty(rule2.field);
        if (validate) {
          if (isEmptyValue(value) && !rule2.required) {
            return callback();
          }
          rules.required(rule2, value, source, errors, options);
        }
        callback(errors);
      };
      var validators = {
        string,
        method: method2,
        number: number2,
        "boolean": _boolean,
        regexp: regexp2,
        integer: integer2,
        "float": floatFn,
        array: array2,
        object: object2,
        "enum": enumerable2,
        pattern: pattern2,
        date: date2,
        url: type2,
        hex: type2,
        email: type2,
        required: required2,
        any
      };
      function newMessages() {
        return {
          "default": "Validation error on field %s",
          required: "%s is required",
          "enum": "%s must be one of %s",
          whitespace: "%s cannot be empty",
          date: {
            format: "%s date %s is invalid for format %s",
            parse: "%s date could not be parsed, %s is invalid ",
            invalid: "%s date %s is invalid"
          },
          types: {
            string: "%s is not a %s",
            method: "%s is not a %s (function)",
            array: "%s is not an %s",
            object: "%s is not an %s",
            number: "%s is not a %s",
            date: "%s is not a %s",
            "boolean": "%s is not a %s",
            integer: "%s is not an %s",
            "float": "%s is not a %s",
            regexp: "%s is not a valid %s",
            email: "%s is not a valid %s",
            url: "%s is not a valid %s",
            hex: "%s is not a valid %s"
          },
          string: {
            len: "%s must be exactly %s characters",
            min: "%s must be at least %s characters",
            max: "%s cannot be longer than %s characters",
            range: "%s must be between %s and %s characters"
          },
          number: {
            len: "%s must equal %s",
            min: "%s cannot be less than %s",
            max: "%s cannot be greater than %s",
            range: "%s must be between %s and %s"
          },
          array: {
            len: "%s must be exactly %s in length",
            min: "%s cannot be less than %s in length",
            max: "%s cannot be greater than %s in length",
            range: "%s must be between %s and %s in length"
          },
          pattern: {
            mismatch: "%s value %s does not match pattern %s"
          },
          clone: function clone2() {
            var cloned = JSON.parse(JSON.stringify(this));
            cloned.clone = this.clone;
            return cloned;
          }
        };
      }
      var messages = newMessages();
      var Schema = /* @__PURE__ */ function() {
        function Schema2(descriptor) {
          this.rules = null;
          this._messages = messages;
          this.define(descriptor);
        }
        var _proto = Schema2.prototype;
        _proto.define = function define(rules2) {
          var _this = this;
          if (!rules2) {
            throw new Error("Cannot configure a schema with no rules");
          }
          if (typeof rules2 !== "object" || Array.isArray(rules2)) {
            throw new Error("Rules must be an object");
          }
          this.rules = {};
          Object.keys(rules2).forEach(function(name) {
            var item = rules2[name];
            _this.rules[name] = Array.isArray(item) ? item : [item];
          });
        };
        _proto.messages = function messages2(_messages) {
          if (_messages) {
            this._messages = deepMerge(newMessages(), _messages);
          }
          return this._messages;
        };
        _proto.validate = function validate(source_, o2, oc) {
          var _this2 = this;
          if (o2 === void 0) {
            o2 = {};
          }
          if (oc === void 0) {
            oc = function oc2() {
            };
          }
          var source = source_;
          var options = o2;
          var callback = oc;
          if (typeof options === "function") {
            callback = options;
            options = {};
          }
          if (!this.rules || Object.keys(this.rules).length === 0) {
            if (callback) {
              callback(null, source);
            }
            return Promise.resolve(source);
          }
          function complete(results) {
            var errors = [];
            var fields = {};
            function add(e) {
              if (Array.isArray(e)) {
                var _errors;
                errors = (_errors = errors).concat.apply(_errors, e);
              } else {
                errors.push(e);
              }
            }
            for (var i = 0; i < results.length; i++) {
              add(results[i]);
            }
            if (!errors.length) {
              callback(null, source);
            } else {
              fields = convertFieldsError(errors);
              callback(errors, fields);
            }
          }
          if (options.messages) {
            var messages$1 = this.messages();
            if (messages$1 === messages) {
              messages$1 = newMessages();
            }
            deepMerge(messages$1, options.messages);
            options.messages = messages$1;
          } else {
            options.messages = this.messages();
          }
          var series = {};
          var keys2 = options.keys || Object.keys(this.rules);
          keys2.forEach(function(z) {
            var arr = _this2.rules[z];
            var value = source[z];
            arr.forEach(function(r) {
              var rule2 = r;
              if (typeof rule2.transform === "function") {
                if (source === source_) {
                  source = _extends({}, source);
                }
                value = source[z] = rule2.transform(value);
              }
              if (typeof rule2 === "function") {
                rule2 = {
                  validator: rule2
                };
              } else {
                rule2 = _extends({}, rule2);
              }
              rule2.validator = _this2.getValidationMethod(rule2);
              if (!rule2.validator) {
                return;
              }
              rule2.field = z;
              rule2.fullField = rule2.fullField || z;
              rule2.type = _this2.getType(rule2);
              series[z] = series[z] || [];
              series[z].push({
                rule: rule2,
                value,
                source,
                field: z
              });
            });
          });
          var errorFields = {};
          return asyncMap(series, options, function(data, doIt) {
            var rule2 = data.rule;
            var deep = (rule2.type === "object" || rule2.type === "array") && (typeof rule2.fields === "object" || typeof rule2.defaultField === "object");
            deep = deep && (rule2.required || !rule2.required && data.value);
            rule2.field = data.field;
            function addFullField(key2, schema) {
              return _extends({}, schema, {
                fullField: rule2.fullField + "." + key2,
                fullFields: rule2.fullFields ? [].concat(rule2.fullFields, [key2]) : [key2]
              });
            }
            function cb(e) {
              if (e === void 0) {
                e = [];
              }
              var errorList = Array.isArray(e) ? e : [e];
              if (!options.suppressWarning && errorList.length) {
                Schema2.warning("async-validator:", errorList);
              }
              if (errorList.length && rule2.message !== void 0) {
                errorList = [].concat(rule2.message);
              }
              var filledErrors = errorList.map(complementError(rule2, source));
              if (options.first && filledErrors.length) {
                errorFields[rule2.field] = 1;
                return doIt(filledErrors);
              }
              if (!deep) {
                doIt(filledErrors);
              } else {
                if (rule2.required && !data.value) {
                  if (rule2.message !== void 0) {
                    filledErrors = [].concat(rule2.message).map(complementError(rule2, source));
                  } else if (options.error) {
                    filledErrors = [options.error(rule2, format(options.messages.required, rule2.field))];
                  }
                  return doIt(filledErrors);
                }
                var fieldsSchema = {};
                if (rule2.defaultField) {
                  Object.keys(data.value).map(function(key2) {
                    fieldsSchema[key2] = rule2.defaultField;
                  });
                }
                fieldsSchema = _extends({}, fieldsSchema, data.rule.fields);
                var paredFieldsSchema = {};
                Object.keys(fieldsSchema).forEach(function(field) {
                  var fieldSchema = fieldsSchema[field];
                  var fieldSchemaList = Array.isArray(fieldSchema) ? fieldSchema : [fieldSchema];
                  paredFieldsSchema[field] = fieldSchemaList.map(addFullField.bind(null, field));
                });
                var schema = new Schema2(paredFieldsSchema);
                schema.messages(options.messages);
                if (data.rule.options) {
                  data.rule.options.messages = options.messages;
                  data.rule.options.error = options.error;
                }
                schema.validate(data.value, data.rule.options || options, function(errs) {
                  var finalErrors = [];
                  if (filledErrors && filledErrors.length) {
                    finalErrors.push.apply(finalErrors, filledErrors);
                  }
                  if (errs && errs.length) {
                    finalErrors.push.apply(finalErrors, errs);
                  }
                  doIt(finalErrors.length ? finalErrors : null);
                });
              }
            }
            var res;
            if (rule2.asyncValidator) {
              res = rule2.asyncValidator(rule2, data.value, cb, data.source, options);
            } else if (rule2.validator) {
              try {
                res = rule2.validator(rule2, data.value, cb, data.source, options);
              } catch (error) {
                console.error == null ? void 0 : console.error(error);
                if (!options.suppressValidatorError) {
                  setTimeout(function() {
                    throw error;
                  }, 0);
                }
                cb(error.message);
              }
              if (res === true) {
                cb();
              } else if (res === false) {
                cb(typeof rule2.message === "function" ? rule2.message(rule2.fullField || rule2.field) : rule2.message || (rule2.fullField || rule2.field) + " fails");
              } else if (res instanceof Array) {
                cb(res);
              } else if (res instanceof Error) {
                cb(res.message);
              }
            }
            if (res && res.then) {
              res.then(function() {
                return cb();
              }, function(e) {
                return cb(e);
              });
            }
          }, function(results) {
            complete(results);
          }, source);
        };
        _proto.getType = function getType(rule2) {
          if (rule2.type === void 0 && rule2.pattern instanceof RegExp) {
            rule2.type = "pattern";
          }
          if (typeof rule2.validator !== "function" && rule2.type && !validators.hasOwnProperty(rule2.type)) {
            throw new Error(format("Unknown rule type %s", rule2.type));
          }
          return rule2.type || "string";
        };
        _proto.getValidationMethod = function getValidationMethod(rule2) {
          if (typeof rule2.validator === "function") {
            return rule2.validator;
          }
          var keys2 = Object.keys(rule2);
          var messageIndex = keys2.indexOf("message");
          if (messageIndex !== -1) {
            keys2.splice(messageIndex, 1);
          }
          if (keys2.length === 1 && keys2[0] === "required") {
            return validators.required;
          }
          return validators[this.getType(rule2)] || void 0;
        };
        return Schema2;
      }();
      Schema.register = function register(type4, validator) {
        if (typeof validator !== "function") {
          throw new Error("Cannot register a validator by type, validator is not a function");
        }
        validators[type4] = validator;
      };
      Schema.warning = warning;
      Schema.messages = messages;
      Schema.validators = validators;
      const formItemValidateStates = [
        "",
        "error",
        "validating",
        "success"
      ];
      const formItemProps = buildProps({
        label: String,
        labelWidth: {
          type: [String, Number],
          default: ""
        },
        prop: {
          type: definePropType([String, Array])
        },
        required: {
          type: Boolean,
          default: void 0
        },
        rules: {
          type: definePropType([Object, Array])
        },
        error: String,
        validateStatus: {
          type: String,
          values: formItemValidateStates
        },
        for: String,
        inlineMessage: {
          type: [String, Boolean],
          default: ""
        },
        showMessage: {
          type: Boolean,
          default: true
        },
        size: {
          type: String,
          values: componentSizes
        }
      });
      const COMPONENT_NAME$4 = "ElLabelWrap";
      var FormLabelWrap = vue.defineComponent({
        name: COMPONENT_NAME$4,
        props: {
          isAutoWidth: Boolean,
          updateAll: Boolean
        },
        setup(props, {
          slots
        }) {
          const formContext = vue.inject(formContextKey, void 0);
          const formItemContext = vue.inject(formItemContextKey);
          if (!formItemContext)
            throwError(COMPONENT_NAME$4, "usage: <el-form-item><label-wrap /></el-form-item>");
          const ns = useNamespace("form");
          const el = vue.ref();
          const computedWidth = vue.ref(0);
          const getLabelWidth = () => {
            var _a2;
            if ((_a2 = el.value) == null ? void 0 : _a2.firstElementChild) {
              const width = window.getComputedStyle(el.value.firstElementChild).width;
              return Math.ceil(Number.parseFloat(width));
            } else {
              return 0;
            }
          };
          const updateLabelWidth = (action = "update") => {
            vue.nextTick(() => {
              if (slots.default && props.isAutoWidth) {
                if (action === "update") {
                  computedWidth.value = getLabelWidth();
                } else if (action === "remove") {
                  formContext == null ? void 0 : formContext.deregisterLabelWidth(computedWidth.value);
                }
              }
            });
          };
          const updateLabelWidthFn = () => updateLabelWidth("update");
          vue.onMounted(() => {
            updateLabelWidthFn();
          });
          vue.onBeforeUnmount(() => {
            updateLabelWidth("remove");
          });
          vue.onUpdated(() => updateLabelWidthFn());
          vue.watch(computedWidth, (val, oldVal) => {
            if (props.updateAll) {
              formContext == null ? void 0 : formContext.registerLabelWidth(val, oldVal);
            }
          });
          useResizeObserver(vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = el.value) == null ? void 0 : _a2.firstElementChild) != null ? _b : null;
          }), updateLabelWidthFn);
          return () => {
            var _a2, _b;
            if (!slots)
              return null;
            const {
              isAutoWidth
            } = props;
            if (isAutoWidth) {
              const autoLabelWidth = formContext == null ? void 0 : formContext.autoLabelWidth;
              const hasLabel = formItemContext == null ? void 0 : formItemContext.hasLabel;
              const style = {};
              if (hasLabel && autoLabelWidth && autoLabelWidth !== "auto") {
                const marginWidth = Math.max(0, Number.parseInt(autoLabelWidth, 10) - computedWidth.value);
                const marginPosition = formContext.labelPosition === "left" ? "marginRight" : "marginLeft";
                if (marginWidth) {
                  style[marginPosition] = `${marginWidth}px`;
                }
              }
              return vue.createVNode("div", {
                "ref": el,
                "class": [ns.be("item", "label-wrap")],
                "style": style
              }, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]);
            } else {
              return vue.createVNode(vue.Fragment, {
                "ref": el
              }, [(_b = slots.default) == null ? void 0 : _b.call(slots)]);
            }
          };
        }
      });
      const _hoisted_1$l = ["role", "aria-labelledby"];
      const __default__$u = vue.defineComponent({
        name: "ElFormItem"
      });
      const _sfc_main$L = /* @__PURE__ */ vue.defineComponent({
        ...__default__$u,
        props: formItemProps,
        setup(__props, { expose }) {
          const props = __props;
          const slots = vue.useSlots();
          const formContext = vue.inject(formContextKey, void 0);
          const parentFormItemContext = vue.inject(formItemContextKey, void 0);
          const _size = useFormSize(void 0, { formItem: false });
          const ns = useNamespace("form-item");
          const labelId = useId().value;
          const inputIds = vue.ref([]);
          const validateState = vue.ref("");
          const validateStateDebounced = refDebounced(validateState, 100);
          const validateMessage = vue.ref("");
          const formItemRef = vue.ref();
          let initialValue = void 0;
          let isResettingField = false;
          const labelStyle = vue.computed(() => {
            if ((formContext == null ? void 0 : formContext.labelPosition) === "top") {
              return {};
            }
            const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || "");
            if (labelWidth)
              return { width: labelWidth };
            return {};
          });
          const contentStyle = vue.computed(() => {
            if ((formContext == null ? void 0 : formContext.labelPosition) === "top" || (formContext == null ? void 0 : formContext.inline)) {
              return {};
            }
            if (!props.label && !props.labelWidth && isNested) {
              return {};
            }
            const labelWidth = addUnit(props.labelWidth || (formContext == null ? void 0 : formContext.labelWidth) || "");
            if (!props.label && !slots.label) {
              return { marginLeft: labelWidth };
            }
            return {};
          });
          const formItemClasses = vue.computed(() => [
            ns.b(),
            ns.m(_size.value),
            ns.is("error", validateState.value === "error"),
            ns.is("validating", validateState.value === "validating"),
            ns.is("success", validateState.value === "success"),
            ns.is("required", isRequired.value || props.required),
            ns.is("no-asterisk", formContext == null ? void 0 : formContext.hideRequiredAsterisk),
            (formContext == null ? void 0 : formContext.requireAsteriskPosition) === "right" ? "asterisk-right" : "asterisk-left",
            { [ns.m("feedback")]: formContext == null ? void 0 : formContext.statusIcon }
          ]);
          const _inlineMessage = vue.computed(() => isBoolean(props.inlineMessage) ? props.inlineMessage : (formContext == null ? void 0 : formContext.inlineMessage) || false);
          const validateClasses = vue.computed(() => [
            ns.e("error"),
            { [ns.em("error", "inline")]: _inlineMessage.value }
          ]);
          const propString = vue.computed(() => {
            if (!props.prop)
              return "";
            return isString(props.prop) ? props.prop : props.prop.join(".");
          });
          const hasLabel = vue.computed(() => {
            return !!(props.label || slots.label);
          });
          const labelFor = vue.computed(() => {
            return props.for || (inputIds.value.length === 1 ? inputIds.value[0] : void 0);
          });
          const isGroup = vue.computed(() => {
            return !labelFor.value && hasLabel.value;
          });
          const isNested = !!parentFormItemContext;
          const fieldValue = vue.computed(() => {
            const model = formContext == null ? void 0 : formContext.model;
            if (!model || !props.prop) {
              return;
            }
            return getProp(model, props.prop).value;
          });
          const normalizedRules = vue.computed(() => {
            const { required } = props;
            const rules2 = [];
            if (props.rules) {
              rules2.push(...castArray(props.rules));
            }
            const formRules = formContext == null ? void 0 : formContext.rules;
            if (formRules && props.prop) {
              const _rules = getProp(formRules, props.prop).value;
              if (_rules) {
                rules2.push(...castArray(_rules));
              }
            }
            if (required !== void 0) {
              const requiredRules = rules2.map((rule2, i) => [rule2, i]).filter(([rule2]) => Object.keys(rule2).includes("required"));
              if (requiredRules.length > 0) {
                for (const [rule2, i] of requiredRules) {
                  if (rule2.required === required)
                    continue;
                  rules2[i] = { ...rule2, required };
                }
              } else {
                rules2.push({ required });
              }
            }
            return rules2;
          });
          const validateEnabled = vue.computed(() => normalizedRules.value.length > 0);
          const getFilteredRule = (trigger) => {
            const rules2 = normalizedRules.value;
            return rules2.filter((rule2) => {
              if (!rule2.trigger || !trigger)
                return true;
              if (Array.isArray(rule2.trigger)) {
                return rule2.trigger.includes(trigger);
              } else {
                return rule2.trigger === trigger;
              }
            }).map(({ trigger: trigger2, ...rule2 }) => rule2);
          };
          const isRequired = vue.computed(() => normalizedRules.value.some((rule2) => rule2.required));
          const shouldShowError = vue.computed(() => {
            var _a2;
            return validateStateDebounced.value === "error" && props.showMessage && ((_a2 = formContext == null ? void 0 : formContext.showMessage) != null ? _a2 : true);
          });
          const currentLabel = vue.computed(() => `${props.label || ""}${(formContext == null ? void 0 : formContext.labelSuffix) || ""}`);
          const setValidationState = (state) => {
            validateState.value = state;
          };
          const onValidationFailed = (error) => {
            var _a2, _b;
            const { errors, fields } = error;
            if (!errors || !fields) {
              console.error(error);
            }
            setValidationState("error");
            validateMessage.value = errors ? (_b = (_a2 = errors == null ? void 0 : errors[0]) == null ? void 0 : _a2.message) != null ? _b : `${props.prop} is required` : "";
            formContext == null ? void 0 : formContext.emit("validate", props.prop, false, validateMessage.value);
          };
          const onValidationSucceeded = () => {
            setValidationState("success");
            formContext == null ? void 0 : formContext.emit("validate", props.prop, true, "");
          };
          const doValidate = async (rules2) => {
            const modelName = propString.value;
            const validator = new Schema({
              [modelName]: rules2
            });
            return validator.validate({ [modelName]: fieldValue.value }, { firstFields: true }).then(() => {
              onValidationSucceeded();
              return true;
            }).catch((err) => {
              onValidationFailed(err);
              return Promise.reject(err);
            });
          };
          const validate = async (trigger, callback) => {
            if (isResettingField || !props.prop) {
              return false;
            }
            const hasCallback = isFunction$1(callback);
            if (!validateEnabled.value) {
              callback == null ? void 0 : callback(false);
              return false;
            }
            const rules2 = getFilteredRule(trigger);
            if (rules2.length === 0) {
              callback == null ? void 0 : callback(true);
              return true;
            }
            setValidationState("validating");
            return doValidate(rules2).then(() => {
              callback == null ? void 0 : callback(true);
              return true;
            }).catch((err) => {
              const { fields } = err;
              callback == null ? void 0 : callback(false, fields);
              return hasCallback ? false : Promise.reject(fields);
            });
          };
          const clearValidate = () => {
            setValidationState("");
            validateMessage.value = "";
            isResettingField = false;
          };
          const resetField = async () => {
            const model = formContext == null ? void 0 : formContext.model;
            if (!model || !props.prop)
              return;
            const computedValue = getProp(model, props.prop);
            isResettingField = true;
            computedValue.value = clone(initialValue);
            await vue.nextTick();
            clearValidate();
            isResettingField = false;
          };
          const addInputId = (id) => {
            if (!inputIds.value.includes(id)) {
              inputIds.value.push(id);
            }
          };
          const removeInputId = (id) => {
            inputIds.value = inputIds.value.filter((listId) => listId !== id);
          };
          vue.watch(() => props.error, (val) => {
            validateMessage.value = val || "";
            setValidationState(val ? "error" : "");
          }, { immediate: true });
          vue.watch(() => props.validateStatus, (val) => setValidationState(val || ""));
          const context = vue.reactive({
            ...vue.toRefs(props),
            $el: formItemRef,
            size: _size,
            validateState,
            labelId,
            inputIds,
            isGroup,
            hasLabel,
            fieldValue,
            addInputId,
            removeInputId,
            resetField,
            clearValidate,
            validate
          });
          vue.provide(formItemContextKey, context);
          vue.onMounted(() => {
            if (props.prop) {
              formContext == null ? void 0 : formContext.addField(context);
              initialValue = clone(fieldValue.value);
            }
          });
          vue.onBeforeUnmount(() => {
            formContext == null ? void 0 : formContext.removeField(context);
          });
          expose({
            size: _size,
            validateMessage,
            validateState,
            validate,
            clearValidate,
            resetField
          });
          return (_ctx, _cache) => {
            var _a2;
            return vue.openBlock(), vue.createElementBlock("div", {
              ref_key: "formItemRef",
              ref: formItemRef,
              class: vue.normalizeClass(vue.unref(formItemClasses)),
              role: vue.unref(isGroup) ? "group" : void 0,
              "aria-labelledby": vue.unref(isGroup) ? vue.unref(labelId) : void 0
            }, [
              vue.createVNode(vue.unref(FormLabelWrap), {
                "is-auto-width": vue.unref(labelStyle).width === "auto",
                "update-all": ((_a2 = vue.unref(formContext)) == null ? void 0 : _a2.labelWidth) === "auto"
              }, {
                default: vue.withCtx(() => [
                  vue.unref(hasLabel) ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(labelFor) ? "label" : "div"), {
                    key: 0,
                    id: vue.unref(labelId),
                    for: vue.unref(labelFor),
                    class: vue.normalizeClass(vue.unref(ns).e("label")),
                    style: vue.normalizeStyle(vue.unref(labelStyle))
                  }, {
                    default: vue.withCtx(() => [
                      vue.renderSlot(_ctx.$slots, "label", { label: vue.unref(currentLabel) }, () => [
                        vue.createTextVNode(vue.toDisplayString(vue.unref(currentLabel)), 1)
                      ])
                    ]),
                    _: 3
                  }, 8, ["id", "for", "class", "style"])) : vue.createCommentVNode("v-if", true)
                ]),
                _: 3
              }, 8, ["is-auto-width", "update-all"]),
              vue.createElementVNode("div", {
                class: vue.normalizeClass(vue.unref(ns).e("content")),
                style: vue.normalizeStyle(vue.unref(contentStyle))
              }, [
                vue.renderSlot(_ctx.$slots, "default"),
                vue.createVNode(vue.TransitionGroup, {
                  name: `${vue.unref(ns).namespace.value}-zoom-in-top`
                }, {
                  default: vue.withCtx(() => [
                    vue.unref(shouldShowError) ? vue.renderSlot(_ctx.$slots, "error", {
                      key: 0,
                      error: validateMessage.value
                    }, () => [
                      vue.createElementVNode("div", {
                        class: vue.normalizeClass(vue.unref(validateClasses))
                      }, vue.toDisplayString(validateMessage.value), 3)
                    ]) : vue.createCommentVNode("v-if", true)
                  ]),
                  _: 3
                }, 8, ["name"])
              ], 6)
            ], 10, _hoisted_1$l);
          };
        }
      });
      var FormItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$L, [["__file", "form-item.vue"]]);
      const ElForm = withInstall(Form, {
        FormItem
      });
      const ElFormItem = withNoopInstall(FormItem);
      let hiddenTextarea = void 0;
      const HIDDEN_STYLE = `
  height:0 !important;
  visibility:hidden !important;
  ${isFirefox() ? "" : "overflow:hidden !important;"}
  position:absolute !important;
  z-index:-1000 !important;
  top:0 !important;
  right:0 !important;
`;
      const CONTEXT_STYLE = [
        "letter-spacing",
        "line-height",
        "padding-top",
        "padding-bottom",
        "font-family",
        "font-weight",
        "font-size",
        "text-rendering",
        "text-transform",
        "width",
        "text-indent",
        "padding-left",
        "padding-right",
        "border-width",
        "box-sizing"
      ];
      function calculateNodeStyling(targetElement) {
        const style = window.getComputedStyle(targetElement);
        const boxSizing = style.getPropertyValue("box-sizing");
        const paddingSize = Number.parseFloat(style.getPropertyValue("padding-bottom")) + Number.parseFloat(style.getPropertyValue("padding-top"));
        const borderSize = Number.parseFloat(style.getPropertyValue("border-bottom-width")) + Number.parseFloat(style.getPropertyValue("border-top-width"));
        const contextStyle = CONTEXT_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(";");
        return { contextStyle, paddingSize, borderSize, boxSizing };
      }
      function calcTextareaHeight(targetElement, minRows = 1, maxRows) {
        var _a2;
        if (!hiddenTextarea) {
          hiddenTextarea = document.createElement("textarea");
          document.body.appendChild(hiddenTextarea);
        }
        const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement);
        hiddenTextarea.setAttribute("style", `${contextStyle};${HIDDEN_STYLE}`);
        hiddenTextarea.value = targetElement.value || targetElement.placeholder || "";
        let height = hiddenTextarea.scrollHeight;
        const result = {};
        if (boxSizing === "border-box") {
          height = height + borderSize;
        } else if (boxSizing === "content-box") {
          height = height - paddingSize;
        }
        hiddenTextarea.value = "";
        const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
        if (isNumber(minRows)) {
          let minHeight = singleRowHeight * minRows;
          if (boxSizing === "border-box") {
            minHeight = minHeight + paddingSize + borderSize;
          }
          height = Math.max(minHeight, height);
          result.minHeight = `${minHeight}px`;
        }
        if (isNumber(maxRows)) {
          let maxHeight = singleRowHeight * maxRows;
          if (boxSizing === "border-box") {
            maxHeight = maxHeight + paddingSize + borderSize;
          }
          height = Math.min(maxHeight, height);
        }
        result.height = `${height}px`;
        (_a2 = hiddenTextarea.parentNode) == null ? void 0 : _a2.removeChild(hiddenTextarea);
        hiddenTextarea = void 0;
        return result;
      }
      const inputProps = buildProps({
        id: {
          type: String,
          default: void 0
        },
        size: useSizeProp,
        disabled: Boolean,
        modelValue: {
          type: definePropType([
            String,
            Number,
            Object
          ]),
          default: ""
        },
        maxlength: {
          type: [String, Number]
        },
        minlength: {
          type: [String, Number]
        },
        type: {
          type: String,
          default: "text"
        },
        resize: {
          type: String,
          values: ["none", "both", "horizontal", "vertical"]
        },
        autosize: {
          type: definePropType([Boolean, Object]),
          default: false
        },
        autocomplete: {
          type: String,
          default: "off"
        },
        formatter: {
          type: Function
        },
        parser: {
          type: Function
        },
        placeholder: {
          type: String
        },
        form: {
          type: String
        },
        readonly: {
          type: Boolean,
          default: false
        },
        clearable: {
          type: Boolean,
          default: false
        },
        showPassword: {
          type: Boolean,
          default: false
        },
        showWordLimit: {
          type: Boolean,
          default: false
        },
        suffixIcon: {
          type: iconPropType
        },
        prefixIcon: {
          type: iconPropType
        },
        containerRole: {
          type: String,
          default: void 0
        },
        label: {
          type: String,
          default: void 0
        },
        tabindex: {
          type: [String, Number],
          default: 0
        },
        validateEvent: {
          type: Boolean,
          default: true
        },
        inputStyle: {
          type: definePropType([Object, Array, String]),
          default: () => mutable({})
        },
        autofocus: {
          type: Boolean,
          default: false
        }
      });
      const inputEmits = {
        [UPDATE_MODEL_EVENT]: (value) => isString(value),
        input: (value) => isString(value),
        change: (value) => isString(value),
        focus: (evt) => evt instanceof FocusEvent,
        blur: (evt) => evt instanceof FocusEvent,
        clear: () => true,
        mouseleave: (evt) => evt instanceof MouseEvent,
        mouseenter: (evt) => evt instanceof MouseEvent,
        keydown: (evt) => evt instanceof Event,
        compositionstart: (evt) => evt instanceof CompositionEvent,
        compositionupdate: (evt) => evt instanceof CompositionEvent,
        compositionend: (evt) => evt instanceof CompositionEvent
      };
      const _hoisted_1$k = ["role"];
      const _hoisted_2$f = ["id", "minlength", "maxlength", "type", "disabled", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form", "autofocus"];
      const _hoisted_3$8 = ["id", "minlength", "maxlength", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form", "autofocus"];
      const __default__$t = vue.defineComponent({
        name: "ElInput",
        inheritAttrs: false
      });
      const _sfc_main$K = /* @__PURE__ */ vue.defineComponent({
        ...__default__$t,
        props: inputProps,
        emits: inputEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const rawAttrs = vue.useAttrs();
          const slots = vue.useSlots();
          const containerAttrs = vue.computed(() => {
            const comboBoxAttrs = {};
            if (props.containerRole === "combobox") {
              comboBoxAttrs["aria-haspopup"] = rawAttrs["aria-haspopup"];
              comboBoxAttrs["aria-owns"] = rawAttrs["aria-owns"];
              comboBoxAttrs["aria-expanded"] = rawAttrs["aria-expanded"];
            }
            return comboBoxAttrs;
          });
          const containerKls = vue.computed(() => [
            props.type === "textarea" ? nsTextarea.b() : nsInput.b(),
            nsInput.m(inputSize.value),
            nsInput.is("disabled", inputDisabled.value),
            nsInput.is("exceed", inputExceed.value),
            {
              [nsInput.b("group")]: slots.prepend || slots.append,
              [nsInput.bm("group", "append")]: slots.append,
              [nsInput.bm("group", "prepend")]: slots.prepend,
              [nsInput.m("prefix")]: slots.prefix || props.prefixIcon,
              [nsInput.m("suffix")]: slots.suffix || props.suffixIcon || props.clearable || props.showPassword,
              [nsInput.bm("suffix", "password-clear")]: showClear.value && showPwdVisible.value,
              [nsInput.b("hidden")]: props.type === "hidden"
            },
            rawAttrs.class
          ]);
          const wrapperKls = vue.computed(() => [
            nsInput.e("wrapper"),
            nsInput.is("focus", isFocused.value)
          ]);
          const attrs = useAttrs({
            excludeKeys: vue.computed(() => {
              return Object.keys(containerAttrs.value);
            })
          });
          const { form: elForm, formItem: elFormItem } = useFormItem();
          const { inputId } = useFormItemInputId(props, {
            formItemContext: elFormItem
          });
          const inputSize = useFormSize();
          const inputDisabled = useFormDisabled();
          const nsInput = useNamespace("input");
          const nsTextarea = useNamespace("textarea");
          const input = vue.shallowRef();
          const textarea = vue.shallowRef();
          const hovering = vue.ref(false);
          const isComposing = vue.ref(false);
          const passwordVisible = vue.ref(false);
          const countStyle = vue.ref();
          const textareaCalcStyle = vue.shallowRef(props.inputStyle);
          const _ref = vue.computed(() => input.value || textarea.value);
          const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, {
            afterBlur() {
              var _a2;
              if (props.validateEvent) {
                (_a2 = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a2.call(elFormItem, "blur").catch((err) => debugWarn());
              }
            }
          });
          const needStatusIcon = vue.computed(() => {
            var _a2;
            return (_a2 = elForm == null ? void 0 : elForm.statusIcon) != null ? _a2 : false;
          });
          const validateState = vue.computed(() => (elFormItem == null ? void 0 : elFormItem.validateState) || "");
          const validateIcon = vue.computed(() => validateState.value && ValidateComponentsMap[validateState.value]);
          const passwordIcon = vue.computed(() => passwordVisible.value ? view_default : hide_default);
          const containerStyle = vue.computed(() => [
            rawAttrs.style
          ]);
          const textareaStyle = vue.computed(() => [
            props.inputStyle,
            textareaCalcStyle.value,
            { resize: props.resize }
          ]);
          const nativeInputValue = vue.computed(() => isNil(props.modelValue) ? "" : String(props.modelValue));
          const showClear = vue.computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value));
          const showPwdVisible = vue.computed(() => props.showPassword && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (!!nativeInputValue.value || isFocused.value));
          const isWordLimitVisible = vue.computed(() => props.showWordLimit && !!props.maxlength && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword);
          const textLength = vue.computed(() => nativeInputValue.value.length);
          const inputExceed = vue.computed(() => !!isWordLimitVisible.value && textLength.value > Number(props.maxlength));
          const suffixVisible = vue.computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value);
          const [recordCursor, setCursor] = useCursor(input);
          useResizeObserver(textarea, (entries) => {
            onceInitSizeTextarea();
            if (!isWordLimitVisible.value || props.resize !== "both")
              return;
            const entry = entries[0];
            const { width } = entry.contentRect;
            countStyle.value = {
              right: `calc(100% - ${width + 15 + 6}px)`
            };
          });
          const resizeTextarea = () => {
            const { type, autosize } = props;
            if (!isClient || type !== "textarea" || !textarea.value)
              return;
            if (autosize) {
              const minRows = isObject$1(autosize) ? autosize.minRows : void 0;
              const maxRows = isObject$1(autosize) ? autosize.maxRows : void 0;
              const textareaStyle2 = calcTextareaHeight(textarea.value, minRows, maxRows);
              textareaCalcStyle.value = {
                overflowY: "hidden",
                ...textareaStyle2
              };
              vue.nextTick(() => {
                textarea.value.offsetHeight;
                textareaCalcStyle.value = textareaStyle2;
              });
            } else {
              textareaCalcStyle.value = {
                minHeight: calcTextareaHeight(textarea.value).minHeight
              };
            }
          };
          const createOnceInitResize = (resizeTextarea2) => {
            let isInit = false;
            return () => {
              var _a2;
              if (isInit || !props.autosize)
                return;
              const isElHidden = ((_a2 = textarea.value) == null ? void 0 : _a2.offsetParent) === null;
              if (!isElHidden) {
                resizeTextarea2();
                isInit = true;
              }
            };
          };
          const onceInitSizeTextarea = createOnceInitResize(resizeTextarea);
          const setNativeInputValue = () => {
            const input2 = _ref.value;
            const formatterValue = props.formatter ? props.formatter(nativeInputValue.value) : nativeInputValue.value;
            if (!input2 || input2.value === formatterValue)
              return;
            input2.value = formatterValue;
          };
          const handleInput = async (event2) => {
            recordCursor();
            let { value } = event2.target;
            if (props.formatter) {
              value = props.parser ? props.parser(value) : value;
            }
            if (isComposing.value)
              return;
            if (value === nativeInputValue.value) {
              setNativeInputValue();
              return;
            }
            emit(UPDATE_MODEL_EVENT, value);
            emit("input", value);
            await vue.nextTick();
            setNativeInputValue();
            setCursor();
          };
          const handleChange = (event2) => {
            emit("change", event2.target.value);
          };
          const handleCompositionStart = (event2) => {
            emit("compositionstart", event2);
            isComposing.value = true;
          };
          const handleCompositionUpdate = (event2) => {
            var _a2;
            emit("compositionupdate", event2);
            const text = (_a2 = event2.target) == null ? void 0 : _a2.value;
            const lastCharacter = text[text.length - 1] || "";
            isComposing.value = !isKorean(lastCharacter);
          };
          const handleCompositionEnd = (event2) => {
            emit("compositionend", event2);
            if (isComposing.value) {
              isComposing.value = false;
              handleInput(event2);
            }
          };
          const handlePasswordVisible = () => {
            passwordVisible.value = !passwordVisible.value;
            focus();
          };
          const focus = async () => {
            var _a2;
            await vue.nextTick();
            (_a2 = _ref.value) == null ? void 0 : _a2.focus();
          };
          const blur = () => {
            var _a2;
            return (_a2 = _ref.value) == null ? void 0 : _a2.blur();
          };
          const handleMouseLeave = (evt) => {
            hovering.value = false;
            emit("mouseleave", evt);
          };
          const handleMouseEnter = (evt) => {
            hovering.value = true;
            emit("mouseenter", evt);
          };
          const handleKeydown = (evt) => {
            emit("keydown", evt);
          };
          const select = () => {
            var _a2;
            (_a2 = _ref.value) == null ? void 0 : _a2.select();
          };
          const clear = () => {
            emit(UPDATE_MODEL_EVENT, "");
            emit("change", "");
            emit("clear");
            emit("input", "");
          };
          vue.watch(() => props.modelValue, () => {
            var _a2;
            vue.nextTick(() => resizeTextarea());
            if (props.validateEvent) {
              (_a2 = elFormItem == null ? void 0 : elFormItem.validate) == null ? void 0 : _a2.call(elFormItem, "change").catch((err) => debugWarn());
            }
          });
          vue.watch(nativeInputValue, () => setNativeInputValue());
          vue.watch(() => props.type, async () => {
            await vue.nextTick();
            setNativeInputValue();
            resizeTextarea();
          });
          vue.onMounted(() => {
            if (!props.formatter && props.parser)
              ;
            setNativeInputValue();
            vue.nextTick(resizeTextarea);
          });
          expose({
            input,
            textarea,
            ref: _ref,
            textareaStyle,
            autosize: vue.toRef(props, "autosize"),
            focus,
            blur,
            select,
            clear,
            resizeTextarea
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps(vue.unref(containerAttrs), {
              class: vue.unref(containerKls),
              style: vue.unref(containerStyle),
              role: _ctx.containerRole,
              onMouseenter: handleMouseEnter,
              onMouseleave: handleMouseLeave
            }), [
              vue.createCommentVNode(" input "),
              _ctx.type !== "textarea" ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
                vue.createCommentVNode(" prepend slot "),
                _ctx.$slots.prepend ? (vue.openBlock(), vue.createElementBlock("div", {
                  key: 0,
                  class: vue.normalizeClass(vue.unref(nsInput).be("group", "prepend"))
                }, [
                  vue.renderSlot(_ctx.$slots, "prepend")
                ], 2)) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("div", {
                  ref_key: "wrapperRef",
                  ref: wrapperRef,
                  class: vue.normalizeClass(vue.unref(wrapperKls))
                }, [
                  vue.createCommentVNode(" prefix slot "),
                  _ctx.$slots.prefix || _ctx.prefixIcon ? (vue.openBlock(), vue.createElementBlock("span", {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(nsInput).e("prefix"))
                  }, [
                    vue.createElementVNode("span", {
                      class: vue.normalizeClass(vue.unref(nsInput).e("prefix-inner"))
                    }, [
                      vue.renderSlot(_ctx.$slots, "prefix"),
                      _ctx.prefixIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                        key: 0,
                        class: vue.normalizeClass(vue.unref(nsInput).e("icon"))
                      }, {
                        default: vue.withCtx(() => [
                          (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.prefixIcon)))
                        ]),
                        _: 1
                      }, 8, ["class"])) : vue.createCommentVNode("v-if", true)
                    ], 2)
                  ], 2)) : vue.createCommentVNode("v-if", true),
                  vue.createElementVNode("input", vue.mergeProps({
                    id: vue.unref(inputId),
                    ref_key: "input",
                    ref: input,
                    class: vue.unref(nsInput).e("inner")
                  }, vue.unref(attrs), {
                    minlength: _ctx.minlength,
                    maxlength: _ctx.maxlength,
                    type: _ctx.showPassword ? passwordVisible.value ? "text" : "password" : _ctx.type,
                    disabled: vue.unref(inputDisabled),
                    readonly: _ctx.readonly,
                    autocomplete: _ctx.autocomplete,
                    tabindex: _ctx.tabindex,
                    "aria-label": _ctx.label,
                    placeholder: _ctx.placeholder,
                    style: _ctx.inputStyle,
                    form: _ctx.form,
                    autofocus: _ctx.autofocus,
                    onCompositionstart: handleCompositionStart,
                    onCompositionupdate: handleCompositionUpdate,
                    onCompositionend: handleCompositionEnd,
                    onInput: handleInput,
                    onFocus: _cache[0] || (_cache[0] = (...args) => vue.unref(handleFocus) && vue.unref(handleFocus)(...args)),
                    onBlur: _cache[1] || (_cache[1] = (...args) => vue.unref(handleBlur) && vue.unref(handleBlur)(...args)),
                    onChange: handleChange,
                    onKeydown: handleKeydown
                  }), null, 16, _hoisted_2$f),
                  vue.createCommentVNode(" suffix slot "),
                  vue.unref(suffixVisible) ? (vue.openBlock(), vue.createElementBlock("span", {
                    key: 1,
                    class: vue.normalizeClass(vue.unref(nsInput).e("suffix"))
                  }, [
                    vue.createElementVNode("span", {
                      class: vue.normalizeClass(vue.unref(nsInput).e("suffix-inner"))
                    }, [
                      !vue.unref(showClear) || !vue.unref(showPwdVisible) || !vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
                        vue.renderSlot(_ctx.$slots, "suffix"),
                        _ctx.suffixIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                          key: 0,
                          class: vue.normalizeClass(vue.unref(nsInput).e("icon"))
                        }, {
                          default: vue.withCtx(() => [
                            (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.suffixIcon)))
                          ]),
                          _: 1
                        }, 8, ["class"])) : vue.createCommentVNode("v-if", true)
                      ], 64)) : vue.createCommentVNode("v-if", true),
                      vue.unref(showClear) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                        key: 1,
                        class: vue.normalizeClass([vue.unref(nsInput).e("icon"), vue.unref(nsInput).e("clear")]),
                        onMousedown: vue.withModifiers(vue.unref(NOOP), ["prevent"]),
                        onClick: clear
                      }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(vue.unref(circle_close_default))
                        ]),
                        _: 1
                      }, 8, ["class", "onMousedown"])) : vue.createCommentVNode("v-if", true),
                      vue.unref(showPwdVisible) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                        key: 2,
                        class: vue.normalizeClass([vue.unref(nsInput).e("icon"), vue.unref(nsInput).e("password")]),
                        onClick: handlePasswordVisible
                      }, {
                        default: vue.withCtx(() => [
                          (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(passwordIcon))))
                        ]),
                        _: 1
                      }, 8, ["class"])) : vue.createCommentVNode("v-if", true),
                      vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock("span", {
                        key: 3,
                        class: vue.normalizeClass(vue.unref(nsInput).e("count"))
                      }, [
                        vue.createElementVNode("span", {
                          class: vue.normalizeClass(vue.unref(nsInput).e("count-inner"))
                        }, vue.toDisplayString(vue.unref(textLength)) + " / " + vue.toDisplayString(_ctx.maxlength), 3)
                      ], 2)) : vue.createCommentVNode("v-if", true),
                      vue.unref(validateState) && vue.unref(validateIcon) && vue.unref(needStatusIcon) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                        key: 4,
                        class: vue.normalizeClass([
                          vue.unref(nsInput).e("icon"),
                          vue.unref(nsInput).e("validateIcon"),
                          vue.unref(nsInput).is("loading", vue.unref(validateState) === "validating")
                        ])
                      }, {
                        default: vue.withCtx(() => [
                          (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(validateIcon))))
                        ]),
                        _: 1
                      }, 8, ["class"])) : vue.createCommentVNode("v-if", true)
                    ], 2)
                  ], 2)) : vue.createCommentVNode("v-if", true)
                ], 2),
                vue.createCommentVNode(" append slot "),
                _ctx.$slots.append ? (vue.openBlock(), vue.createElementBlock("div", {
                  key: 1,
                  class: vue.normalizeClass(vue.unref(nsInput).be("group", "append"))
                }, [
                  vue.renderSlot(_ctx.$slots, "append")
                ], 2)) : vue.createCommentVNode("v-if", true)
              ], 64)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
                vue.createCommentVNode(" textarea "),
                vue.createElementVNode("textarea", vue.mergeProps({
                  id: vue.unref(inputId),
                  ref_key: "textarea",
                  ref: textarea,
                  class: vue.unref(nsTextarea).e("inner")
                }, vue.unref(attrs), {
                  minlength: _ctx.minlength,
                  maxlength: _ctx.maxlength,
                  tabindex: _ctx.tabindex,
                  disabled: vue.unref(inputDisabled),
                  readonly: _ctx.readonly,
                  autocomplete: _ctx.autocomplete,
                  style: vue.unref(textareaStyle),
                  "aria-label": _ctx.label,
                  placeholder: _ctx.placeholder,
                  form: _ctx.form,
                  autofocus: _ctx.autofocus,
                  onCompositionstart: handleCompositionStart,
                  onCompositionupdate: handleCompositionUpdate,
                  onCompositionend: handleCompositionEnd,
                  onInput: handleInput,
                  onFocus: _cache[2] || (_cache[2] = (...args) => vue.unref(handleFocus) && vue.unref(handleFocus)(...args)),
                  onBlur: _cache[3] || (_cache[3] = (...args) => vue.unref(handleBlur) && vue.unref(handleBlur)(...args)),
                  onChange: handleChange,
                  onKeydown: handleKeydown
                }), null, 16, _hoisted_3$8),
                vue.unref(isWordLimitVisible) ? (vue.openBlock(), vue.createElementBlock("span", {
                  key: 0,
                  style: vue.normalizeStyle(countStyle.value),
                  class: vue.normalizeClass(vue.unref(nsInput).e("count"))
                }, vue.toDisplayString(vue.unref(textLength)) + " / " + vue.toDisplayString(_ctx.maxlength), 7)) : vue.createCommentVNode("v-if", true)
              ], 64))
            ], 16, _hoisted_1$k);
          };
        }
      });
      var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$K, [["__file", "input.vue"]]);
      const ElInput = withInstall(Input);
      const GAP = 4;
      const BAR_MAP = {
        vertical: {
          offset: "offsetHeight",
          scroll: "scrollTop",
          scrollSize: "scrollHeight",
          size: "height",
          key: "vertical",
          axis: "Y",
          client: "clientY",
          direction: "top"
        },
        horizontal: {
          offset: "offsetWidth",
          scroll: "scrollLeft",
          scrollSize: "scrollWidth",
          size: "width",
          key: "horizontal",
          axis: "X",
          client: "clientX",
          direction: "left"
        }
      };
      const renderThumbStyle = ({
        move,
        size,
        bar
      }) => ({
        [bar.size]: size,
        transform: `translate${bar.axis}(${move}%)`
      });
      const scrollbarContextKey = Symbol("scrollbarContextKey");
      const thumbProps = buildProps({
        vertical: Boolean,
        size: String,
        move: Number,
        ratio: {
          type: Number,
          required: true
        },
        always: Boolean
      });
      const COMPONENT_NAME$3 = "Thumb";
      const _sfc_main$J = /* @__PURE__ */ vue.defineComponent({
        __name: "thumb",
        props: thumbProps,
        setup(__props) {
          const props = __props;
          const scrollbar = vue.inject(scrollbarContextKey);
          const ns = useNamespace("scrollbar");
          if (!scrollbar)
            throwError(COMPONENT_NAME$3, "can not inject scrollbar context");
          const instance = vue.ref();
          const thumb = vue.ref();
          const thumbState = vue.ref({});
          const visible = vue.ref(false);
          let cursorDown = false;
          let cursorLeave = false;
          let originalOnSelectStart = isClient ? document.onselectstart : null;
          const bar = vue.computed(() => BAR_MAP[props.vertical ? "vertical" : "horizontal"]);
          const thumbStyle = vue.computed(() => renderThumbStyle({
            size: props.size,
            move: props.move,
            bar: bar.value
          }));
          const offsetRatio = vue.computed(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]);
          const clickThumbHandler = (e) => {
            var _a2;
            e.stopPropagation();
            if (e.ctrlKey || [1, 2].includes(e.button))
              return;
            (_a2 = window.getSelection()) == null ? void 0 : _a2.removeAllRanges();
            startDrag(e);
            const el = e.currentTarget;
            if (!el)
              return;
            thumbState.value[bar.value.axis] = el[bar.value.offset] - (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]);
          };
          const clickTrackHandler = (e) => {
            if (!thumb.value || !instance.value || !scrollbar.wrapElement)
              return;
            const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]);
            const thumbHalf = thumb.value[bar.value.offset] / 2;
            const thumbPositionPercentage = (offset - thumbHalf) * 100 * offsetRatio.value / instance.value[bar.value.offset];
            scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;
          };
          const startDrag = (e) => {
            e.stopImmediatePropagation();
            cursorDown = true;
            document.addEventListener("mousemove", mouseMoveDocumentHandler);
            document.addEventListener("mouseup", mouseUpDocumentHandler);
            originalOnSelectStart = document.onselectstart;
            document.onselectstart = () => false;
          };
          const mouseMoveDocumentHandler = (e) => {
            if (!instance.value || !thumb.value)
              return;
            if (cursorDown === false)
              return;
            const prevPage = thumbState.value[bar.value.axis];
            if (!prevPage)
              return;
            const offset = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1;
            const thumbClickPosition = thumb.value[bar.value.offset] - prevPage;
            const thumbPositionPercentage = (offset - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset];
            scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100;
          };
          const mouseUpDocumentHandler = () => {
            cursorDown = false;
            thumbState.value[bar.value.axis] = 0;
            document.removeEventListener("mousemove", mouseMoveDocumentHandler);
            document.removeEventListener("mouseup", mouseUpDocumentHandler);
            restoreOnselectstart();
            if (cursorLeave)
              visible.value = false;
          };
          const mouseMoveScrollbarHandler = () => {
            cursorLeave = false;
            visible.value = !!props.size;
          };
          const mouseLeaveScrollbarHandler = () => {
            cursorLeave = true;
            visible.value = cursorDown;
          };
          vue.onBeforeUnmount(() => {
            restoreOnselectstart();
            document.removeEventListener("mouseup", mouseUpDocumentHandler);
          });
          const restoreOnselectstart = () => {
            if (document.onselectstart !== originalOnSelectStart)
              document.onselectstart = originalOnSelectStart;
          };
          useEventListener(vue.toRef(scrollbar, "scrollbarElement"), "mousemove", mouseMoveScrollbarHandler);
          useEventListener(vue.toRef(scrollbar, "scrollbarElement"), "mouseleave", mouseLeaveScrollbarHandler);
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.Transition, {
              name: vue.unref(ns).b("fade"),
              persisted: ""
            }, {
              default: vue.withCtx(() => [
                vue.withDirectives(vue.createElementVNode("div", {
                  ref_key: "instance",
                  ref: instance,
                  class: vue.normalizeClass([vue.unref(ns).e("bar"), vue.unref(ns).is(vue.unref(bar).key)]),
                  onMousedown: clickTrackHandler
                }, [
                  vue.createElementVNode("div", {
                    ref_key: "thumb",
                    ref: thumb,
                    class: vue.normalizeClass(vue.unref(ns).e("thumb")),
                    style: vue.normalizeStyle(vue.unref(thumbStyle)),
                    onMousedown: clickThumbHandler
                  }, null, 38)
                ], 34), [
                  [vue.vShow, _ctx.always || visible.value]
                ])
              ]),
              _: 1
            }, 8, ["name"]);
          };
        }
      });
      var Thumb = /* @__PURE__ */ _export_sfc$1(_sfc_main$J, [["__file", "thumb.vue"]]);
      const barProps = buildProps({
        always: {
          type: Boolean,
          default: true
        },
        minSize: {
          type: Number,
          required: true
        }
      });
      const _sfc_main$I = /* @__PURE__ */ vue.defineComponent({
        __name: "bar",
        props: barProps,
        setup(__props, { expose }) {
          const props = __props;
          const scrollbar = vue.inject(scrollbarContextKey);
          const moveX = vue.ref(0);
          const moveY = vue.ref(0);
          const sizeWidth = vue.ref("");
          const sizeHeight = vue.ref("");
          const ratioY = vue.ref(1);
          const ratioX = vue.ref(1);
          const handleScroll = (wrap) => {
            if (wrap) {
              const offsetHeight = wrap.offsetHeight - GAP;
              const offsetWidth = wrap.offsetWidth - GAP;
              moveY.value = wrap.scrollTop * 100 / offsetHeight * ratioY.value;
              moveX.value = wrap.scrollLeft * 100 / offsetWidth * ratioX.value;
            }
          };
          const update = () => {
            const wrap = scrollbar == null ? void 0 : scrollbar.wrapElement;
            if (!wrap)
              return;
            const offsetHeight = wrap.offsetHeight - GAP;
            const offsetWidth = wrap.offsetWidth - GAP;
            const originalHeight = offsetHeight ** 2 / wrap.scrollHeight;
            const originalWidth = offsetWidth ** 2 / wrap.scrollWidth;
            const height = Math.max(originalHeight, props.minSize);
            const width = Math.max(originalWidth, props.minSize);
            ratioY.value = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height));
            ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width));
            sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : "";
            sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : "";
          };
          expose({
            handleScroll,
            update
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
              vue.createVNode(Thumb, {
                move: moveX.value,
                ratio: ratioX.value,
                size: sizeWidth.value,
                always: _ctx.always
              }, null, 8, ["move", "ratio", "size", "always"]),
              vue.createVNode(Thumb, {
                move: moveY.value,
                ratio: ratioY.value,
                size: sizeHeight.value,
                vertical: "",
                always: _ctx.always
              }, null, 8, ["move", "ratio", "size", "always"])
            ], 64);
          };
        }
      });
      var Bar = /* @__PURE__ */ _export_sfc$1(_sfc_main$I, [["__file", "bar.vue"]]);
      const scrollbarProps = buildProps({
        height: {
          type: [String, Number],
          default: ""
        },
        maxHeight: {
          type: [String, Number],
          default: ""
        },
        native: {
          type: Boolean,
          default: false
        },
        wrapStyle: {
          type: definePropType([String, Object, Array]),
          default: ""
        },
        wrapClass: {
          type: [String, Array],
          default: ""
        },
        viewClass: {
          type: [String, Array],
          default: ""
        },
        viewStyle: {
          type: [String, Array, Object],
          default: ""
        },
        noresize: Boolean,
        tag: {
          type: String,
          default: "div"
        },
        always: Boolean,
        minSize: {
          type: Number,
          default: 20
        },
        id: String,
        role: String,
        ariaLabel: String,
        ariaOrientation: {
          type: String,
          values: ["horizontal", "vertical"]
        }
      });
      const scrollbarEmits = {
        scroll: ({
          scrollTop,
          scrollLeft
        }) => [scrollTop, scrollLeft].every(isNumber)
      };
      const COMPONENT_NAME$2 = "ElScrollbar";
      const __default__$s = vue.defineComponent({
        name: COMPONENT_NAME$2
      });
      const _sfc_main$H = /* @__PURE__ */ vue.defineComponent({
        ...__default__$s,
        props: scrollbarProps,
        emits: scrollbarEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const ns = useNamespace("scrollbar");
          let stopResizeObserver = void 0;
          let stopResizeListener = void 0;
          const scrollbarRef = vue.ref();
          const wrapRef = vue.ref();
          const resizeRef = vue.ref();
          const barRef = vue.ref();
          const wrapStyle = vue.computed(() => {
            const style = {};
            if (props.height)
              style.height = addUnit(props.height);
            if (props.maxHeight)
              style.maxHeight = addUnit(props.maxHeight);
            return [props.wrapStyle, style];
          });
          const wrapKls = vue.computed(() => {
            return [
              props.wrapClass,
              ns.e("wrap"),
              { [ns.em("wrap", "hidden-default")]: !props.native }
            ];
          });
          const resizeKls = vue.computed(() => {
            return [ns.e("view"), props.viewClass];
          });
          const handleScroll = () => {
            var _a2;
            if (wrapRef.value) {
              (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value);
              emit("scroll", {
                scrollTop: wrapRef.value.scrollTop,
                scrollLeft: wrapRef.value.scrollLeft
              });
            }
          };
          function scrollTo(arg1, arg2) {
            if (isObject$1(arg1)) {
              wrapRef.value.scrollTo(arg1);
            } else if (isNumber(arg1) && isNumber(arg2)) {
              wrapRef.value.scrollTo(arg1, arg2);
            }
          }
          const setScrollTop = (value) => {
            if (!isNumber(value)) {
              return;
            }
            wrapRef.value.scrollTop = value;
          };
          const setScrollLeft = (value) => {
            if (!isNumber(value)) {
              return;
            }
            wrapRef.value.scrollLeft = value;
          };
          const update = () => {
            var _a2;
            (_a2 = barRef.value) == null ? void 0 : _a2.update();
          };
          vue.watch(() => props.noresize, (noresize) => {
            if (noresize) {
              stopResizeObserver == null ? void 0 : stopResizeObserver();
              stopResizeListener == null ? void 0 : stopResizeListener();
            } else {
              ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update));
              stopResizeListener = useEventListener("resize", update);
            }
          }, { immediate: true });
          vue.watch(() => [props.maxHeight, props.height], () => {
            if (!props.native)
              vue.nextTick(() => {
                var _a2;
                update();
                if (wrapRef.value) {
                  (_a2 = barRef.value) == null ? void 0 : _a2.handleScroll(wrapRef.value);
                }
              });
          });
          vue.provide(scrollbarContextKey, vue.reactive({
            scrollbarElement: scrollbarRef,
            wrapElement: wrapRef
          }));
          vue.onMounted(() => {
            if (!props.native)
              vue.nextTick(() => {
                update();
              });
          });
          vue.onUpdated(() => update());
          expose({
            wrapRef,
            update,
            scrollTo,
            setScrollTop,
            setScrollLeft,
            handleScroll
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              ref_key: "scrollbarRef",
              ref: scrollbarRef,
              class: vue.normalizeClass(vue.unref(ns).b())
            }, [
              vue.createElementVNode("div", {
                ref_key: "wrapRef",
                ref: wrapRef,
                class: vue.normalizeClass(vue.unref(wrapKls)),
                style: vue.normalizeStyle(vue.unref(wrapStyle)),
                onScroll: handleScroll
              }, [
                (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), {
                  id: _ctx.id,
                  ref_key: "resizeRef",
                  ref: resizeRef,
                  class: vue.normalizeClass(vue.unref(resizeKls)),
                  style: vue.normalizeStyle(_ctx.viewStyle),
                  role: _ctx.role,
                  "aria-label": _ctx.ariaLabel,
                  "aria-orientation": _ctx.ariaOrientation
                }, {
                  default: vue.withCtx(() => [
                    vue.renderSlot(_ctx.$slots, "default")
                  ]),
                  _: 3
                }, 8, ["id", "class", "style", "role", "aria-label", "aria-orientation"]))
              ], 38),
              !_ctx.native ? (vue.openBlock(), vue.createBlock(Bar, {
                key: 0,
                ref_key: "barRef",
                ref: barRef,
                always: _ctx.always,
                "min-size": _ctx.minSize
              }, null, 8, ["always", "min-size"])) : vue.createCommentVNode("v-if", true)
            ], 2);
          };
        }
      });
      var Scrollbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$H, [["__file", "scrollbar.vue"]]);
      const ElScrollbar = withInstall(Scrollbar);
      const POPPER_INJECTION_KEY = Symbol("popper");
      const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent");
      const roleTypes = [
        "dialog",
        "grid",
        "group",
        "listbox",
        "menu",
        "navigation",
        "tooltip",
        "tree"
      ];
      const popperProps = buildProps({
        role: {
          type: String,
          values: roleTypes,
          default: "tooltip"
        }
      });
      const __default__$r = vue.defineComponent({
        name: "ElPopper",
        inheritAttrs: false
      });
      const _sfc_main$G = /* @__PURE__ */ vue.defineComponent({
        ...__default__$r,
        props: popperProps,
        setup(__props, { expose }) {
          const props = __props;
          const triggerRef = vue.ref();
          const popperInstanceRef = vue.ref();
          const contentRef = vue.ref();
          const referenceRef = vue.ref();
          const role = vue.computed(() => props.role);
          const popperProvides = {
            triggerRef,
            popperInstanceRef,
            contentRef,
            referenceRef,
            role
          };
          expose(popperProvides);
          vue.provide(POPPER_INJECTION_KEY, popperProvides);
          return (_ctx, _cache) => {
            return vue.renderSlot(_ctx.$slots, "default");
          };
        }
      });
      var Popper = /* @__PURE__ */ _export_sfc$1(_sfc_main$G, [["__file", "popper.vue"]]);
      const popperArrowProps = buildProps({
        arrowOffset: {
          type: Number,
          default: 5
        }
      });
      const __default__$q = vue.defineComponent({
        name: "ElPopperArrow",
        inheritAttrs: false
      });
      const _sfc_main$F = /* @__PURE__ */ vue.defineComponent({
        ...__default__$q,
        props: popperArrowProps,
        setup(__props, { expose }) {
          const props = __props;
          const ns = useNamespace("popper");
          const { arrowOffset, arrowRef, arrowStyle } = vue.inject(POPPER_CONTENT_INJECTION_KEY, void 0);
          vue.watch(() => props.arrowOffset, (val) => {
            arrowOffset.value = val;
          });
          vue.onBeforeUnmount(() => {
            arrowRef.value = void 0;
          });
          expose({
            arrowRef
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("span", {
              ref_key: "arrowRef",
              ref: arrowRef,
              class: vue.normalizeClass(vue.unref(ns).e("arrow")),
              style: vue.normalizeStyle(vue.unref(arrowStyle)),
              "data-popper-arrow": ""
            }, null, 6);
          };
        }
      });
      var ElPopperArrow = /* @__PURE__ */ _export_sfc$1(_sfc_main$F, [["__file", "arrow.vue"]]);
      const NAME = "ElOnlyChild";
      const OnlyChild = vue.defineComponent({
        name: NAME,
        setup(_2, {
          slots,
          attrs
        }) {
          var _a2;
          const forwardRefInjection = vue.inject(FORWARD_REF_INJECTION_KEY);
          const forwardRefDirective = useForwardRefDirective((_a2 = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a2 : NOOP);
          return () => {
            var _a22;
            const defaultSlot = (_a22 = slots.default) == null ? void 0 : _a22.call(slots, attrs);
            if (!defaultSlot)
              return null;
            if (defaultSlot.length > 1) {
              return null;
            }
            const firstLegitNode = findFirstLegitChild(defaultSlot);
            if (!firstLegitNode) {
              return null;
            }
            return vue.withDirectives(vue.cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]);
          };
        }
      });
      function findFirstLegitChild(node) {
        if (!node)
          return null;
        const children = node;
        for (const child of children) {
          if (isObject$1(child)) {
            switch (child.type) {
              case vue.Comment:
                continue;
              case vue.Text:
              case "svg":
                return wrapTextContent(child);
              case vue.Fragment:
                return findFirstLegitChild(child.children);
              default:
                return child;
            }
          }
          return wrapTextContent(child);
        }
        return null;
      }
      function wrapTextContent(s2) {
        const ns = useNamespace("only-child");
        return vue.createVNode("span", {
          "class": ns.e("content")
        }, [s2]);
      }
      const popperTriggerProps = buildProps({
        virtualRef: {
          type: definePropType(Object)
        },
        virtualTriggering: Boolean,
        onMouseenter: {
          type: definePropType(Function)
        },
        onMouseleave: {
          type: definePropType(Function)
        },
        onClick: {
          type: definePropType(Function)
        },
        onKeydown: {
          type: definePropType(Function)
        },
        onFocus: {
          type: definePropType(Function)
        },
        onBlur: {
          type: definePropType(Function)
        },
        onContextmenu: {
          type: definePropType(Function)
        },
        id: String,
        open: Boolean
      });
      const __default__$p = vue.defineComponent({
        name: "ElPopperTrigger",
        inheritAttrs: false
      });
      const _sfc_main$E = /* @__PURE__ */ vue.defineComponent({
        ...__default__$p,
        props: popperTriggerProps,
        setup(__props, { expose }) {
          const props = __props;
          const { role, triggerRef } = vue.inject(POPPER_INJECTION_KEY, void 0);
          useForwardRef(triggerRef);
          const ariaControls = vue.computed(() => {
            return ariaHaspopup.value ? props.id : void 0;
          });
          const ariaDescribedby = vue.computed(() => {
            if (role && role.value === "tooltip") {
              return props.open && props.id ? props.id : void 0;
            }
            return void 0;
          });
          const ariaHaspopup = vue.computed(() => {
            if (role && role.value !== "tooltip") {
              return role.value;
            }
            return void 0;
          });
          const ariaExpanded = vue.computed(() => {
            return ariaHaspopup.value ? `${props.open}` : void 0;
          });
          let virtualTriggerAriaStopWatch = void 0;
          vue.onMounted(() => {
            vue.watch(() => props.virtualRef, (virtualEl) => {
              if (virtualEl) {
                triggerRef.value = unrefElement(virtualEl);
              }
            }, {
              immediate: true
            });
            vue.watch(triggerRef, (el, prevEl) => {
              virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();
              virtualTriggerAriaStopWatch = void 0;
              if (isElement(el)) {
                [
                  "onMouseenter",
                  "onMouseleave",
                  "onClick",
                  "onKeydown",
                  "onFocus",
                  "onBlur",
                  "onContextmenu"
                ].forEach((eventName) => {
                  var _a2;
                  const handler = props[eventName];
                  if (handler) {
                    el.addEventListener(eventName.slice(2).toLowerCase(), handler);
                    (_a2 = prevEl == null ? void 0 : prevEl.removeEventListener) == null ? void 0 : _a2.call(prevEl, eventName.slice(2).toLowerCase(), handler);
                  }
                });
                virtualTriggerAriaStopWatch = vue.watch([ariaControls, ariaDescribedby, ariaHaspopup, ariaExpanded], (watches) => {
                  [
                    "aria-controls",
                    "aria-describedby",
                    "aria-haspopup",
                    "aria-expanded"
                  ].forEach((key2, idx) => {
                    isNil(watches[idx]) ? el.removeAttribute(key2) : el.setAttribute(key2, watches[idx]);
                  });
                }, { immediate: true });
              }
              if (isElement(prevEl)) {
                [
                  "aria-controls",
                  "aria-describedby",
                  "aria-haspopup",
                  "aria-expanded"
                ].forEach((key2) => prevEl.removeAttribute(key2));
              }
            }, {
              immediate: true
            });
          });
          vue.onBeforeUnmount(() => {
            virtualTriggerAriaStopWatch == null ? void 0 : virtualTriggerAriaStopWatch();
            virtualTriggerAriaStopWatch = void 0;
          });
          expose({
            triggerRef
          });
          return (_ctx, _cache) => {
            return !_ctx.virtualTriggering ? (vue.openBlock(), vue.createBlock(vue.unref(OnlyChild), vue.mergeProps({ key: 0 }, _ctx.$attrs, {
              "aria-controls": vue.unref(ariaControls),
              "aria-describedby": vue.unref(ariaDescribedby),
              "aria-expanded": vue.unref(ariaExpanded),
              "aria-haspopup": vue.unref(ariaHaspopup)
            }), {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"])) : vue.createCommentVNode("v-if", true);
          };
        }
      });
      var ElPopperTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$E, [["__file", "trigger.vue"]]);
      const FOCUS_AFTER_TRAPPED = "focus-trap.focus-after-trapped";
      const FOCUS_AFTER_RELEASED = "focus-trap.focus-after-released";
      const FOCUSOUT_PREVENTED = "focus-trap.focusout-prevented";
      const FOCUS_AFTER_TRAPPED_OPTS = {
        cancelable: true,
        bubbles: false
      };
      const FOCUSOUT_PREVENTED_OPTS = {
        cancelable: true,
        bubbles: false
      };
      const ON_TRAP_FOCUS_EVT = "focusAfterTrapped";
      const ON_RELEASE_FOCUS_EVT = "focusAfterReleased";
      const FOCUS_TRAP_INJECTION_KEY = Symbol("elFocusTrap");
      const focusReason = vue.ref();
      const lastUserFocusTimestamp = vue.ref(0);
      const lastAutomatedFocusTimestamp = vue.ref(0);
      let focusReasonUserCount = 0;
      const obtainAllFocusableElements = (element) => {
        const nodes = [];
        const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, {
          acceptNode: (node) => {
            const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
            if (node.disabled || node.hidden || isHiddenInput)
              return NodeFilter.FILTER_SKIP;
            return node.tabIndex >= 0 || node === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
          }
        });
        while (walker.nextNode())
          nodes.push(walker.currentNode);
        return nodes;
      };
      const getVisibleElement = (elements, container) => {
        for (const element of elements) {
          if (!isHidden(element, container))
            return element;
        }
      };
      const isHidden = (element, container) => {
        if (getComputedStyle(element).visibility === "hidden")
          return true;
        while (element) {
          if (container && element === container)
            return false;
          if (getComputedStyle(element).display === "none")
            return true;
          element = element.parentElement;
        }
        return false;
      };
      const getEdges = (container) => {
        const focusable = obtainAllFocusableElements(container);
        const first = getVisibleElement(focusable, container);
        const last = getVisibleElement(focusable.reverse(), container);
        return [first, last];
      };
      const isSelectable = (element) => {
        return element instanceof HTMLInputElement && "select" in element;
      };
      const tryFocus = (element, shouldSelect) => {
        if (element && element.focus) {
          const prevFocusedElement = document.activeElement;
          element.focus({ preventScroll: true });
          lastAutomatedFocusTimestamp.value = window.performance.now();
          if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) {
            element.select();
          }
        }
      };
      function removeFromStack(list, item) {
        const copy = [...list];
        const idx = list.indexOf(item);
        if (idx !== -1) {
          copy.splice(idx, 1);
        }
        return copy;
      }
      const createFocusableStack = () => {
        let stack = [];
        const push = (layer2) => {
          const currentLayer = stack[0];
          if (currentLayer && layer2 !== currentLayer) {
            currentLayer.pause();
          }
          stack = removeFromStack(stack, layer2);
          stack.unshift(layer2);
        };
        const remove = (layer2) => {
          var _a2, _b;
          stack = removeFromStack(stack, layer2);
          (_b = (_a2 = stack[0]) == null ? void 0 : _a2.resume) == null ? void 0 : _b.call(_a2);
        };
        return {
          push,
          remove
        };
      };
      const focusFirstDescendant = (elements, shouldSelect = false) => {
        const prevFocusedElement = document.activeElement;
        for (const element of elements) {
          tryFocus(element, shouldSelect);
          if (document.activeElement !== prevFocusedElement)
            return;
        }
      };
      const focusableStack = createFocusableStack();
      const isFocusCausedByUserEvent = () => {
        return lastUserFocusTimestamp.value > lastAutomatedFocusTimestamp.value;
      };
      const notifyFocusReasonPointer = () => {
        focusReason.value = "pointer";
        lastUserFocusTimestamp.value = window.performance.now();
      };
      const notifyFocusReasonKeydown = () => {
        focusReason.value = "keyboard";
        lastUserFocusTimestamp.value = window.performance.now();
      };
      const useFocusReason = () => {
        vue.onMounted(() => {
          if (focusReasonUserCount === 0) {
            document.addEventListener("mousedown", notifyFocusReasonPointer);
            document.addEventListener("touchstart", notifyFocusReasonPointer);
            document.addEventListener("keydown", notifyFocusReasonKeydown);
          }
          focusReasonUserCount++;
        });
        vue.onBeforeUnmount(() => {
          focusReasonUserCount--;
          if (focusReasonUserCount <= 0) {
            document.removeEventListener("mousedown", notifyFocusReasonPointer);
            document.removeEventListener("touchstart", notifyFocusReasonPointer);
            document.removeEventListener("keydown", notifyFocusReasonKeydown);
          }
        });
        return {
          focusReason,
          lastUserFocusTimestamp,
          lastAutomatedFocusTimestamp
        };
      };
      const createFocusOutPreventedEvent = (detail) => {
        return new CustomEvent(FOCUSOUT_PREVENTED, {
          ...FOCUSOUT_PREVENTED_OPTS,
          detail
        });
      };
      const _sfc_main$D = vue.defineComponent({
        name: "ElFocusTrap",
        inheritAttrs: false,
        props: {
          loop: Boolean,
          trapped: Boolean,
          focusTrapEl: Object,
          focusStartEl: {
            type: [Object, String],
            default: "first"
          }
        },
        emits: [
          ON_TRAP_FOCUS_EVT,
          ON_RELEASE_FOCUS_EVT,
          "focusin",
          "focusout",
          "focusout-prevented",
          "release-requested"
        ],
        setup(props, { emit }) {
          const forwardRef = vue.ref();
          let lastFocusBeforeTrapped;
          let lastFocusAfterTrapped;
          const { focusReason: focusReason2 } = useFocusReason();
          useEscapeKeydown((event2) => {
            if (props.trapped && !focusLayer.paused) {
              emit("release-requested", event2);
            }
          });
          const focusLayer = {
            paused: false,
            pause() {
              this.paused = true;
            },
            resume() {
              this.paused = false;
            }
          };
          const onKeydown = (e) => {
            if (!props.loop && !props.trapped)
              return;
            if (focusLayer.paused)
              return;
            const { key: key2, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e;
            const { loop: loop2 } = props;
            const isTabbing = key2 === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey;
            const currentFocusingEl = document.activeElement;
            if (isTabbing && currentFocusingEl) {
              const container = currentTarget;
              const [first, last] = getEdges(container);
              const isTabbable = first && last;
              if (!isTabbable) {
                if (currentFocusingEl === container) {
                  const focusoutPreventedEvent = createFocusOutPreventedEvent({
                    focusReason: focusReason2.value
                  });
                  emit("focusout-prevented", focusoutPreventedEvent);
                  if (!focusoutPreventedEvent.defaultPrevented) {
                    e.preventDefault();
                  }
                }
              } else {
                if (!shiftKey && currentFocusingEl === last) {
                  const focusoutPreventedEvent = createFocusOutPreventedEvent({
                    focusReason: focusReason2.value
                  });
                  emit("focusout-prevented", focusoutPreventedEvent);
                  if (!focusoutPreventedEvent.defaultPrevented) {
                    e.preventDefault();
                    if (loop2)
                      tryFocus(first, true);
                  }
                } else if (shiftKey && [first, container].includes(currentFocusingEl)) {
                  const focusoutPreventedEvent = createFocusOutPreventedEvent({
                    focusReason: focusReason2.value
                  });
                  emit("focusout-prevented", focusoutPreventedEvent);
                  if (!focusoutPreventedEvent.defaultPrevented) {
                    e.preventDefault();
                    if (loop2)
                      tryFocus(last, true);
                  }
                }
              }
            }
          };
          vue.provide(FOCUS_TRAP_INJECTION_KEY, {
            focusTrapRef: forwardRef,
            onKeydown
          });
          vue.watch(() => props.focusTrapEl, (focusTrapEl) => {
            if (focusTrapEl) {
              forwardRef.value = focusTrapEl;
            }
          }, { immediate: true });
          vue.watch([forwardRef], ([forwardRef2], [oldForwardRef]) => {
            if (forwardRef2) {
              forwardRef2.addEventListener("keydown", onKeydown);
              forwardRef2.addEventListener("focusin", onFocusIn);
              forwardRef2.addEventListener("focusout", onFocusOut);
            }
            if (oldForwardRef) {
              oldForwardRef.removeEventListener("keydown", onKeydown);
              oldForwardRef.removeEventListener("focusin", onFocusIn);
              oldForwardRef.removeEventListener("focusout", onFocusOut);
            }
          });
          const trapOnFocus = (e) => {
            emit(ON_TRAP_FOCUS_EVT, e);
          };
          const releaseOnFocus = (e) => emit(ON_RELEASE_FOCUS_EVT, e);
          const onFocusIn = (e) => {
            const trapContainer = vue.unref(forwardRef);
            if (!trapContainer)
              return;
            const target = e.target;
            const relatedTarget = e.relatedTarget;
            const isFocusedInTrap = target && trapContainer.contains(target);
            if (!props.trapped) {
              const isPrevFocusedInTrap = relatedTarget && trapContainer.contains(relatedTarget);
              if (!isPrevFocusedInTrap) {
                lastFocusBeforeTrapped = relatedTarget;
              }
            }
            if (isFocusedInTrap)
              emit("focusin", e);
            if (focusLayer.paused)
              return;
            if (props.trapped) {
              if (isFocusedInTrap) {
                lastFocusAfterTrapped = target;
              } else {
                tryFocus(lastFocusAfterTrapped, true);
              }
            }
          };
          const onFocusOut = (e) => {
            const trapContainer = vue.unref(forwardRef);
            if (focusLayer.paused || !trapContainer)
              return;
            if (props.trapped) {
              const relatedTarget = e.relatedTarget;
              if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) {
                setTimeout(() => {
                  if (!focusLayer.paused && props.trapped) {
                    const focusoutPreventedEvent = createFocusOutPreventedEvent({
                      focusReason: focusReason2.value
                    });
                    emit("focusout-prevented", focusoutPreventedEvent);
                    if (!focusoutPreventedEvent.defaultPrevented) {
                      tryFocus(lastFocusAfterTrapped, true);
                    }
                  }
                }, 0);
              }
            } else {
              const target = e.target;
              const isFocusedInTrap = target && trapContainer.contains(target);
              if (!isFocusedInTrap)
                emit("focusout", e);
            }
          };
          async function startTrap() {
            await vue.nextTick();
            const trapContainer = vue.unref(forwardRef);
            if (trapContainer) {
              focusableStack.push(focusLayer);
              const prevFocusedElement = trapContainer.contains(document.activeElement) ? lastFocusBeforeTrapped : document.activeElement;
              lastFocusBeforeTrapped = prevFocusedElement;
              const isPrevFocusContained = trapContainer.contains(prevFocusedElement);
              if (!isPrevFocusContained) {
                const focusEvent = new Event(FOCUS_AFTER_TRAPPED, FOCUS_AFTER_TRAPPED_OPTS);
                trapContainer.addEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus);
                trapContainer.dispatchEvent(focusEvent);
                if (!focusEvent.defaultPrevented) {
                  vue.nextTick(() => {
                    let focusStartEl = props.focusStartEl;
                    if (!isString(focusStartEl)) {
                      tryFocus(focusStartEl);
                      if (document.activeElement !== focusStartEl) {
                        focusStartEl = "first";
                      }
                    }
                    if (focusStartEl === "first") {
                      focusFirstDescendant(obtainAllFocusableElements(trapContainer), true);
                    }
                    if (document.activeElement === prevFocusedElement || focusStartEl === "container") {
                      tryFocus(trapContainer);
                    }
                  });
                }
              }
            }
          }
          function stopTrap() {
            const trapContainer = vue.unref(forwardRef);
            if (trapContainer) {
              trapContainer.removeEventListener(FOCUS_AFTER_TRAPPED, trapOnFocus);
              const releasedEvent = new CustomEvent(FOCUS_AFTER_RELEASED, {
                ...FOCUS_AFTER_TRAPPED_OPTS,
                detail: {
                  focusReason: focusReason2.value
                }
              });
              trapContainer.addEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus);
              trapContainer.dispatchEvent(releasedEvent);
              if (!releasedEvent.defaultPrevented && (focusReason2.value == "keyboard" || !isFocusCausedByUserEvent() || trapContainer.contains(document.activeElement))) {
                tryFocus(lastFocusBeforeTrapped != null ? lastFocusBeforeTrapped : document.body);
              }
              trapContainer.removeEventListener(FOCUS_AFTER_RELEASED, releaseOnFocus);
              focusableStack.remove(focusLayer);
            }
          }
          vue.onMounted(() => {
            if (props.trapped) {
              startTrap();
            }
            vue.watch(() => props.trapped, (trapped) => {
              if (trapped) {
                startTrap();
              } else {
                stopTrap();
              }
            });
          });
          vue.onBeforeUnmount(() => {
            if (props.trapped) {
              stopTrap();
            }
          });
          return {
            onKeydown
          };
        }
      });
      function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
        return vue.renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown });
      }
      var ElFocusTrap = /* @__PURE__ */ _export_sfc$1(_sfc_main$D, [["render", _sfc_render$8], ["__file", "focus-trap.vue"]]);
      const POSITIONING_STRATEGIES = ["fixed", "absolute"];
      const popperCoreConfigProps = buildProps({
        boundariesPadding: {
          type: Number,
          default: 0
        },
        fallbackPlacements: {
          type: definePropType(Array),
          default: void 0
        },
        gpuAcceleration: {
          type: Boolean,
          default: true
        },
        offset: {
          type: Number,
          default: 12
        },
        placement: {
          type: String,
          values: Ee,
          default: "bottom"
        },
        popperOptions: {
          type: definePropType(Object),
          default: () => ({})
        },
        strategy: {
          type: String,
          values: POSITIONING_STRATEGIES,
          default: "absolute"
        }
      });
      const popperContentProps = buildProps({
        ...popperCoreConfigProps,
        id: String,
        style: {
          type: definePropType([String, Array, Object])
        },
        className: {
          type: definePropType([String, Array, Object])
        },
        effect: {
          type: String,
          default: "dark"
        },
        visible: Boolean,
        enterable: {
          type: Boolean,
          default: true
        },
        pure: Boolean,
        focusOnShow: {
          type: Boolean,
          default: false
        },
        trapping: {
          type: Boolean,
          default: false
        },
        popperClass: {
          type: definePropType([String, Array, Object])
        },
        popperStyle: {
          type: definePropType([String, Array, Object])
        },
        referenceEl: {
          type: definePropType(Object)
        },
        triggerTargetEl: {
          type: definePropType(Object)
        },
        stopPopperMouseEvent: {
          type: Boolean,
          default: true
        },
        ariaLabel: {
          type: String,
          default: void 0
        },
        virtualTriggering: Boolean,
        zIndex: Number
      });
      const popperContentEmits = {
        mouseenter: (evt) => evt instanceof MouseEvent,
        mouseleave: (evt) => evt instanceof MouseEvent,
        focus: () => true,
        blur: () => true,
        close: () => true
      };
      const buildPopperOptions = (props, modifiers = []) => {
        const { placement, strategy, popperOptions } = props;
        const options = {
          placement,
          strategy,
          ...popperOptions,
          modifiers: [...genModifiers(props), ...modifiers]
        };
        deriveExtraModifiers(options, popperOptions == null ? void 0 : popperOptions.modifiers);
        return options;
      };
      const unwrapMeasurableEl = ($el) => {
        if (!isClient)
          return;
        return unrefElement($el);
      };
      function genModifiers(options) {
        const { offset, gpuAcceleration, fallbackPlacements } = options;
        return [
          {
            name: "offset",
            options: {
              offset: [0, offset != null ? offset : 12]
            }
          },
          {
            name: "preventOverflow",
            options: {
              padding: {
                top: 2,
                bottom: 2,
                left: 5,
                right: 5
              }
            }
          },
          {
            name: "flip",
            options: {
              padding: 5,
              fallbackPlacements
            }
          },
          {
            name: "computeStyles",
            options: {
              gpuAcceleration
            }
          }
        ];
      }
      function deriveExtraModifiers(options, modifiers) {
        if (modifiers) {
          options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []];
        }
      }
      const DEFAULT_ARROW_OFFSET = 0;
      const usePopperContent = (props) => {
        const { popperInstanceRef, contentRef, triggerRef, role } = vue.inject(POPPER_INJECTION_KEY, void 0);
        const arrowRef = vue.ref();
        const arrowOffset = vue.ref();
        const eventListenerModifier = vue.computed(() => {
          return {
            name: "eventListeners",
            enabled: !!props.visible
          };
        });
        const arrowModifier = vue.computed(() => {
          var _a2;
          const arrowEl = vue.unref(arrowRef);
          const offset = (_a2 = vue.unref(arrowOffset)) != null ? _a2 : DEFAULT_ARROW_OFFSET;
          return {
            name: "arrow",
            enabled: !isUndefined$1(arrowEl),
            options: {
              element: arrowEl,
              padding: offset
            }
          };
        });
        const options = vue.computed(() => {
          return {
            onFirstUpdate: () => {
              update();
            },
            ...buildPopperOptions(props, [
              vue.unref(arrowModifier),
              vue.unref(eventListenerModifier)
            ])
          };
        });
        const computedReference = vue.computed(() => unwrapMeasurableEl(props.referenceEl) || vue.unref(triggerRef));
        const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options);
        vue.watch(instanceRef, (instance) => popperInstanceRef.value = instance);
        vue.onMounted(() => {
          vue.watch(() => {
            var _a2;
            return (_a2 = vue.unref(computedReference)) == null ? void 0 : _a2.getBoundingClientRect();
          }, () => {
            update();
          });
        });
        return {
          attributes,
          arrowRef,
          contentRef,
          instanceRef,
          state,
          styles,
          role,
          forceUpdate,
          update
        };
      };
      const usePopperContentDOM = (props, {
        attributes,
        styles,
        role
      }) => {
        const { nextZIndex } = useZIndex();
        const ns = useNamespace("popper");
        const contentAttrs = vue.computed(() => vue.unref(attributes).popper);
        const contentZIndex = vue.ref(isNumber(props.zIndex) ? props.zIndex : nextZIndex());
        const contentClass = vue.computed(() => [
          ns.b(),
          ns.is("pure", props.pure),
          ns.is(props.effect),
          props.popperClass
        ]);
        const contentStyle = vue.computed(() => {
          return [
            { zIndex: vue.unref(contentZIndex) },
            vue.unref(styles).popper,
            props.popperStyle || {}
          ];
        });
        const ariaModal = vue.computed(() => role.value === "dialog" ? "false" : void 0);
        const arrowStyle = vue.computed(() => vue.unref(styles).arrow || {});
        const updateZIndex = () => {
          contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex();
        };
        return {
          ariaModal,
          arrowStyle,
          contentAttrs,
          contentClass,
          contentStyle,
          contentZIndex,
          updateZIndex
        };
      };
      const usePopperContentFocusTrap = (props, emit) => {
        const trapped = vue.ref(false);
        const focusStartRef = vue.ref();
        const onFocusAfterTrapped = () => {
          emit("focus");
        };
        const onFocusAfterReleased = (event2) => {
          var _a2;
          if (((_a2 = event2.detail) == null ? void 0 : _a2.focusReason) !== "pointer") {
            focusStartRef.value = "first";
            emit("blur");
          }
        };
        const onFocusInTrap = (event2) => {
          if (props.visible && !trapped.value) {
            if (event2.target) {
              focusStartRef.value = event2.target;
            }
            trapped.value = true;
          }
        };
        const onFocusoutPrevented = (event2) => {
          if (!props.trapping) {
            if (event2.detail.focusReason === "pointer") {
              event2.preventDefault();
            }
            trapped.value = false;
          }
        };
        const onReleaseRequested = () => {
          trapped.value = false;
          emit("close");
        };
        return {
          focusStartRef,
          trapped,
          onFocusAfterReleased,
          onFocusAfterTrapped,
          onFocusInTrap,
          onFocusoutPrevented,
          onReleaseRequested
        };
      };
      const __default__$o = vue.defineComponent({
        name: "ElPopperContent"
      });
      const _sfc_main$C = /* @__PURE__ */ vue.defineComponent({
        ...__default__$o,
        props: popperContentProps,
        emits: popperContentEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const {
            focusStartRef,
            trapped,
            onFocusAfterReleased,
            onFocusAfterTrapped,
            onFocusInTrap,
            onFocusoutPrevented,
            onReleaseRequested
          } = usePopperContentFocusTrap(props, emit);
          const { attributes, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props);
          const {
            ariaModal,
            arrowStyle,
            contentAttrs,
            contentClass,
            contentStyle,
            updateZIndex
          } = usePopperContentDOM(props, {
            styles,
            attributes,
            role
          });
          const formItemContext = vue.inject(formItemContextKey, void 0);
          const arrowOffset = vue.ref();
          vue.provide(POPPER_CONTENT_INJECTION_KEY, {
            arrowStyle,
            arrowRef,
            arrowOffset
          });
          if (formItemContext && (formItemContext.addInputId || formItemContext.removeInputId)) {
            vue.provide(formItemContextKey, {
              ...formItemContext,
              addInputId: NOOP,
              removeInputId: NOOP
            });
          }
          let triggerTargetAriaStopWatch = void 0;
          const updatePopper = (shouldUpdateZIndex = true) => {
            update();
            shouldUpdateZIndex && updateZIndex();
          };
          const togglePopperAlive = () => {
            updatePopper(false);
            if (props.visible && props.focusOnShow) {
              trapped.value = true;
            } else if (props.visible === false) {
              trapped.value = false;
            }
          };
          vue.onMounted(() => {
            vue.watch(() => props.triggerTargetEl, (triggerTargetEl, prevTriggerTargetEl) => {
              triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();
              triggerTargetAriaStopWatch = void 0;
              const el = vue.unref(triggerTargetEl || contentRef.value);
              const prevEl = vue.unref(prevTriggerTargetEl || contentRef.value);
              if (isElement(el)) {
                triggerTargetAriaStopWatch = vue.watch([role, () => props.ariaLabel, ariaModal, () => props.id], (watches) => {
                  ["role", "aria-label", "aria-modal", "id"].forEach((key2, idx) => {
                    isNil(watches[idx]) ? el.removeAttribute(key2) : el.setAttribute(key2, watches[idx]);
                  });
                }, { immediate: true });
              }
              if (prevEl !== el && isElement(prevEl)) {
                ["role", "aria-label", "aria-modal", "id"].forEach((key2) => {
                  prevEl.removeAttribute(key2);
                });
              }
            }, { immediate: true });
            vue.watch(() => props.visible, togglePopperAlive, { immediate: true });
          });
          vue.onBeforeUnmount(() => {
            triggerTargetAriaStopWatch == null ? void 0 : triggerTargetAriaStopWatch();
            triggerTargetAriaStopWatch = void 0;
          });
          expose({
            popperContentRef: contentRef,
            popperInstanceRef: instanceRef,
            updatePopper,
            contentStyle
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", vue.mergeProps({
              ref_key: "contentRef",
              ref: contentRef
            }, vue.unref(contentAttrs), {
              style: vue.unref(contentStyle),
              class: vue.unref(contentClass),
              tabindex: "-1",
              onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)),
              onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e))
            }), [
              vue.createVNode(vue.unref(ElFocusTrap), {
                trapped: vue.unref(trapped),
                "trap-on-focus-in": true,
                "focus-trap-el": vue.unref(contentRef),
                "focus-start-el": vue.unref(focusStartRef),
                onFocusAfterTrapped: vue.unref(onFocusAfterTrapped),
                onFocusAfterReleased: vue.unref(onFocusAfterReleased),
                onFocusin: vue.unref(onFocusInTrap),
                onFocusoutPrevented: vue.unref(onFocusoutPrevented),
                onReleaseRequested: vue.unref(onReleaseRequested)
              }, {
                default: vue.withCtx(() => [
                  vue.renderSlot(_ctx.$slots, "default")
                ]),
                _: 3
              }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"])
            ], 16);
          };
        }
      });
      var ElPopperContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$C, [["__file", "content.vue"]]);
      const ElPopper = withInstall(Popper);
      const TOOLTIP_INJECTION_KEY = Symbol("elTooltip");
      const useTooltipContentProps = buildProps({
        ...useDelayedToggleProps,
        ...popperContentProps,
        appendTo: {
          type: definePropType([String, Object])
        },
        content: {
          type: String,
          default: ""
        },
        rawContent: {
          type: Boolean,
          default: false
        },
        persistent: Boolean,
        ariaLabel: String,
        visible: {
          type: definePropType(Boolean),
          default: null
        },
        transition: String,
        teleported: {
          type: Boolean,
          default: true
        },
        disabled: Boolean
      });
      const useTooltipTriggerProps = buildProps({
        ...popperTriggerProps,
        disabled: Boolean,
        trigger: {
          type: definePropType([String, Array]),
          default: "hover"
        },
        triggerKeys: {
          type: definePropType(Array),
          default: () => [EVENT_CODE.enter, EVENT_CODE.space]
        }
      });
      const {
        useModelToggleProps: useTooltipModelToggleProps,
        useModelToggleEmits: useTooltipModelToggleEmits,
        useModelToggle: useTooltipModelToggle
      } = createModelToggleComposable("visible");
      const useTooltipProps = buildProps({
        ...popperProps,
        ...useTooltipModelToggleProps,
        ...useTooltipContentProps,
        ...useTooltipTriggerProps,
        ...popperArrowProps,
        showArrow: {
          type: Boolean,
          default: true
        }
      });
      const tooltipEmits = [
        ...useTooltipModelToggleEmits,
        "before-show",
        "before-hide",
        "show",
        "hide",
        "open",
        "close"
      ];
      const isTriggerType = (trigger, type) => {
        if (isArray$1(trigger)) {
          return trigger.includes(type);
        }
        return trigger === type;
      };
      const whenTrigger = (trigger, type, handler) => {
        return (e) => {
          isTriggerType(vue.unref(trigger), type) && handler(e);
        };
      };
      const __default__$n = vue.defineComponent({
        name: "ElTooltipTrigger"
      });
      const _sfc_main$B = /* @__PURE__ */ vue.defineComponent({
        ...__default__$n,
        props: useTooltipTriggerProps,
        setup(__props, { expose }) {
          const props = __props;
          const ns = useNamespace("tooltip");
          const { controlled, id, open, onOpen, onClose, onToggle } = vue.inject(TOOLTIP_INJECTION_KEY, void 0);
          const triggerRef = vue.ref(null);
          const stopWhenControlledOrDisabled = () => {
            if (vue.unref(controlled) || props.disabled) {
              return true;
            }
          };
          const trigger = vue.toRef(props, "trigger");
          const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen));
          const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose));
          const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => {
            if (e.button === 0) {
              onToggle(e);
            }
          }));
          const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen));
          const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose));
          const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => {
            e.preventDefault();
            onToggle(e);
          }));
          const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => {
            const { code } = e;
            if (props.triggerKeys.includes(code)) {
              e.preventDefault();
              onToggle(e);
            }
          });
          expose({
            triggerRef
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.unref(ElPopperTrigger), {
              id: vue.unref(id),
              "virtual-ref": _ctx.virtualRef,
              open: vue.unref(open),
              "virtual-triggering": _ctx.virtualTriggering,
              class: vue.normalizeClass(vue.unref(ns).e("trigger")),
              onBlur: vue.unref(onBlur),
              onClick: vue.unref(onClick),
              onContextmenu: vue.unref(onContextMenu),
              onFocus: vue.unref(onFocus),
              onMouseenter: vue.unref(onMouseenter),
              onMouseleave: vue.unref(onMouseleave),
              onKeydown: vue.unref(onKeydown)
            }, {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]);
          };
        }
      });
      var ElTooltipTrigger = /* @__PURE__ */ _export_sfc$1(_sfc_main$B, [["__file", "trigger.vue"]]);
      const __default__$m = vue.defineComponent({
        name: "ElTooltipContent",
        inheritAttrs: false
      });
      const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
        ...__default__$m,
        props: useTooltipContentProps,
        setup(__props, { expose }) {
          const props = __props;
          const { selector } = usePopperContainerId();
          const ns = useNamespace("tooltip");
          const contentRef = vue.ref(null);
          const destroyed = vue.ref(false);
          const {
            controlled,
            id,
            open,
            trigger,
            onClose,
            onOpen,
            onShow,
            onHide,
            onBeforeShow,
            onBeforeHide
          } = vue.inject(TOOLTIP_INJECTION_KEY, void 0);
          const transitionClass = vue.computed(() => {
            return props.transition || `${ns.namespace.value}-fade-in-linear`;
          });
          const persistentRef = vue.computed(() => {
            return props.persistent;
          });
          vue.onBeforeUnmount(() => {
            destroyed.value = true;
          });
          const shouldRender = vue.computed(() => {
            return vue.unref(persistentRef) ? true : vue.unref(open);
          });
          const shouldShow = vue.computed(() => {
            return props.disabled ? false : vue.unref(open);
          });
          const appendTo = vue.computed(() => {
            return props.appendTo || selector.value;
          });
          const contentStyle = vue.computed(() => {
            var _a2;
            return (_a2 = props.style) != null ? _a2 : {};
          });
          const ariaHidden = vue.computed(() => !vue.unref(open));
          const onTransitionLeave = () => {
            onHide();
          };
          const stopWhenControlled = () => {
            if (vue.unref(controlled))
              return true;
          };
          const onContentEnter = composeEventHandlers(stopWhenControlled, () => {
            if (props.enterable && vue.unref(trigger) === "hover") {
              onOpen();
            }
          });
          const onContentLeave = composeEventHandlers(stopWhenControlled, () => {
            if (vue.unref(trigger) === "hover") {
              onClose();
            }
          });
          const onBeforeEnter = () => {
            var _a2, _b;
            (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2);
            onBeforeShow == null ? void 0 : onBeforeShow();
          };
          const onBeforeLeave = () => {
            onBeforeHide == null ? void 0 : onBeforeHide();
          };
          const onAfterShow = () => {
            onShow();
            stopHandle = onClickOutside(vue.computed(() => {
              var _a2;
              return (_a2 = contentRef.value) == null ? void 0 : _a2.popperContentRef;
            }), () => {
              if (vue.unref(controlled))
                return;
              const $trigger = vue.unref(trigger);
              if ($trigger !== "hover") {
                onClose();
              }
            });
          };
          const onBlur = () => {
            if (!props.virtualTriggering) {
              onClose();
            }
          };
          let stopHandle;
          vue.watch(() => vue.unref(open), (val) => {
            if (!val) {
              stopHandle == null ? void 0 : stopHandle();
            }
          }, {
            flush: "post"
          });
          vue.watch(() => props.content, () => {
            var _a2, _b;
            (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2);
          });
          expose({
            contentRef
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.Teleport, {
              disabled: !_ctx.teleported,
              to: vue.unref(appendTo)
            }, [
              vue.createVNode(vue.Transition, {
                name: vue.unref(transitionClass),
                onAfterLeave: onTransitionLeave,
                onBeforeEnter,
                onAfterEnter: onAfterShow,
                onBeforeLeave
              }, {
                default: vue.withCtx(() => [
                  vue.unref(shouldRender) ? vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(ElPopperContent), vue.mergeProps({
                    key: 0,
                    id: vue.unref(id),
                    ref_key: "contentRef",
                    ref: contentRef
                  }, _ctx.$attrs, {
                    "aria-label": _ctx.ariaLabel,
                    "aria-hidden": vue.unref(ariaHidden),
                    "boundaries-padding": _ctx.boundariesPadding,
                    "fallback-placements": _ctx.fallbackPlacements,
                    "gpu-acceleration": _ctx.gpuAcceleration,
                    offset: _ctx.offset,
                    placement: _ctx.placement,
                    "popper-options": _ctx.popperOptions,
                    strategy: _ctx.strategy,
                    effect: _ctx.effect,
                    enterable: _ctx.enterable,
                    pure: _ctx.pure,
                    "popper-class": _ctx.popperClass,
                    "popper-style": [_ctx.popperStyle, vue.unref(contentStyle)],
                    "reference-el": _ctx.referenceEl,
                    "trigger-target-el": _ctx.triggerTargetEl,
                    visible: vue.unref(shouldShow),
                    "z-index": _ctx.zIndex,
                    onMouseenter: vue.unref(onContentEnter),
                    onMouseleave: vue.unref(onContentLeave),
                    onBlur,
                    onClose: vue.unref(onClose)
                  }), {
                    default: vue.withCtx(() => [
                      !destroyed.value ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }) : vue.createCommentVNode("v-if", true)
                    ]),
                    _: 3
                  }, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "onMouseenter", "onMouseleave", "onClose"])), [
                    [vue.vShow, vue.unref(shouldShow)]
                  ]) : vue.createCommentVNode("v-if", true)
                ]),
                _: 3
              }, 8, ["name"])
            ], 8, ["disabled", "to"]);
          };
        }
      });
      var ElTooltipContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$A, [["__file", "content.vue"]]);
      const _hoisted_1$j = ["innerHTML"];
      const _hoisted_2$e = { key: 1 };
      const __default__$l = vue.defineComponent({
        name: "ElTooltip"
      });
      const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
        ...__default__$l,
        props: useTooltipProps,
        emits: tooltipEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          usePopperContainer();
          const id = useId();
          const popperRef = vue.ref();
          const contentRef = vue.ref();
          const updatePopper = () => {
            var _a2;
            const popperComponent = vue.unref(popperRef);
            if (popperComponent) {
              (_a2 = popperComponent.popperInstanceRef) == null ? void 0 : _a2.update();
            }
          };
          const open = vue.ref(false);
          const toggleReason = vue.ref();
          const { show, hide, hasUpdateHandler } = useTooltipModelToggle({
            indicator: open,
            toggleReason
          });
          const { onOpen, onClose } = useDelayedToggle({
            showAfter: vue.toRef(props, "showAfter"),
            hideAfter: vue.toRef(props, "hideAfter"),
            autoClose: vue.toRef(props, "autoClose"),
            open: show,
            close: hide
          });
          const controlled = vue.computed(() => isBoolean(props.visible) && !hasUpdateHandler.value);
          vue.provide(TOOLTIP_INJECTION_KEY, {
            controlled,
            id,
            open: vue.readonly(open),
            trigger: vue.toRef(props, "trigger"),
            onOpen: (event2) => {
              onOpen(event2);
            },
            onClose: (event2) => {
              onClose(event2);
            },
            onToggle: (event2) => {
              if (vue.unref(open)) {
                onClose(event2);
              } else {
                onOpen(event2);
              }
            },
            onShow: () => {
              emit("show", toggleReason.value);
            },
            onHide: () => {
              emit("hide", toggleReason.value);
            },
            onBeforeShow: () => {
              emit("before-show", toggleReason.value);
            },
            onBeforeHide: () => {
              emit("before-hide", toggleReason.value);
            },
            updatePopper
          });
          vue.watch(() => props.disabled, (disabled) => {
            if (disabled && open.value) {
              open.value = false;
            }
          });
          const isFocusInsideContent = (event2) => {
            var _a2, _b;
            const popperContent = (_b = (_a2 = contentRef.value) == null ? void 0 : _a2.contentRef) == null ? void 0 : _b.popperContentRef;
            const activeElement = (event2 == null ? void 0 : event2.relatedTarget) || document.activeElement;
            return popperContent && popperContent.contains(activeElement);
          };
          vue.onDeactivated(() => open.value && hide());
          expose({
            popperRef,
            contentRef,
            isFocusInsideContent,
            updatePopper,
            onOpen,
            onClose,
            hide
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.unref(ElPopper), {
              ref_key: "popperRef",
              ref: popperRef,
              role: _ctx.role
            }, {
              default: vue.withCtx(() => [
                vue.createVNode(ElTooltipTrigger, {
                  disabled: _ctx.disabled,
                  trigger: _ctx.trigger,
                  "trigger-keys": _ctx.triggerKeys,
                  "virtual-ref": _ctx.virtualRef,
                  "virtual-triggering": _ctx.virtualTriggering
                }, {
                  default: vue.withCtx(() => [
                    _ctx.$slots.default ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }) : vue.createCommentVNode("v-if", true)
                  ]),
                  _: 3
                }, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering"]),
                vue.createVNode(ElTooltipContent, {
                  ref_key: "contentRef",
                  ref: contentRef,
                  "aria-label": _ctx.ariaLabel,
                  "boundaries-padding": _ctx.boundariesPadding,
                  content: _ctx.content,
                  disabled: _ctx.disabled,
                  effect: _ctx.effect,
                  enterable: _ctx.enterable,
                  "fallback-placements": _ctx.fallbackPlacements,
                  "hide-after": _ctx.hideAfter,
                  "gpu-acceleration": _ctx.gpuAcceleration,
                  offset: _ctx.offset,
                  persistent: _ctx.persistent,
                  "popper-class": _ctx.popperClass,
                  "popper-style": _ctx.popperStyle,
                  placement: _ctx.placement,
                  "popper-options": _ctx.popperOptions,
                  pure: _ctx.pure,
                  "raw-content": _ctx.rawContent,
                  "reference-el": _ctx.referenceEl,
                  "trigger-target-el": _ctx.triggerTargetEl,
                  "show-after": _ctx.showAfter,
                  strategy: _ctx.strategy,
                  teleported: _ctx.teleported,
                  transition: _ctx.transition,
                  "virtual-triggering": _ctx.virtualTriggering,
                  "z-index": _ctx.zIndex,
                  "append-to": _ctx.appendTo
                }, {
                  default: vue.withCtx(() => [
                    vue.renderSlot(_ctx.$slots, "content", {}, () => [
                      _ctx.rawContent ? (vue.openBlock(), vue.createElementBlock("span", {
                        key: 0,
                        innerHTML: _ctx.content
                      }, null, 8, _hoisted_1$j)) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$e, vue.toDisplayString(_ctx.content), 1))
                    ]),
                    _ctx.showArrow ? (vue.openBlock(), vue.createBlock(vue.unref(ElPopperArrow), {
                      key: 0,
                      "arrow-offset": _ctx.arrowOffset
                    }, null, 8, ["arrow-offset"])) : vue.createCommentVNode("v-if", true)
                  ]),
                  _: 3
                }, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to"])
              ]),
              _: 3
            }, 8, ["role"]);
          };
        }
      });
      var Tooltip = /* @__PURE__ */ _export_sfc$1(_sfc_main$z, [["__file", "tooltip.vue"]]);
      const ElTooltip = withInstall(Tooltip);
      const breadcrumbKey = Symbol("breadcrumbKey");
      const breadcrumbProps = buildProps({
        separator: {
          type: String,
          default: "/"
        },
        separatorIcon: {
          type: iconPropType
        }
      });
      const _hoisted_1$i = ["aria-label"];
      const __default__$k = vue.defineComponent({
        name: "ElBreadcrumb"
      });
      const _sfc_main$y = /* @__PURE__ */ vue.defineComponent({
        ...__default__$k,
        props: breadcrumbProps,
        setup(__props) {
          const props = __props;
          const { t } = useLocale();
          const ns = useNamespace("breadcrumb");
          const breadcrumb = vue.ref();
          vue.provide(breadcrumbKey, props);
          vue.onMounted(() => {
            const items = breadcrumb.value.querySelectorAll(`.${ns.e("item")}`);
            if (items.length) {
              items[items.length - 1].setAttribute("aria-current", "page");
            }
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              ref_key: "breadcrumb",
              ref: breadcrumb,
              class: vue.normalizeClass(vue.unref(ns).b()),
              "aria-label": vue.unref(t)("el.breadcrumb.label"),
              role: "navigation"
            }, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 10, _hoisted_1$i);
          };
        }
      });
      var Breadcrumb = /* @__PURE__ */ _export_sfc$1(_sfc_main$y, [["__file", "breadcrumb.vue"]]);
      const breadcrumbItemProps = buildProps({
        to: {
          type: definePropType([String, Object]),
          default: ""
        },
        replace: {
          type: Boolean,
          default: false
        }
      });
      const __default__$j = vue.defineComponent({
        name: "ElBreadcrumbItem"
      });
      const _sfc_main$x = /* @__PURE__ */ vue.defineComponent({
        ...__default__$j,
        props: breadcrumbItemProps,
        setup(__props) {
          const props = __props;
          const instance = vue.getCurrentInstance();
          const breadcrumbContext = vue.inject(breadcrumbKey, void 0);
          const ns = useNamespace("breadcrumb");
          const router = instance.appContext.config.globalProperties.$router;
          const link = vue.ref();
          const onClick = () => {
            if (!props.to || !router)
              return;
            props.replace ? router.replace(props.to) : router.push(props.to);
          };
          return (_ctx, _cache) => {
            var _a2, _b;
            return vue.openBlock(), vue.createElementBlock("span", {
              class: vue.normalizeClass(vue.unref(ns).e("item"))
            }, [
              vue.createElementVNode("span", {
                ref_key: "link",
                ref: link,
                class: vue.normalizeClass([vue.unref(ns).e("inner"), vue.unref(ns).is("link", !!_ctx.to)]),
                role: "link",
                onClick
              }, [
                vue.renderSlot(_ctx.$slots, "default")
              ], 2),
              ((_a2 = vue.unref(breadcrumbContext)) == null ? void 0 : _a2.separatorIcon) ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                key: 0,
                class: vue.normalizeClass(vue.unref(ns).e("separator"))
              }, {
                default: vue.withCtx(() => [
                  (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(breadcrumbContext).separatorIcon)))
                ]),
                _: 1
              }, 8, ["class"])) : (vue.openBlock(), vue.createElementBlock("span", {
                key: 1,
                class: vue.normalizeClass(vue.unref(ns).e("separator")),
                role: "presentation"
              }, vue.toDisplayString((_b = vue.unref(breadcrumbContext)) == null ? void 0 : _b.separator), 3))
            ], 2);
          };
        }
      });
      var BreadcrumbItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$x, [["__file", "breadcrumb-item.vue"]]);
      const ElBreadcrumb = withInstall(Breadcrumb, {
        BreadcrumbItem
      });
      const ElBreadcrumbItem = withNoopInstall(BreadcrumbItem);
      const buttonGroupContextKey = Symbol("buttonGroupContextKey");
      const useButton = (props, emit) => {
        useDeprecated({
          from: "type.text",
          replacement: "link",
          version: "3.0.0",
          scope: "props",
          ref: "https://element-plus.org/en-US/component/button.html#button-attributes"
        }, vue.computed(() => props.type === "text"));
        const buttonGroupContext = vue.inject(buttonGroupContextKey, void 0);
        const globalConfig2 = useGlobalConfig("button");
        const { form } = useFormItem();
        const _size = useFormSize(vue.computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size));
        const _disabled = useFormDisabled();
        const _ref = vue.ref();
        const slots = vue.useSlots();
        const _type = vue.computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || "");
        const autoInsertSpace = vue.computed(() => {
          var _a2, _b, _c;
          return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a2 = globalConfig2.value) == null ? void 0 : _a2.autoInsertSpace) != null ? _c : false;
        });
        const _props = vue.computed(() => {
          if (props.tag === "button") {
            return {
              ariaDisabled: _disabled.value || props.loading,
              disabled: _disabled.value || props.loading,
              autofocus: props.autofocus,
              type: props.nativeType
            };
          }
          return {};
        });
        const shouldAddSpace = vue.computed(() => {
          var _a2;
          const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots);
          if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) {
            const slot = defaultSlot[0];
            if ((slot == null ? void 0 : slot.type) === vue.Text) {
              const text = slot.children;
              return new RegExp("^\\p{Unified_Ideograph}{2}$", "u").test(text.trim());
            }
          }
          return false;
        });
        const handleClick = (evt) => {
          if (props.nativeType === "reset") {
            form == null ? void 0 : form.resetFields();
          }
          emit("click", evt);
        };
        return {
          _disabled,
          _size,
          _type,
          _ref,
          _props,
          shouldAddSpace,
          handleClick
        };
      };
      const buttonTypes = [
        "default",
        "primary",
        "success",
        "warning",
        "info",
        "danger",
        "text",
        ""
      ];
      const buttonNativeTypes = ["button", "submit", "reset"];
      const buttonProps = buildProps({
        size: useSizeProp,
        disabled: Boolean,
        type: {
          type: String,
          values: buttonTypes,
          default: ""
        },
        icon: {
          type: iconPropType
        },
        nativeType: {
          type: String,
          values: buttonNativeTypes,
          default: "button"
        },
        loading: Boolean,
        loadingIcon: {
          type: iconPropType,
          default: () => loading_default
        },
        plain: Boolean,
        text: Boolean,
        link: Boolean,
        bg: Boolean,
        autofocus: Boolean,
        round: Boolean,
        circle: Boolean,
        color: String,
        dark: Boolean,
        autoInsertSpace: {
          type: Boolean,
          default: void 0
        },
        tag: {
          type: definePropType([String, Object]),
          default: "button"
        }
      });
      const buttonEmits = {
        click: (evt) => evt instanceof MouseEvent
      };
      function bound01(n, max) {
        if (isOnePointZero(n)) {
          n = "100%";
        }
        var isPercent = isPercentage(n);
        n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));
        if (isPercent) {
          n = parseInt(String(n * max), 10) / 100;
        }
        if (Math.abs(n - max) < 1e-6) {
          return 1;
        }
        if (max === 360) {
          n = (n < 0 ? n % max + max : n % max) / parseFloat(String(max));
        } else {
          n = n % max / parseFloat(String(max));
        }
        return n;
      }
      function clamp01(val) {
        return Math.min(1, Math.max(0, val));
      }
      function isOnePointZero(n) {
        return typeof n === "string" && n.indexOf(".") !== -1 && parseFloat(n) === 1;
      }
      function isPercentage(n) {
        return typeof n === "string" && n.indexOf("%") !== -1;
      }
      function boundAlpha(a2) {
        a2 = parseFloat(a2);
        if (isNaN(a2) || a2 < 0 || a2 > 1) {
          a2 = 1;
        }
        return a2;
      }
      function convertToPercentage(n) {
        if (n <= 1) {
          return "".concat(Number(n) * 100, "%");
        }
        return n;
      }
      function pad2(c2) {
        return c2.length === 1 ? "0" + c2 : String(c2);
      }
      function rgbToRgb(r, g, b2) {
        return {
          r: bound01(r, 255) * 255,
          g: bound01(g, 255) * 255,
          b: bound01(b2, 255) * 255
        };
      }
      function rgbToHsl(r, g, b2) {
        r = bound01(r, 255);
        g = bound01(g, 255);
        b2 = bound01(b2, 255);
        var max = Math.max(r, g, b2);
        var min = Math.min(r, g, b2);
        var h2 = 0;
        var s2 = 0;
        var l2 = (max + min) / 2;
        if (max === min) {
          s2 = 0;
          h2 = 0;
        } else {
          var d2 = max - min;
          s2 = l2 > 0.5 ? d2 / (2 - max - min) : d2 / (max + min);
          switch (max) {
            case r:
              h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
              break;
            case g:
              h2 = (b2 - r) / d2 + 2;
              break;
            case b2:
              h2 = (r - g) / d2 + 4;
              break;
          }
          h2 /= 6;
        }
        return { h: h2, s: s2, l: l2 };
      }
      function hue2rgb(p2, q2, t) {
        if (t < 0) {
          t += 1;
        }
        if (t > 1) {
          t -= 1;
        }
        if (t < 1 / 6) {
          return p2 + (q2 - p2) * (6 * t);
        }
        if (t < 1 / 2) {
          return q2;
        }
        if (t < 2 / 3) {
          return p2 + (q2 - p2) * (2 / 3 - t) * 6;
        }
        return p2;
      }
      function hslToRgb(h2, s2, l2) {
        var r;
        var g;
        var b2;
        h2 = bound01(h2, 360);
        s2 = bound01(s2, 100);
        l2 = bound01(l2, 100);
        if (s2 === 0) {
          g = l2;
          b2 = l2;
          r = l2;
        } else {
          var q2 = l2 < 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2;
          var p2 = 2 * l2 - q2;
          r = hue2rgb(p2, q2, h2 + 1 / 3);
          g = hue2rgb(p2, q2, h2);
          b2 = hue2rgb(p2, q2, h2 - 1 / 3);
        }
        return { r: r * 255, g: g * 255, b: b2 * 255 };
      }
      function rgbToHsv(r, g, b2) {
        r = bound01(r, 255);
        g = bound01(g, 255);
        b2 = bound01(b2, 255);
        var max = Math.max(r, g, b2);
        var min = Math.min(r, g, b2);
        var h2 = 0;
        var v2 = max;
        var d2 = max - min;
        var s2 = max === 0 ? 0 : d2 / max;
        if (max === min) {
          h2 = 0;
        } else {
          switch (max) {
            case r:
              h2 = (g - b2) / d2 + (g < b2 ? 6 : 0);
              break;
            case g:
              h2 = (b2 - r) / d2 + 2;
              break;
            case b2:
              h2 = (r - g) / d2 + 4;
              break;
          }
          h2 /= 6;
        }
        return { h: h2, s: s2, v: v2 };
      }
      function hsvToRgb(h2, s2, v2) {
        h2 = bound01(h2, 360) * 6;
        s2 = bound01(s2, 100);
        v2 = bound01(v2, 100);
        var i = Math.floor(h2);
        var f2 = h2 - i;
        var p2 = v2 * (1 - s2);
        var q2 = v2 * (1 - f2 * s2);
        var t = v2 * (1 - (1 - f2) * s2);
        var mod = i % 6;
        var r = [v2, q2, p2, p2, t, v2][mod];
        var g = [t, v2, v2, q2, p2, p2][mod];
        var b2 = [p2, p2, t, v2, v2, q2][mod];
        return { r: r * 255, g: g * 255, b: b2 * 255 };
      }
      function rgbToHex(r, g, b2, allow3Char) {
        var hex = [
          pad2(Math.round(r).toString(16)),
          pad2(Math.round(g).toString(16)),
          pad2(Math.round(b2).toString(16))
        ];
        if (allow3Char && hex[0].startsWith(hex[0].charAt(1)) && hex[1].startsWith(hex[1].charAt(1)) && hex[2].startsWith(hex[2].charAt(1))) {
          return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
        }
        return hex.join("");
      }
      function rgbaToHex(r, g, b2, a2, allow4Char) {
        var hex = [
          pad2(Math.round(r).toString(16)),
          pad2(Math.round(g).toString(16)),
          pad2(Math.round(b2).toString(16)),
          pad2(convertDecimalToHex(a2))
        ];
        if (allow4Char && hex[0].startsWith(hex[0].charAt(1)) && hex[1].startsWith(hex[1].charAt(1)) && hex[2].startsWith(hex[2].charAt(1)) && hex[3].startsWith(hex[3].charAt(1))) {
          return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);
        }
        return hex.join("");
      }
      function convertDecimalToHex(d2) {
        return Math.round(parseFloat(d2) * 255).toString(16);
      }
      function convertHexToDecimal(h2) {
        return parseIntFromHex(h2) / 255;
      }
      function parseIntFromHex(val) {
        return parseInt(val, 16);
      }
      function numberInputToObject(color) {
        return {
          r: color >> 16,
          g: (color & 65280) >> 8,
          b: color & 255
        };
      }
      var names = {
        aliceblue: "#f0f8ff",
        antiquewhite: "#faebd7",
        aqua: "#00ffff",
        aquamarine: "#7fffd4",
        azure: "#f0ffff",
        beige: "#f5f5dc",
        bisque: "#ffe4c4",
        black: "#000000",
        blanchedalmond: "#ffebcd",
        blue: "#0000ff",
        blueviolet: "#8a2be2",
        brown: "#a52a2a",
        burlywood: "#deb887",
        cadetblue: "#5f9ea0",
        chartreuse: "#7fff00",
        chocolate: "#d2691e",
        coral: "#ff7f50",
        cornflowerblue: "#6495ed",
        cornsilk: "#fff8dc",
        crimson: "#dc143c",
        cyan: "#00ffff",
        darkblue: "#00008b",
        darkcyan: "#008b8b",
        darkgoldenrod: "#b8860b",
        darkgray: "#a9a9a9",
        darkgreen: "#006400",
        darkgrey: "#a9a9a9",
        darkkhaki: "#bdb76b",
        darkmagenta: "#8b008b",
        darkolivegreen: "#556b2f",
        darkorange: "#ff8c00",
        darkorchid: "#9932cc",
        darkred: "#8b0000",
        darksalmon: "#e9967a",
        darkseagreen: "#8fbc8f",
        darkslateblue: "#483d8b",
        darkslategray: "#2f4f4f",
        darkslategrey: "#2f4f4f",
        darkturquoise: "#00ced1",
        darkviolet: "#9400d3",
        deeppink: "#ff1493",
        deepskyblue: "#00bfff",
        dimgray: "#696969",
        dimgrey: "#696969",
        dodgerblue: "#1e90ff",
        firebrick: "#b22222",
        floralwhite: "#fffaf0",
        forestgreen: "#228b22",
        fuchsia: "#ff00ff",
        gainsboro: "#dcdcdc",
        ghostwhite: "#f8f8ff",
        goldenrod: "#daa520",
        gold: "#ffd700",
        gray: "#808080",
        green: "#008000",
        greenyellow: "#adff2f",
        grey: "#808080",
        honeydew: "#f0fff0",
        hotpink: "#ff69b4",
        indianred: "#cd5c5c",
        indigo: "#4b0082",
        ivory: "#fffff0",
        khaki: "#f0e68c",
        lavenderblush: "#fff0f5",
        lavender: "#e6e6fa",
        lawngreen: "#7cfc00",
        lemonchiffon: "#fffacd",
        lightblue: "#add8e6",
        lightcoral: "#f08080",
        lightcyan: "#e0ffff",
        lightgoldenrodyellow: "#fafad2",
        lightgray: "#d3d3d3",
        lightgreen: "#90ee90",
        lightgrey: "#d3d3d3",
        lightpink: "#ffb6c1",
        lightsalmon: "#ffa07a",
        lightseagreen: "#20b2aa",
        lightskyblue: "#87cefa",
        lightslategray: "#778899",
        lightslategrey: "#778899",
        lightsteelblue: "#b0c4de",
        lightyellow: "#ffffe0",
        lime: "#00ff00",
        limegreen: "#32cd32",
        linen: "#faf0e6",
        magenta: "#ff00ff",
        maroon: "#800000",
        mediumaquamarine: "#66cdaa",
        mediumblue: "#0000cd",
        mediumorchid: "#ba55d3",
        mediumpurple: "#9370db",
        mediumseagreen: "#3cb371",
        mediumslateblue: "#7b68ee",
        mediumspringgreen: "#00fa9a",
        mediumturquoise: "#48d1cc",
        mediumvioletred: "#c71585",
        midnightblue: "#191970",
        mintcream: "#f5fffa",
        mistyrose: "#ffe4e1",
        moccasin: "#ffe4b5",
        navajowhite: "#ffdead",
        navy: "#000080",
        oldlace: "#fdf5e6",
        olive: "#808000",
        olivedrab: "#6b8e23",
        orange: "#ffa500",
        orangered: "#ff4500",
        orchid: "#da70d6",
        palegoldenrod: "#eee8aa",
        palegreen: "#98fb98",
        paleturquoise: "#afeeee",
        palevioletred: "#db7093",
        papayawhip: "#ffefd5",
        peachpuff: "#ffdab9",
        peru: "#cd853f",
        pink: "#ffc0cb",
        plum: "#dda0dd",
        powderblue: "#b0e0e6",
        purple: "#800080",
        rebeccapurple: "#663399",
        red: "#ff0000",
        rosybrown: "#bc8f8f",
        royalblue: "#4169e1",
        saddlebrown: "#8b4513",
        salmon: "#fa8072",
        sandybrown: "#f4a460",
        seagreen: "#2e8b57",
        seashell: "#fff5ee",
        sienna: "#a0522d",
        silver: "#c0c0c0",
        skyblue: "#87ceeb",
        slateblue: "#6a5acd",
        slategray: "#708090",
        slategrey: "#708090",
        snow: "#fffafa",
        springgreen: "#00ff7f",
        steelblue: "#4682b4",
        tan: "#d2b48c",
        teal: "#008080",
        thistle: "#d8bfd8",
        tomato: "#ff6347",
        turquoise: "#40e0d0",
        violet: "#ee82ee",
        wheat: "#f5deb3",
        white: "#ffffff",
        whitesmoke: "#f5f5f5",
        yellow: "#ffff00",
        yellowgreen: "#9acd32"
      };
      function inputToRGB(color) {
        var rgb = { r: 0, g: 0, b: 0 };
        var a2 = 1;
        var s2 = null;
        var v2 = null;
        var l2 = null;
        var ok = false;
        var format2 = false;
        if (typeof color === "string") {
          color = stringInputToObject(color);
        }
        if (typeof color === "object") {
          if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
            rgb = rgbToRgb(color.r, color.g, color.b);
            ok = true;
            format2 = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
          } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
            s2 = convertToPercentage(color.s);
            v2 = convertToPercentage(color.v);
            rgb = hsvToRgb(color.h, s2, v2);
            ok = true;
            format2 = "hsv";
          } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
            s2 = convertToPercentage(color.s);
            l2 = convertToPercentage(color.l);
            rgb = hslToRgb(color.h, s2, l2);
            ok = true;
            format2 = "hsl";
          }
          if (Object.prototype.hasOwnProperty.call(color, "a")) {
            a2 = color.a;
          }
        }
        a2 = boundAlpha(a2);
        return {
          ok,
          format: color.format || format2,
          r: Math.min(255, Math.max(rgb.r, 0)),
          g: Math.min(255, Math.max(rgb.g, 0)),
          b: Math.min(255, Math.max(rgb.b, 0)),
          a: a2
        };
      }
      var CSS_INTEGER = "[-\\+]?\\d+%?";
      var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
      var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")");
      var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
      var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?");
      var matchers = {
        CSS_UNIT: new RegExp(CSS_UNIT),
        rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
        rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
        hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
        hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
        hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
        hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
        hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
        hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
        hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
        hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
      };
      function stringInputToObject(color) {
        color = color.trim().toLowerCase();
        if (color.length === 0) {
          return false;
        }
        var named = false;
        if (names[color]) {
          color = names[color];
          named = true;
        } else if (color === "transparent") {
          return { r: 0, g: 0, b: 0, a: 0, format: "name" };
        }
        var match = matchers.rgb.exec(color);
        if (match) {
          return { r: match[1], g: match[2], b: match[3] };
        }
        match = matchers.rgba.exec(color);
        if (match) {
          return { r: match[1], g: match[2], b: match[3], a: match[4] };
        }
        match = matchers.hsl.exec(color);
        if (match) {
          return { h: match[1], s: match[2], l: match[3] };
        }
        match = matchers.hsla.exec(color);
        if (match) {
          return { h: match[1], s: match[2], l: match[3], a: match[4] };
        }
        match = matchers.hsv.exec(color);
        if (match) {
          return { h: match[1], s: match[2], v: match[3] };
        }
        match = matchers.hsva.exec(color);
        if (match) {
          return { h: match[1], s: match[2], v: match[3], a: match[4] };
        }
        match = matchers.hex8.exec(color);
        if (match) {
          return {
            r: parseIntFromHex(match[1]),
            g: parseIntFromHex(match[2]),
            b: parseIntFromHex(match[3]),
            a: convertHexToDecimal(match[4]),
            format: named ? "name" : "hex8"
          };
        }
        match = matchers.hex6.exec(color);
        if (match) {
          return {
            r: parseIntFromHex(match[1]),
            g: parseIntFromHex(match[2]),
            b: parseIntFromHex(match[3]),
            format: named ? "name" : "hex"
          };
        }
        match = matchers.hex4.exec(color);
        if (match) {
          return {
            r: parseIntFromHex(match[1] + match[1]),
            g: parseIntFromHex(match[2] + match[2]),
            b: parseIntFromHex(match[3] + match[3]),
            a: convertHexToDecimal(match[4] + match[4]),
            format: named ? "name" : "hex8"
          };
        }
        match = matchers.hex3.exec(color);
        if (match) {
          return {
            r: parseIntFromHex(match[1] + match[1]),
            g: parseIntFromHex(match[2] + match[2]),
            b: parseIntFromHex(match[3] + match[3]),
            format: named ? "name" : "hex"
          };
        }
        return false;
      }
      function isValidCSSUnit(color) {
        return Boolean(matchers.CSS_UNIT.exec(String(color)));
      }
      var TinyColor = (
        /** @class */
        function() {
          function TinyColor2(color, opts) {
            if (color === void 0) {
              color = "";
            }
            if (opts === void 0) {
              opts = {};
            }
            var _a2;
            if (color instanceof TinyColor2) {
              return color;
            }
            if (typeof color === "number") {
              color = numberInputToObject(color);
            }
            this.originalInput = color;
            var rgb = inputToRGB(color);
            this.originalInput = color;
            this.r = rgb.r;
            this.g = rgb.g;
            this.b = rgb.b;
            this.a = rgb.a;
            this.roundA = Math.round(100 * this.a) / 100;
            this.format = (_a2 = opts.format) !== null && _a2 !== void 0 ? _a2 : rgb.format;
            this.gradientType = opts.gradientType;
            if (this.r < 1) {
              this.r = Math.round(this.r);
            }
            if (this.g < 1) {
              this.g = Math.round(this.g);
            }
            if (this.b < 1) {
              this.b = Math.round(this.b);
            }
            this.isValid = rgb.ok;
          }
          TinyColor2.prototype.isDark = function() {
            return this.getBrightness() < 128;
          };
          TinyColor2.prototype.isLight = function() {
            return !this.isDark();
          };
          TinyColor2.prototype.getBrightness = function() {
            var rgb = this.toRgb();
            return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1e3;
          };
          TinyColor2.prototype.getLuminance = function() {
            var rgb = this.toRgb();
            var R2;
            var G2;
            var B2;
            var RsRGB = rgb.r / 255;
            var GsRGB = rgb.g / 255;
            var BsRGB = rgb.b / 255;
            if (RsRGB <= 0.03928) {
              R2 = RsRGB / 12.92;
            } else {
              R2 = Math.pow((RsRGB + 0.055) / 1.055, 2.4);
            }
            if (GsRGB <= 0.03928) {
              G2 = GsRGB / 12.92;
            } else {
              G2 = Math.pow((GsRGB + 0.055) / 1.055, 2.4);
            }
            if (BsRGB <= 0.03928) {
              B2 = BsRGB / 12.92;
            } else {
              B2 = Math.pow((BsRGB + 0.055) / 1.055, 2.4);
            }
            return 0.2126 * R2 + 0.7152 * G2 + 0.0722 * B2;
          };
          TinyColor2.prototype.getAlpha = function() {
            return this.a;
          };
          TinyColor2.prototype.setAlpha = function(alpha) {
            this.a = boundAlpha(alpha);
            this.roundA = Math.round(100 * this.a) / 100;
            return this;
          };
          TinyColor2.prototype.isMonochrome = function() {
            var s2 = this.toHsl().s;
            return s2 === 0;
          };
          TinyColor2.prototype.toHsv = function() {
            var hsv = rgbToHsv(this.r, this.g, this.b);
            return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a };
          };
          TinyColor2.prototype.toHsvString = function() {
            var hsv = rgbToHsv(this.r, this.g, this.b);
            var h2 = Math.round(hsv.h * 360);
            var s2 = Math.round(hsv.s * 100);
            var v2 = Math.round(hsv.v * 100);
            return this.a === 1 ? "hsv(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%)") : "hsva(".concat(h2, ", ").concat(s2, "%, ").concat(v2, "%, ").concat(this.roundA, ")");
          };
          TinyColor2.prototype.toHsl = function() {
            var hsl = rgbToHsl(this.r, this.g, this.b);
            return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a };
          };
          TinyColor2.prototype.toHslString = function() {
            var hsl = rgbToHsl(this.r, this.g, this.b);
            var h2 = Math.round(hsl.h * 360);
            var s2 = Math.round(hsl.s * 100);
            var l2 = Math.round(hsl.l * 100);
            return this.a === 1 ? "hsl(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%)") : "hsla(".concat(h2, ", ").concat(s2, "%, ").concat(l2, "%, ").concat(this.roundA, ")");
          };
          TinyColor2.prototype.toHex = function(allow3Char) {
            if (allow3Char === void 0) {
              allow3Char = false;
            }
            return rgbToHex(this.r, this.g, this.b, allow3Char);
          };
          TinyColor2.prototype.toHexString = function(allow3Char) {
            if (allow3Char === void 0) {
              allow3Char = false;
            }
            return "#" + this.toHex(allow3Char);
          };
          TinyColor2.prototype.toHex8 = function(allow4Char) {
            if (allow4Char === void 0) {
              allow4Char = false;
            }
            return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);
          };
          TinyColor2.prototype.toHex8String = function(allow4Char) {
            if (allow4Char === void 0) {
              allow4Char = false;
            }
            return "#" + this.toHex8(allow4Char);
          };
          TinyColor2.prototype.toHexShortString = function(allowShortChar) {
            if (allowShortChar === void 0) {
              allowShortChar = false;
            }
            return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar);
          };
          TinyColor2.prototype.toRgb = function() {
            return {
              r: Math.round(this.r),
              g: Math.round(this.g),
              b: Math.round(this.b),
              a: this.a
            };
          };
          TinyColor2.prototype.toRgbString = function() {
            var r = Math.round(this.r);
            var g = Math.round(this.g);
            var b2 = Math.round(this.b);
            return this.a === 1 ? "rgb(".concat(r, ", ").concat(g, ", ").concat(b2, ")") : "rgba(".concat(r, ", ").concat(g, ", ").concat(b2, ", ").concat(this.roundA, ")");
          };
          TinyColor2.prototype.toPercentageRgb = function() {
            var fmt = function(x2) {
              return "".concat(Math.round(bound01(x2, 255) * 100), "%");
            };
            return {
              r: fmt(this.r),
              g: fmt(this.g),
              b: fmt(this.b),
              a: this.a
            };
          };
          TinyColor2.prototype.toPercentageRgbString = function() {
            var rnd = function(x2) {
              return Math.round(bound01(x2, 255) * 100);
            };
            return this.a === 1 ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")");
          };
          TinyColor2.prototype.toName = function() {
            if (this.a === 0) {
              return "transparent";
            }
            if (this.a < 1) {
              return false;
            }
            var hex = "#" + rgbToHex(this.r, this.g, this.b, false);
            for (var _i = 0, _a2 = Object.entries(names); _i < _a2.length; _i++) {
              var _b = _a2[_i], key2 = _b[0], value = _b[1];
              if (hex === value) {
                return key2;
              }
            }
            return false;
          };
          TinyColor2.prototype.toString = function(format2) {
            var formatSet = Boolean(format2);
            format2 = format2 !== null && format2 !== void 0 ? format2 : this.format;
            var formattedString = false;
            var hasAlpha = this.a < 1 && this.a >= 0;
            var needsAlphaFormat = !formatSet && hasAlpha && (format2.startsWith("hex") || format2 === "name");
            if (needsAlphaFormat) {
              if (format2 === "name" && this.a === 0) {
                return this.toName();
              }
              return this.toRgbString();
            }
            if (format2 === "rgb") {
              formattedString = this.toRgbString();
            }
            if (format2 === "prgb") {
              formattedString = this.toPercentageRgbString();
            }
            if (format2 === "hex" || format2 === "hex6") {
              formattedString = this.toHexString();
            }
            if (format2 === "hex3") {
              formattedString = this.toHexString(true);
            }
            if (format2 === "hex4") {
              formattedString = this.toHex8String(true);
            }
            if (format2 === "hex8") {
              formattedString = this.toHex8String();
            }
            if (format2 === "name") {
              formattedString = this.toName();
            }
            if (format2 === "hsl") {
              formattedString = this.toHslString();
            }
            if (format2 === "hsv") {
              formattedString = this.toHsvString();
            }
            return formattedString || this.toHexString();
          };
          TinyColor2.prototype.toNumber = function() {
            return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b);
          };
          TinyColor2.prototype.clone = function() {
            return new TinyColor2(this.toString());
          };
          TinyColor2.prototype.lighten = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            var hsl = this.toHsl();
            hsl.l += amount / 100;
            hsl.l = clamp01(hsl.l);
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.brighten = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            var rgb = this.toRgb();
            rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));
            rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));
            rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));
            return new TinyColor2(rgb);
          };
          TinyColor2.prototype.darken = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            var hsl = this.toHsl();
            hsl.l -= amount / 100;
            hsl.l = clamp01(hsl.l);
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.tint = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            return this.mix("white", amount);
          };
          TinyColor2.prototype.shade = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            return this.mix("black", amount);
          };
          TinyColor2.prototype.desaturate = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            var hsl = this.toHsl();
            hsl.s -= amount / 100;
            hsl.s = clamp01(hsl.s);
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.saturate = function(amount) {
            if (amount === void 0) {
              amount = 10;
            }
            var hsl = this.toHsl();
            hsl.s += amount / 100;
            hsl.s = clamp01(hsl.s);
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.greyscale = function() {
            return this.desaturate(100);
          };
          TinyColor2.prototype.spin = function(amount) {
            var hsl = this.toHsl();
            var hue = (hsl.h + amount) % 360;
            hsl.h = hue < 0 ? 360 + hue : hue;
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.mix = function(color, amount) {
            if (amount === void 0) {
              amount = 50;
            }
            var rgb1 = this.toRgb();
            var rgb2 = new TinyColor2(color).toRgb();
            var p2 = amount / 100;
            var rgba = {
              r: (rgb2.r - rgb1.r) * p2 + rgb1.r,
              g: (rgb2.g - rgb1.g) * p2 + rgb1.g,
              b: (rgb2.b - rgb1.b) * p2 + rgb1.b,
              a: (rgb2.a - rgb1.a) * p2 + rgb1.a
            };
            return new TinyColor2(rgba);
          };
          TinyColor2.prototype.analogous = function(results, slices) {
            if (results === void 0) {
              results = 6;
            }
            if (slices === void 0) {
              slices = 30;
            }
            var hsl = this.toHsl();
            var part = 360 / slices;
            var ret = [this];
            for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results; ) {
              hsl.h = (hsl.h + part) % 360;
              ret.push(new TinyColor2(hsl));
            }
            return ret;
          };
          TinyColor2.prototype.complement = function() {
            var hsl = this.toHsl();
            hsl.h = (hsl.h + 180) % 360;
            return new TinyColor2(hsl);
          };
          TinyColor2.prototype.monochromatic = function(results) {
            if (results === void 0) {
              results = 6;
            }
            var hsv = this.toHsv();
            var h2 = hsv.h;
            var s2 = hsv.s;
            var v2 = hsv.v;
            var res = [];
            var modification = 1 / results;
            while (results--) {
              res.push(new TinyColor2({ h: h2, s: s2, v: v2 }));
              v2 = (v2 + modification) % 1;
            }
            return res;
          };
          TinyColor2.prototype.splitcomplement = function() {
            var hsl = this.toHsl();
            var h2 = hsl.h;
            return [
              this,
              new TinyColor2({ h: (h2 + 72) % 360, s: hsl.s, l: hsl.l }),
              new TinyColor2({ h: (h2 + 216) % 360, s: hsl.s, l: hsl.l })
            ];
          };
          TinyColor2.prototype.onBackground = function(background) {
            var fg = this.toRgb();
            var bg = new TinyColor2(background).toRgb();
            var alpha = fg.a + bg.a * (1 - fg.a);
            return new TinyColor2({
              r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha,
              g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha,
              b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha,
              a: alpha
            });
          };
          TinyColor2.prototype.triad = function() {
            return this.polyad(3);
          };
          TinyColor2.prototype.tetrad = function() {
            return this.polyad(4);
          };
          TinyColor2.prototype.polyad = function(n) {
            var hsl = this.toHsl();
            var h2 = hsl.h;
            var result = [this];
            var increment = 360 / n;
            for (var i = 1; i < n; i++) {
              result.push(new TinyColor2({ h: (h2 + i * increment) % 360, s: hsl.s, l: hsl.l }));
            }
            return result;
          };
          TinyColor2.prototype.equals = function(color) {
            return this.toRgbString() === new TinyColor2(color).toRgbString();
          };
          return TinyColor2;
        }()
      );
      function darken(color, amount = 20) {
        return color.mix("#141414", amount).toString();
      }
      function useButtonCustomStyle(props) {
        const _disabled = useFormDisabled();
        const ns = useNamespace("button");
        return vue.computed(() => {
          let styles = {};
          const buttonColor = props.color;
          if (buttonColor) {
            const color = new TinyColor(buttonColor);
            const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20);
            if (props.plain) {
              styles = ns.cssVarBlock({
                "bg-color": props.dark ? darken(color, 90) : color.tint(90).toString(),
                "text-color": buttonColor,
                "border-color": props.dark ? darken(color, 50) : color.tint(50).toString(),
                "hover-text-color": `var(${ns.cssVarName("color-white")})`,
                "hover-bg-color": buttonColor,
                "hover-border-color": buttonColor,
                "active-bg-color": activeBgColor,
                "active-text-color": `var(${ns.cssVarName("color-white")})`,
                "active-border-color": activeBgColor
              });
              if (_disabled.value) {
                styles[ns.cssVarBlockName("disabled-bg-color")] = props.dark ? darken(color, 90) : color.tint(90).toString();
                styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? darken(color, 50) : color.tint(50).toString();
                styles[ns.cssVarBlockName("disabled-border-color")] = props.dark ? darken(color, 80) : color.tint(80).toString();
              }
            } else {
              const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString();
              const textColor = color.isDark() ? `var(${ns.cssVarName("color-white")})` : `var(${ns.cssVarName("color-black")})`;
              styles = ns.cssVarBlock({
                "bg-color": buttonColor,
                "text-color": textColor,
                "border-color": buttonColor,
                "hover-bg-color": hoverBgColor,
                "hover-text-color": textColor,
                "hover-border-color": hoverBgColor,
                "active-bg-color": activeBgColor,
                "active-border-color": activeBgColor
              });
              if (_disabled.value) {
                const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString();
                styles[ns.cssVarBlockName("disabled-bg-color")] = disabledButtonColor;
                styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? "rgba(255, 255, 255, 0.5)" : `var(${ns.cssVarName("color-white")})`;
                styles[ns.cssVarBlockName("disabled-border-color")] = disabledButtonColor;
              }
            }
          }
          return styles;
        });
      }
      const __default__$i = vue.defineComponent({
        name: "ElButton"
      });
      const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
        ...__default__$i,
        props: buttonProps,
        emits: buttonEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const buttonStyle = useButtonCustomStyle(props);
          const ns = useNamespace("button");
          const { _ref, _size, _type, _disabled, _props, shouldAddSpace, handleClick } = useButton(props, emit);
          expose({
            ref: _ref,
            size: _size,
            type: _type,
            disabled: _disabled,
            shouldAddSpace
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), vue.mergeProps({
              ref_key: "_ref",
              ref: _ref
            }, vue.unref(_props), {
              class: [
                vue.unref(ns).b(),
                vue.unref(ns).m(vue.unref(_type)),
                vue.unref(ns).m(vue.unref(_size)),
                vue.unref(ns).is("disabled", vue.unref(_disabled)),
                vue.unref(ns).is("loading", _ctx.loading),
                vue.unref(ns).is("plain", _ctx.plain),
                vue.unref(ns).is("round", _ctx.round),
                vue.unref(ns).is("circle", _ctx.circle),
                vue.unref(ns).is("text", _ctx.text),
                vue.unref(ns).is("link", _ctx.link),
                vue.unref(ns).is("has-bg", _ctx.bg)
              ],
              style: vue.unref(buttonStyle),
              onClick: vue.unref(handleClick)
            }), {
              default: vue.withCtx(() => [
                _ctx.loading ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
                  _ctx.$slots.loading ? vue.renderSlot(_ctx.$slots, "loading", { key: 0 }) : (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                    key: 1,
                    class: vue.normalizeClass(vue.unref(ns).is("loading"))
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.loadingIcon)))
                    ]),
                    _: 1
                  }, 8, ["class"]))
                ], 64)) : _ctx.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 1 }, {
                  default: vue.withCtx(() => [
                    _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon), { key: 0 })) : vue.renderSlot(_ctx.$slots, "icon", { key: 1 })
                  ]),
                  _: 3
                })) : vue.createCommentVNode("v-if", true),
                _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("span", {
                  key: 2,
                  class: vue.normalizeClass({ [vue.unref(ns).em("text", "expand")]: vue.unref(shouldAddSpace) })
                }, [
                  vue.renderSlot(_ctx.$slots, "default")
                ], 2)) : vue.createCommentVNode("v-if", true)
              ]),
              _: 3
            }, 16, ["class", "style", "onClick"]);
          };
        }
      });
      var Button = /* @__PURE__ */ _export_sfc$1(_sfc_main$w, [["__file", "button.vue"]]);
      const buttonGroupProps = {
        size: buttonProps.size,
        type: buttonProps.type
      };
      const __default__$h = vue.defineComponent({
        name: "ElButtonGroup"
      });
      const _sfc_main$v = /* @__PURE__ */ vue.defineComponent({
        ...__default__$h,
        props: buttonGroupProps,
        setup(__props) {
          const props = __props;
          vue.provide(buttonGroupContextKey, vue.reactive({
            size: vue.toRef(props, "size"),
            type: vue.toRef(props, "type")
          }));
          const ns = useNamespace("button");
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass(`${vue.unref(ns).b("group")}`)
            }, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 2);
          };
        }
      });
      var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$v, [["__file", "button-group.vue"]]);
      const ElButton = withInstall(Button, {
        ButtonGroup
      });
      withNoopInstall(ButtonGroup);
      var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
      function getDefaultExportFromCjs(x2) {
        return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
      }
      function getAugmentedNamespace(n) {
        if (n.__esModule)
          return n;
        var f2 = n.default;
        if (typeof f2 == "function") {
          var a2 = function a3() {
            if (this instanceof a3) {
              return Reflect.construct(f2, arguments, this.constructor);
            }
            return f2.apply(this, arguments);
          };
          a2.prototype = f2.prototype;
        } else
          a2 = {};
        Object.defineProperty(a2, "__esModule", { value: true });
        Object.keys(n).forEach(function(k) {
          var d2 = Object.getOwnPropertyDescriptor(n, k);
          Object.defineProperty(a2, k, d2.get ? d2 : {
            enumerable: true,
            get: function() {
              return n[k];
            }
          });
        });
        return a2;
      }
      const nodeList = /* @__PURE__ */ new Map();
      let startClick;
      if (isClient) {
        document.addEventListener("mousedown", (e) => startClick = e);
        document.addEventListener("mouseup", (e) => {
          for (const handlers of nodeList.values()) {
            for (const { documentHandler } of handlers) {
              documentHandler(e, startClick);
            }
          }
        });
      }
      function createDocumentHandler(el, binding) {
        let excludes = [];
        if (Array.isArray(binding.arg)) {
          excludes = binding.arg;
        } else if (isElement(binding.arg)) {
          excludes.push(binding.arg);
        }
        return function(mouseup, mousedown) {
          const popperRef = binding.instance.popperRef;
          const mouseUpTarget = mouseup.target;
          const mouseDownTarget = mousedown == null ? void 0 : mousedown.target;
          const isBound = !binding || !binding.instance;
          const isTargetExists = !mouseUpTarget || !mouseDownTarget;
          const isContainedByEl = el.contains(mouseUpTarget) || el.contains(mouseDownTarget);
          const isSelf = el === mouseUpTarget;
          const isTargetExcluded = excludes.length && excludes.some((item) => item == null ? void 0 : item.contains(mouseUpTarget)) || excludes.length && excludes.includes(mouseDownTarget);
          const isContainedByPopper = popperRef && (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget));
          if (isBound || isTargetExists || isContainedByEl || isSelf || isTargetExcluded || isContainedByPopper) {
            return;
          }
          binding.value(mouseup, mousedown);
        };
      }
      const ClickOutside = {
        beforeMount(el, binding) {
          if (!nodeList.has(el)) {
            nodeList.set(el, []);
          }
          nodeList.get(el).push({
            documentHandler: createDocumentHandler(el, binding),
            bindingFn: binding.value
          });
        },
        updated(el, binding) {
          if (!nodeList.has(el)) {
            nodeList.set(el, []);
          }
          const handlers = nodeList.get(el);
          const oldHandlerIndex = handlers.findIndex((item) => item.bindingFn === binding.oldValue);
          const newHandler = {
            documentHandler: createDocumentHandler(el, binding),
            bindingFn: binding.value
          };
          if (oldHandlerIndex >= 0) {
            handlers.splice(oldHandlerIndex, 1, newHandler);
          } else {
            handlers.push(newHandler);
          }
        },
        unmounted(el) {
          nodeList.delete(el);
        }
      };
      const REPEAT_INTERVAL = 100;
      const REPEAT_DELAY = 600;
      const vRepeatClick = {
        beforeMount(el, binding) {
          const value = binding.value;
          const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction$1(value) ? {} : value;
          let intervalId;
          let delayId;
          const handler = () => isFunction$1(value) ? value() : value.handler();
          const clear = () => {
            if (delayId) {
              clearTimeout(delayId);
              delayId = void 0;
            }
            if (intervalId) {
              clearInterval(intervalId);
              intervalId = void 0;
            }
          };
          el.addEventListener("mousedown", (evt) => {
            if (evt.button !== 0)
              return;
            clear();
            handler();
            document.addEventListener("mouseup", () => clear(), {
              once: true
            });
            delayId = setTimeout(() => {
              intervalId = setInterval(() => {
                handler();
              }, interval);
            }, delay);
          });
        }
      };
      var v = false, o, f, s, u, d, N, l, p, m, w, D, x, E, M, F;
      function a() {
        if (!v) {
          v = true;
          var e = navigator.userAgent, n = /(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e), i = /(Mac OS X)|(Windows)|(Linux)/.exec(e);
          if (x = /\b(iPhone|iP[ao]d)/.exec(e), E = /\b(iP[ao]d)/.exec(e), w = /Android/i.exec(e), M = /FBAN\/\w+;/i.exec(e), F = /Mobile/i.exec(e), D = !!/Win64/.exec(e), n) {
            o = n[1] ? parseFloat(n[1]) : n[5] ? parseFloat(n[5]) : NaN, o && document && document.documentMode && (o = document.documentMode);
            var r = /(?:Trident\/(\d+.\d+))/.exec(e);
            N = r ? parseFloat(r[1]) + 4 : o, f = n[2] ? parseFloat(n[2]) : NaN, s = n[3] ? parseFloat(n[3]) : NaN, u = n[4] ? parseFloat(n[4]) : NaN, u ? (n = /(?:Chrome\/(\d+\.\d+))/.exec(e), d = n && n[1] ? parseFloat(n[1]) : NaN) : d = NaN;
          } else
            o = f = s = d = u = NaN;
          if (i) {
            if (i[1]) {
              var t = /(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);
              l = t ? parseFloat(t[1].replace("_", ".")) : true;
            } else
              l = false;
            p = !!i[2], m = !!i[3];
          } else
            l = p = m = false;
        }
      }
      var _ = { ie: function() {
        return a() || o;
      }, ieCompatibilityMode: function() {
        return a() || N > o;
      }, ie64: function() {
        return _.ie() && D;
      }, firefox: function() {
        return a() || f;
      }, opera: function() {
        return a() || s;
      }, webkit: function() {
        return a() || u;
      }, safari: function() {
        return _.webkit();
      }, chrome: function() {
        return a() || d;
      }, windows: function() {
        return a() || p;
      }, osx: function() {
        return a() || l;
      }, linux: function() {
        return a() || m;
      }, iphone: function() {
        return a() || x;
      }, mobile: function() {
        return a() || x || E || w || F;
      }, nativeApp: function() {
        return a() || M;
      }, android: function() {
        return a() || w;
      }, ipad: function() {
        return a() || E;
      } }, A = _;
      var c = !!(typeof window < "u" && window.document && window.document.createElement), U = { canUseDOM: c, canUseWorkers: typeof Worker < "u", canUseEventListeners: c && !!(window.addEventListener || window.attachEvent), canUseViewport: c && !!window.screen, isInWorker: !c }, h = U;
      var X;
      h.canUseDOM && (X = document.implementation && document.implementation.hasFeature && document.implementation.hasFeature("", "") !== true);
      function S(e, n) {
        if (!h.canUseDOM || n && !("addEventListener" in document))
          return false;
        var i = "on" + e, r = i in document;
        if (!r) {
          var t = document.createElement("div");
          t.setAttribute(i, "return;"), r = typeof t[i] == "function";
        }
        return !r && X && e === "wheel" && (r = document.implementation.hasFeature("Events.wheel", "3.0")), r;
      }
      var b = S;
      var O = 10, I = 40, P = 800;
      function T(e) {
        var n = 0, i = 0, r = 0, t = 0;
        return "detail" in e && (i = e.detail), "wheelDelta" in e && (i = -e.wheelDelta / 120), "wheelDeltaY" in e && (i = -e.wheelDeltaY / 120), "wheelDeltaX" in e && (n = -e.wheelDeltaX / 120), "axis" in e && e.axis === e.HORIZONTAL_AXIS && (n = i, i = 0), r = n * O, t = i * O, "deltaY" in e && (t = e.deltaY), "deltaX" in e && (r = e.deltaX), (r || t) && e.deltaMode && (e.deltaMode == 1 ? (r *= I, t *= I) : (r *= P, t *= P)), r && !n && (n = r < 1 ? -1 : 1), t && !i && (i = t < 1 ? -1 : 1), { spinX: n, spinY: i, pixelX: r, pixelY: t };
      }
      T.getEventType = function() {
        return A.firefox() ? "DOMMouseScroll" : b("wheel") ? "wheel" : "mousewheel";
      };
      var Y = T;
      /**
      * Checks if an event is supported in the current execution environment.
      *
      * NOTE: This will not work correctly for non-generic events such as `change`,
      * `reset`, `load`, `error`, and `select`.
      *
      * Borrows from Modernizr.
      *
      * @param {string} eventNameSuffix Event name, e.g. "click".
      * @param {?boolean} capture Check if the capture phase is supported.
      * @return {boolean} True if the event is supported.
      * @internal
      * @license Modernizr 3.0.0pre (Custom Build) | MIT
      */
      const mousewheel = function(element, callback) {
        if (element && element.addEventListener) {
          const fn2 = function(event2) {
            const normalized = Y(event2);
            callback && Reflect.apply(callback, this, [event2, normalized]);
          };
          element.addEventListener("wheel", fn2, { passive: true });
        }
      };
      const Mousewheel = {
        beforeMount(el, binding) {
          mousewheel(el, binding.value);
        }
      };
      const checkboxProps = {
        modelValue: {
          type: [Number, String, Boolean],
          default: void 0
        },
        label: {
          type: [String, Boolean, Number, Object],
          default: void 0
        },
        value: {
          type: [String, Boolean, Number, Object],
          default: void 0
        },
        indeterminate: Boolean,
        disabled: Boolean,
        checked: Boolean,
        name: {
          type: String,
          default: void 0
        },
        trueValue: {
          type: [String, Number],
          default: void 0
        },
        falseValue: {
          type: [String, Number],
          default: void 0
        },
        trueLabel: {
          type: [String, Number],
          default: void 0
        },
        falseLabel: {
          type: [String, Number],
          default: void 0
        },
        id: {
          type: String,
          default: void 0
        },
        controls: {
          type: String,
          default: void 0
        },
        border: Boolean,
        size: useSizeProp,
        tabindex: [String, Number],
        validateEvent: {
          type: Boolean,
          default: true
        }
      };
      const checkboxEmits = {
        [UPDATE_MODEL_EVENT]: (val) => isString(val) || isNumber(val) || isBoolean(val),
        change: (val) => isString(val) || isNumber(val) || isBoolean(val)
      };
      const checkboxGroupContextKey = Symbol("checkboxGroupContextKey");
      const useCheckboxDisabled = ({
        model,
        isChecked
      }) => {
        const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0);
        const isLimitDisabled = vue.computed(() => {
          var _a2, _b;
          const max = (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a2.value;
          const min = (_b = checkboxGroup == null ? void 0 : checkboxGroup.min) == null ? void 0 : _b.value;
          return !isUndefined(max) && model.value.length >= max && !isChecked.value || !isUndefined(min) && model.value.length <= min && isChecked.value;
        });
        const isDisabled = useFormDisabled(vue.computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.disabled.value) || isLimitDisabled.value));
        return {
          isDisabled,
          isLimitDisabled
        };
      };
      const useCheckboxEvent = (props, {
        model,
        isLimitExceeded,
        hasOwnLabel,
        isDisabled,
        isLabeledByFormItem
      }) => {
        const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0);
        const { formItem } = useFormItem();
        const { emit } = vue.getCurrentInstance();
        function getLabeledValue(value) {
          var _a2, _b, _c, _d;
          return [true, props.trueValue, props.trueLabel].includes(value) ? (_b = (_a2 = props.trueValue) != null ? _a2 : props.trueLabel) != null ? _b : true : (_d = (_c = props.falseValue) != null ? _c : props.falseLabel) != null ? _d : false;
        }
        function emitChangeEvent(checked, e) {
          emit("change", getLabeledValue(checked), e);
        }
        function handleChange(e) {
          if (isLimitExceeded.value)
            return;
          const target = e.target;
          emit("change", getLabeledValue(target.checked), e);
        }
        async function onClickRoot(e) {
          if (isLimitExceeded.value)
            return;
          if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {
            const eventTargets = e.composedPath();
            const hasLabel = eventTargets.some((item) => item.tagName === "LABEL");
            if (!hasLabel) {
              model.value = getLabeledValue([false, props.falseValue, props.falseLabel].includes(model.value));
              await vue.nextTick();
              emitChangeEvent(model.value, e);
            }
          }
        }
        const validateEvent = vue.computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent);
        vue.watch(() => props.modelValue, () => {
          if (validateEvent.value) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        });
        return {
          handleChange,
          onClickRoot
        };
      };
      const useCheckboxModel = (props) => {
        const selfModel = vue.ref(false);
        const { emit } = vue.getCurrentInstance();
        const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0);
        const isGroup = vue.computed(() => isUndefined(checkboxGroup) === false);
        const isLimitExceeded = vue.ref(false);
        const model = vue.computed({
          get() {
            var _a2, _b;
            return isGroup.value ? (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.modelValue) == null ? void 0 : _a2.value : (_b = props.modelValue) != null ? _b : selfModel.value;
          },
          set(val) {
            var _a2, _b;
            if (isGroup.value && isArray$1(val)) {
              isLimitExceeded.value = ((_a2 = checkboxGroup == null ? void 0 : checkboxGroup.max) == null ? void 0 : _a2.value) !== void 0 && val.length > (checkboxGroup == null ? void 0 : checkboxGroup.max.value) && val.length > model.value.length;
              isLimitExceeded.value === false && ((_b = checkboxGroup == null ? void 0 : checkboxGroup.changeEvent) == null ? void 0 : _b.call(checkboxGroup, val));
            } else {
              emit(UPDATE_MODEL_EVENT, val);
              selfModel.value = val;
            }
          }
        });
        return {
          model,
          isGroup,
          isLimitExceeded
        };
      };
      const useCheckboxStatus = (props, slots, { model }) => {
        const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0);
        const isFocused = vue.ref(false);
        const actualValue = vue.computed(() => {
          if (!isPropAbsent(props.value)) {
            return props.value;
          }
          return props.label;
        });
        const isChecked = vue.computed(() => {
          const value = model.value;
          if (isBoolean(value)) {
            return value;
          } else if (isArray$1(value)) {
            if (isObject$1(actualValue.value)) {
              return value.map(vue.toRaw).some((o2) => isEqual(o2, actualValue.value));
            } else {
              return value.map(vue.toRaw).includes(actualValue.value);
            }
          } else if (value !== null && value !== void 0) {
            return value === props.trueValue || value === props.trueLabel;
          } else {
            return !!value;
          }
        });
        const checkboxButtonSize = useFormSize(vue.computed(() => {
          var _a2;
          return (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a2.value;
        }), {
          prop: true
        });
        const checkboxSize = useFormSize(vue.computed(() => {
          var _a2;
          return (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.size) == null ? void 0 : _a2.value;
        }));
        const hasOwnLabel = vue.computed(() => {
          return !!slots.default || !isPropAbsent(actualValue.value);
        });
        return {
          checkboxButtonSize,
          isChecked,
          isFocused,
          checkboxSize,
          hasOwnLabel,
          actualValue
        };
      };
      const useCheckbox = (props, slots) => {
        const { formItem: elFormItem } = useFormItem();
        const { model, isGroup, isLimitExceeded } = useCheckboxModel(props);
        const {
          isFocused,
          isChecked,
          checkboxButtonSize,
          checkboxSize,
          hasOwnLabel,
          actualValue
        } = useCheckboxStatus(props, slots, { model });
        const { isDisabled } = useCheckboxDisabled({ model, isChecked });
        const { inputId, isLabeledByFormItem } = useFormItemInputId(props, {
          formItemContext: elFormItem,
          disableIdGeneration: hasOwnLabel,
          disableIdManagement: isGroup
        });
        const { handleChange, onClickRoot } = useCheckboxEvent(props, {
          model,
          isLimitExceeded,
          hasOwnLabel,
          isDisabled,
          isLabeledByFormItem
        });
        const setStoreValue = () => {
          function addToStore() {
            var _a2, _b;
            if (isArray$1(model.value) && !model.value.includes(actualValue.value)) {
              model.value.push(actualValue.value);
            } else {
              model.value = (_b = (_a2 = props.trueValue) != null ? _a2 : props.trueLabel) != null ? _b : true;
            }
          }
          props.checked && addToStore();
        };
        setStoreValue();
        useDeprecated({
          from: "label act as value",
          replacement: "value",
          version: "3.0.0",
          scope: "el-checkbox",
          ref: "https://element-plus.org/en-US/component/checkbox.html"
        }, vue.computed(() => isGroup.value && isPropAbsent(props.value)));
        useDeprecated({
          from: "true-label",
          replacement: "true-value",
          version: "3.0.0",
          scope: "el-checkbox",
          ref: "https://element-plus.org/en-US/component/checkbox.html"
        }, vue.computed(() => !!props.trueLabel));
        useDeprecated({
          from: "false-label",
          replacement: "false-value",
          version: "3.0.0",
          scope: "el-checkbox",
          ref: "https://element-plus.org/en-US/component/checkbox.html"
        }, vue.computed(() => !!props.falseLabel));
        return {
          inputId,
          isLabeledByFormItem,
          isChecked,
          isDisabled,
          isFocused,
          checkboxButtonSize,
          checkboxSize,
          hasOwnLabel,
          model,
          actualValue,
          handleChange,
          onClickRoot
        };
      };
      const _hoisted_1$h = ["id", "indeterminate", "name", "tabindex", "disabled", "true-value", "false-value"];
      const _hoisted_2$d = ["id", "indeterminate", "disabled", "value", "name", "tabindex"];
      const __default__$g = vue.defineComponent({
        name: "ElCheckbox"
      });
      const _sfc_main$u = /* @__PURE__ */ vue.defineComponent({
        ...__default__$g,
        props: checkboxProps,
        emits: checkboxEmits,
        setup(__props) {
          const props = __props;
          const slots = vue.useSlots();
          const {
            inputId,
            isLabeledByFormItem,
            isChecked,
            isDisabled,
            isFocused,
            checkboxSize,
            hasOwnLabel,
            model,
            actualValue,
            handleChange,
            onClickRoot
          } = useCheckbox(props, slots);
          const ns = useNamespace("checkbox");
          const compKls = vue.computed(() => {
            return [
              ns.b(),
              ns.m(checkboxSize.value),
              ns.is("disabled", isDisabled.value),
              ns.is("bordered", props.border),
              ns.is("checked", isChecked.value)
            ];
          });
          const spanKls = vue.computed(() => {
            return [
              ns.e("input"),
              ns.is("disabled", isDisabled.value),
              ns.is("checked", isChecked.value),
              ns.is("indeterminate", props.indeterminate),
              ns.is("focus", isFocused.value)
            ];
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(!vue.unref(hasOwnLabel) && vue.unref(isLabeledByFormItem) ? "span" : "label"), {
              class: vue.normalizeClass(vue.unref(compKls)),
              "aria-controls": _ctx.indeterminate ? _ctx.controls : null,
              onClick: vue.unref(onClickRoot)
            }, {
              default: vue.withCtx(() => {
                var _a2, _b;
                return [
                  vue.createElementVNode("span", {
                    class: vue.normalizeClass(vue.unref(spanKls))
                  }, [
                    _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
                      key: 0,
                      id: vue.unref(inputId),
                      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(model) ? model.value = $event : null),
                      class: vue.normalizeClass(vue.unref(ns).e("original")),
                      type: "checkbox",
                      indeterminate: _ctx.indeterminate,
                      name: _ctx.name,
                      tabindex: _ctx.tabindex,
                      disabled: vue.unref(isDisabled),
                      "true-value": (_a2 = _ctx.trueValue) != null ? _a2 : _ctx.trueLabel,
                      "false-value": (_b = _ctx.falseValue) != null ? _b : _ctx.falseLabel,
                      onChange: _cache[1] || (_cache[1] = (...args) => vue.unref(handleChange) && vue.unref(handleChange)(...args)),
                      onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),
                      onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),
                      onClick: _cache[4] || (_cache[4] = vue.withModifiers(() => {
                      }, ["stop"]))
                    }, null, 42, _hoisted_1$h)), [
                      [vue.vModelCheckbox, vue.unref(model)]
                    ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
                      key: 1,
                      id: vue.unref(inputId),
                      "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.isRef(model) ? model.value = $event : null),
                      class: vue.normalizeClass(vue.unref(ns).e("original")),
                      type: "checkbox",
                      indeterminate: _ctx.indeterminate,
                      disabled: vue.unref(isDisabled),
                      value: vue.unref(actualValue),
                      name: _ctx.name,
                      tabindex: _ctx.tabindex,
                      onChange: _cache[6] || (_cache[6] = (...args) => vue.unref(handleChange) && vue.unref(handleChange)(...args)),
                      onFocus: _cache[7] || (_cache[7] = ($event) => isFocused.value = true),
                      onBlur: _cache[8] || (_cache[8] = ($event) => isFocused.value = false),
                      onClick: _cache[9] || (_cache[9] = vue.withModifiers(() => {
                      }, ["stop"]))
                    }, null, 42, _hoisted_2$d)), [
                      [vue.vModelCheckbox, vue.unref(model)]
                    ]),
                    vue.createElementVNode("span", {
                      class: vue.normalizeClass(vue.unref(ns).e("inner"))
                    }, null, 2)
                  ], 2),
                  vue.unref(hasOwnLabel) ? (vue.openBlock(), vue.createElementBlock("span", {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(ns).e("label"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "default"),
                    !_ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
                      vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
                    ], 64)) : vue.createCommentVNode("v-if", true)
                  ], 2)) : vue.createCommentVNode("v-if", true)
                ];
              }),
              _: 3
            }, 8, ["class", "aria-controls", "onClick"]);
          };
        }
      });
      var Checkbox = /* @__PURE__ */ _export_sfc$1(_sfc_main$u, [["__file", "checkbox.vue"]]);
      const _hoisted_1$g = ["name", "tabindex", "disabled", "true-value", "false-value"];
      const _hoisted_2$c = ["name", "tabindex", "disabled", "value"];
      const __default__$f = vue.defineComponent({
        name: "ElCheckboxButton"
      });
      const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
        ...__default__$f,
        props: checkboxProps,
        emits: checkboxEmits,
        setup(__props) {
          const props = __props;
          const slots = vue.useSlots();
          const {
            isFocused,
            isChecked,
            isDisabled,
            checkboxButtonSize,
            model,
            actualValue,
            handleChange
          } = useCheckbox(props, slots);
          const checkboxGroup = vue.inject(checkboxGroupContextKey, void 0);
          const ns = useNamespace("checkbox");
          const activeStyle = vue.computed(() => {
            var _a2, _b, _c, _d;
            const fillValue = (_b = (_a2 = checkboxGroup == null ? void 0 : checkboxGroup.fill) == null ? void 0 : _a2.value) != null ? _b : "";
            return {
              backgroundColor: fillValue,
              borderColor: fillValue,
              color: (_d = (_c = checkboxGroup == null ? void 0 : checkboxGroup.textColor) == null ? void 0 : _c.value) != null ? _d : "",
              boxShadow: fillValue ? `-1px 0 0 0 ${fillValue}` : void 0
            };
          });
          const labelKls = vue.computed(() => {
            return [
              ns.b("button"),
              ns.bm("button", checkboxButtonSize.value),
              ns.is("disabled", isDisabled.value),
              ns.is("checked", isChecked.value),
              ns.is("focus", isFocused.value)
            ];
          });
          return (_ctx, _cache) => {
            var _a2, _b;
            return vue.openBlock(), vue.createElementBlock("label", {
              class: vue.normalizeClass(vue.unref(labelKls))
            }, [
              _ctx.trueValue || _ctx.falseValue || _ctx.trueLabel || _ctx.falseLabel ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
                key: 0,
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(model) ? model.value = $event : null),
                class: vue.normalizeClass(vue.unref(ns).be("button", "original")),
                type: "checkbox",
                name: _ctx.name,
                tabindex: _ctx.tabindex,
                disabled: vue.unref(isDisabled),
                "true-value": (_a2 = _ctx.trueValue) != null ? _a2 : _ctx.trueLabel,
                "false-value": (_b = _ctx.falseValue) != null ? _b : _ctx.falseLabel,
                onChange: _cache[1] || (_cache[1] = (...args) => vue.unref(handleChange) && vue.unref(handleChange)(...args)),
                onFocus: _cache[2] || (_cache[2] = ($event) => isFocused.value = true),
                onBlur: _cache[3] || (_cache[3] = ($event) => isFocused.value = false),
                onClick: _cache[4] || (_cache[4] = vue.withModifiers(() => {
                }, ["stop"]))
              }, null, 42, _hoisted_1$g)), [
                [vue.vModelCheckbox, vue.unref(model)]
              ]) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
                key: 1,
                "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.isRef(model) ? model.value = $event : null),
                class: vue.normalizeClass(vue.unref(ns).be("button", "original")),
                type: "checkbox",
                name: _ctx.name,
                tabindex: _ctx.tabindex,
                disabled: vue.unref(isDisabled),
                value: vue.unref(actualValue),
                onChange: _cache[6] || (_cache[6] = (...args) => vue.unref(handleChange) && vue.unref(handleChange)(...args)),
                onFocus: _cache[7] || (_cache[7] = ($event) => isFocused.value = true),
                onBlur: _cache[8] || (_cache[8] = ($event) => isFocused.value = false),
                onClick: _cache[9] || (_cache[9] = vue.withModifiers(() => {
                }, ["stop"]))
              }, null, 42, _hoisted_2$c)), [
                [vue.vModelCheckbox, vue.unref(model)]
              ]),
              _ctx.$slots.default || _ctx.label ? (vue.openBlock(), vue.createElementBlock("span", {
                key: 2,
                class: vue.normalizeClass(vue.unref(ns).be("button", "inner")),
                style: vue.normalizeStyle(vue.unref(isChecked) ? vue.unref(activeStyle) : void 0)
              }, [
                vue.renderSlot(_ctx.$slots, "default", {}, () => [
                  vue.createTextVNode(vue.toDisplayString(_ctx.label), 1)
                ])
              ], 6)) : vue.createCommentVNode("v-if", true)
            ], 2);
          };
        }
      });
      var CheckboxButton = /* @__PURE__ */ _export_sfc$1(_sfc_main$t, [["__file", "checkbox-button.vue"]]);
      const checkboxGroupProps = buildProps({
        modelValue: {
          type: definePropType(Array),
          default: () => []
        },
        disabled: Boolean,
        min: Number,
        max: Number,
        size: useSizeProp,
        label: String,
        fill: String,
        textColor: String,
        tag: {
          type: String,
          default: "div"
        },
        validateEvent: {
          type: Boolean,
          default: true
        }
      });
      const checkboxGroupEmits = {
        [UPDATE_MODEL_EVENT]: (val) => isArray$1(val),
        change: (val) => isArray$1(val)
      };
      const __default__$e = vue.defineComponent({
        name: "ElCheckboxGroup"
      });
      const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
        ...__default__$e,
        props: checkboxGroupProps,
        emits: checkboxGroupEmits,
        setup(__props, { emit }) {
          const props = __props;
          const ns = useNamespace("checkbox");
          const { formItem } = useFormItem();
          const { inputId: groupId, isLabeledByFormItem } = useFormItemInputId(props, {
            formItemContext: formItem
          });
          const changeEvent = async (value) => {
            emit(UPDATE_MODEL_EVENT, value);
            await vue.nextTick();
            emit("change", value);
          };
          const modelValue = vue.computed({
            get() {
              return props.modelValue;
            },
            set(val) {
              changeEvent(val);
            }
          });
          vue.provide(checkboxGroupContextKey, {
            ...pick(vue.toRefs(props), [
              "size",
              "min",
              "max",
              "disabled",
              "validateEvent",
              "fill",
              "textColor"
            ]),
            modelValue,
            changeEvent
          });
          vue.watch(() => props.modelValue, () => {
            if (props.validateEvent) {
              formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
            }
          });
          return (_ctx, _cache) => {
            var _a2;
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), {
              id: vue.unref(groupId),
              class: vue.normalizeClass(vue.unref(ns).b("group")),
              role: "group",
              "aria-label": !vue.unref(isLabeledByFormItem) ? _ctx.label || "checkbox-group" : void 0,
              "aria-labelledby": vue.unref(isLabeledByFormItem) ? (_a2 = vue.unref(formItem)) == null ? void 0 : _a2.labelId : void 0
            }, {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 8, ["id", "class", "aria-label", "aria-labelledby"]);
          };
        }
      });
      var CheckboxGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$s, [["__file", "checkbox-group.vue"]]);
      const ElCheckbox = withInstall(Checkbox, {
        CheckboxButton,
        CheckboxGroup
      });
      withNoopInstall(CheckboxButton);
      const ElCheckboxGroup$1 = withNoopInstall(CheckboxGroup);
      const tagProps = buildProps({
        type: {
          type: String,
          values: ["primary", "success", "info", "warning", "danger"],
          default: "primary"
        },
        closable: Boolean,
        disableTransitions: Boolean,
        hit: Boolean,
        color: String,
        size: {
          type: String,
          values: componentSizes
        },
        effect: {
          type: String,
          values: ["dark", "light", "plain"],
          default: "light"
        },
        round: Boolean
      });
      const tagEmits = {
        close: (evt) => evt instanceof MouseEvent,
        click: (evt) => evt instanceof MouseEvent
      };
      const __default__$d = vue.defineComponent({
        name: "ElTag"
      });
      const _sfc_main$r = /* @__PURE__ */ vue.defineComponent({
        ...__default__$d,
        props: tagProps,
        emits: tagEmits,
        setup(__props, { emit }) {
          const props = __props;
          const tagSize = useFormSize();
          const ns = useNamespace("tag");
          const containerKls = vue.computed(() => {
            const { type, hit, effect, closable, round } = props;
            return [
              ns.b(),
              ns.is("closable", closable),
              ns.m(type || "primary"),
              ns.m(tagSize.value),
              ns.m(effect),
              ns.is("hit", hit),
              ns.is("round", round)
            ];
          });
          const handleClose = (event2) => {
            emit("close", event2);
          };
          const handleClick = (event2) => {
            emit("click", event2);
          };
          return (_ctx, _cache) => {
            return _ctx.disableTransitions ? (vue.openBlock(), vue.createElementBlock("span", {
              key: 0,
              class: vue.normalizeClass(vue.unref(containerKls)),
              style: vue.normalizeStyle({ backgroundColor: _ctx.color }),
              onClick: handleClick
            }, [
              vue.createElementVNode("span", {
                class: vue.normalizeClass(vue.unref(ns).e("content"))
              }, [
                vue.renderSlot(_ctx.$slots, "default")
              ], 2),
              _ctx.closable ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                key: 0,
                class: vue.normalizeClass(vue.unref(ns).e("close")),
                onClick: vue.withModifiers(handleClose, ["stop"])
              }, {
                default: vue.withCtx(() => [
                  vue.createVNode(vue.unref(close_default))
                ]),
                _: 1
              }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true)
            ], 6)) : (vue.openBlock(), vue.createBlock(vue.Transition, {
              key: 1,
              name: `${vue.unref(ns).namespace.value}-zoom-in-center`,
              appear: ""
            }, {
              default: vue.withCtx(() => [
                vue.createElementVNode("span", {
                  class: vue.normalizeClass(vue.unref(containerKls)),
                  style: vue.normalizeStyle({ backgroundColor: _ctx.color }),
                  onClick: handleClick
                }, [
                  vue.createElementVNode("span", {
                    class: vue.normalizeClass(vue.unref(ns).e("content"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "default")
                  ], 2),
                  _ctx.closable ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(ns).e("close")),
                    onClick: vue.withModifiers(handleClose, ["stop"])
                  }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(vue.unref(close_default))
                    ]),
                    _: 1
                  }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true)
                ], 6)
              ]),
              _: 3
            }, 8, ["name"]));
          };
        }
      });
      var Tag = /* @__PURE__ */ _export_sfc$1(_sfc_main$r, [["__file", "tag.vue"]]);
      const ElTag = withInstall(Tag);
      const rowContextKey = Symbol("rowContextKey");
      const RowJustify = [
        "start",
        "center",
        "end",
        "space-around",
        "space-between",
        "space-evenly"
      ];
      const RowAlign = ["top", "middle", "bottom"];
      const rowProps = buildProps({
        tag: {
          type: String,
          default: "div"
        },
        gutter: {
          type: Number,
          default: 0
        },
        justify: {
          type: String,
          values: RowJustify,
          default: "start"
        },
        align: {
          type: String,
          values: RowAlign
        }
      });
      const __default__$c = vue.defineComponent({
        name: "ElRow"
      });
      const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
        ...__default__$c,
        props: rowProps,
        setup(__props) {
          const props = __props;
          const ns = useNamespace("row");
          const gutter = vue.computed(() => props.gutter);
          vue.provide(rowContextKey, {
            gutter
          });
          const style = vue.computed(() => {
            const styles = {};
            if (!props.gutter) {
              return styles;
            }
            styles.marginRight = styles.marginLeft = `-${props.gutter / 2}px`;
            return styles;
          });
          const rowKls = vue.computed(() => [
            ns.b(),
            ns.is(`justify-${props.justify}`, props.justify !== "start"),
            ns.is(`align-${props.align}`, !!props.align)
          ]);
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), {
              class: vue.normalizeClass(vue.unref(rowKls)),
              style: vue.normalizeStyle(vue.unref(style))
            }, {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 8, ["class", "style"]);
          };
        }
      });
      var Row = /* @__PURE__ */ _export_sfc$1(_sfc_main$q, [["__file", "row.vue"]]);
      const ElRow = withInstall(Row);
      const colProps = buildProps({
        tag: {
          type: String,
          default: "div"
        },
        span: {
          type: Number,
          default: 24
        },
        offset: {
          type: Number,
          default: 0
        },
        pull: {
          type: Number,
          default: 0
        },
        push: {
          type: Number,
          default: 0
        },
        xs: {
          type: definePropType([Number, Object]),
          default: () => mutable({})
        },
        sm: {
          type: definePropType([Number, Object]),
          default: () => mutable({})
        },
        md: {
          type: definePropType([Number, Object]),
          default: () => mutable({})
        },
        lg: {
          type: definePropType([Number, Object]),
          default: () => mutable({})
        },
        xl: {
          type: definePropType([Number, Object]),
          default: () => mutable({})
        }
      });
      const __default__$b = vue.defineComponent({
        name: "ElCol"
      });
      const _sfc_main$p = /* @__PURE__ */ vue.defineComponent({
        ...__default__$b,
        props: colProps,
        setup(__props) {
          const props = __props;
          const { gutter } = vue.inject(rowContextKey, { gutter: vue.computed(() => 0) });
          const ns = useNamespace("col");
          const style = vue.computed(() => {
            const styles = {};
            if (gutter.value) {
              styles.paddingLeft = styles.paddingRight = `${gutter.value / 2}px`;
            }
            return styles;
          });
          const colKls = vue.computed(() => {
            const classes = [];
            const pos = ["span", "offset", "pull", "push"];
            pos.forEach((prop) => {
              const size = props[prop];
              if (isNumber(size)) {
                if (prop === "span")
                  classes.push(ns.b(`${props[prop]}`));
                else if (size > 0)
                  classes.push(ns.b(`${prop}-${props[prop]}`));
              }
            });
            const sizes = ["xs", "sm", "md", "lg", "xl"];
            sizes.forEach((size) => {
              if (isNumber(props[size])) {
                classes.push(ns.b(`${size}-${props[size]}`));
              } else if (isObject$1(props[size])) {
                Object.entries(props[size]).forEach(([prop, sizeProp]) => {
                  classes.push(prop !== "span" ? ns.b(`${size}-${prop}-${sizeProp}`) : ns.b(`${size}-${sizeProp}`));
                });
              }
            });
            if (gutter.value) {
              classes.push(ns.is("guttered"));
            }
            return [ns.b(), classes];
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), {
              class: vue.normalizeClass(vue.unref(colKls)),
              style: vue.normalizeStyle(vue.unref(style))
            }, {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 8, ["class", "style"]);
          };
        }
      });
      var Col = /* @__PURE__ */ _export_sfc$1(_sfc_main$p, [["__file", "col.vue"]]);
      const ElCol = withInstall(Col);
      const overlayProps = buildProps({
        mask: {
          type: Boolean,
          default: true
        },
        customMaskEvent: {
          type: Boolean,
          default: false
        },
        overlayClass: {
          type: definePropType([
            String,
            Array,
            Object
          ])
        },
        zIndex: {
          type: definePropType([String, Number])
        }
      });
      const overlayEmits = {
        click: (evt) => evt instanceof MouseEvent
      };
      const BLOCK = "overlay";
      var Overlay = vue.defineComponent({
        name: "ElOverlay",
        props: overlayProps,
        emits: overlayEmits,
        setup(props, { slots, emit }) {
          const ns = useNamespace(BLOCK);
          const onMaskClick = (e) => {
            emit("click", e);
          };
          const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick);
          return () => {
            return props.mask ? vue.createVNode("div", {
              class: [ns.b(), props.overlayClass],
              style: {
                zIndex: props.zIndex
              },
              onClick,
              onMousedown,
              onMouseup
            }, [vue.renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : vue.h("div", {
              class: props.overlayClass,
              style: {
                zIndex: props.zIndex,
                position: "fixed",
                top: "0px",
                right: "0px",
                bottom: "0px",
                left: "0px"
              }
            }, [vue.renderSlot(slots, "default")]);
          };
        }
      });
      const ElOverlay = Overlay;
      const dialogInjectionKey = Symbol("dialogInjectionKey");
      const dialogContentProps = buildProps({
        center: Boolean,
        alignCenter: Boolean,
        closeIcon: {
          type: iconPropType
        },
        draggable: Boolean,
        overflow: Boolean,
        fullscreen: Boolean,
        showClose: {
          type: Boolean,
          default: true
        },
        title: {
          type: String,
          default: ""
        },
        ariaLevel: {
          type: String,
          default: "2"
        }
      });
      const dialogContentEmits = {
        close: () => true
      };
      const _hoisted_1$f = ["aria-level"];
      const _hoisted_2$b = ["aria-label"];
      const _hoisted_3$7 = ["id"];
      const __default__$a = vue.defineComponent({ name: "ElDialogContent" });
      const _sfc_main$o = /* @__PURE__ */ vue.defineComponent({
        ...__default__$a,
        props: dialogContentProps,
        emits: dialogContentEmits,
        setup(__props) {
          const props = __props;
          const { t } = useLocale();
          const { Close } = CloseComponents;
          const { dialogRef, headerRef, bodyId, ns, style } = vue.inject(dialogInjectionKey);
          const { focusTrapRef } = vue.inject(FOCUS_TRAP_INJECTION_KEY);
          const dialogKls = vue.computed(() => [
            ns.b(),
            ns.is("fullscreen", props.fullscreen),
            ns.is("draggable", props.draggable),
            ns.is("align-center", props.alignCenter),
            { [ns.m("center")]: props.center }
          ]);
          const composedDialogRef = composeRefs(focusTrapRef, dialogRef);
          const draggable = vue.computed(() => props.draggable);
          const overflow = vue.computed(() => props.overflow);
          useDraggable(dialogRef, headerRef, draggable, overflow);
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              ref: vue.unref(composedDialogRef),
              class: vue.normalizeClass(vue.unref(dialogKls)),
              style: vue.normalizeStyle(vue.unref(style)),
              tabindex: "-1"
            }, [
              vue.createElementVNode("header", {
                ref_key: "headerRef",
                ref: headerRef,
                class: vue.normalizeClass([vue.unref(ns).e("header"), { "show-close": _ctx.showClose }])
              }, [
                vue.renderSlot(_ctx.$slots, "header", {}, () => [
                  vue.createElementVNode("span", {
                    role: "heading",
                    "aria-level": _ctx.ariaLevel,
                    class: vue.normalizeClass(vue.unref(ns).e("title"))
                  }, vue.toDisplayString(_ctx.title), 11, _hoisted_1$f)
                ]),
                _ctx.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
                  key: 0,
                  "aria-label": vue.unref(t)("el.dialog.close"),
                  class: vue.normalizeClass(vue.unref(ns).e("headerbtn")),
                  type: "button",
                  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close"))
                }, [
                  vue.createVNode(vue.unref(ElIcon), {
                    class: vue.normalizeClass(vue.unref(ns).e("close"))
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.closeIcon || vue.unref(Close))))
                    ]),
                    _: 1
                  }, 8, ["class"])
                ], 10, _hoisted_2$b)) : vue.createCommentVNode("v-if", true)
              ], 2),
              vue.createElementVNode("div", {
                id: vue.unref(bodyId),
                class: vue.normalizeClass(vue.unref(ns).e("body"))
              }, [
                vue.renderSlot(_ctx.$slots, "default")
              ], 10, _hoisted_3$7),
              _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("footer", {
                key: 0,
                class: vue.normalizeClass(vue.unref(ns).e("footer"))
              }, [
                vue.renderSlot(_ctx.$slots, "footer")
              ], 2)) : vue.createCommentVNode("v-if", true)
            ], 6);
          };
        }
      });
      var ElDialogContent = /* @__PURE__ */ _export_sfc$1(_sfc_main$o, [["__file", "dialog-content.vue"]]);
      const dialogProps = buildProps({
        ...dialogContentProps,
        appendToBody: Boolean,
        appendTo: {
          type: definePropType(String),
          default: "body"
        },
        beforeClose: {
          type: definePropType(Function)
        },
        destroyOnClose: Boolean,
        closeOnClickModal: {
          type: Boolean,
          default: true
        },
        closeOnPressEscape: {
          type: Boolean,
          default: true
        },
        lockScroll: {
          type: Boolean,
          default: true
        },
        modal: {
          type: Boolean,
          default: true
        },
        openDelay: {
          type: Number,
          default: 0
        },
        closeDelay: {
          type: Number,
          default: 0
        },
        top: {
          type: String
        },
        modelValue: Boolean,
        modalClass: String,
        width: {
          type: [String, Number]
        },
        zIndex: {
          type: Number
        },
        trapFocus: {
          type: Boolean,
          default: false
        },
        headerAriaLevel: {
          type: String,
          default: "2"
        }
      });
      const dialogEmits = {
        open: () => true,
        opened: () => true,
        close: () => true,
        closed: () => true,
        [UPDATE_MODEL_EVENT]: (value) => isBoolean(value),
        openAutoFocus: () => true,
        closeAutoFocus: () => true
      };
      const useDialog = (props, targetRef) => {
        var _a2;
        const instance = vue.getCurrentInstance();
        const emit = instance.emit;
        const { nextZIndex } = useZIndex();
        let lastPosition = "";
        const titleId = useId();
        const bodyId = useId();
        const visible = vue.ref(false);
        const closed = vue.ref(false);
        const rendered = vue.ref(false);
        const zIndex2 = vue.ref((_a2 = props.zIndex) != null ? _a2 : nextZIndex());
        let openTimer = void 0;
        let closeTimer = void 0;
        const namespace = useGlobalConfig("namespace", defaultNamespace);
        const style = vue.computed(() => {
          const style2 = {};
          const varPrefix = `--${namespace.value}-dialog`;
          if (!props.fullscreen) {
            if (props.top) {
              style2[`${varPrefix}-margin-top`] = props.top;
            }
            if (props.width) {
              style2[`${varPrefix}-width`] = addUnit(props.width);
            }
          }
          return style2;
        });
        const overlayDialogStyle = vue.computed(() => {
          if (props.alignCenter) {
            return { display: "flex" };
          }
          return {};
        });
        function afterEnter() {
          emit("opened");
        }
        function afterLeave() {
          emit("closed");
          emit(UPDATE_MODEL_EVENT, false);
          if (props.destroyOnClose) {
            rendered.value = false;
          }
        }
        function beforeLeave() {
          emit("close");
        }
        function open() {
          closeTimer == null ? void 0 : closeTimer();
          openTimer == null ? void 0 : openTimer();
          if (props.openDelay && props.openDelay > 0) {
            ({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay));
          } else {
            doOpen();
          }
        }
        function close() {
          openTimer == null ? void 0 : openTimer();
          closeTimer == null ? void 0 : closeTimer();
          if (props.closeDelay && props.closeDelay > 0) {
            ({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay));
          } else {
            doClose();
          }
        }
        function handleClose() {
          function hide(shouldCancel) {
            if (shouldCancel)
              return;
            closed.value = true;
            visible.value = false;
          }
          if (props.beforeClose) {
            props.beforeClose(hide);
          } else {
            close();
          }
        }
        function onModalClick() {
          if (props.closeOnClickModal) {
            handleClose();
          }
        }
        function doOpen() {
          if (!isClient)
            return;
          visible.value = true;
        }
        function doClose() {
          visible.value = false;
        }
        function onOpenAutoFocus() {
          emit("openAutoFocus");
        }
        function onCloseAutoFocus() {
          emit("closeAutoFocus");
        }
        function onFocusoutPrevented(event2) {
          var _a22;
          if (((_a22 = event2.detail) == null ? void 0 : _a22.focusReason) === "pointer") {
            event2.preventDefault();
          }
        }
        if (props.lockScroll) {
          useLockscreen(visible);
        }
        function onCloseRequested() {
          if (props.closeOnPressEscape) {
            handleClose();
          }
        }
        vue.watch(() => props.modelValue, (val) => {
          if (val) {
            closed.value = false;
            open();
            rendered.value = true;
            zIndex2.value = isUndefined$1(props.zIndex) ? nextZIndex() : zIndex2.value++;
            vue.nextTick(() => {
              emit("open");
              if (targetRef.value) {
                targetRef.value.scrollTop = 0;
              }
            });
          } else {
            if (visible.value) {
              close();
            }
          }
        });
        vue.watch(() => props.fullscreen, (val) => {
          if (!targetRef.value)
            return;
          if (val) {
            lastPosition = targetRef.value.style.transform;
            targetRef.value.style.transform = "";
          } else {
            targetRef.value.style.transform = lastPosition;
          }
        });
        vue.onMounted(() => {
          if (props.modelValue) {
            visible.value = true;
            rendered.value = true;
            open();
          }
        });
        return {
          afterEnter,
          afterLeave,
          beforeLeave,
          handleClose,
          onModalClick,
          close,
          doClose,
          onOpenAutoFocus,
          onCloseAutoFocus,
          onCloseRequested,
          onFocusoutPrevented,
          titleId,
          bodyId,
          closed,
          style,
          overlayDialogStyle,
          rendered,
          visible,
          zIndex: zIndex2
        };
      };
      const _hoisted_1$e = ["aria-label", "aria-labelledby", "aria-describedby"];
      const __default__$9 = vue.defineComponent({
        name: "ElDialog",
        inheritAttrs: false
      });
      const _sfc_main$n = /* @__PURE__ */ vue.defineComponent({
        ...__default__$9,
        props: dialogProps,
        emits: dialogEmits,
        setup(__props, { expose }) {
          const props = __props;
          const slots = vue.useSlots();
          useDeprecated({
            scope: "el-dialog",
            from: "the title slot",
            replacement: "the header slot",
            version: "3.0.0",
            ref: "https://element-plus.org/en-US/component/dialog.html#slots"
          }, vue.computed(() => !!slots.title));
          const ns = useNamespace("dialog");
          const dialogRef = vue.ref();
          const headerRef = vue.ref();
          const dialogContentRef = vue.ref();
          const {
            visible,
            titleId,
            bodyId,
            style,
            overlayDialogStyle,
            rendered,
            zIndex: zIndex2,
            afterEnter,
            afterLeave,
            beforeLeave,
            handleClose,
            onModalClick,
            onOpenAutoFocus,
            onCloseAutoFocus,
            onCloseRequested,
            onFocusoutPrevented
          } = useDialog(props, dialogRef);
          vue.provide(dialogInjectionKey, {
            dialogRef,
            headerRef,
            bodyId,
            ns,
            rendered,
            style
          });
          const overlayEvent = useSameTarget(onModalClick);
          const draggable = vue.computed(() => props.draggable && !props.fullscreen);
          expose({
            visible,
            dialogContentRef
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.Teleport, {
              to: _ctx.appendTo,
              disabled: _ctx.appendTo !== "body" ? false : !_ctx.appendToBody
            }, [
              vue.createVNode(vue.Transition, {
                name: "dialog-fade",
                onAfterEnter: vue.unref(afterEnter),
                onAfterLeave: vue.unref(afterLeave),
                onBeforeLeave: vue.unref(beforeLeave),
                persisted: ""
              }, {
                default: vue.withCtx(() => [
                  vue.withDirectives(vue.createVNode(vue.unref(ElOverlay), {
                    "custom-mask-event": "",
                    mask: _ctx.modal,
                    "overlay-class": _ctx.modalClass,
                    "z-index": vue.unref(zIndex2)
                  }, {
                    default: vue.withCtx(() => [
                      vue.createElementVNode("div", {
                        role: "dialog",
                        "aria-modal": "true",
                        "aria-label": _ctx.title || void 0,
                        "aria-labelledby": !_ctx.title ? vue.unref(titleId) : void 0,
                        "aria-describedby": vue.unref(bodyId),
                        class: vue.normalizeClass(`${vue.unref(ns).namespace.value}-overlay-dialog`),
                        style: vue.normalizeStyle(vue.unref(overlayDialogStyle)),
                        onClick: _cache[0] || (_cache[0] = (...args) => vue.unref(overlayEvent).onClick && vue.unref(overlayEvent).onClick(...args)),
                        onMousedown: _cache[1] || (_cache[1] = (...args) => vue.unref(overlayEvent).onMousedown && vue.unref(overlayEvent).onMousedown(...args)),
                        onMouseup: _cache[2] || (_cache[2] = (...args) => vue.unref(overlayEvent).onMouseup && vue.unref(overlayEvent).onMouseup(...args))
                      }, [
                        vue.createVNode(vue.unref(ElFocusTrap), {
                          loop: "",
                          trapped: vue.unref(visible),
                          "focus-start-el": "container",
                          onFocusAfterTrapped: vue.unref(onOpenAutoFocus),
                          onFocusAfterReleased: vue.unref(onCloseAutoFocus),
                          onFocusoutPrevented: vue.unref(onFocusoutPrevented),
                          onReleaseRequested: vue.unref(onCloseRequested)
                        }, {
                          default: vue.withCtx(() => [
                            vue.unref(rendered) ? (vue.openBlock(), vue.createBlock(ElDialogContent, vue.mergeProps({
                              key: 0,
                              ref_key: "dialogContentRef",
                              ref: dialogContentRef
                            }, _ctx.$attrs, {
                              center: _ctx.center,
                              "align-center": _ctx.alignCenter,
                              "close-icon": _ctx.closeIcon,
                              draggable: vue.unref(draggable),
                              overflow: _ctx.overflow,
                              fullscreen: _ctx.fullscreen,
                              "show-close": _ctx.showClose,
                              title: _ctx.title,
                              "aria-level": _ctx.headerAriaLevel,
                              onClose: vue.unref(handleClose)
                            }), vue.createSlots({
                              header: vue.withCtx(() => [
                                !_ctx.$slots.title ? vue.renderSlot(_ctx.$slots, "header", {
                                  key: 0,
                                  close: vue.unref(handleClose),
                                  titleId: vue.unref(titleId),
                                  titleClass: vue.unref(ns).e("title")
                                }) : vue.renderSlot(_ctx.$slots, "title", { key: 1 })
                              ]),
                              default: vue.withCtx(() => [
                                vue.renderSlot(_ctx.$slots, "default")
                              ]),
                              _: 2
                            }, [
                              _ctx.$slots.footer ? {
                                name: "footer",
                                fn: vue.withCtx(() => [
                                  vue.renderSlot(_ctx.$slots, "footer")
                                ])
                              } : void 0
                            ]), 1040, ["center", "align-center", "close-icon", "draggable", "overflow", "fullscreen", "show-close", "title", "aria-level", "onClose"])) : vue.createCommentVNode("v-if", true)
                          ]),
                          _: 3
                        }, 8, ["trapped", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusoutPrevented", "onReleaseRequested"])
                      ], 46, _hoisted_1$e)
                    ]),
                    _: 3
                  }, 8, ["mask", "overlay-class", "z-index"]), [
                    [vue.vShow, vue.unref(visible)]
                  ])
                ]),
                _: 3
              }, 8, ["onAfterEnter", "onAfterLeave", "onBeforeLeave"])
            ], 8, ["to", "disabled"]);
          };
        }
      });
      var Dialog = /* @__PURE__ */ _export_sfc$1(_sfc_main$n, [["__file", "dialog.vue"]]);
      const ElDialog = withInstall(Dialog);
      const dividerProps = buildProps({
        direction: {
          type: String,
          values: ["horizontal", "vertical"],
          default: "horizontal"
        },
        contentPosition: {
          type: String,
          values: ["left", "center", "right"],
          default: "center"
        },
        borderStyle: {
          type: definePropType(String),
          default: "solid"
        }
      });
      const __default__$8 = vue.defineComponent({
        name: "ElDivider"
      });
      const _sfc_main$m = /* @__PURE__ */ vue.defineComponent({
        ...__default__$8,
        props: dividerProps,
        setup(__props) {
          const props = __props;
          const ns = useNamespace("divider");
          const dividerStyle = vue.computed(() => {
            return ns.cssVar({
              "border-style": props.borderStyle
            });
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass([vue.unref(ns).b(), vue.unref(ns).m(_ctx.direction)]),
              style: vue.normalizeStyle(vue.unref(dividerStyle)),
              role: "separator"
            }, [
              _ctx.$slots.default && _ctx.direction !== "vertical" ? (vue.openBlock(), vue.createElementBlock("div", {
                key: 0,
                class: vue.normalizeClass([vue.unref(ns).e("text"), vue.unref(ns).is(_ctx.contentPosition)])
              }, [
                vue.renderSlot(_ctx.$slots, "default")
              ], 2)) : vue.createCommentVNode("v-if", true)
            ], 6);
          };
        }
      });
      var Divider = /* @__PURE__ */ _export_sfc$1(_sfc_main$m, [["__file", "divider.vue"]]);
      const ElDivider = withInstall(Divider);
      const _hoisted_1$d = {
        viewBox: "0 0 79 86",
        version: "1.1",
        xmlns: "http://www.w3.org/2000/svg",
        "xmlns:xlink": "http://www.w3.org/1999/xlink"
      };
      const _hoisted_2$a = ["id"];
      const _hoisted_3$6 = ["stop-color"];
      const _hoisted_4$5 = ["stop-color"];
      const _hoisted_5$4 = ["id"];
      const _hoisted_6$3 = ["stop-color"];
      const _hoisted_7$1 = ["stop-color"];
      const _hoisted_8$1 = ["id"];
      const _hoisted_9$1 = {
        id: "Illustrations",
        stroke: "none",
        "stroke-width": "1",
        fill: "none",
        "fill-rule": "evenodd"
      };
      const _hoisted_10$1 = {
        id: "B-type",
        transform: "translate(-1268.000000, -535.000000)"
      };
      const _hoisted_11$1 = {
        id: "Group-2",
        transform: "translate(1268.000000, 535.000000)"
      };
      const _hoisted_12$1 = ["fill"];
      const _hoisted_13$1 = ["fill"];
      const _hoisted_14$1 = {
        id: "Group-Copy",
        transform: "translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)"
      };
      const _hoisted_15 = ["fill"];
      const _hoisted_16 = ["fill"];
      const _hoisted_17 = ["fill"];
      const _hoisted_18 = ["fill"];
      const _hoisted_19 = ["fill"];
      const _hoisted_20 = {
        id: "Rectangle-Copy-17",
        transform: "translate(53.000000, 45.000000)"
      };
      const _hoisted_21 = ["fill", "xlink:href"];
      const _hoisted_22 = ["fill", "mask"];
      const _hoisted_23 = ["fill"];
      const __default__$7 = vue.defineComponent({
        name: "ImgEmpty"
      });
      const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
        ...__default__$7,
        setup(__props) {
          const ns = useNamespace("empty");
          const id = useId();
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("svg", _hoisted_1$d, [
              vue.createElementVNode("defs", null, [
                vue.createElementVNode("linearGradient", {
                  id: `linearGradient-1-${vue.unref(id)}`,
                  x1: "38.8503086%",
                  y1: "0%",
                  x2: "61.1496914%",
                  y2: "100%"
                }, [
                  vue.createElementVNode("stop", {
                    "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-1")})`,
                    offset: "0%"
                  }, null, 8, _hoisted_3$6),
                  vue.createElementVNode("stop", {
                    "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-4")})`,
                    offset: "100%"
                  }, null, 8, _hoisted_4$5)
                ], 8, _hoisted_2$a),
                vue.createElementVNode("linearGradient", {
                  id: `linearGradient-2-${vue.unref(id)}`,
                  x1: "0%",
                  y1: "9.5%",
                  x2: "100%",
                  y2: "90.5%"
                }, [
                  vue.createElementVNode("stop", {
                    "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-1")})`,
                    offset: "0%"
                  }, null, 8, _hoisted_6$3),
                  vue.createElementVNode("stop", {
                    "stop-color": `var(${vue.unref(ns).cssVarBlockName("fill-color-6")})`,
                    offset: "100%"
                  }, null, 8, _hoisted_7$1)
                ], 8, _hoisted_5$4),
                vue.createElementVNode("rect", {
                  id: `path-3-${vue.unref(id)}`,
                  x: "0",
                  y: "0",
                  width: "17",
                  height: "36"
                }, null, 8, _hoisted_8$1)
              ]),
              vue.createElementVNode("g", _hoisted_9$1, [
                vue.createElementVNode("g", _hoisted_10$1, [
                  vue.createElementVNode("g", _hoisted_11$1, [
                    vue.createElementVNode("path", {
                      id: "Oval-Copy-2",
                      d: "M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z",
                      fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-3")})`
                    }, null, 8, _hoisted_12$1),
                    vue.createElementVNode("polygon", {
                      id: "Rectangle-Copy-14",
                      fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-7")})`,
                      transform: "translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) ",
                      points: "13 58 53 58 42 45 2 45"
                    }, null, 8, _hoisted_13$1),
                    vue.createElementVNode("g", _hoisted_14$1, [
                      vue.createElementVNode("polygon", {
                        id: "Rectangle-Copy-10",
                        fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-7")})`,
                        transform: "translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) ",
                        points: "2.84078316e-14 3 18 3 23 7 5 7"
                      }, null, 8, _hoisted_15),
                      vue.createElementVNode("polygon", {
                        id: "Rectangle-Copy-11",
                        fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-5")})`,
                        points: "-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43"
                      }, null, 8, _hoisted_16),
                      vue.createElementVNode("rect", {
                        id: "Rectangle-Copy-12",
                        fill: `url(#linearGradient-1-${vue.unref(id)})`,
                        transform: "translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) ",
                        x: "38",
                        y: "7",
                        width: "17",
                        height: "36"
                      }, null, 8, _hoisted_17),
                      vue.createElementVNode("polygon", {
                        id: "Rectangle-Copy-13",
                        fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-2")})`,
                        transform: "translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) ",
                        points: "24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12"
                      }, null, 8, _hoisted_18)
                    ]),
                    vue.createElementVNode("rect", {
                      id: "Rectangle-Copy-15",
                      fill: `url(#linearGradient-2-${vue.unref(id)})`,
                      x: "13",
                      y: "45",
                      width: "40",
                      height: "36"
                    }, null, 8, _hoisted_19),
                    vue.createElementVNode("g", _hoisted_20, [
                      vue.createElementVNode("use", {
                        id: "Mask",
                        fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-8")})`,
                        transform: "translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) ",
                        "xlink:href": `#path-3-${vue.unref(id)}`
                      }, null, 8, _hoisted_21),
                      vue.createElementVNode("polygon", {
                        id: "Rectangle-Copy",
                        fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-9")})`,
                        mask: `url(#mask-4-${vue.unref(id)})`,
                        transform: "translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) ",
                        points: "7 0 24 0 20 18 7 16.5"
                      }, null, 8, _hoisted_22)
                    ]),
                    vue.createElementVNode("polygon", {
                      id: "Rectangle-Copy-18",
                      fill: `var(${vue.unref(ns).cssVarBlockName("fill-color-2")})`,
                      transform: "translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) ",
                      points: "62 45 79 45 70 58 53 58"
                    }, null, 8, _hoisted_23)
                  ])
                ])
              ])
            ]);
          };
        }
      });
      var ImgEmpty = /* @__PURE__ */ _export_sfc$1(_sfc_main$l, [["__file", "img-empty.vue"]]);
      const emptyProps = buildProps({
        image: {
          type: String,
          default: ""
        },
        imageSize: Number,
        description: {
          type: String,
          default: ""
        }
      });
      const _hoisted_1$c = ["src"];
      const _hoisted_2$9 = { key: 1 };
      const __default__$6 = vue.defineComponent({
        name: "ElEmpty"
      });
      const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
        ...__default__$6,
        props: emptyProps,
        setup(__props) {
          const props = __props;
          const { t } = useLocale();
          const ns = useNamespace("empty");
          const emptyDescription = vue.computed(() => props.description || t("el.table.emptyText"));
          const imageStyle = vue.computed(() => ({
            width: addUnit(props.imageSize)
          }));
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass(vue.unref(ns).b())
            }, [
              vue.createElementVNode("div", {
                class: vue.normalizeClass(vue.unref(ns).e("image")),
                style: vue.normalizeStyle(vue.unref(imageStyle))
              }, [
                _ctx.image ? (vue.openBlock(), vue.createElementBlock("img", {
                  key: 0,
                  src: _ctx.image,
                  ondragstart: "return false"
                }, null, 8, _hoisted_1$c)) : vue.renderSlot(_ctx.$slots, "image", { key: 1 }, () => [
                  vue.createVNode(ImgEmpty)
                ])
              ], 6),
              vue.createElementVNode("div", {
                class: vue.normalizeClass(vue.unref(ns).e("description"))
              }, [
                _ctx.$slots.description ? vue.renderSlot(_ctx.$slots, "description", { key: 0 }) : (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$9, vue.toDisplayString(vue.unref(emptyDescription)), 1))
              ], 2),
              _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", {
                key: 0,
                class: vue.normalizeClass(vue.unref(ns).e("bottom"))
              }, [
                vue.renderSlot(_ctx.$slots, "default")
              ], 2)) : vue.createCommentVNode("v-if", true)
            ], 2);
          };
        }
      });
      var Empty = /* @__PURE__ */ _export_sfc$1(_sfc_main$k, [["__file", "empty.vue"]]);
      const ElEmpty = withInstall(Empty);
      const inputNumberProps = buildProps({
        id: {
          type: String,
          default: void 0
        },
        step: {
          type: Number,
          default: 1
        },
        stepStrictly: Boolean,
        max: {
          type: Number,
          default: Number.POSITIVE_INFINITY
        },
        min: {
          type: Number,
          default: Number.NEGATIVE_INFINITY
        },
        modelValue: Number,
        readonly: Boolean,
        disabled: Boolean,
        size: useSizeProp,
        controls: {
          type: Boolean,
          default: true
        },
        controlsPosition: {
          type: String,
          default: "",
          values: ["", "right"]
        },
        valueOnClear: {
          type: [String, Number, null],
          validator: (val) => val === null || isNumber(val) || ["min", "max"].includes(val),
          default: null
        },
        name: String,
        label: String,
        placeholder: String,
        precision: {
          type: Number,
          validator: (val) => val >= 0 && val === Number.parseInt(`${val}`, 10)
        },
        validateEvent: {
          type: Boolean,
          default: true
        }
      });
      const inputNumberEmits = {
        [CHANGE_EVENT]: (cur, prev) => prev !== cur,
        blur: (e) => e instanceof FocusEvent,
        focus: (e) => e instanceof FocusEvent,
        [INPUT_EVENT]: (val) => isNumber(val) || isNil(val),
        [UPDATE_MODEL_EVENT]: (val) => isNumber(val) || isNil(val)
      };
      const _hoisted_1$b = ["aria-label", "onKeydown"];
      const _hoisted_2$8 = ["aria-label", "onKeydown"];
      const __default__$5 = vue.defineComponent({
        name: "ElInputNumber"
      });
      const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
        ...__default__$5,
        props: inputNumberProps,
        emits: inputNumberEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const { t } = useLocale();
          const ns = useNamespace("input-number");
          const input = vue.ref();
          const data = vue.reactive({
            currentValue: props.modelValue,
            userInput: null
          });
          const { formItem } = useFormItem();
          const minDisabled = vue.computed(() => isNumber(props.modelValue) && props.modelValue <= props.min);
          const maxDisabled = vue.computed(() => isNumber(props.modelValue) && props.modelValue >= props.max);
          const numPrecision = vue.computed(() => {
            const stepPrecision = getPrecision(props.step);
            if (!isUndefined(props.precision)) {
              if (stepPrecision > props.precision)
                ;
              return props.precision;
            } else {
              return Math.max(getPrecision(props.modelValue), stepPrecision);
            }
          });
          const controlsAtRight = vue.computed(() => {
            return props.controls && props.controlsPosition === "right";
          });
          const inputNumberSize = useFormSize();
          const inputNumberDisabled = useFormDisabled();
          const displayValue = vue.computed(() => {
            if (data.userInput !== null) {
              return data.userInput;
            }
            let currentValue = data.currentValue;
            if (isNil(currentValue))
              return "";
            if (isNumber(currentValue)) {
              if (Number.isNaN(currentValue))
                return "";
              if (!isUndefined(props.precision)) {
                currentValue = currentValue.toFixed(props.precision);
              }
            }
            return currentValue;
          });
          const toPrecision = (num, pre) => {
            if (isUndefined(pre))
              pre = numPrecision.value;
            if (pre === 0)
              return Math.round(num);
            let snum = String(num);
            const pointPos = snum.indexOf(".");
            if (pointPos === -1)
              return num;
            const nums = snum.replace(".", "").split("");
            const datum = nums[pointPos + pre];
            if (!datum)
              return num;
            const length = snum.length;
            if (snum.charAt(length - 1) === "5") {
              snum = `${snum.slice(0, Math.max(0, length - 1))}6`;
            }
            return Number.parseFloat(Number(snum).toFixed(pre));
          };
          const getPrecision = (value) => {
            if (isNil(value))
              return 0;
            const valueString = value.toString();
            const dotPosition = valueString.indexOf(".");
            let precision = 0;
            if (dotPosition !== -1) {
              precision = valueString.length - dotPosition - 1;
            }
            return precision;
          };
          const ensurePrecision = (val, coefficient = 1) => {
            if (!isNumber(val))
              return data.currentValue;
            return toPrecision(val + props.step * coefficient);
          };
          const increase = () => {
            if (props.readonly || inputNumberDisabled.value || maxDisabled.value)
              return;
            const value = Number(displayValue.value) || 0;
            const newVal = ensurePrecision(value);
            setCurrentValue(newVal);
            emit(INPUT_EVENT, data.currentValue);
            setCurrentValueToModelValue();
          };
          const decrease = () => {
            if (props.readonly || inputNumberDisabled.value || minDisabled.value)
              return;
            const value = Number(displayValue.value) || 0;
            const newVal = ensurePrecision(value, -1);
            setCurrentValue(newVal);
            emit(INPUT_EVENT, data.currentValue);
            setCurrentValueToModelValue();
          };
          const verifyValue = (value, update) => {
            const { max, min, step, precision, stepStrictly, valueOnClear } = props;
            if (max < min) {
              throwError("InputNumber", "min should not be greater than max.");
            }
            let newVal = Number(value);
            if (isNil(value) || Number.isNaN(newVal)) {
              return null;
            }
            if (value === "") {
              if (valueOnClear === null) {
                return null;
              }
              newVal = isString(valueOnClear) ? { min, max }[valueOnClear] : valueOnClear;
            }
            if (stepStrictly) {
              newVal = toPrecision(Math.round(newVal / step) * step, precision);
            }
            if (!isUndefined(precision)) {
              newVal = toPrecision(newVal, precision);
            }
            if (newVal > max || newVal < min) {
              newVal = newVal > max ? max : min;
              update && emit(UPDATE_MODEL_EVENT, newVal);
            }
            return newVal;
          };
          const setCurrentValue = (value, emitChange = true) => {
            var _a2;
            const oldVal = data.currentValue;
            const newVal = verifyValue(value);
            if (!emitChange) {
              emit(UPDATE_MODEL_EVENT, newVal);
              return;
            }
            if (oldVal === newVal && value)
              return;
            data.userInput = null;
            emit(UPDATE_MODEL_EVENT, newVal);
            if (oldVal !== newVal) {
              emit(CHANGE_EVENT, newVal, oldVal);
            }
            if (props.validateEvent) {
              (_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => debugWarn());
            }
            data.currentValue = newVal;
          };
          const handleInput = (value) => {
            data.userInput = value;
            const newVal = value === "" ? null : Number(value);
            emit(INPUT_EVENT, newVal);
            setCurrentValue(newVal, false);
          };
          const handleInputChange = (value) => {
            const newVal = value !== "" ? Number(value) : "";
            if (isNumber(newVal) && !Number.isNaN(newVal) || value === "") {
              setCurrentValue(newVal);
            }
            setCurrentValueToModelValue();
            data.userInput = null;
          };
          const focus = () => {
            var _a2, _b;
            (_b = (_a2 = input.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b.call(_a2);
          };
          const blur = () => {
            var _a2, _b;
            (_b = (_a2 = input.value) == null ? void 0 : _a2.blur) == null ? void 0 : _b.call(_a2);
          };
          const handleFocus = (event2) => {
            emit("focus", event2);
          };
          const handleBlur = (event2) => {
            var _a2;
            data.userInput = null;
            emit("blur", event2);
            if (props.validateEvent) {
              (_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "blur").catch((err) => debugWarn());
            }
          };
          const setCurrentValueToModelValue = () => {
            if (data.currentValue !== props.modelValue) {
              data.currentValue = props.modelValue;
            }
          };
          const handleWheel = (e) => {
            if (document.activeElement === e.target)
              e.preventDefault();
          };
          vue.watch(() => props.modelValue, (value, oldValue) => {
            const newValue = verifyValue(value, true);
            if (data.userInput === null && newValue !== oldValue) {
              data.currentValue = newValue;
            }
          }, { immediate: true });
          vue.onMounted(() => {
            var _a2;
            const { min, max, modelValue } = props;
            const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input;
            innerInput.setAttribute("role", "spinbutton");
            if (Number.isFinite(max)) {
              innerInput.setAttribute("aria-valuemax", String(max));
            } else {
              innerInput.removeAttribute("aria-valuemax");
            }
            if (Number.isFinite(min)) {
              innerInput.setAttribute("aria-valuemin", String(min));
            } else {
              innerInput.removeAttribute("aria-valuemin");
            }
            innerInput.setAttribute("aria-valuenow", data.currentValue || data.currentValue === 0 ? String(data.currentValue) : "");
            innerInput.setAttribute("aria-disabled", String(inputNumberDisabled.value));
            if (!isNumber(modelValue) && modelValue != null) {
              let val = Number(modelValue);
              if (Number.isNaN(val)) {
                val = null;
              }
              emit(UPDATE_MODEL_EVENT, val);
            }
          });
          vue.onUpdated(() => {
            var _a2, _b;
            const innerInput = (_a2 = input.value) == null ? void 0 : _a2.input;
            innerInput == null ? void 0 : innerInput.setAttribute("aria-valuenow", `${(_b = data.currentValue) != null ? _b : ""}`);
          });
          expose({
            focus,
            blur
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass([
                vue.unref(ns).b(),
                vue.unref(ns).m(vue.unref(inputNumberSize)),
                vue.unref(ns).is("disabled", vue.unref(inputNumberDisabled)),
                vue.unref(ns).is("without-controls", !_ctx.controls),
                vue.unref(ns).is("controls-right", vue.unref(controlsAtRight))
              ]),
              onDragstart: _cache[0] || (_cache[0] = vue.withModifiers(() => {
              }, ["prevent"]))
            }, [
              _ctx.controls ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", {
                key: 0,
                role: "button",
                "aria-label": vue.unref(t)("el.inputNumber.decrease"),
                class: vue.normalizeClass([vue.unref(ns).e("decrease"), vue.unref(ns).is("disabled", vue.unref(minDisabled))]),
                onKeydown: vue.withKeys(decrease, ["enter"])
              }, [
                vue.renderSlot(_ctx.$slots, "decrease-icon", {}, () => [
                  vue.createVNode(vue.unref(ElIcon), null, {
                    default: vue.withCtx(() => [
                      vue.unref(controlsAtRight) ? (vue.openBlock(), vue.createBlock(vue.unref(arrow_down_default), { key: 0 })) : (vue.openBlock(), vue.createBlock(vue.unref(minus_default), { key: 1 }))
                    ]),
                    _: 1
                  })
                ])
              ], 42, _hoisted_1$b)), [
                [vue.unref(vRepeatClick), decrease]
              ]) : vue.createCommentVNode("v-if", true),
              _ctx.controls ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", {
                key: 1,
                role: "button",
                "aria-label": vue.unref(t)("el.inputNumber.increase"),
                class: vue.normalizeClass([vue.unref(ns).e("increase"), vue.unref(ns).is("disabled", vue.unref(maxDisabled))]),
                onKeydown: vue.withKeys(increase, ["enter"])
              }, [
                vue.renderSlot(_ctx.$slots, "increase-icon", {}, () => [
                  vue.createVNode(vue.unref(ElIcon), null, {
                    default: vue.withCtx(() => [
                      vue.unref(controlsAtRight) ? (vue.openBlock(), vue.createBlock(vue.unref(arrow_up_default), { key: 0 })) : (vue.openBlock(), vue.createBlock(vue.unref(plus_default), { key: 1 }))
                    ]),
                    _: 1
                  })
                ])
              ], 42, _hoisted_2$8)), [
                [vue.unref(vRepeatClick), increase]
              ]) : vue.createCommentVNode("v-if", true),
              vue.createVNode(vue.unref(ElInput), {
                id: _ctx.id,
                ref_key: "input",
                ref: input,
                type: "number",
                step: _ctx.step,
                "model-value": vue.unref(displayValue),
                placeholder: _ctx.placeholder,
                readonly: _ctx.readonly,
                disabled: vue.unref(inputNumberDisabled),
                size: vue.unref(inputNumberSize),
                max: _ctx.max,
                min: _ctx.min,
                name: _ctx.name,
                label: _ctx.label,
                "validate-event": false,
                onWheel: handleWheel,
                onKeydown: [
                  vue.withKeys(vue.withModifiers(increase, ["prevent"]), ["up"]),
                  vue.withKeys(vue.withModifiers(decrease, ["prevent"]), ["down"])
                ],
                onBlur: handleBlur,
                onFocus: handleFocus,
                onInput: handleInput,
                onChange: handleInputChange
              }, null, 8, ["id", "step", "model-value", "placeholder", "readonly", "disabled", "size", "max", "min", "name", "label", "onKeydown"])
            ], 34);
          };
        }
      });
      var InputNumber = /* @__PURE__ */ _export_sfc$1(_sfc_main$j, [["__file", "input-number.vue"]]);
      const ElInputNumber = withInstall(InputNumber);
      const selectGroupKey = Symbol("ElSelectGroup");
      const selectKey = Symbol("ElSelect");
      function useOption(props, states) {
        const select = vue.inject(selectKey);
        const selectGroup = vue.inject(selectGroupKey, { disabled: false });
        const itemSelected = vue.computed(() => {
          if (select.props.multiple) {
            return contains(select.props.modelValue, props.value);
          } else {
            return contains([select.props.modelValue], props.value);
          }
        });
        const limitReached = vue.computed(() => {
          if (select.props.multiple) {
            const modelValue = select.props.modelValue || [];
            return !itemSelected.value && modelValue.length >= select.props.multipleLimit && select.props.multipleLimit > 0;
          } else {
            return false;
          }
        });
        const currentLabel = vue.computed(() => {
          return props.label || (isObject$1(props.value) ? "" : props.value);
        });
        const currentValue = vue.computed(() => {
          return props.value || props.label || "";
        });
        const isDisabled = vue.computed(() => {
          return props.disabled || states.groupDisabled || limitReached.value;
        });
        const instance = vue.getCurrentInstance();
        const contains = (arr = [], target) => {
          if (!isObject$1(props.value)) {
            return arr && arr.includes(target);
          } else {
            const valueKey = select.props.valueKey;
            return arr && arr.some((item) => {
              return vue.toRaw(get(item, valueKey)) === get(target, valueKey);
            });
          }
        };
        const hoverItem = () => {
          if (!props.disabled && !selectGroup.disabled) {
            select.states.hoveringIndex = select.optionsArray.indexOf(instance.proxy);
          }
        };
        const updateOption = (query) => {
          const regexp = new RegExp(escapeStringRegexp(query), "i");
          states.visible = regexp.test(currentLabel.value) || props.created;
        };
        vue.watch(() => currentLabel.value, () => {
          if (!props.created && !select.props.remote)
            select.setSelected();
        });
        vue.watch(() => props.value, (val, oldVal) => {
          const { remote, valueKey } = select.props;
          if (!isEqual(val, oldVal)) {
            select.onOptionDestroy(oldVal, instance.proxy);
            select.onOptionCreate(instance.proxy);
          }
          if (!props.created && !remote) {
            if (valueKey && isObject$1(val) && isObject$1(oldVal) && val[valueKey] === oldVal[valueKey]) {
              return;
            }
            select.setSelected();
          }
        });
        vue.watch(() => selectGroup.disabled, () => {
          states.groupDisabled = selectGroup.disabled;
        }, { immediate: true });
        return {
          select,
          currentLabel,
          currentValue,
          itemSelected,
          isDisabled,
          hoverItem,
          updateOption
        };
      }
      const _sfc_main$i = vue.defineComponent({
        name: "ElOption",
        componentName: "ElOption",
        props: {
          value: {
            required: true,
            type: [String, Number, Boolean, Object]
          },
          label: [String, Number],
          created: Boolean,
          disabled: Boolean
        },
        setup(props) {
          const ns = useNamespace("select");
          const id = useId();
          const containerKls = vue.computed(() => [
            ns.be("dropdown", "item"),
            ns.is("disabled", vue.unref(isDisabled)),
            ns.is("selected", vue.unref(itemSelected)),
            ns.is("hovering", vue.unref(hover))
          ]);
          const states = vue.reactive({
            index: -1,
            groupDisabled: false,
            visible: true,
            hover: false
          });
          const {
            currentLabel,
            itemSelected,
            isDisabled,
            select,
            hoverItem,
            updateOption
          } = useOption(props, states);
          const { visible, hover } = vue.toRefs(states);
          const vm = vue.getCurrentInstance().proxy;
          select.onOptionCreate(vm);
          vue.onBeforeUnmount(() => {
            const key2 = vm.value;
            const { selected } = select.states;
            const selectedOptions = select.props.multiple ? selected : [selected];
            const doesSelected = selectedOptions.some((item) => {
              return item.value === vm.value;
            });
            vue.nextTick(() => {
              if (select.states.cachedOptions.get(key2) === vm && !doesSelected) {
                select.states.cachedOptions.delete(key2);
              }
            });
            select.onOptionDestroy(key2, vm);
          });
          function selectOptionClick() {
            if (props.disabled !== true && states.groupDisabled !== true) {
              select.handleOptionSelect(vm);
            }
          }
          return {
            ns,
            id,
            containerKls,
            currentLabel,
            itemSelected,
            isDisabled,
            select,
            hoverItem,
            updateOption,
            visible,
            hover,
            selectOptionClick,
            states
          };
        }
      });
      const _hoisted_1$a = ["id", "aria-disabled", "aria-selected"];
      function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
        return vue.withDirectives((vue.openBlock(), vue.createElementBlock("li", {
          id: _ctx.id,
          class: vue.normalizeClass(_ctx.containerKls),
          role: "option",
          "aria-disabled": _ctx.isDisabled || void 0,
          "aria-selected": _ctx.itemSelected,
          onMouseenter: _cache[0] || (_cache[0] = (...args) => _ctx.hoverItem && _ctx.hoverItem(...args)),
          onClick: _cache[1] || (_cache[1] = vue.withModifiers((...args) => _ctx.selectOptionClick && _ctx.selectOptionClick(...args), ["stop"]))
        }, [
          vue.renderSlot(_ctx.$slots, "default", {}, () => [
            vue.createElementVNode("span", null, vue.toDisplayString(_ctx.currentLabel), 1)
          ])
        ], 42, _hoisted_1$a)), [
          [vue.vShow, _ctx.visible]
        ]);
      }
      var Option = /* @__PURE__ */ _export_sfc$1(_sfc_main$i, [["render", _sfc_render$7], ["__file", "option.vue"]]);
      const _sfc_main$h = vue.defineComponent({
        name: "ElSelectDropdown",
        componentName: "ElSelectDropdown",
        setup() {
          const select = vue.inject(selectKey);
          const ns = useNamespace("select");
          const popperClass = vue.computed(() => select.props.popperClass);
          const isMultiple = vue.computed(() => select.props.multiple);
          const isFitInputWidth = vue.computed(() => select.props.fitInputWidth);
          const minWidth = vue.ref("");
          function updateMinWidth() {
            var _a2;
            minWidth.value = `${(_a2 = select.selectRef) == null ? void 0 : _a2.offsetWidth}px`;
          }
          vue.onMounted(() => {
            updateMinWidth();
            useResizeObserver(select.selectRef, updateMinWidth);
          });
          return {
            ns,
            minWidth,
            popperClass,
            isMultiple,
            isFitInputWidth
          };
        }
      });
      function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
        return vue.openBlock(), vue.createElementBlock("div", {
          class: vue.normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]),
          style: vue.normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth })
        }, [
          _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
            key: 0,
            class: vue.normalizeClass(_ctx.ns.be("dropdown", "header"))
          }, [
            vue.renderSlot(_ctx.$slots, "header")
          ], 2)) : vue.createCommentVNode("v-if", true),
          vue.renderSlot(_ctx.$slots, "default"),
          _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", {
            key: 1,
            class: vue.normalizeClass(_ctx.ns.be("dropdown", "footer"))
          }, [
            vue.renderSlot(_ctx.$slots, "footer")
          ], 2)) : vue.createCommentVNode("v-if", true)
        ], 6);
      }
      var ElSelectMenu = /* @__PURE__ */ _export_sfc$1(_sfc_main$h, [["render", _sfc_render$6], ["__file", "select-dropdown.vue"]]);
      function useInput(handleInput) {
        const isComposing = vue.ref(false);
        const handleCompositionStart = () => {
          isComposing.value = true;
        };
        const handleCompositionUpdate = (event2) => {
          const text = event2.target.value;
          const lastCharacter = text[text.length - 1] || "";
          isComposing.value = !isKorean(lastCharacter);
        };
        const handleCompositionEnd = (event2) => {
          if (isComposing.value) {
            isComposing.value = false;
            if (isFunction$1(handleInput)) {
              handleInput(event2);
            }
          }
        };
        return {
          handleCompositionStart,
          handleCompositionUpdate,
          handleCompositionEnd
        };
      }
      const MINIMUM_INPUT_WIDTH = 11;
      const useSelect = (props, emit) => {
        const { t } = useLocale();
        const contentId = useId();
        const nsSelect = useNamespace("select");
        const nsInput = useNamespace("input");
        const states = vue.reactive({
          inputValue: "",
          options: /* @__PURE__ */ new Map(),
          cachedOptions: /* @__PURE__ */ new Map(),
          disabledOptions: /* @__PURE__ */ new Map(),
          optionValues: [],
          selected: props.multiple ? [] : {},
          selectionWidth: 0,
          calculatorWidth: 0,
          collapseItemWidth: 0,
          selectedLabel: "",
          hoveringIndex: -1,
          previousQuery: null,
          inputHovering: false,
          menuVisibleOnFocus: false,
          isBeforeHide: false
        });
        const selectRef = vue.ref(null);
        const selectionRef = vue.ref(null);
        const tooltipRef = vue.ref(null);
        const tagTooltipRef = vue.ref(null);
        const inputRef = vue.ref(null);
        const calculatorRef = vue.ref(null);
        const prefixRef = vue.ref(null);
        const suffixRef = vue.ref(null);
        const menuRef = vue.ref(null);
        const tagMenuRef = vue.ref(null);
        const collapseItemRef = vue.ref(null);
        const scrollbarRef = vue.ref(null);
        const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {
          afterFocus() {
            if (props.automaticDropdown && !expanded.value) {
              expanded.value = true;
              states.menuVisibleOnFocus = true;
            }
          },
          beforeBlur(event2) {
            var _a2, _b;
            return ((_a2 = tooltipRef.value) == null ? void 0 : _a2.isFocusInsideContent(event2)) || ((_b = tagTooltipRef.value) == null ? void 0 : _b.isFocusInsideContent(event2));
          },
          afterBlur() {
            expanded.value = false;
            states.menuVisibleOnFocus = false;
          }
        });
        const expanded = vue.ref(false);
        const hoverOption = vue.ref();
        const { form, formItem } = useFormItem();
        const { inputId } = useFormItemInputId(props, {
          formItemContext: formItem
        });
        const selectDisabled = vue.computed(() => props.disabled || (form == null ? void 0 : form.disabled));
        const hasEmptyStringOption = vue.computed(() => optionsArray.value.some((option) => option.value === ""));
        const hasModelValue = vue.computed(() => {
          return props.multiple ? isArray$1(props.modelValue) && props.modelValue.length > 0 : !isNil(props.modelValue) && (props.modelValue !== "" || hasEmptyStringOption.value);
        });
        const showClose = vue.computed(() => {
          const criteria = props.clearable && !selectDisabled.value && states.inputHovering && hasModelValue.value;
          return criteria;
        });
        const iconComponent = vue.computed(() => props.remote && props.filterable && !props.remoteShowSuffix ? "" : props.suffixIcon);
        const iconReverse = vue.computed(() => nsSelect.is("reverse", iconComponent.value && expanded.value));
        const validateState = vue.computed(() => (formItem == null ? void 0 : formItem.validateState) || "");
        const validateIcon = vue.computed(() => ValidateComponentsMap[validateState.value]);
        const debounce$1 = vue.computed(() => props.remote ? 300 : 0);
        const emptyText = vue.computed(() => {
          if (props.loading) {
            return props.loadingText || t("el.select.loading");
          } else {
            if (props.remote && !states.inputValue && states.options.size === 0)
              return false;
            if (props.filterable && states.inputValue && states.options.size > 0 && filteredOptionsCount.value === 0) {
              return props.noMatchText || t("el.select.noMatch");
            }
            if (states.options.size === 0) {
              return props.noDataText || t("el.select.noData");
            }
          }
          return null;
        });
        const filteredOptionsCount = vue.computed(() => optionsArray.value.filter((option) => option.visible).length);
        const optionsArray = vue.computed(() => {
          const list = Array.from(states.options.values());
          const newList = [];
          states.optionValues.forEach((item) => {
            const index = list.findIndex((i) => i.value === item);
            if (index > -1) {
              newList.push(list[index]);
            }
          });
          return newList.length >= list.length ? newList : list;
        });
        const cachedOptionsArray = vue.computed(() => Array.from(states.cachedOptions.values()));
        const showNewOption = vue.computed(() => {
          const hasExistingOption = optionsArray.value.filter((option) => {
            return !option.created;
          }).some((option) => {
            return option.currentLabel === states.inputValue;
          });
          return props.filterable && props.allowCreate && states.inputValue !== "" && !hasExistingOption;
        });
        const updateOptions2 = () => {
          if (props.filterable && isFunction$1(props.filterMethod))
            return;
          if (props.filterable && props.remote && isFunction$1(props.remoteMethod))
            return;
          optionsArray.value.forEach((option) => {
            var _a2;
            (_a2 = option.updateOption) == null ? void 0 : _a2.call(option, states.inputValue);
          });
        };
        const selectSize = useFormSize();
        const collapseTagSize = vue.computed(() => ["small"].includes(selectSize.value) ? "small" : "default");
        const dropdownMenuVisible = vue.computed({
          get() {
            return expanded.value && emptyText.value !== false;
          },
          set(val) {
            expanded.value = val;
          }
        });
        const shouldShowPlaceholder = vue.computed(() => {
          if (isArray$1(props.modelValue)) {
            return props.modelValue.length === 0 && !states.inputValue;
          }
          return props.filterable ? !states.inputValue : true;
        });
        const currentPlaceholder = vue.computed(() => {
          var _a2;
          const _placeholder = (_a2 = props.placeholder) != null ? _a2 : t("el.select.placeholder");
          return props.multiple || !hasModelValue.value ? _placeholder : states.selectedLabel;
        });
        vue.watch(() => props.modelValue, (val, oldVal) => {
          if (props.multiple) {
            if (props.filterable && !props.reserveKeyword) {
              states.inputValue = "";
              handleQueryChange("");
            }
          }
          setSelected();
          if (!isEqual(val, oldVal) && props.validateEvent) {
            formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn());
          }
        }, {
          flush: "post",
          deep: true
        });
        vue.watch(() => expanded.value, (val) => {
          if (val) {
            handleQueryChange(states.inputValue);
          } else {
            states.inputValue = "";
            states.previousQuery = null;
            states.isBeforeHide = true;
          }
          emit("visible-change", val);
        });
        vue.watch(() => states.options.entries(), () => {
          var _a2;
          if (!isClient)
            return;
          const inputs = ((_a2 = selectRef.value) == null ? void 0 : _a2.querySelectorAll("input")) || [];
          if (!props.filterable && !props.defaultFirstOption && !isUndefined(props.modelValue) || !Array.from(inputs).includes(document.activeElement)) {
            setSelected();
          }
          if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {
            checkDefaultFirstOption();
          }
        }, {
          flush: "post"
        });
        vue.watch(() => states.hoveringIndex, (val) => {
          if (isNumber(val) && val > -1) {
            hoverOption.value = optionsArray.value[val] || {};
          } else {
            hoverOption.value = {};
          }
          optionsArray.value.forEach((option) => {
            option.hover = hoverOption.value === option;
          });
        });
        vue.watchEffect(() => {
          if (states.isBeforeHide)
            return;
          updateOptions2();
        });
        const handleQueryChange = (val) => {
          if (states.previousQuery === val) {
            return;
          }
          states.previousQuery = val;
          if (props.filterable && isFunction$1(props.filterMethod)) {
            props.filterMethod(val);
          } else if (props.filterable && props.remote && isFunction$1(props.remoteMethod)) {
            props.remoteMethod(val);
          }
          if (props.defaultFirstOption && (props.filterable || props.remote) && filteredOptionsCount.value) {
            vue.nextTick(checkDefaultFirstOption);
          } else {
            vue.nextTick(updateHoveringIndex);
          }
        };
        const checkDefaultFirstOption = () => {
          const optionsInDropdown = optionsArray.value.filter((n) => n.visible && !n.disabled && !n.states.groupDisabled);
          const userCreatedOption = optionsInDropdown.find((n) => n.created);
          const firstOriginOption = optionsInDropdown[0];
          states.hoveringIndex = getValueIndex(optionsArray.value, userCreatedOption || firstOriginOption);
        };
        const setSelected = () => {
          if (!props.multiple) {
            const option = getOption(props.modelValue);
            states.selectedLabel = option.currentLabel;
            states.selected = option;
            return;
          } else {
            states.selectedLabel = "";
          }
          const result = [];
          if (isArray$1(props.modelValue)) {
            props.modelValue.forEach((value) => {
              result.push(getOption(value));
            });
          }
          states.selected = result;
        };
        const getOption = (value) => {
          let option;
          const isObjectValue = toRawType(value).toLowerCase() === "object";
          const isNull = toRawType(value).toLowerCase() === "null";
          const isUndefined2 = toRawType(value).toLowerCase() === "undefined";
          for (let i = states.cachedOptions.size - 1; i >= 0; i--) {
            const cachedOption = cachedOptionsArray.value[i];
            const isEqualValue = isObjectValue ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey) : cachedOption.value === value;
            if (isEqualValue) {
              option = {
                value,
                currentLabel: cachedOption.currentLabel,
                isDisabled: cachedOption.isDisabled
              };
              break;
            }
          }
          if (option)
            return option;
          const label = isObjectValue ? value.label : !isNull && !isUndefined2 ? value : "";
          const newOption = {
            value,
            currentLabel: label
          };
          return newOption;
        };
        const updateHoveringIndex = () => {
          if (!props.multiple) {
            states.hoveringIndex = optionsArray.value.findIndex((item) => {
              return getValueKey(item) === getValueKey(states.selected);
            });
          } else {
            states.hoveringIndex = optionsArray.value.findIndex((item) => states.selected.some((selected) => getValueKey(selected) === getValueKey(item)));
          }
        };
        const resetSelectionWidth = () => {
          states.selectionWidth = selectionRef.value.getBoundingClientRect().width;
        };
        const resetCalculatorWidth = () => {
          states.calculatorWidth = calculatorRef.value.getBoundingClientRect().width;
        };
        const resetCollapseItemWidth = () => {
          states.collapseItemWidth = collapseItemRef.value.getBoundingClientRect().width;
        };
        const updateTooltip = () => {
          var _a2, _b;
          (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2);
        };
        const updateTagTooltip = () => {
          var _a2, _b;
          (_b = (_a2 = tagTooltipRef.value) == null ? void 0 : _a2.updatePopper) == null ? void 0 : _b.call(_a2);
        };
        const onInputChange = () => {
          if (states.inputValue.length > 0 && !expanded.value) {
            expanded.value = true;
          }
          handleQueryChange(states.inputValue);
        };
        const onInput = (event2) => {
          states.inputValue = event2.target.value;
          if (props.remote) {
            debouncedOnInputChange();
          } else {
            return onInputChange();
          }
        };
        const debouncedOnInputChange = debounce(() => {
          onInputChange();
        }, debounce$1.value);
        const emitChange = (val) => {
          if (!isEqual(props.modelValue, val)) {
            emit(CHANGE_EVENT, val);
          }
        };
        const getLastNotDisabledIndex = (value) => findLastIndex(value, (it2) => !states.disabledOptions.has(it2));
        const deletePrevTag = (e) => {
          if (!props.multiple)
            return;
          if (e.code === EVENT_CODE.delete)
            return;
          if (e.target.value.length <= 0) {
            const value = props.modelValue.slice();
            const lastNotDisabledIndex = getLastNotDisabledIndex(value);
            if (lastNotDisabledIndex < 0)
              return;
            value.splice(lastNotDisabledIndex, 1);
            emit(UPDATE_MODEL_EVENT, value);
            emitChange(value);
          }
        };
        const deleteTag = (event2, tag) => {
          const index = states.selected.indexOf(tag);
          if (index > -1 && !selectDisabled.value) {
            const value = props.modelValue.slice();
            value.splice(index, 1);
            emit(UPDATE_MODEL_EVENT, value);
            emitChange(value);
            emit("remove-tag", tag.value);
          }
          event2.stopPropagation();
          focus();
        };
        const deleteSelected = (event2) => {
          event2.stopPropagation();
          const value = props.multiple ? [] : void 0;
          if (props.multiple) {
            for (const item of states.selected) {
              if (item.isDisabled)
                value.push(item.value);
            }
          }
          emit(UPDATE_MODEL_EVENT, value);
          emitChange(value);
          states.hoveringIndex = -1;
          expanded.value = false;
          emit("clear");
          focus();
        };
        const handleOptionSelect = (option) => {
          if (props.multiple) {
            const value = (props.modelValue || []).slice();
            const optionIndex = getValueIndex(value, option.value);
            if (optionIndex > -1) {
              value.splice(optionIndex, 1);
            } else if (props.multipleLimit <= 0 || value.length < props.multipleLimit) {
              value.push(option.value);
            }
            emit(UPDATE_MODEL_EVENT, value);
            emitChange(value);
            if (option.created) {
              handleQueryChange("");
            }
            if (props.filterable && !props.reserveKeyword) {
              states.inputValue = "";
            }
          } else {
            emit(UPDATE_MODEL_EVENT, option.value);
            emitChange(option.value);
            expanded.value = false;
          }
          focus();
          if (expanded.value)
            return;
          vue.nextTick(() => {
            scrollToOption(option);
          });
        };
        const getValueIndex = (arr = [], value) => {
          if (!isObject$1(value))
            return arr.indexOf(value);
          const valueKey = props.valueKey;
          let index = -1;
          arr.some((item, i) => {
            if (vue.toRaw(get(item, valueKey)) === get(value, valueKey)) {
              index = i;
              return true;
            }
            return false;
          });
          return index;
        };
        const scrollToOption = (option) => {
          var _a2, _b, _c, _d, _e;
          const targetOption = isArray$1(option) ? option[0] : option;
          let target = null;
          if (targetOption == null ? void 0 : targetOption.value) {
            const options = optionsArray.value.filter((item) => item.value === targetOption.value);
            if (options.length > 0) {
              target = options[0].$el;
            }
          }
          if (tooltipRef.value && target) {
            const menu = (_d = (_c = (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b.contentRef) == null ? void 0 : _c.querySelector) == null ? void 0 : _d.call(_c, `.${nsSelect.be("dropdown", "wrap")}`);
            if (menu) {
              scrollIntoView(menu, target);
            }
          }
          (_e = scrollbarRef.value) == null ? void 0 : _e.handleScroll();
        };
        const onOptionCreate = (vm) => {
          states.options.set(vm.value, vm);
          states.cachedOptions.set(vm.value, vm);
          vm.disabled && states.disabledOptions.set(vm.value, vm);
        };
        const onOptionDestroy = (key2, vm) => {
          if (states.options.get(key2) === vm) {
            states.options.delete(key2);
          }
        };
        const {
          handleCompositionStart,
          handleCompositionUpdate,
          handleCompositionEnd
        } = useInput((e) => onInput(e));
        const popperRef = vue.computed(() => {
          var _a2, _b;
          return (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b.contentRef;
        });
        const handleMenuEnter = () => {
          vue.nextTick(() => scrollToOption(states.selected));
        };
        const focus = () => {
          var _a2;
          (_a2 = inputRef.value) == null ? void 0 : _a2.focus();
        };
        const blur = () => {
          handleClickOutside();
        };
        const handleClearClick = (event2) => {
          deleteSelected(event2);
        };
        const handleClickOutside = (event2) => {
          expanded.value = false;
          if (isFocused.value) {
            const _event2 = new FocusEvent("focus", event2);
            vue.nextTick(() => handleBlur(_event2));
          }
        };
        const handleEsc = () => {
          if (states.inputValue.length > 0) {
            states.inputValue = "";
          } else {
            expanded.value = false;
          }
        };
        const toggleMenu = () => {
          if (selectDisabled.value)
            return;
          if (states.menuVisibleOnFocus) {
            states.menuVisibleOnFocus = false;
          } else {
            expanded.value = !expanded.value;
          }
        };
        const selectOption = () => {
          if (!expanded.value) {
            toggleMenu();
          } else {
            if (optionsArray.value[states.hoveringIndex]) {
              handleOptionSelect(optionsArray.value[states.hoveringIndex]);
            }
          }
        };
        const getValueKey = (item) => {
          return isObject$1(item.value) ? get(item.value, props.valueKey) : item.value;
        };
        const optionsAllDisabled = vue.computed(() => optionsArray.value.filter((option) => option.visible).every((option) => option.disabled));
        const showTagList = vue.computed(() => {
          if (!props.multiple) {
            return [];
          }
          return props.collapseTags ? states.selected.slice(0, props.maxCollapseTags) : states.selected;
        });
        const collapseTagList = vue.computed(() => {
          if (!props.multiple) {
            return [];
          }
          return props.collapseTags ? states.selected.slice(props.maxCollapseTags) : [];
        });
        const navigateOptions = (direction) => {
          if (!expanded.value) {
            expanded.value = true;
            return;
          }
          if (states.options.size === 0 || filteredOptionsCount.value === 0)
            return;
          if (!optionsAllDisabled.value) {
            if (direction === "next") {
              states.hoveringIndex++;
              if (states.hoveringIndex === states.options.size) {
                states.hoveringIndex = 0;
              }
            } else if (direction === "prev") {
              states.hoveringIndex--;
              if (states.hoveringIndex < 0) {
                states.hoveringIndex = states.options.size - 1;
              }
            }
            const option = optionsArray.value[states.hoveringIndex];
            if (option.disabled === true || option.states.groupDisabled === true || !option.visible) {
              navigateOptions(direction);
            }
            vue.nextTick(() => scrollToOption(hoverOption.value));
          }
        };
        const getGapWidth = () => {
          if (!selectionRef.value)
            return 0;
          const style = window.getComputedStyle(selectionRef.value);
          return Number.parseFloat(style.gap || "6px");
        };
        const tagStyle = vue.computed(() => {
          const gapWidth = getGapWidth();
          const maxWidth = collapseItemRef.value && props.maxCollapseTags === 1 ? states.selectionWidth - states.collapseItemWidth - gapWidth : states.selectionWidth;
          return { maxWidth: `${maxWidth}px` };
        });
        const collapseTagStyle = vue.computed(() => {
          return { maxWidth: `${states.selectionWidth}px` };
        });
        const inputStyle = vue.computed(() => ({
          width: `${Math.max(states.calculatorWidth, MINIMUM_INPUT_WIDTH)}px`
        }));
        if (props.multiple && !isArray$1(props.modelValue)) {
          emit(UPDATE_MODEL_EVENT, []);
        }
        if (!props.multiple && isArray$1(props.modelValue)) {
          emit(UPDATE_MODEL_EVENT, "");
        }
        useResizeObserver(selectionRef, resetSelectionWidth);
        useResizeObserver(calculatorRef, resetCalculatorWidth);
        useResizeObserver(menuRef, updateTooltip);
        useResizeObserver(wrapperRef, updateTooltip);
        useResizeObserver(tagMenuRef, updateTagTooltip);
        useResizeObserver(collapseItemRef, resetCollapseItemWidth);
        vue.onMounted(() => {
          setSelected();
        });
        return {
          inputId,
          contentId,
          nsSelect,
          nsInput,
          states,
          isFocused,
          expanded,
          optionsArray,
          hoverOption,
          selectSize,
          filteredOptionsCount,
          resetCalculatorWidth,
          updateTooltip,
          updateTagTooltip,
          debouncedOnInputChange,
          onInput,
          deletePrevTag,
          deleteTag,
          deleteSelected,
          handleOptionSelect,
          scrollToOption,
          hasModelValue,
          shouldShowPlaceholder,
          currentPlaceholder,
          showClose,
          iconComponent,
          iconReverse,
          validateState,
          validateIcon,
          showNewOption,
          updateOptions: updateOptions2,
          collapseTagSize,
          setSelected,
          selectDisabled,
          emptyText,
          handleCompositionStart,
          handleCompositionUpdate,
          handleCompositionEnd,
          onOptionCreate,
          onOptionDestroy,
          handleMenuEnter,
          handleFocus,
          focus,
          blur,
          handleBlur,
          handleClearClick,
          handleClickOutside,
          handleEsc,
          toggleMenu,
          selectOption,
          getValueKey,
          navigateOptions,
          dropdownMenuVisible,
          showTagList,
          collapseTagList,
          tagStyle,
          collapseTagStyle,
          inputStyle,
          popperRef,
          inputRef,
          tooltipRef,
          tagTooltipRef,
          calculatorRef,
          prefixRef,
          suffixRef,
          selectRef,
          wrapperRef,
          selectionRef,
          scrollbarRef,
          menuRef,
          tagMenuRef,
          collapseItemRef
        };
      };
      var ElOptions = vue.defineComponent({
        name: "ElOptions",
        setup(_2, { slots }) {
          const select = vue.inject(selectKey);
          let cachedValueList = [];
          return () => {
            var _a2, _b;
            const children = (_a2 = slots.default) == null ? void 0 : _a2.call(slots);
            const valueList = [];
            function filterOptions(children2) {
              if (!isArray$1(children2))
                return;
              children2.forEach((item) => {
                var _a22, _b2, _c, _d;
                const name = (_a22 = (item == null ? void 0 : item.type) || {}) == null ? void 0 : _a22.name;
                if (name === "ElOptionGroup") {
                  filterOptions(!isString(item.children) && !isArray$1(item.children) && isFunction$1((_b2 = item.children) == null ? void 0 : _b2.default) ? (_c = item.children) == null ? void 0 : _c.default() : item.children);
                } else if (name === "ElOption") {
                  valueList.push((_d = item.props) == null ? void 0 : _d.value);
                } else if (isArray$1(item.children)) {
                  filterOptions(item.children);
                }
              });
            }
            if (children.length) {
              filterOptions((_b = children[0]) == null ? void 0 : _b.children);
            }
            if (!isEqual(valueList, cachedValueList)) {
              cachedValueList = valueList;
              if (select) {
                select.states.optionValues = valueList;
              }
            }
            return children;
          };
        }
      });
      const SelectProps = buildProps({
        name: String,
        id: String,
        modelValue: {
          type: [Array, String, Number, Boolean, Object],
          default: void 0
        },
        autocomplete: {
          type: String,
          default: "off"
        },
        automaticDropdown: Boolean,
        size: useSizeProp,
        effect: {
          type: definePropType(String),
          default: "light"
        },
        disabled: Boolean,
        clearable: Boolean,
        filterable: Boolean,
        allowCreate: Boolean,
        loading: Boolean,
        popperClass: {
          type: String,
          default: ""
        },
        popperOptions: {
          type: definePropType(Object),
          default: () => ({})
        },
        remote: Boolean,
        loadingText: String,
        noMatchText: String,
        noDataText: String,
        remoteMethod: Function,
        filterMethod: Function,
        multiple: Boolean,
        multipleLimit: {
          type: Number,
          default: 0
        },
        placeholder: {
          type: String
        },
        defaultFirstOption: Boolean,
        reserveKeyword: {
          type: Boolean,
          default: true
        },
        valueKey: {
          type: String,
          default: "value"
        },
        collapseTags: Boolean,
        collapseTagsTooltip: Boolean,
        maxCollapseTags: {
          type: Number,
          default: 1
        },
        teleported: useTooltipContentProps.teleported,
        persistent: {
          type: Boolean,
          default: true
        },
        clearIcon: {
          type: iconPropType,
          default: circle_close_default
        },
        fitInputWidth: Boolean,
        suffixIcon: {
          type: iconPropType,
          default: arrow_down_default
        },
        tagType: { ...tagProps.type, default: "info" },
        validateEvent: {
          type: Boolean,
          default: true
        },
        remoteShowSuffix: Boolean,
        placement: {
          type: definePropType(String),
          values: Ee,
          default: "bottom-start"
        },
        fallbackPlacements: {
          type: definePropType(Array),
          default: ["bottom-start", "top-start", "right", "left"]
        },
        ariaLabel: {
          type: String,
          default: void 0
        }
      });
      const COMPONENT_NAME$1 = "ElSelect";
      const _sfc_main$g = vue.defineComponent({
        name: COMPONENT_NAME$1,
        componentName: COMPONENT_NAME$1,
        components: {
          ElInput,
          ElSelectMenu,
          ElOption: Option,
          ElOptions,
          ElTag,
          ElScrollbar,
          ElTooltip,
          ElIcon
        },
        directives: { ClickOutside },
        props: SelectProps,
        emits: [
          UPDATE_MODEL_EVENT,
          CHANGE_EVENT,
          "remove-tag",
          "clear",
          "visible-change",
          "focus",
          "blur"
        ],
        setup(props, { emit }) {
          const API = useSelect(props, emit);
          vue.provide(selectKey, vue.reactive({
            props,
            states: API.states,
            optionsArray: API.optionsArray,
            handleOptionSelect: API.handleOptionSelect,
            onOptionCreate: API.onOptionCreate,
            onOptionDestroy: API.onOptionDestroy,
            selectRef: API.selectRef,
            setSelected: API.setSelected
          }));
          return {
            ...API
          };
        }
      });
      const _hoisted_1$9 = ["id", "disabled", "autocomplete", "readonly", "aria-activedescendant", "aria-controls", "aria-expanded", "aria-label"];
      const _hoisted_2$7 = ["textContent"];
      function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
        const _component_el_tag = vue.resolveComponent("el-tag");
        const _component_el_tooltip = vue.resolveComponent("el-tooltip");
        const _component_el_icon = vue.resolveComponent("el-icon");
        const _component_el_option = vue.resolveComponent("el-option");
        const _component_el_options = vue.resolveComponent("el-options");
        const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
        const _component_el_select_menu = vue.resolveComponent("el-select-menu");
        const _directive_click_outside = vue.resolveDirective("click-outside");
        return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
          ref: "selectRef",
          class: vue.normalizeClass([_ctx.nsSelect.b(), _ctx.nsSelect.m(_ctx.selectSize)]),
          onMouseenter: _cache[16] || (_cache[16] = ($event) => _ctx.states.inputHovering = true),
          onMouseleave: _cache[17] || (_cache[17] = ($event) => _ctx.states.inputHovering = false),
          onClick: _cache[18] || (_cache[18] = vue.withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["prevent", "stop"]))
        }, [
          vue.createVNode(_component_el_tooltip, {
            ref: "tooltipRef",
            visible: _ctx.dropdownMenuVisible,
            placement: _ctx.placement,
            teleported: _ctx.teleported,
            "popper-class": [_ctx.nsSelect.e("popper"), _ctx.popperClass],
            "popper-options": _ctx.popperOptions,
            "fallback-placements": _ctx.fallbackPlacements,
            effect: _ctx.effect,
            pure: "",
            trigger: "click",
            transition: `${_ctx.nsSelect.namespace.value}-zoom-in-top`,
            "stop-popper-mouse-event": false,
            "gpu-acceleration": false,
            persistent: _ctx.persistent,
            onBeforeShow: _ctx.handleMenuEnter,
            onHide: _cache[15] || (_cache[15] = ($event) => _ctx.states.isBeforeHide = false)
          }, {
            default: vue.withCtx(() => {
              var _a2;
              return [
                vue.createElementVNode("div", {
                  ref: "wrapperRef",
                  class: vue.normalizeClass([
                    _ctx.nsSelect.e("wrapper"),
                    _ctx.nsSelect.is("focused", _ctx.isFocused),
                    _ctx.nsSelect.is("hovering", _ctx.states.inputHovering),
                    _ctx.nsSelect.is("filterable", _ctx.filterable),
                    _ctx.nsSelect.is("disabled", _ctx.selectDisabled)
                  ])
                }, [
                  _ctx.$slots.prefix ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 0,
                    ref: "prefixRef",
                    class: vue.normalizeClass(_ctx.nsSelect.e("prefix"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "prefix")
                  ], 2)) : vue.createCommentVNode("v-if", true),
                  vue.createElementVNode("div", {
                    ref: "selectionRef",
                    class: vue.normalizeClass([
                      _ctx.nsSelect.e("selection"),
                      _ctx.nsSelect.is("near", _ctx.multiple && !_ctx.$slots.prefix && !!_ctx.states.selected.length)
                    ])
                  }, [
                    _ctx.multiple ? vue.renderSlot(_ctx.$slots, "tag", { key: 0 }, () => [
                      (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.showTagList, (item) => {
                        return vue.openBlock(), vue.createElementBlock("div", {
                          key: _ctx.getValueKey(item),
                          class: vue.normalizeClass(_ctx.nsSelect.e("selected-item"))
                        }, [
                          vue.createVNode(_component_el_tag, {
                            closable: !_ctx.selectDisabled && !item.isDisabled,
                            size: _ctx.collapseTagSize,
                            type: _ctx.tagType,
                            "disable-transitions": "",
                            style: vue.normalizeStyle(_ctx.tagStyle),
                            onClose: ($event) => _ctx.deleteTag($event, item)
                          }, {
                            default: vue.withCtx(() => [
                              vue.createElementVNode("span", {
                                class: vue.normalizeClass(_ctx.nsSelect.e("tags-text"))
                              }, vue.toDisplayString(item.currentLabel), 3)
                            ]),
                            _: 2
                          }, 1032, ["closable", "size", "type", "style", "onClose"])
                        ], 2);
                      }), 128)),
                      _ctx.collapseTags && _ctx.states.selected.length > _ctx.maxCollapseTags ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
                        key: 0,
                        ref: "tagTooltipRef",
                        disabled: _ctx.dropdownMenuVisible || !_ctx.collapseTagsTooltip,
                        "fallback-placements": ["bottom", "top", "right", "left"],
                        effect: _ctx.effect,
                        placement: "bottom",
                        teleported: _ctx.teleported
                      }, {
                        default: vue.withCtx(() => [
                          vue.createElementVNode("div", {
                            ref: "collapseItemRef",
                            class: vue.normalizeClass(_ctx.nsSelect.e("selected-item"))
                          }, [
                            vue.createVNode(_component_el_tag, {
                              closable: false,
                              size: _ctx.collapseTagSize,
                              type: _ctx.tagType,
                              "disable-transitions": "",
                              style: vue.normalizeStyle(_ctx.collapseTagStyle)
                            }, {
                              default: vue.withCtx(() => [
                                vue.createElementVNode("span", {
                                  class: vue.normalizeClass(_ctx.nsSelect.e("tags-text"))
                                }, " + " + vue.toDisplayString(_ctx.states.selected.length - _ctx.maxCollapseTags), 3)
                              ]),
                              _: 1
                            }, 8, ["size", "type", "style"])
                          ], 2)
                        ]),
                        content: vue.withCtx(() => [
                          vue.createElementVNode("div", {
                            ref: "tagMenuRef",
                            class: vue.normalizeClass(_ctx.nsSelect.e("selection"))
                          }, [
                            (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.collapseTagList, (item) => {
                              return vue.openBlock(), vue.createElementBlock("div", {
                                key: _ctx.getValueKey(item),
                                class: vue.normalizeClass(_ctx.nsSelect.e("selected-item"))
                              }, [
                                vue.createVNode(_component_el_tag, {
                                  class: "in-tooltip",
                                  closable: !_ctx.selectDisabled && !item.isDisabled,
                                  size: _ctx.collapseTagSize,
                                  type: _ctx.tagType,
                                  "disable-transitions": "",
                                  onClose: ($event) => _ctx.deleteTag($event, item)
                                }, {
                                  default: vue.withCtx(() => [
                                    vue.createElementVNode("span", {
                                      class: vue.normalizeClass(_ctx.nsSelect.e("tags-text"))
                                    }, vue.toDisplayString(item.currentLabel), 3)
                                  ]),
                                  _: 2
                                }, 1032, ["closable", "size", "type", "onClose"])
                              ], 2);
                            }), 128))
                          ], 2)
                        ]),
                        _: 1
                      }, 8, ["disabled", "effect", "teleported"])) : vue.createCommentVNode("v-if", true)
                    ]) : vue.createCommentVNode("v-if", true),
                    !_ctx.selectDisabled ? (vue.openBlock(), vue.createElementBlock("div", {
                      key: 1,
                      class: vue.normalizeClass([
                        _ctx.nsSelect.e("selected-item"),
                        _ctx.nsSelect.e("input-wrapper"),
                        _ctx.nsSelect.is("hidden", !_ctx.filterable)
                      ])
                    }, [
                      vue.withDirectives(vue.createElementVNode("input", {
                        id: _ctx.inputId,
                        ref: "inputRef",
                        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.states.inputValue = $event),
                        type: "text",
                        class: vue.normalizeClass([_ctx.nsSelect.e("input"), _ctx.nsSelect.is(_ctx.selectSize)]),
                        disabled: _ctx.selectDisabled,
                        autocomplete: _ctx.autocomplete,
                        style: vue.normalizeStyle(_ctx.inputStyle),
                        role: "combobox",
                        readonly: !_ctx.filterable,
                        spellcheck: "false",
                        "aria-activedescendant": ((_a2 = _ctx.hoverOption) == null ? void 0 : _a2.id) || "",
                        "aria-controls": _ctx.contentId,
                        "aria-expanded": _ctx.dropdownMenuVisible,
                        "aria-label": _ctx.ariaLabel,
                        "aria-autocomplete": "none",
                        "aria-haspopup": "listbox",
                        onFocus: _cache[1] || (_cache[1] = (...args) => _ctx.handleFocus && _ctx.handleFocus(...args)),
                        onBlur: _cache[2] || (_cache[2] = (...args) => _ctx.handleBlur && _ctx.handleBlur(...args)),
                        onKeydown: [
                          _cache[3] || (_cache[3] = vue.withKeys(vue.withModifiers(($event) => _ctx.navigateOptions("next"), ["stop", "prevent"]), ["down"])),
                          _cache[4] || (_cache[4] = vue.withKeys(vue.withModifiers(($event) => _ctx.navigateOptions("prev"), ["stop", "prevent"]), ["up"])),
                          _cache[5] || (_cache[5] = vue.withKeys(vue.withModifiers((...args) => _ctx.handleEsc && _ctx.handleEsc(...args), ["stop", "prevent"]), ["esc"])),
                          _cache[6] || (_cache[6] = vue.withKeys(vue.withModifiers((...args) => _ctx.selectOption && _ctx.selectOption(...args), ["stop", "prevent"]), ["enter"])),
                          _cache[7] || (_cache[7] = vue.withKeys(vue.withModifiers((...args) => _ctx.deletePrevTag && _ctx.deletePrevTag(...args), ["stop"]), ["delete"]))
                        ],
                        onCompositionstart: _cache[8] || (_cache[8] = (...args) => _ctx.handleCompositionStart && _ctx.handleCompositionStart(...args)),
                        onCompositionupdate: _cache[9] || (_cache[9] = (...args) => _ctx.handleCompositionUpdate && _ctx.handleCompositionUpdate(...args)),
                        onCompositionend: _cache[10] || (_cache[10] = (...args) => _ctx.handleCompositionEnd && _ctx.handleCompositionEnd(...args)),
                        onInput: _cache[11] || (_cache[11] = (...args) => _ctx.onInput && _ctx.onInput(...args)),
                        onClick: _cache[12] || (_cache[12] = vue.withModifiers((...args) => _ctx.toggleMenu && _ctx.toggleMenu(...args), ["stop"]))
                      }, null, 46, _hoisted_1$9), [
                        [vue.vModelText, _ctx.states.inputValue]
                      ]),
                      _ctx.filterable ? (vue.openBlock(), vue.createElementBlock("span", {
                        key: 0,
                        ref: "calculatorRef",
                        "aria-hidden": "true",
                        class: vue.normalizeClass(_ctx.nsSelect.e("input-calculator")),
                        textContent: vue.toDisplayString(_ctx.states.inputValue)
                      }, null, 10, _hoisted_2$7)) : vue.createCommentVNode("v-if", true)
                    ], 2)) : vue.createCommentVNode("v-if", true),
                    _ctx.shouldShowPlaceholder ? (vue.openBlock(), vue.createElementBlock("div", {
                      key: 2,
                      class: vue.normalizeClass([
                        _ctx.nsSelect.e("selected-item"),
                        _ctx.nsSelect.e("placeholder"),
                        _ctx.nsSelect.is("transparent", !_ctx.hasModelValue || _ctx.expanded && !_ctx.states.inputValue)
                      ])
                    }, [
                      vue.createElementVNode("span", null, vue.toDisplayString(_ctx.currentPlaceholder), 1)
                    ], 2)) : vue.createCommentVNode("v-if", true)
                  ], 2),
                  vue.createElementVNode("div", {
                    ref: "suffixRef",
                    class: vue.normalizeClass(_ctx.nsSelect.e("suffix"))
                  }, [
                    _ctx.iconComponent && !_ctx.showClose ? (vue.openBlock(), vue.createBlock(_component_el_icon, {
                      key: 0,
                      class: vue.normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon"), _ctx.iconReverse])
                    }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.iconComponent)))
                      ]),
                      _: 1
                    }, 8, ["class"])) : vue.createCommentVNode("v-if", true),
                    _ctx.showClose && _ctx.clearIcon ? (vue.openBlock(), vue.createBlock(_component_el_icon, {
                      key: 1,
                      class: vue.normalizeClass([_ctx.nsSelect.e("caret"), _ctx.nsSelect.e("icon")]),
                      onClick: _ctx.handleClearClick
                    }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.clearIcon)))
                      ]),
                      _: 1
                    }, 8, ["class", "onClick"])) : vue.createCommentVNode("v-if", true),
                    _ctx.validateState && _ctx.validateIcon ? (vue.openBlock(), vue.createBlock(_component_el_icon, {
                      key: 2,
                      class: vue.normalizeClass([_ctx.nsInput.e("icon"), _ctx.nsInput.e("validateIcon")])
                    }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.validateIcon)))
                      ]),
                      _: 1
                    }, 8, ["class"])) : vue.createCommentVNode("v-if", true)
                  ], 2)
                ], 2)
              ];
            }),
            content: vue.withCtx(() => [
              vue.createVNode(_component_el_select_menu, { ref: "menuRef" }, {
                default: vue.withCtx(() => [
                  _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 0,
                    class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "header")),
                    onClick: _cache[13] || (_cache[13] = vue.withModifiers(() => {
                    }, ["stop"]))
                  }, [
                    vue.renderSlot(_ctx.$slots, "header")
                  ], 2)) : vue.createCommentVNode("v-if", true),
                  vue.withDirectives(vue.createVNode(_component_el_scrollbar, {
                    id: _ctx.contentId,
                    ref: "scrollbarRef",
                    tag: "ul",
                    "wrap-class": _ctx.nsSelect.be("dropdown", "wrap"),
                    "view-class": _ctx.nsSelect.be("dropdown", "list"),
                    class: vue.normalizeClass([_ctx.nsSelect.is("empty", _ctx.filteredOptionsCount === 0)]),
                    role: "listbox",
                    "aria-label": _ctx.ariaLabel,
                    "aria-orientation": "vertical"
                  }, {
                    default: vue.withCtx(() => [
                      _ctx.showNewOption ? (vue.openBlock(), vue.createBlock(_component_el_option, {
                        key: 0,
                        value: _ctx.states.inputValue,
                        created: true
                      }, null, 8, ["value"])) : vue.createCommentVNode("v-if", true),
                      vue.createVNode(_component_el_options, null, {
                        default: vue.withCtx(() => [
                          vue.renderSlot(_ctx.$slots, "default")
                        ]),
                        _: 3
                      })
                    ]),
                    _: 3
                  }, 8, ["id", "wrap-class", "view-class", "class", "aria-label"]), [
                    [vue.vShow, _ctx.states.options.size > 0 && !_ctx.loading]
                  ]),
                  _ctx.$slots.loading && _ctx.loading ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 1,
                    class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "loading"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "loading")
                  ], 2)) : _ctx.loading || _ctx.filteredOptionsCount === 0 ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 2,
                    class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "empty"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "empty", {}, () => [
                      vue.createElementVNode("span", null, vue.toDisplayString(_ctx.emptyText), 1)
                    ])
                  ], 2)) : vue.createCommentVNode("v-if", true),
                  _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 3,
                    class: vue.normalizeClass(_ctx.nsSelect.be("dropdown", "footer")),
                    onClick: _cache[14] || (_cache[14] = vue.withModifiers(() => {
                    }, ["stop"]))
                  }, [
                    vue.renderSlot(_ctx.$slots, "footer")
                  ], 2)) : vue.createCommentVNode("v-if", true)
                ]),
                _: 3
              }, 512)
            ]),
            _: 3
          }, 8, ["visible", "placement", "teleported", "popper-class", "popper-options", "fallback-placements", "effect", "transition", "persistent", "onBeforeShow"])
        ], 34)), [
          [_directive_click_outside, _ctx.handleClickOutside, _ctx.popperRef]
        ]);
      }
      var Select = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["render", _sfc_render$5], ["__file", "select.vue"]]);
      const _sfc_main$f = vue.defineComponent({
        name: "ElOptionGroup",
        componentName: "ElOptionGroup",
        props: {
          label: String,
          disabled: Boolean
        },
        setup(props) {
          const ns = useNamespace("select");
          const groupRef = vue.ref(null);
          const instance = vue.getCurrentInstance();
          const children = vue.ref([]);
          vue.provide(selectGroupKey, vue.reactive({
            ...vue.toRefs(props)
          }));
          const visible = vue.computed(() => children.value.some((option) => option.visible === true));
          const flattedChildren = (node) => {
            const children2 = [];
            if (isArray$1(node.children)) {
              node.children.forEach((child) => {
                var _a2, _b;
                if (child.type && child.type.name === "ElOption" && child.component && child.component.proxy) {
                  children2.push(child.component.proxy);
                } else if ((_a2 = child.children) == null ? void 0 : _a2.length) {
                  children2.push(...flattedChildren(child));
                } else if ((_b = child.component) == null ? void 0 : _b.subTree) {
                  children2.push(...flattedChildren(child.component.subTree));
                }
              });
            }
            return children2;
          };
          const updateChildren = () => {
            children.value = flattedChildren(instance.subTree);
          };
          vue.onMounted(() => {
            updateChildren();
          });
          useMutationObserver(groupRef, updateChildren, {
            attributes: true,
            subtree: true,
            childList: true
          });
          return {
            groupRef,
            visible,
            ns
          };
        }
      });
      function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
        return vue.withDirectives((vue.openBlock(), vue.createElementBlock("ul", {
          ref: "groupRef",
          class: vue.normalizeClass(_ctx.ns.be("group", "wrap"))
        }, [
          vue.createElementVNode("li", {
            class: vue.normalizeClass(_ctx.ns.be("group", "title"))
          }, vue.toDisplayString(_ctx.label), 3),
          vue.createElementVNode("li", null, [
            vue.createElementVNode("ul", {
              class: vue.normalizeClass(_ctx.ns.b("group"))
            }, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 2)
          ])
        ], 2)), [
          [vue.vShow, _ctx.visible]
        ]);
      }
      var OptionGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["render", _sfc_render$4], ["__file", "option-group.vue"]]);
      const ElSelect = withInstall(Select, {
        Option,
        OptionGroup
      });
      const ElOption = withNoopInstall(Option);
      withNoopInstall(OptionGroup);
      const popconfirmProps = buildProps({
        title: String,
        confirmButtonText: String,
        cancelButtonText: String,
        confirmButtonType: {
          type: String,
          values: buttonTypes,
          default: "primary"
        },
        cancelButtonType: {
          type: String,
          values: buttonTypes,
          default: "text"
        },
        icon: {
          type: iconPropType,
          default: () => question_filled_default
        },
        iconColor: {
          type: String,
          default: "#f90"
        },
        hideIcon: {
          type: Boolean,
          default: false
        },
        hideAfter: {
          type: Number,
          default: 200
        },
        teleported: useTooltipContentProps.teleported,
        persistent: useTooltipContentProps.persistent,
        width: {
          type: [String, Number],
          default: 150
        }
      });
      const popconfirmEmits = {
        confirm: (e) => e instanceof MouseEvent,
        cancel: (e) => e instanceof MouseEvent
      };
      const __default__$4 = vue.defineComponent({
        name: "ElPopconfirm"
      });
      const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
        ...__default__$4,
        props: popconfirmProps,
        emits: popconfirmEmits,
        setup(__props, { emit }) {
          const props = __props;
          const { t } = useLocale();
          const ns = useNamespace("popconfirm");
          const tooltipRef = vue.ref();
          const hidePopper = () => {
            var _a2, _b;
            (_b = (_a2 = tooltipRef.value) == null ? void 0 : _a2.onClose) == null ? void 0 : _b.call(_a2);
          };
          const style = vue.computed(() => {
            return {
              width: addUnit(props.width)
            };
          });
          const confirm = (e) => {
            emit("confirm", e);
            hidePopper();
          };
          const cancel = (e) => {
            emit("cancel", e);
            hidePopper();
          };
          const finalConfirmButtonText = vue.computed(() => props.confirmButtonText || t("el.popconfirm.confirmButtonText"));
          const finalCancelButtonText = vue.computed(() => props.cancelButtonText || t("el.popconfirm.cancelButtonText"));
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.unref(ElTooltip), vue.mergeProps({
              ref_key: "tooltipRef",
              ref: tooltipRef,
              trigger: "click",
              effect: "light"
            }, _ctx.$attrs, {
              "popper-class": `${vue.unref(ns).namespace.value}-popover`,
              "popper-style": vue.unref(style),
              teleported: _ctx.teleported,
              "fallback-placements": ["bottom", "top", "right", "left"],
              "hide-after": _ctx.hideAfter,
              persistent: _ctx.persistent
            }), {
              content: vue.withCtx(() => [
                vue.createElementVNode("div", {
                  class: vue.normalizeClass(vue.unref(ns).b())
                }, [
                  vue.createElementVNode("div", {
                    class: vue.normalizeClass(vue.unref(ns).e("main"))
                  }, [
                    !_ctx.hideIcon && _ctx.icon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                      key: 0,
                      class: vue.normalizeClass(vue.unref(ns).e("icon")),
                      style: vue.normalizeStyle({ color: _ctx.iconColor })
                    }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.icon)))
                      ]),
                      _: 1
                    }, 8, ["class", "style"])) : vue.createCommentVNode("v-if", true),
                    vue.createTextVNode(" " + vue.toDisplayString(_ctx.title), 1)
                  ], 2),
                  vue.createElementVNode("div", {
                    class: vue.normalizeClass(vue.unref(ns).e("action"))
                  }, [
                    vue.createVNode(vue.unref(ElButton), {
                      size: "small",
                      type: _ctx.cancelButtonType === "text" ? "" : _ctx.cancelButtonType,
                      text: _ctx.cancelButtonType === "text",
                      onClick: cancel
                    }, {
                      default: vue.withCtx(() => [
                        vue.createTextVNode(vue.toDisplayString(vue.unref(finalCancelButtonText)), 1)
                      ]),
                      _: 1
                    }, 8, ["type", "text"]),
                    vue.createVNode(vue.unref(ElButton), {
                      size: "small",
                      type: _ctx.confirmButtonType === "text" ? "" : _ctx.confirmButtonType,
                      text: _ctx.confirmButtonType === "text",
                      onClick: confirm
                    }, {
                      default: vue.withCtx(() => [
                        vue.createTextVNode(vue.toDisplayString(vue.unref(finalConfirmButtonText)), 1)
                      ]),
                      _: 1
                    }, 8, ["type", "text"])
                  ], 2)
                ], 2)
              ]),
              default: vue.withCtx(() => [
                _ctx.$slots.reference ? vue.renderSlot(_ctx.$slots, "reference", { key: 0 }) : vue.createCommentVNode("v-if", true)
              ]),
              _: 3
            }, 16, ["popper-class", "popper-style", "teleported", "hide-after", "persistent"]);
          };
        }
      });
      var Popconfirm = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__file", "popconfirm.vue"]]);
      const ElPopconfirm = withInstall(Popconfirm);
      const statisticProps = buildProps({
        decimalSeparator: {
          type: String,
          default: "."
        },
        groupSeparator: {
          type: String,
          default: ","
        },
        precision: {
          type: Number,
          default: 0
        },
        formatter: Function,
        value: {
          type: definePropType([Number, Object]),
          default: 0
        },
        prefix: String,
        suffix: String,
        title: String,
        valueStyle: {
          type: definePropType([String, Object, Array])
        }
      });
      const __default__$3 = vue.defineComponent({
        name: "ElStatistic"
      });
      const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
        ...__default__$3,
        props: statisticProps,
        setup(__props, { expose }) {
          const props = __props;
          const ns = useNamespace("statistic");
          const displayValue = vue.computed(() => {
            const { value, formatter, precision, decimalSeparator, groupSeparator } = props;
            if (isFunction$1(formatter))
              return formatter(value);
            if (!isNumber(value))
              return value;
            let [integer, decimal = ""] = String(value).split(".");
            decimal = decimal.padEnd(precision, "0").slice(0, precision > 0 ? precision : 0);
            integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, groupSeparator);
            return [integer, decimal].join(decimal ? decimalSeparator : "");
          });
          expose({
            displayValue
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass(vue.unref(ns).b())
            }, [
              _ctx.$slots.title || _ctx.title ? (vue.openBlock(), vue.createElementBlock("div", {
                key: 0,
                class: vue.normalizeClass(vue.unref(ns).e("head"))
              }, [
                vue.renderSlot(_ctx.$slots, "title", {}, () => [
                  vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
                ])
              ], 2)) : vue.createCommentVNode("v-if", true),
              vue.createElementVNode("div", {
                class: vue.normalizeClass(vue.unref(ns).e("content"))
              }, [
                _ctx.$slots.prefix || _ctx.prefix ? (vue.openBlock(), vue.createElementBlock("div", {
                  key: 0,
                  class: vue.normalizeClass(vue.unref(ns).e("prefix"))
                }, [
                  vue.renderSlot(_ctx.$slots, "prefix", {}, () => [
                    vue.createElementVNode("span", null, vue.toDisplayString(_ctx.prefix), 1)
                  ])
                ], 2)) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("span", {
                  class: vue.normalizeClass(vue.unref(ns).e("number")),
                  style: vue.normalizeStyle(_ctx.valueStyle)
                }, vue.toDisplayString(vue.unref(displayValue)), 7),
                _ctx.$slots.suffix || _ctx.suffix ? (vue.openBlock(), vue.createElementBlock("div", {
                  key: 1,
                  class: vue.normalizeClass(vue.unref(ns).e("suffix"))
                }, [
                  vue.renderSlot(_ctx.$slots, "suffix", {}, () => [
                    vue.createElementVNode("span", null, vue.toDisplayString(_ctx.suffix), 1)
                  ])
                ], 2)) : vue.createCommentVNode("v-if", true)
              ], 2)
            ], 2);
          };
        }
      });
      var Statistic = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__file", "statistic.vue"]]);
      const ElStatistic = withInstall(Statistic);
      const switchProps = buildProps({
        modelValue: {
          type: [Boolean, String, Number],
          default: false
        },
        disabled: {
          type: Boolean,
          default: false
        },
        loading: {
          type: Boolean,
          default: false
        },
        size: {
          type: String,
          validator: isValidComponentSize
        },
        width: {
          type: [String, Number],
          default: ""
        },
        inlinePrompt: {
          type: Boolean,
          default: false
        },
        inactiveActionIcon: {
          type: iconPropType
        },
        activeActionIcon: {
          type: iconPropType
        },
        activeIcon: {
          type: iconPropType
        },
        inactiveIcon: {
          type: iconPropType
        },
        activeText: {
          type: String,
          default: ""
        },
        inactiveText: {
          type: String,
          default: ""
        },
        activeValue: {
          type: [Boolean, String, Number],
          default: true
        },
        inactiveValue: {
          type: [Boolean, String, Number],
          default: false
        },
        name: {
          type: String,
          default: ""
        },
        validateEvent: {
          type: Boolean,
          default: true
        },
        beforeChange: {
          type: definePropType(Function)
        },
        id: String,
        tabindex: {
          type: [String, Number]
        },
        label: {
          type: String,
          default: void 0
        }
      });
      const switchEmits = {
        [UPDATE_MODEL_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
        [CHANGE_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val),
        [INPUT_EVENT]: (val) => isBoolean(val) || isString(val) || isNumber(val)
      };
      const _hoisted_1$8 = ["onClick"];
      const _hoisted_2$6 = ["id", "aria-checked", "aria-disabled", "aria-label", "name", "true-value", "false-value", "disabled", "tabindex", "onKeydown"];
      const _hoisted_3$5 = ["aria-hidden"];
      const _hoisted_4$4 = ["aria-hidden"];
      const _hoisted_5$3 = ["aria-hidden"];
      const COMPONENT_NAME = "ElSwitch";
      const __default__$2 = vue.defineComponent({
        name: COMPONENT_NAME
      });
      const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
        ...__default__$2,
        props: switchProps,
        emits: switchEmits,
        setup(__props, { expose, emit }) {
          const props = __props;
          const { formItem } = useFormItem();
          const switchSize = useFormSize();
          const ns = useNamespace("switch");
          const { inputId } = useFormItemInputId(props, {
            formItemContext: formItem
          });
          const switchDisabled = useFormDisabled(vue.computed(() => props.loading));
          const isControlled = vue.ref(props.modelValue !== false);
          const input = vue.ref();
          const core = vue.ref();
          const switchKls = vue.computed(() => [
            ns.b(),
            ns.m(switchSize.value),
            ns.is("disabled", switchDisabled.value),
            ns.is("checked", checked.value)
          ]);
          const labelLeftKls = vue.computed(() => [
            ns.e("label"),
            ns.em("label", "left"),
            ns.is("active", !checked.value)
          ]);
          const labelRightKls = vue.computed(() => [
            ns.e("label"),
            ns.em("label", "right"),
            ns.is("active", checked.value)
          ]);
          const coreStyle = vue.computed(() => ({
            width: addUnit(props.width)
          }));
          vue.watch(() => props.modelValue, () => {
            isControlled.value = true;
          });
          const actualValue = vue.computed(() => {
            return isControlled.value ? props.modelValue : false;
          });
          const checked = vue.computed(() => actualValue.value === props.activeValue);
          if (![props.activeValue, props.inactiveValue].includes(actualValue.value)) {
            emit(UPDATE_MODEL_EVENT, props.inactiveValue);
            emit(CHANGE_EVENT, props.inactiveValue);
            emit(INPUT_EVENT, props.inactiveValue);
          }
          vue.watch(checked, (val) => {
            var _a2;
            input.value.checked = val;
            if (props.validateEvent) {
              (_a2 = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a2.call(formItem, "change").catch((err) => debugWarn());
            }
          });
          const handleChange = () => {
            const val = checked.value ? props.inactiveValue : props.activeValue;
            emit(UPDATE_MODEL_EVENT, val);
            emit(CHANGE_EVENT, val);
            emit(INPUT_EVENT, val);
            vue.nextTick(() => {
              input.value.checked = checked.value;
            });
          };
          const switchValue = () => {
            if (switchDisabled.value)
              return;
            const { beforeChange } = props;
            if (!beforeChange) {
              handleChange();
              return;
            }
            const shouldChange = beforeChange();
            const isPromiseOrBool = [
              isPromise(shouldChange),
              isBoolean(shouldChange)
            ].includes(true);
            if (!isPromiseOrBool) {
              throwError(COMPONENT_NAME, "beforeChange must return type `Promise<boolean>` or `boolean`");
            }
            if (isPromise(shouldChange)) {
              shouldChange.then((result) => {
                if (result) {
                  handleChange();
                }
              }).catch((e) => {
              });
            } else if (shouldChange) {
              handleChange();
            }
          };
          const focus = () => {
            var _a2, _b;
            (_b = (_a2 = input.value) == null ? void 0 : _a2.focus) == null ? void 0 : _b.call(_a2);
          };
          vue.onMounted(() => {
            input.value.checked = checked.value;
          });
          expose({
            focus,
            checked
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              class: vue.normalizeClass(vue.unref(switchKls)),
              onClick: vue.withModifiers(switchValue, ["prevent"])
            }, [
              vue.createElementVNode("input", {
                id: vue.unref(inputId),
                ref_key: "input",
                ref: input,
                class: vue.normalizeClass(vue.unref(ns).e("input")),
                type: "checkbox",
                role: "switch",
                "aria-checked": vue.unref(checked),
                "aria-disabled": vue.unref(switchDisabled),
                "aria-label": _ctx.label,
                name: _ctx.name,
                "true-value": _ctx.activeValue,
                "false-value": _ctx.inactiveValue,
                disabled: vue.unref(switchDisabled),
                tabindex: _ctx.tabindex,
                onChange: handleChange,
                onKeydown: vue.withKeys(switchValue, ["enter"])
              }, null, 42, _hoisted_2$6),
              !_ctx.inlinePrompt && (_ctx.inactiveIcon || _ctx.inactiveText) ? (vue.openBlock(), vue.createElementBlock("span", {
                key: 0,
                class: vue.normalizeClass(vue.unref(labelLeftKls))
              }, [
                _ctx.inactiveIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0 }, {
                  default: vue.withCtx(() => [
                    (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.inactiveIcon)))
                  ]),
                  _: 1
                })) : vue.createCommentVNode("v-if", true),
                !_ctx.inactiveIcon && _ctx.inactiveText ? (vue.openBlock(), vue.createElementBlock("span", {
                  key: 1,
                  "aria-hidden": vue.unref(checked)
                }, vue.toDisplayString(_ctx.inactiveText), 9, _hoisted_3$5)) : vue.createCommentVNode("v-if", true)
              ], 2)) : vue.createCommentVNode("v-if", true),
              vue.createElementVNode("span", {
                ref_key: "core",
                ref: core,
                class: vue.normalizeClass(vue.unref(ns).e("core")),
                style: vue.normalizeStyle(vue.unref(coreStyle))
              }, [
                _ctx.inlinePrompt ? (vue.openBlock(), vue.createElementBlock("div", {
                  key: 0,
                  class: vue.normalizeClass(vue.unref(ns).e("inner"))
                }, [
                  _ctx.activeIcon || _ctx.inactiveIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(ns).is("icon"))
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(checked) ? _ctx.activeIcon : _ctx.inactiveIcon)))
                    ]),
                    _: 1
                  }, 8, ["class"])) : _ctx.activeText || _ctx.inactiveText ? (vue.openBlock(), vue.createElementBlock("span", {
                    key: 1,
                    class: vue.normalizeClass(vue.unref(ns).is("text")),
                    "aria-hidden": !vue.unref(checked)
                  }, vue.toDisplayString(vue.unref(checked) ? _ctx.activeText : _ctx.inactiveText), 11, _hoisted_4$4)) : vue.createCommentVNode("v-if", true)
                ], 2)) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("div", {
                  class: vue.normalizeClass(vue.unref(ns).e("action"))
                }, [
                  _ctx.loading ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), {
                    key: 0,
                    class: vue.normalizeClass(vue.unref(ns).is("loading"))
                  }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(vue.unref(loading_default))
                    ]),
                    _: 1
                  }, 8, ["class"])) : vue.unref(checked) ? vue.renderSlot(_ctx.$slots, "active-action", { key: 1 }, () => [
                    _ctx.activeActionIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0 }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.activeActionIcon)))
                      ]),
                      _: 1
                    })) : vue.createCommentVNode("v-if", true)
                  ]) : !vue.unref(checked) ? vue.renderSlot(_ctx.$slots, "inactive-action", { key: 2 }, () => [
                    _ctx.inactiveActionIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0 }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.inactiveActionIcon)))
                      ]),
                      _: 1
                    })) : vue.createCommentVNode("v-if", true)
                  ]) : vue.createCommentVNode("v-if", true)
                ], 2)
              ], 6),
              !_ctx.inlinePrompt && (_ctx.activeIcon || _ctx.activeText) ? (vue.openBlock(), vue.createElementBlock("span", {
                key: 1,
                class: vue.normalizeClass(vue.unref(labelRightKls))
              }, [
                _ctx.activeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(ElIcon), { key: 0 }, {
                  default: vue.withCtx(() => [
                    (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.activeIcon)))
                  ]),
                  _: 1
                })) : vue.createCommentVNode("v-if", true),
                !_ctx.activeIcon && _ctx.activeText ? (vue.openBlock(), vue.createElementBlock("span", {
                  key: 1,
                  "aria-hidden": !vue.unref(checked)
                }, vue.toDisplayString(_ctx.activeText), 9, _hoisted_5$3)) : vue.createCommentVNode("v-if", true)
              ], 2)) : vue.createCommentVNode("v-if", true)
            ], 10, _hoisted_1$8);
          };
        }
      });
      var Switch = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__file", "switch.vue"]]);
      const ElSwitch = withInstall(Switch);
      const getCell = function(event2) {
        var _a2;
        return (_a2 = event2.target) == null ? void 0 : _a2.closest("td");
      };
      const orderBy = function(array, sortKey, reverse, sortMethod, sortBy) {
        if (!sortKey && !sortMethod && (!sortBy || Array.isArray(sortBy) && !sortBy.length)) {
          return array;
        }
        if (typeof reverse === "string") {
          reverse = reverse === "descending" ? -1 : 1;
        } else {
          reverse = reverse && reverse < 0 ? -1 : 1;
        }
        const getKey = sortMethod ? null : function(value, index) {
          if (sortBy) {
            if (!Array.isArray(sortBy)) {
              sortBy = [sortBy];
            }
            return sortBy.map((by) => {
              if (typeof by === "string") {
                return get(value, by);
              } else {
                return by(value, index, array);
              }
            });
          }
          if (sortKey !== "$key") {
            if (isObject$1(value) && "$value" in value)
              value = value.$value;
          }
          return [isObject$1(value) ? get(value, sortKey) : value];
        };
        const compare = function(a2, b2) {
          if (sortMethod) {
            return sortMethod(a2.value, b2.value);
          }
          for (let i = 0, len = a2.key.length; i < len; i++) {
            if (a2.key[i] < b2.key[i]) {
              return -1;
            }
            if (a2.key[i] > b2.key[i]) {
              return 1;
            }
          }
          return 0;
        };
        return array.map((value, index) => {
          return {
            value,
            index,
            key: getKey ? getKey(value, index) : null
          };
        }).sort((a2, b2) => {
          let order = compare(a2, b2);
          if (!order) {
            order = a2.index - b2.index;
          }
          return order * +reverse;
        }).map((item) => item.value);
      };
      const getColumnById = function(table, columnId) {
        let column = null;
        table.columns.forEach((item) => {
          if (item.id === columnId) {
            column = item;
          }
        });
        return column;
      };
      const getColumnByKey = function(table, columnKey) {
        let column = null;
        for (let i = 0; i < table.columns.length; i++) {
          const item = table.columns[i];
          if (item.columnKey === columnKey) {
            column = item;
            break;
          }
        }
        if (!column)
          throwError("ElTable", `No column matching with column-key: ${columnKey}`);
        return column;
      };
      const getColumnByCell = function(table, cell, namespace) {
        const matches = (cell.className || "").match(new RegExp(`${namespace}-table_[^\\s]+`, "gm"));
        if (matches) {
          return getColumnById(table, matches[0]);
        }
        return null;
      };
      const getRowIdentity = (row, rowKey) => {
        if (!row)
          throw new Error("Row is required when get row identity");
        if (typeof rowKey === "string") {
          if (!rowKey.includes(".")) {
            return `${row[rowKey]}`;
          }
          const key2 = rowKey.split(".");
          let current = row;
          for (const element of key2) {
            current = current[element];
          }
          return `${current}`;
        } else if (typeof rowKey === "function") {
          return rowKey.call(null, row);
        }
      };
      const getKeysMap = function(array, rowKey) {
        const arrayMap2 = {};
        (array || []).forEach((row, index) => {
          arrayMap2[getRowIdentity(row, rowKey)] = { row, index };
        });
        return arrayMap2;
      };
      function mergeOptions(defaults, config) {
        const options = {};
        let key2;
        for (key2 in defaults) {
          options[key2] = defaults[key2];
        }
        for (key2 in config) {
          if (hasOwn(config, key2)) {
            const value = config[key2];
            if (typeof value !== "undefined") {
              options[key2] = value;
            }
          }
        }
        return options;
      }
      function parseWidth(width) {
        if (width === "")
          return width;
        if (width !== void 0) {
          width = Number.parseInt(width, 10);
          if (Number.isNaN(width)) {
            width = "";
          }
        }
        return width;
      }
      function parseMinWidth(minWidth) {
        if (minWidth === "")
          return minWidth;
        if (minWidth !== void 0) {
          minWidth = parseWidth(minWidth);
          if (Number.isNaN(minWidth)) {
            minWidth = 80;
          }
        }
        return minWidth;
      }
      function parseHeight(height) {
        if (typeof height === "number") {
          return height;
        }
        if (typeof height === "string") {
          if (/^\d+(?:px)?$/.test(height)) {
            return Number.parseInt(height, 10);
          } else {
            return height;
          }
        }
        return null;
      }
      function compose(...funcs) {
        if (funcs.length === 0) {
          return (arg) => arg;
        }
        if (funcs.length === 1) {
          return funcs[0];
        }
        return funcs.reduce((a2, b2) => (...args) => a2(b2(...args)));
      }
      function toggleRowStatus(statusArr, row, newVal) {
        let changed = false;
        const index = statusArr.indexOf(row);
        const included = index !== -1;
        const toggleStatus = (type) => {
          if (type === "add") {
            statusArr.push(row);
          } else {
            statusArr.splice(index, 1);
          }
          changed = true;
          if (isArray$1(row.children)) {
            row.children.forEach((item) => {
              toggleRowStatus(statusArr, item, newVal != null ? newVal : !included);
            });
          }
        };
        if (isBoolean(newVal)) {
          if (newVal && !included) {
            toggleStatus("add");
          } else if (!newVal && included) {
            toggleStatus("remove");
          }
        } else {
          included ? toggleStatus("remove") : toggleStatus("add");
        }
        return changed;
      }
      function walkTreeNode(root2, cb, childrenKey = "children", lazyKey = "hasChildren") {
        const isNil2 = (array) => !(Array.isArray(array) && array.length);
        function _walker(parent, children, level) {
          cb(parent, children, level);
          children.forEach((item) => {
            if (item[lazyKey]) {
              cb(item, null, level + 1);
              return;
            }
            const children2 = item[childrenKey];
            if (!isNil2(children2)) {
              _walker(item, children2, level + 1);
            }
          });
        }
        root2.forEach((item) => {
          if (item[lazyKey]) {
            cb(item, null, 0);
            return;
          }
          const children = item[childrenKey];
          if (!isNil2(children)) {
            _walker(item, children, 0);
          }
        });
      }
      let removePopper = null;
      function createTablePopper(props, popperContent, trigger, table) {
        if ((removePopper == null ? void 0 : removePopper.trigger) === trigger) {
          return;
        }
        removePopper == null ? void 0 : removePopper();
        const parentNode = table == null ? void 0 : table.refs.tableWrapper;
        const ns = parentNode == null ? void 0 : parentNode.dataset.prefix;
        const popperOptions = {
          strategy: "fixed",
          ...props.popperOptions
        };
        const vm = vue.createVNode(ElTooltip, {
          content: popperContent,
          virtualTriggering: true,
          virtualRef: trigger,
          appendTo: parentNode,
          placement: "top",
          transition: "none",
          offset: 0,
          hideAfter: 0,
          ...props,
          popperOptions,
          onHide: () => {
            removePopper == null ? void 0 : removePopper();
          }
        });
        vm.appContext = { ...table.appContext, ...table };
        const container = document.createElement("div");
        vue.render(vm, container);
        vm.component.exposed.onOpen();
        const scrollContainer = parentNode == null ? void 0 : parentNode.querySelector(`.${ns}-scrollbar__wrap`);
        removePopper = () => {
          vue.render(null, container);
          scrollContainer == null ? void 0 : scrollContainer.removeEventListener("scroll", removePopper);
          removePopper = null;
        };
        removePopper.trigger = trigger;
        scrollContainer == null ? void 0 : scrollContainer.addEventListener("scroll", removePopper);
      }
      function getCurrentColumns(column) {
        if (column.children) {
          return flatMap(column.children, getCurrentColumns);
        } else {
          return [column];
        }
      }
      function getColSpan(colSpan, column) {
        return colSpan + column.colSpan;
      }
      const isFixedColumn = (index, fixed, store, realColumns) => {
        let start = 0;
        let after = index;
        const columns = store.states.columns.value;
        if (realColumns) {
          const curColumns = getCurrentColumns(realColumns[index]);
          const preColumns = columns.slice(0, columns.indexOf(curColumns[0]));
          start = preColumns.reduce(getColSpan, 0);
          after = start + curColumns.reduce(getColSpan, 0) - 1;
        } else {
          start = index;
        }
        let fixedLayout;
        switch (fixed) {
          case "left":
            if (after < store.states.fixedLeafColumnsLength.value) {
              fixedLayout = "left";
            }
            break;
          case "right":
            if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) {
              fixedLayout = "right";
            }
            break;
          default:
            if (after < store.states.fixedLeafColumnsLength.value) {
              fixedLayout = "left";
            } else if (start >= columns.length - store.states.rightFixedLeafColumnsLength.value) {
              fixedLayout = "right";
            }
        }
        return fixedLayout ? {
          direction: fixedLayout,
          start,
          after
        } : {};
      };
      const getFixedColumnsClass = (namespace, index, fixed, store, realColumns, offset = 0) => {
        const classes = [];
        const { direction, start, after } = isFixedColumn(index, fixed, store, realColumns);
        if (direction) {
          const isLeft = direction === "left";
          classes.push(`${namespace}-fixed-column--${direction}`);
          if (isLeft && after + offset === store.states.fixedLeafColumnsLength.value - 1) {
            classes.push("is-last-column");
          } else if (!isLeft && start - offset === store.states.columns.value.length - store.states.rightFixedLeafColumnsLength.value) {
            classes.push("is-first-column");
          }
        }
        return classes;
      };
      function getOffset(offset, column) {
        return offset + (column.realWidth === null || Number.isNaN(column.realWidth) ? Number(column.width) : column.realWidth);
      }
      const getFixedColumnOffset = (index, fixed, store, realColumns) => {
        const {
          direction,
          start = 0,
          after = 0
        } = isFixedColumn(index, fixed, store, realColumns);
        if (!direction) {
          return;
        }
        const styles = {};
        const isLeft = direction === "left";
        const columns = store.states.columns.value;
        if (isLeft) {
          styles.left = columns.slice(0, start).reduce(getOffset, 0);
        } else {
          styles.right = columns.slice(after + 1).reverse().reduce(getOffset, 0);
        }
        return styles;
      };
      const ensurePosition = (style, key2) => {
        if (!style)
          return;
        if (!Number.isNaN(style[key2])) {
          style[key2] = `${style[key2]}px`;
        }
      };
      function useExpand(watcherData) {
        const instance = vue.getCurrentInstance();
        const defaultExpandAll = vue.ref(false);
        const expandRows = vue.ref([]);
        const updateExpandRows = () => {
          const data = watcherData.data.value || [];
          const rowKey = watcherData.rowKey.value;
          if (defaultExpandAll.value) {
            expandRows.value = data.slice();
          } else if (rowKey) {
            const expandRowsMap = getKeysMap(expandRows.value, rowKey);
            expandRows.value = data.reduce((prev, row) => {
              const rowId = getRowIdentity(row, rowKey);
              const rowInfo = expandRowsMap[rowId];
              if (rowInfo) {
                prev.push(row);
              }
              return prev;
            }, []);
          } else {
            expandRows.value = [];
          }
        };
        const toggleRowExpansion = (row, expanded) => {
          const changed = toggleRowStatus(expandRows.value, row, expanded);
          if (changed) {
            instance.emit("expand-change", row, expandRows.value.slice());
          }
        };
        const setExpandRowKeys = (rowKeys) => {
          instance.store.assertRowKey();
          const data = watcherData.data.value || [];
          const rowKey = watcherData.rowKey.value;
          const keysMap = getKeysMap(data, rowKey);
          expandRows.value = rowKeys.reduce((prev, cur) => {
            const info = keysMap[cur];
            if (info) {
              prev.push(info.row);
            }
            return prev;
          }, []);
        };
        const isRowExpanded = (row) => {
          const rowKey = watcherData.rowKey.value;
          if (rowKey) {
            const expandMap = getKeysMap(expandRows.value, rowKey);
            return !!expandMap[getRowIdentity(row, rowKey)];
          }
          return expandRows.value.includes(row);
        };
        return {
          updateExpandRows,
          toggleRowExpansion,
          setExpandRowKeys,
          isRowExpanded,
          states: {
            expandRows,
            defaultExpandAll
          }
        };
      }
      function useCurrent(watcherData) {
        const instance = vue.getCurrentInstance();
        const _currentRowKey = vue.ref(null);
        const currentRow = vue.ref(null);
        const setCurrentRowKey = (key2) => {
          instance.store.assertRowKey();
          _currentRowKey.value = key2;
          setCurrentRowByKey(key2);
        };
        const restoreCurrentRowKey = () => {
          _currentRowKey.value = null;
        };
        const setCurrentRowByKey = (key2) => {
          const { data, rowKey } = watcherData;
          let _currentRow = null;
          if (rowKey.value) {
            _currentRow = (vue.unref(data) || []).find((item) => getRowIdentity(item, rowKey.value) === key2);
          }
          currentRow.value = _currentRow;
          instance.emit("current-change", currentRow.value, null);
        };
        const updateCurrentRow = (_currentRow) => {
          const oldCurrentRow = currentRow.value;
          if (_currentRow && _currentRow !== oldCurrentRow) {
            currentRow.value = _currentRow;
            instance.emit("current-change", currentRow.value, oldCurrentRow);
            return;
          }
          if (!_currentRow && oldCurrentRow) {
            currentRow.value = null;
            instance.emit("current-change", null, oldCurrentRow);
          }
        };
        const updateCurrentRowData = () => {
          const rowKey = watcherData.rowKey.value;
          const data = watcherData.data.value || [];
          const oldCurrentRow = currentRow.value;
          if (!data.includes(oldCurrentRow) && oldCurrentRow) {
            if (rowKey) {
              const currentRowKey = getRowIdentity(oldCurrentRow, rowKey);
              setCurrentRowByKey(currentRowKey);
            } else {
              currentRow.value = null;
            }
            if (currentRow.value === null) {
              instance.emit("current-change", null, oldCurrentRow);
            }
          } else if (_currentRowKey.value) {
            setCurrentRowByKey(_currentRowKey.value);
            restoreCurrentRowKey();
          }
        };
        return {
          setCurrentRowKey,
          restoreCurrentRowKey,
          setCurrentRowByKey,
          updateCurrentRow,
          updateCurrentRowData,
          states: {
            _currentRowKey,
            currentRow
          }
        };
      }
      function useTree(watcherData) {
        const expandRowKeys = vue.ref([]);
        const treeData = vue.ref({});
        const indent = vue.ref(16);
        const lazy = vue.ref(false);
        const lazyTreeNodeMap = vue.ref({});
        const lazyColumnIdentifier = vue.ref("hasChildren");
        const childrenColumnName = vue.ref("children");
        const instance = vue.getCurrentInstance();
        const normalizedData = vue.computed(() => {
          if (!watcherData.rowKey.value)
            return {};
          const data = watcherData.data.value || [];
          return normalize(data);
        });
        const normalizedLazyNode = vue.computed(() => {
          const rowKey = watcherData.rowKey.value;
          const keys2 = Object.keys(lazyTreeNodeMap.value);
          const res = {};
          if (!keys2.length)
            return res;
          keys2.forEach((key2) => {
            if (lazyTreeNodeMap.value[key2].length) {
              const item = { children: [] };
              lazyTreeNodeMap.value[key2].forEach((row) => {
                const currentRowKey = getRowIdentity(row, rowKey);
                item.children.push(currentRowKey);
                if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {
                  res[currentRowKey] = { children: [] };
                }
              });
              res[key2] = item;
            }
          });
          return res;
        });
        const normalize = (data) => {
          const rowKey = watcherData.rowKey.value;
          const res = {};
          walkTreeNode(data, (parent, children, level) => {
            const parentId = getRowIdentity(parent, rowKey);
            if (Array.isArray(children)) {
              res[parentId] = {
                children: children.map((row) => getRowIdentity(row, rowKey)),
                level
              };
            } else if (lazy.value) {
              res[parentId] = {
                children: [],
                lazy: true,
                level
              };
            }
          }, childrenColumnName.value, lazyColumnIdentifier.value);
          return res;
        };
        const updateTreeData = (ifChangeExpandRowKeys = false, ifExpandAll = ((_a2) => (_a2 = instance.store) == null ? void 0 : _a2.states.defaultExpandAll.value)()) => {
          var _a2;
          const nested = normalizedData.value;
          const normalizedLazyNode_ = normalizedLazyNode.value;
          const keys2 = Object.keys(nested);
          const newTreeData = {};
          if (keys2.length) {
            const oldTreeData = vue.unref(treeData);
            const rootLazyRowKeys = [];
            const getExpanded = (oldValue, key2) => {
              if (ifChangeExpandRowKeys) {
                if (expandRowKeys.value) {
                  return ifExpandAll || expandRowKeys.value.includes(key2);
                } else {
                  return !!(ifExpandAll || (oldValue == null ? void 0 : oldValue.expanded));
                }
              } else {
                const included = ifExpandAll || expandRowKeys.value && expandRowKeys.value.includes(key2);
                return !!((oldValue == null ? void 0 : oldValue.expanded) || included);
              }
            };
            keys2.forEach((key2) => {
              const oldValue = oldTreeData[key2];
              const newValue = { ...nested[key2] };
              newValue.expanded = getExpanded(oldValue, key2);
              if (newValue.lazy) {
                const { loaded = false, loading = false } = oldValue || {};
                newValue.loaded = !!loaded;
                newValue.loading = !!loading;
                rootLazyRowKeys.push(key2);
              }
              newTreeData[key2] = newValue;
            });
            const lazyKeys = Object.keys(normalizedLazyNode_);
            if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {
              lazyKeys.forEach((key2) => {
                const oldValue = oldTreeData[key2];
                const lazyNodeChildren = normalizedLazyNode_[key2].children;
                if (rootLazyRowKeys.includes(key2)) {
                  if (newTreeData[key2].children.length !== 0) {
                    throw new Error("[ElTable]children must be an empty array.");
                  }
                  newTreeData[key2].children = lazyNodeChildren;
                } else {
                  const { loaded = false, loading = false } = oldValue || {};
                  newTreeData[key2] = {
                    lazy: true,
                    loaded: !!loaded,
                    loading: !!loading,
                    expanded: getExpanded(oldValue, key2),
                    children: lazyNodeChildren,
                    level: ""
                  };
                }
              });
            }
          }
          treeData.value = newTreeData;
          (_a2 = instance.store) == null ? void 0 : _a2.updateTableScrollY();
        };
        vue.watch(() => expandRowKeys.value, () => {
          updateTreeData(true);
        });
        vue.watch(() => normalizedData.value, () => {
          updateTreeData();
        });
        vue.watch(() => normalizedLazyNode.value, () => {
          updateTreeData();
        });
        const updateTreeExpandKeys = (value) => {
          expandRowKeys.value = value;
          updateTreeData();
        };
        const toggleTreeExpansion = (row, expanded) => {
          instance.store.assertRowKey();
          const rowKey = watcherData.rowKey.value;
          const id = getRowIdentity(row, rowKey);
          const data = id && treeData.value[id];
          if (id && data && "expanded" in data) {
            const oldExpanded = data.expanded;
            expanded = typeof expanded === "undefined" ? !data.expanded : expanded;
            treeData.value[id].expanded = expanded;
            if (oldExpanded !== expanded) {
              instance.emit("expand-change", row, expanded);
            }
            instance.store.updateTableScrollY();
          }
        };
        const loadOrToggle = (row) => {
          instance.store.assertRowKey();
          const rowKey = watcherData.rowKey.value;
          const id = getRowIdentity(row, rowKey);
          const data = treeData.value[id];
          if (lazy.value && data && "loaded" in data && !data.loaded) {
            loadData(row, id, data);
          } else {
            toggleTreeExpansion(row, void 0);
          }
        };
        const loadData = (row, key2, treeNode) => {
          const { load } = instance.props;
          if (load && !treeData.value[key2].loaded) {
            treeData.value[key2].loading = true;
            load(row, treeNode, (data) => {
              if (!Array.isArray(data)) {
                throw new TypeError("[ElTable] data must be an array");
              }
              treeData.value[key2].loading = false;
              treeData.value[key2].loaded = true;
              treeData.value[key2].expanded = true;
              if (data.length) {
                lazyTreeNodeMap.value[key2] = data;
              }
              instance.emit("expand-change", row, true);
            });
          }
        };
        return {
          loadData,
          loadOrToggle,
          toggleTreeExpansion,
          updateTreeExpandKeys,
          updateTreeData,
          normalize,
          states: {
            expandRowKeys,
            treeData,
            indent,
            lazy,
            lazyTreeNodeMap,
            lazyColumnIdentifier,
            childrenColumnName
          }
        };
      }
      const sortData = (data, states) => {
        const sortingColumn = states.sortingColumn;
        if (!sortingColumn || typeof sortingColumn.sortable === "string") {
          return data;
        }
        return orderBy(data, states.sortProp, states.sortOrder, sortingColumn.sortMethod, sortingColumn.sortBy);
      };
      const doFlattenColumns = (columns) => {
        const result = [];
        columns.forEach((column) => {
          if (column.children && column.children.length > 0) {
            result.push.apply(result, doFlattenColumns(column.children));
          } else {
            result.push(column);
          }
        });
        return result;
      };
      function useWatcher$1() {
        var _a2;
        const instance = vue.getCurrentInstance();
        const { size: tableSize } = vue.toRefs((_a2 = instance.proxy) == null ? void 0 : _a2.$props);
        const rowKey = vue.ref(null);
        const data = vue.ref([]);
        const _data = vue.ref([]);
        const isComplex = vue.ref(false);
        const _columns = vue.ref([]);
        const originColumns = vue.ref([]);
        const columns = vue.ref([]);
        const fixedColumns = vue.ref([]);
        const rightFixedColumns = vue.ref([]);
        const leafColumns = vue.ref([]);
        const fixedLeafColumns = vue.ref([]);
        const rightFixedLeafColumns = vue.ref([]);
        const updateOrderFns = [];
        const leafColumnsLength = vue.ref(0);
        const fixedLeafColumnsLength = vue.ref(0);
        const rightFixedLeafColumnsLength = vue.ref(0);
        const isAllSelected = vue.ref(false);
        const selection = vue.ref([]);
        const reserveSelection = vue.ref(false);
        const selectOnIndeterminate = vue.ref(false);
        const selectable = vue.ref(null);
        const filters = vue.ref({});
        const filteredData = vue.ref(null);
        const sortingColumn = vue.ref(null);
        const sortProp = vue.ref(null);
        const sortOrder = vue.ref(null);
        const hoverRow = vue.ref(null);
        vue.watch(data, () => instance.state && scheduleLayout(false), {
          deep: true
        });
        const assertRowKey = () => {
          if (!rowKey.value)
            throw new Error("[ElTable] prop row-key is required");
        };
        const updateChildFixed = (column) => {
          var _a22;
          (_a22 = column.children) == null ? void 0 : _a22.forEach((childColumn) => {
            childColumn.fixed = column.fixed;
            updateChildFixed(childColumn);
          });
        };
        const updateColumns = () => {
          _columns.value.forEach((column) => {
            updateChildFixed(column);
          });
          fixedColumns.value = _columns.value.filter((column) => column.fixed === true || column.fixed === "left");
          rightFixedColumns.value = _columns.value.filter((column) => column.fixed === "right");
          if (fixedColumns.value.length > 0 && _columns.value[0] && _columns.value[0].type === "selection" && !_columns.value[0].fixed) {
            _columns.value[0].fixed = true;
            fixedColumns.value.unshift(_columns.value[0]);
          }
          const notFixedColumns = _columns.value.filter((column) => !column.fixed);
          originColumns.value = [].concat(fixedColumns.value).concat(notFixedColumns).concat(rightFixedColumns.value);
          const leafColumns2 = doFlattenColumns(notFixedColumns);
          const fixedLeafColumns2 = doFlattenColumns(fixedColumns.value);
          const rightFixedLeafColumns2 = doFlattenColumns(rightFixedColumns.value);
          leafColumnsLength.value = leafColumns2.length;
          fixedLeafColumnsLength.value = fixedLeafColumns2.length;
          rightFixedLeafColumnsLength.value = rightFixedLeafColumns2.length;
          columns.value = [].concat(fixedLeafColumns2).concat(leafColumns2).concat(rightFixedLeafColumns2);
          isComplex.value = fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0;
        };
        const scheduleLayout = (needUpdateColumns, immediate = false) => {
          if (needUpdateColumns) {
            updateColumns();
          }
          if (immediate) {
            instance.state.doLayout();
          } else {
            instance.state.debouncedUpdateLayout();
          }
        };
        const isSelected = (row) => {
          return selection.value.includes(row);
        };
        const clearSelection = () => {
          isAllSelected.value = false;
          const oldSelection = selection.value;
          if (oldSelection.length) {
            selection.value = [];
            instance.emit("selection-change", []);
          }
        };
        const cleanSelection = () => {
          let deleted;
          if (rowKey.value) {
            deleted = [];
            const selectedMap = getKeysMap(selection.value, rowKey.value);
            const dataMap = getKeysMap(data.value, rowKey.value);
            for (const key2 in selectedMap) {
              if (hasOwn(selectedMap, key2) && !dataMap[key2]) {
                deleted.push(selectedMap[key2].row);
              }
            }
          } else {
            deleted = selection.value.filter((item) => !data.value.includes(item));
          }
          if (deleted.length) {
            const newSelection = selection.value.filter((item) => !deleted.includes(item));
            selection.value = newSelection;
            instance.emit("selection-change", newSelection.slice());
          }
        };
        const getSelectionRows = () => {
          return (selection.value || []).slice();
        };
        const toggleRowSelection = (row, selected = void 0, emitChange = true) => {
          const changed = toggleRowStatus(selection.value, row, selected);
          if (changed) {
            const newSelection = (selection.value || []).slice();
            if (emitChange) {
              instance.emit("select", newSelection, row);
            }
            instance.emit("selection-change", newSelection);
          }
        };
        const _toggleAllSelection = () => {
          var _a22, _b;
          const value = selectOnIndeterminate.value ? !isAllSelected.value : !(isAllSelected.value || selection.value.length);
          isAllSelected.value = value;
          let selectionChanged = false;
          let childrenCount = 0;
          const rowKey2 = (_b = (_a22 = instance == null ? void 0 : instance.store) == null ? void 0 : _a22.states) == null ? void 0 : _b.rowKey.value;
          data.value.forEach((row, index) => {
            const rowIndex = index + childrenCount;
            if (selectable.value) {
              if (selectable.value.call(null, row, rowIndex) && toggleRowStatus(selection.value, row, value)) {
                selectionChanged = true;
              }
            } else {
              if (toggleRowStatus(selection.value, row, value)) {
                selectionChanged = true;
              }
            }
            childrenCount += getChildrenCount(getRowIdentity(row, rowKey2));
          });
          if (selectionChanged) {
            instance.emit("selection-change", selection.value ? selection.value.slice() : []);
          }
          instance.emit("select-all", selection.value);
        };
        const updateSelectionByRowKey = () => {
          const selectedMap = getKeysMap(selection.value, rowKey.value);
          data.value.forEach((row) => {
            const rowId = getRowIdentity(row, rowKey.value);
            const rowInfo = selectedMap[rowId];
            if (rowInfo) {
              selection.value[rowInfo.index] = row;
            }
          });
        };
        const updateAllSelected = () => {
          var _a22, _b, _c;
          if (((_a22 = data.value) == null ? void 0 : _a22.length) === 0) {
            isAllSelected.value = false;
            return;
          }
          let selectedMap;
          if (rowKey.value) {
            selectedMap = getKeysMap(selection.value, rowKey.value);
          }
          const isSelected2 = function(row) {
            if (selectedMap) {
              return !!selectedMap[getRowIdentity(row, rowKey.value)];
            } else {
              return selection.value.includes(row);
            }
          };
          let isAllSelected_ = true;
          let selectedCount = 0;
          let childrenCount = 0;
          for (let i = 0, j = (data.value || []).length; i < j; i++) {
            const keyProp = (_c = (_b = instance == null ? void 0 : instance.store) == null ? void 0 : _b.states) == null ? void 0 : _c.rowKey.value;
            const rowIndex = i + childrenCount;
            const item = data.value[i];
            const isRowSelectable = selectable.value && selectable.value.call(null, item, rowIndex);
            if (!isSelected2(item)) {
              if (!selectable.value || isRowSelectable) {
                isAllSelected_ = false;
                break;
              }
            } else {
              selectedCount++;
            }
            childrenCount += getChildrenCount(getRowIdentity(item, keyProp));
          }
          if (selectedCount === 0)
            isAllSelected_ = false;
          isAllSelected.value = isAllSelected_;
        };
        const getChildrenCount = (rowKey2) => {
          var _a22;
          if (!instance || !instance.store)
            return 0;
          const { treeData } = instance.store.states;
          let count = 0;
          const children = (_a22 = treeData.value[rowKey2]) == null ? void 0 : _a22.children;
          if (children) {
            count += children.length;
            children.forEach((childKey) => {
              count += getChildrenCount(childKey);
            });
          }
          return count;
        };
        const updateFilters = (columns2, values) => {
          if (!Array.isArray(columns2)) {
            columns2 = [columns2];
          }
          const filters_ = {};
          columns2.forEach((col) => {
            filters.value[col.id] = values;
            filters_[col.columnKey || col.id] = values;
          });
          return filters_;
        };
        const updateSort = (column, prop, order) => {
          if (sortingColumn.value && sortingColumn.value !== column) {
            sortingColumn.value.order = null;
          }
          sortingColumn.value = column;
          sortProp.value = prop;
          sortOrder.value = order;
        };
        const execFilter = () => {
          let sourceData = vue.unref(_data);
          Object.keys(filters.value).forEach((columnId) => {
            const values = filters.value[columnId];
            if (!values || values.length === 0)
              return;
            const column = getColumnById({
              columns: columns.value
            }, columnId);
            if (column && column.filterMethod) {
              sourceData = sourceData.filter((row) => {
                return values.some((value) => column.filterMethod.call(null, value, row, column));
              });
            }
          });
          filteredData.value = sourceData;
        };
        const execSort = () => {
          data.value = sortData(filteredData.value, {
            sortingColumn: sortingColumn.value,
            sortProp: sortProp.value,
            sortOrder: sortOrder.value
          });
        };
        const execQuery = (ignore = void 0) => {
          if (!(ignore && ignore.filter)) {
            execFilter();
          }
          execSort();
        };
        const clearFilter = (columnKeys) => {
          const { tableHeaderRef } = instance.refs;
          if (!tableHeaderRef)
            return;
          const panels = Object.assign({}, tableHeaderRef.filterPanels);
          const keys2 = Object.keys(panels);
          if (!keys2.length)
            return;
          if (typeof columnKeys === "string") {
            columnKeys = [columnKeys];
          }
          if (Array.isArray(columnKeys)) {
            const columns_ = columnKeys.map((key2) => getColumnByKey({
              columns: columns.value
            }, key2));
            keys2.forEach((key2) => {
              const column = columns_.find((col) => col.id === key2);
              if (column) {
                column.filteredValue = [];
              }
            });
            instance.store.commit("filterChange", {
              column: columns_,
              values: [],
              silent: true,
              multi: true
            });
          } else {
            keys2.forEach((key2) => {
              const column = columns.value.find((col) => col.id === key2);
              if (column) {
                column.filteredValue = [];
              }
            });
            filters.value = {};
            instance.store.commit("filterChange", {
              column: {},
              values: [],
              silent: true
            });
          }
        };
        const clearSort = () => {
          if (!sortingColumn.value)
            return;
          updateSort(null, null, null);
          instance.store.commit("changeSortCondition", {
            silent: true
          });
        };
        const {
          setExpandRowKeys,
          toggleRowExpansion,
          updateExpandRows,
          states: expandStates,
          isRowExpanded
        } = useExpand({
          data,
          rowKey
        });
        const {
          updateTreeExpandKeys,
          toggleTreeExpansion,
          updateTreeData,
          loadOrToggle,
          states: treeStates
        } = useTree({
          data,
          rowKey
        });
        const {
          updateCurrentRowData,
          updateCurrentRow,
          setCurrentRowKey,
          states: currentData
        } = useCurrent({
          data,
          rowKey
        });
        const setExpandRowKeysAdapter = (val) => {
          setExpandRowKeys(val);
          updateTreeExpandKeys(val);
        };
        const toggleRowExpansionAdapter = (row, expanded) => {
          const hasExpandColumn = columns.value.some(({ type }) => type === "expand");
          if (hasExpandColumn) {
            toggleRowExpansion(row, expanded);
          } else {
            toggleTreeExpansion(row, expanded);
          }
        };
        return {
          assertRowKey,
          updateColumns,
          scheduleLayout,
          isSelected,
          clearSelection,
          cleanSelection,
          getSelectionRows,
          toggleRowSelection,
          _toggleAllSelection,
          toggleAllSelection: null,
          updateSelectionByRowKey,
          updateAllSelected,
          updateFilters,
          updateCurrentRow,
          updateSort,
          execFilter,
          execSort,
          execQuery,
          clearFilter,
          clearSort,
          toggleRowExpansion,
          setExpandRowKeysAdapter,
          setCurrentRowKey,
          toggleRowExpansionAdapter,
          isRowExpanded,
          updateExpandRows,
          updateCurrentRowData,
          loadOrToggle,
          updateTreeData,
          states: {
            tableSize,
            rowKey,
            data,
            _data,
            isComplex,
            _columns,
            originColumns,
            columns,
            fixedColumns,
            rightFixedColumns,
            leafColumns,
            fixedLeafColumns,
            rightFixedLeafColumns,
            updateOrderFns,
            leafColumnsLength,
            fixedLeafColumnsLength,
            rightFixedLeafColumnsLength,
            isAllSelected,
            selection,
            reserveSelection,
            selectOnIndeterminate,
            selectable,
            filters,
            filteredData,
            sortingColumn,
            sortProp,
            sortOrder,
            hoverRow,
            ...expandStates,
            ...treeStates,
            ...currentData
          }
        };
      }
      function replaceColumn(array, column) {
        return array.map((item) => {
          var _a2;
          if (item.id === column.id) {
            return column;
          } else if ((_a2 = item.children) == null ? void 0 : _a2.length) {
            item.children = replaceColumn(item.children, column);
          }
          return item;
        });
      }
      function sortColumn(array) {
        array.forEach((item) => {
          var _a2, _b;
          item.no = (_a2 = item.getColumnIndex) == null ? void 0 : _a2.call(item);
          if ((_b = item.children) == null ? void 0 : _b.length) {
            sortColumn(item.children);
          }
        });
        array.sort((cur, pre) => cur.no - pre.no);
      }
      function useStore() {
        const instance = vue.getCurrentInstance();
        const watcher = useWatcher$1();
        const ns = useNamespace("table");
        const mutations = {
          setData(states, data) {
            const dataInstanceChanged = vue.unref(states._data) !== data;
            states.data.value = data;
            states._data.value = data;
            instance.store.execQuery();
            instance.store.updateCurrentRowData();
            instance.store.updateExpandRows();
            instance.store.updateTreeData(instance.store.states.defaultExpandAll.value);
            if (vue.unref(states.reserveSelection)) {
              instance.store.assertRowKey();
              instance.store.updateSelectionByRowKey();
            } else {
              if (dataInstanceChanged) {
                instance.store.clearSelection();
              } else {
                instance.store.cleanSelection();
              }
            }
            instance.store.updateAllSelected();
            if (instance.$ready) {
              instance.store.scheduleLayout();
            }
          },
          insertColumn(states, column, parent, updateColumnOrder) {
            const array = vue.unref(states._columns);
            let newColumns = [];
            if (!parent) {
              array.push(column);
              newColumns = array;
            } else {
              if (parent && !parent.children) {
                parent.children = [];
              }
              parent.children.push(column);
              newColumns = replaceColumn(array, parent);
            }
            sortColumn(newColumns);
            states._columns.value = newColumns;
            states.updateOrderFns.push(updateColumnOrder);
            if (column.type === "selection") {
              states.selectable.value = column.selectable;
              states.reserveSelection.value = column.reserveSelection;
            }
            if (instance.$ready) {
              instance.store.updateColumns();
              instance.store.scheduleLayout();
            }
          },
          updateColumnOrder(states, column) {
            var _a2;
            const newColumnIndex = (_a2 = column.getColumnIndex) == null ? void 0 : _a2.call(column);
            if (newColumnIndex === column.no)
              return;
            sortColumn(states._columns.value);
            if (instance.$ready) {
              instance.store.updateColumns();
            }
          },
          removeColumn(states, column, parent, updateColumnOrder) {
            const array = vue.unref(states._columns) || [];
            if (parent) {
              parent.children.splice(parent.children.findIndex((item) => item.id === column.id), 1);
              vue.nextTick(() => {
                var _a2;
                if (((_a2 = parent.children) == null ? void 0 : _a2.length) === 0) {
                  delete parent.children;
                }
              });
              states._columns.value = replaceColumn(array, parent);
            } else {
              const index = array.indexOf(column);
              if (index > -1) {
                array.splice(index, 1);
                states._columns.value = array;
              }
            }
            const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder);
            updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1);
            if (instance.$ready) {
              instance.store.updateColumns();
              instance.store.scheduleLayout();
            }
          },
          sort(states, options) {
            const { prop, order, init } = options;
            if (prop) {
              const column = vue.unref(states.columns).find((column2) => column2.property === prop);
              if (column) {
                column.order = order;
                instance.store.updateSort(column, prop, order);
                instance.store.commit("changeSortCondition", { init });
              }
            }
          },
          changeSortCondition(states, options) {
            const { sortingColumn, sortProp, sortOrder } = states;
            const columnValue = vue.unref(sortingColumn), propValue = vue.unref(sortProp), orderValue = vue.unref(sortOrder);
            if (orderValue === null) {
              states.sortingColumn.value = null;
              states.sortProp.value = null;
            }
            const ignore = { filter: true };
            instance.store.execQuery(ignore);
            if (!options || !(options.silent || options.init)) {
              instance.emit("sort-change", {
                column: columnValue,
                prop: propValue,
                order: orderValue
              });
            }
            instance.store.updateTableScrollY();
          },
          filterChange(_states, options) {
            const { column, values, silent } = options;
            const newFilters = instance.store.updateFilters(column, values);
            instance.store.execQuery();
            if (!silent) {
              instance.emit("filter-change", newFilters);
            }
            instance.store.updateTableScrollY();
          },
          toggleAllSelection() {
            instance.store.toggleAllSelection();
          },
          rowSelectedChanged(_states, row) {
            instance.store.toggleRowSelection(row);
            instance.store.updateAllSelected();
          },
          setHoverRow(states, row) {
            states.hoverRow.value = row;
          },
          setCurrentRow(_states, row) {
            instance.store.updateCurrentRow(row);
          }
        };
        const commit = function(name, ...args) {
          const mutations2 = instance.store.mutations;
          if (mutations2[name]) {
            mutations2[name].apply(instance, [instance.store.states].concat(args));
          } else {
            throw new Error(`Action not found: ${name}`);
          }
        };
        const updateTableScrollY = function() {
          vue.nextTick(() => instance.layout.updateScrollY.apply(instance.layout));
        };
        return {
          ns,
          ...watcher,
          mutations,
          commit,
          updateTableScrollY
        };
      }
      const InitialStateMap = {
        rowKey: "rowKey",
        defaultExpandAll: "defaultExpandAll",
        selectOnIndeterminate: "selectOnIndeterminate",
        indent: "indent",
        lazy: "lazy",
        data: "data",
        ["treeProps.hasChildren"]: {
          key: "lazyColumnIdentifier",
          default: "hasChildren"
        },
        ["treeProps.children"]: {
          key: "childrenColumnName",
          default: "children"
        }
      };
      function createStore(table, props) {
        if (!table) {
          throw new Error("Table is required.");
        }
        const store = useStore();
        store.toggleAllSelection = debounce(store._toggleAllSelection, 10);
        Object.keys(InitialStateMap).forEach((key2) => {
          handleValue(getArrKeysValue(props, key2), key2, store);
        });
        proxyTableProps(store, props);
        return store;
      }
      function proxyTableProps(store, props) {
        Object.keys(InitialStateMap).forEach((key2) => {
          vue.watch(() => getArrKeysValue(props, key2), (value) => {
            handleValue(value, key2, store);
          });
        });
      }
      function handleValue(value, propsKey, store) {
        let newVal = value;
        let storeKey = InitialStateMap[propsKey];
        if (typeof InitialStateMap[propsKey] === "object") {
          storeKey = storeKey.key;
          newVal = newVal || InitialStateMap[propsKey].default;
        }
        store.states[storeKey].value = newVal;
      }
      function getArrKeysValue(props, keys2) {
        if (keys2.includes(".")) {
          const keyList = keys2.split(".");
          let value = props;
          keyList.forEach((key2) => {
            value = value[key2];
          });
          return value;
        } else {
          return props[keys2];
        }
      }
      class TableLayout {
        constructor(options) {
          this.observers = [];
          this.table = null;
          this.store = null;
          this.columns = [];
          this.fit = true;
          this.showHeader = true;
          this.height = vue.ref(null);
          this.scrollX = vue.ref(false);
          this.scrollY = vue.ref(false);
          this.bodyWidth = vue.ref(null);
          this.fixedWidth = vue.ref(null);
          this.rightFixedWidth = vue.ref(null);
          this.gutterWidth = 0;
          for (const name in options) {
            if (hasOwn(options, name)) {
              if (vue.isRef(this[name])) {
                this[name].value = options[name];
              } else {
                this[name] = options[name];
              }
            }
          }
          if (!this.table) {
            throw new Error("Table is required for Table Layout");
          }
          if (!this.store) {
            throw new Error("Store is required for Table Layout");
          }
        }
        updateScrollY() {
          const height = this.height.value;
          if (height === null)
            return false;
          const scrollBarRef = this.table.refs.scrollBarRef;
          if (this.table.vnode.el && (scrollBarRef == null ? void 0 : scrollBarRef.wrapRef)) {
            let scrollY = true;
            const prevScrollY = this.scrollY.value;
            scrollY = scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight;
            this.scrollY.value = scrollY;
            return prevScrollY !== scrollY;
          }
          return false;
        }
        setHeight(value, prop = "height") {
          if (!isClient)
            return;
          const el = this.table.vnode.el;
          value = parseHeight(value);
          this.height.value = Number(value);
          if (!el && (value || value === 0))
            return vue.nextTick(() => this.setHeight(value, prop));
          if (typeof value === "number") {
            el.style[prop] = `${value}px`;
            this.updateElsHeight();
          } else if (typeof value === "string") {
            el.style[prop] = value;
            this.updateElsHeight();
          }
        }
        setMaxHeight(value) {
          this.setHeight(value, "max-height");
        }
        getFlattenColumns() {
          const flattenColumns = [];
          const columns = this.table.store.states.columns.value;
          columns.forEach((column) => {
            if (column.isColumnGroup) {
              flattenColumns.push.apply(flattenColumns, column.columns);
            } else {
              flattenColumns.push(column);
            }
          });
          return flattenColumns;
        }
        updateElsHeight() {
          this.updateScrollY();
          this.notifyObservers("scrollable");
        }
        headerDisplayNone(elm) {
          if (!elm)
            return true;
          let headerChild = elm;
          while (headerChild.tagName !== "DIV") {
            if (getComputedStyle(headerChild).display === "none") {
              return true;
            }
            headerChild = headerChild.parentElement;
          }
          return false;
        }
        updateColumnsWidth() {
          if (!isClient)
            return;
          const fit = this.fit;
          const bodyWidth = this.table.vnode.el.clientWidth;
          let bodyMinWidth = 0;
          const flattenColumns = this.getFlattenColumns();
          const flexColumns = flattenColumns.filter((column) => typeof column.width !== "number");
          flattenColumns.forEach((column) => {
            if (typeof column.width === "number" && column.realWidth)
              column.realWidth = null;
          });
          if (flexColumns.length > 0 && fit) {
            flattenColumns.forEach((column) => {
              bodyMinWidth += Number(column.width || column.minWidth || 80);
            });
            if (bodyMinWidth <= bodyWidth) {
              this.scrollX.value = false;
              const totalFlexWidth = bodyWidth - bodyMinWidth;
              if (flexColumns.length === 1) {
                flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth;
              } else {
                const allColumnsWidth = flexColumns.reduce((prev, column) => prev + Number(column.minWidth || 80), 0);
                const flexWidthPerPixel = totalFlexWidth / allColumnsWidth;
                let noneFirstWidth = 0;
                flexColumns.forEach((column, index) => {
                  if (index === 0)
                    return;
                  const flexWidth = Math.floor(Number(column.minWidth || 80) * flexWidthPerPixel);
                  noneFirstWidth += flexWidth;
                  column.realWidth = Number(column.minWidth || 80) + flexWidth;
                });
                flexColumns[0].realWidth = Number(flexColumns[0].minWidth || 80) + totalFlexWidth - noneFirstWidth;
              }
            } else {
              this.scrollX.value = true;
              flexColumns.forEach((column) => {
                column.realWidth = Number(column.minWidth);
              });
            }
            this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth);
            this.table.state.resizeState.value.width = this.bodyWidth.value;
          } else {
            flattenColumns.forEach((column) => {
              if (!column.width && !column.minWidth) {
                column.realWidth = 80;
              } else {
                column.realWidth = Number(column.width || column.minWidth);
              }
              bodyMinWidth += column.realWidth;
            });
            this.scrollX.value = bodyMinWidth > bodyWidth;
            this.bodyWidth.value = bodyMinWidth;
          }
          const fixedColumns = this.store.states.fixedColumns.value;
          if (fixedColumns.length > 0) {
            let fixedWidth = 0;
            fixedColumns.forEach((column) => {
              fixedWidth += Number(column.realWidth || column.width);
            });
            this.fixedWidth.value = fixedWidth;
          }
          const rightFixedColumns = this.store.states.rightFixedColumns.value;
          if (rightFixedColumns.length > 0) {
            let rightFixedWidth = 0;
            rightFixedColumns.forEach((column) => {
              rightFixedWidth += Number(column.realWidth || column.width);
            });
            this.rightFixedWidth.value = rightFixedWidth;
          }
          this.notifyObservers("columns");
        }
        addObserver(observer) {
          this.observers.push(observer);
        }
        removeObserver(observer) {
          const index = this.observers.indexOf(observer);
          if (index !== -1) {
            this.observers.splice(index, 1);
          }
        }
        notifyObservers(event2) {
          const observers = this.observers;
          observers.forEach((observer) => {
            var _a2, _b;
            switch (event2) {
              case "columns":
                (_a2 = observer.state) == null ? void 0 : _a2.onColumnsChange(this);
                break;
              case "scrollable":
                (_b = observer.state) == null ? void 0 : _b.onScrollableChange(this);
                break;
              default:
                throw new Error(`Table Layout don't have event ${event2}.`);
            }
          });
        }
      }
      const { CheckboxGroup: ElCheckboxGroup } = ElCheckbox;
      const _sfc_main$b = vue.defineComponent({
        name: "ElTableFilterPanel",
        components: {
          ElCheckbox,
          ElCheckboxGroup,
          ElScrollbar,
          ElTooltip,
          ElIcon,
          ArrowDown: arrow_down_default,
          ArrowUp: arrow_up_default
        },
        directives: { ClickOutside },
        props: {
          placement: {
            type: String,
            default: "bottom-start"
          },
          store: {
            type: Object
          },
          column: {
            type: Object
          },
          upDataColumn: {
            type: Function
          }
        },
        setup(props) {
          const instance = vue.getCurrentInstance();
          const { t } = useLocale();
          const ns = useNamespace("table-filter");
          const parent = instance == null ? void 0 : instance.parent;
          if (!parent.filterPanels.value[props.column.id]) {
            parent.filterPanels.value[props.column.id] = instance;
          }
          const tooltipVisible = vue.ref(false);
          const tooltip = vue.ref(null);
          const filters = vue.computed(() => {
            return props.column && props.column.filters;
          });
          const filterClassName = vue.computed(() => {
            if (props.column.filterClassName) {
              return `${ns.b()} ${props.column.filterClassName}`;
            }
            return ns.b();
          });
          const filterValue = vue.computed({
            get: () => {
              var _a2;
              return (((_a2 = props.column) == null ? void 0 : _a2.filteredValue) || [])[0];
            },
            set: (value) => {
              if (filteredValue.value) {
                if (typeof value !== "undefined" && value !== null) {
                  filteredValue.value.splice(0, 1, value);
                } else {
                  filteredValue.value.splice(0, 1);
                }
              }
            }
          });
          const filteredValue = vue.computed({
            get() {
              if (props.column) {
                return props.column.filteredValue || [];
              }
              return [];
            },
            set(value) {
              if (props.column) {
                props.upDataColumn("filteredValue", value);
              }
            }
          });
          const multiple = vue.computed(() => {
            if (props.column) {
              return props.column.filterMultiple;
            }
            return true;
          });
          const isActive = (filter) => {
            return filter.value === filterValue.value;
          };
          const hidden = () => {
            tooltipVisible.value = false;
          };
          const showFilterPanel = (e) => {
            e.stopPropagation();
            tooltipVisible.value = !tooltipVisible.value;
          };
          const hideFilterPanel = () => {
            tooltipVisible.value = false;
          };
          const handleConfirm = () => {
            confirmFilter(filteredValue.value);
            hidden();
          };
          const handleReset = () => {
            filteredValue.value = [];
            confirmFilter(filteredValue.value);
            hidden();
          };
          const handleSelect = (_filterValue) => {
            filterValue.value = _filterValue;
            if (typeof _filterValue !== "undefined" && _filterValue !== null) {
              confirmFilter(filteredValue.value);
            } else {
              confirmFilter([]);
            }
            hidden();
          };
          const confirmFilter = (filteredValue2) => {
            props.store.commit("filterChange", {
              column: props.column,
              values: filteredValue2
            });
            props.store.updateAllSelected();
          };
          vue.watch(tooltipVisible, (value) => {
            if (props.column) {
              props.upDataColumn("filterOpened", value);
            }
          }, {
            immediate: true
          });
          const popperPaneRef = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = tooltip.value) == null ? void 0 : _a2.popperRef) == null ? void 0 : _b.contentRef;
          });
          return {
            tooltipVisible,
            multiple,
            filterClassName,
            filteredValue,
            filterValue,
            filters,
            handleConfirm,
            handleReset,
            handleSelect,
            isActive,
            t,
            ns,
            showFilterPanel,
            hideFilterPanel,
            popperPaneRef,
            tooltip
          };
        }
      });
      const _hoisted_1$7 = { key: 0 };
      const _hoisted_2$5 = ["disabled"];
      const _hoisted_3$4 = ["label", "onClick"];
      function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
        const _component_el_checkbox = vue.resolveComponent("el-checkbox");
        const _component_el_checkbox_group = vue.resolveComponent("el-checkbox-group");
        const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
        const _component_arrow_up = vue.resolveComponent("arrow-up");
        const _component_arrow_down = vue.resolveComponent("arrow-down");
        const _component_el_icon = vue.resolveComponent("el-icon");
        const _component_el_tooltip = vue.resolveComponent("el-tooltip");
        const _directive_click_outside = vue.resolveDirective("click-outside");
        return vue.openBlock(), vue.createBlock(_component_el_tooltip, {
          ref: "tooltip",
          visible: _ctx.tooltipVisible,
          offset: 0,
          placement: _ctx.placement,
          "show-arrow": false,
          "stop-popper-mouse-event": false,
          teleported: "",
          effect: "light",
          pure: "",
          "popper-class": _ctx.filterClassName,
          persistent: ""
        }, {
          content: vue.withCtx(() => [
            _ctx.multiple ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
              vue.createElementVNode("div", {
                class: vue.normalizeClass(_ctx.ns.e("content"))
              }, [
                vue.createVNode(_component_el_scrollbar, {
                  "wrap-class": _ctx.ns.e("wrap")
                }, {
                  default: vue.withCtx(() => [
                    vue.createVNode(_component_el_checkbox_group, {
                      modelValue: _ctx.filteredValue,
                      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.filteredValue = $event),
                      class: vue.normalizeClass(_ctx.ns.e("checkbox-group"))
                    }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.filters, (filter) => {
                          return vue.openBlock(), vue.createBlock(_component_el_checkbox, {
                            key: filter.value,
                            value: filter.value
                          }, {
                            default: vue.withCtx(() => [
                              vue.createTextVNode(vue.toDisplayString(filter.text), 1)
                            ]),
                            _: 2
                          }, 1032, ["value"]);
                        }), 128))
                      ]),
                      _: 1
                    }, 8, ["modelValue", "class"])
                  ]),
                  _: 1
                }, 8, ["wrap-class"])
              ], 2),
              vue.createElementVNode("div", {
                class: vue.normalizeClass(_ctx.ns.e("bottom"))
              }, [
                vue.createElementVNode("button", {
                  class: vue.normalizeClass({ [_ctx.ns.is("disabled")]: _ctx.filteredValue.length === 0 }),
                  disabled: _ctx.filteredValue.length === 0,
                  type: "button",
                  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.handleConfirm && _ctx.handleConfirm(...args))
                }, vue.toDisplayString(_ctx.t("el.table.confirmFilter")), 11, _hoisted_2$5),
                vue.createElementVNode("button", {
                  type: "button",
                  onClick: _cache[2] || (_cache[2] = (...args) => _ctx.handleReset && _ctx.handleReset(...args))
                }, vue.toDisplayString(_ctx.t("el.table.resetFilter")), 1)
              ], 2)
            ])) : (vue.openBlock(), vue.createElementBlock("ul", {
              key: 1,
              class: vue.normalizeClass(_ctx.ns.e("list"))
            }, [
              vue.createElementVNode("li", {
                class: vue.normalizeClass([
                  _ctx.ns.e("list-item"),
                  {
                    [_ctx.ns.is("active")]: _ctx.filterValue === void 0 || _ctx.filterValue === null
                  }
                ]),
                onClick: _cache[3] || (_cache[3] = ($event) => _ctx.handleSelect(null))
              }, vue.toDisplayString(_ctx.t("el.table.clearFilter")), 3),
              (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.filters, (filter) => {
                return vue.openBlock(), vue.createElementBlock("li", {
                  key: filter.value,
                  class: vue.normalizeClass([_ctx.ns.e("list-item"), _ctx.ns.is("active", _ctx.isActive(filter))]),
                  label: filter.value,
                  onClick: ($event) => _ctx.handleSelect(filter.value)
                }, vue.toDisplayString(filter.text), 11, _hoisted_3$4);
              }), 128))
            ], 2))
          ]),
          default: vue.withCtx(() => [
            vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", {
              class: vue.normalizeClass([
                `${_ctx.ns.namespace.value}-table__column-filter-trigger`,
                `${_ctx.ns.namespace.value}-none-outline`
              ]),
              onClick: _cache[4] || (_cache[4] = (...args) => _ctx.showFilterPanel && _ctx.showFilterPanel(...args))
            }, [
              vue.createVNode(_component_el_icon, null, {
                default: vue.withCtx(() => [
                  _ctx.column.filterOpened ? (vue.openBlock(), vue.createBlock(_component_arrow_up, { key: 0 })) : (vue.openBlock(), vue.createBlock(_component_arrow_down, { key: 1 }))
                ]),
                _: 1
              })
            ], 2)), [
              [_directive_click_outside, _ctx.hideFilterPanel, _ctx.popperPaneRef]
            ])
          ]),
          _: 1
        }, 8, ["visible", "placement", "popper-class"]);
      }
      var FilterPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["render", _sfc_render$3], ["__file", "filter-panel.vue"]]);
      function useLayoutObserver(root2) {
        const instance = vue.getCurrentInstance();
        vue.onBeforeMount(() => {
          tableLayout.value.addObserver(instance);
        });
        vue.onMounted(() => {
          onColumnsChange(tableLayout.value);
          onScrollableChange(tableLayout.value);
        });
        vue.onUpdated(() => {
          onColumnsChange(tableLayout.value);
          onScrollableChange(tableLayout.value);
        });
        vue.onUnmounted(() => {
          tableLayout.value.removeObserver(instance);
        });
        const tableLayout = vue.computed(() => {
          const layout = root2.layout;
          if (!layout) {
            throw new Error("Can not find table layout.");
          }
          return layout;
        });
        const onColumnsChange = (layout) => {
          var _a2;
          const cols = ((_a2 = root2.vnode.el) == null ? void 0 : _a2.querySelectorAll("colgroup > col")) || [];
          if (!cols.length)
            return;
          const flattenColumns = layout.getFlattenColumns();
          const columnsMap = {};
          flattenColumns.forEach((column) => {
            columnsMap[column.id] = column;
          });
          for (let i = 0, j = cols.length; i < j; i++) {
            const col = cols[i];
            const name = col.getAttribute("name");
            const column = columnsMap[name];
            if (column) {
              col.setAttribute("width", column.realWidth || column.width);
            }
          }
        };
        const onScrollableChange = (layout) => {
          var _a2, _b;
          const cols = ((_a2 = root2.vnode.el) == null ? void 0 : _a2.querySelectorAll("colgroup > col[name=gutter]")) || [];
          for (let i = 0, j = cols.length; i < j; i++) {
            const col = cols[i];
            col.setAttribute("width", layout.scrollY.value ? layout.gutterWidth : "0");
          }
          const ths = ((_b = root2.vnode.el) == null ? void 0 : _b.querySelectorAll("th.gutter")) || [];
          for (let i = 0, j = ths.length; i < j; i++) {
            const th = ths[i];
            th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : "0";
            th.style.display = layout.scrollY.value ? "" : "none";
          }
        };
        return {
          tableLayout: tableLayout.value,
          onColumnsChange,
          onScrollableChange
        };
      }
      const TABLE_INJECTION_KEY = Symbol("ElTable");
      function useEvent(props, emit) {
        const instance = vue.getCurrentInstance();
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const handleFilterClick = (event2) => {
          event2.stopPropagation();
          return;
        };
        const handleHeaderClick = (event2, column) => {
          if (!column.filters && column.sortable) {
            handleSortClick(event2, column, false);
          } else if (column.filterable && !column.sortable) {
            handleFilterClick(event2);
          }
          parent == null ? void 0 : parent.emit("header-click", column, event2);
        };
        const handleHeaderContextMenu = (event2, column) => {
          parent == null ? void 0 : parent.emit("header-contextmenu", column, event2);
        };
        const draggingColumn = vue.ref(null);
        const dragging = vue.ref(false);
        const dragState = vue.ref({});
        const handleMouseDown = (event2, column) => {
          if (!isClient)
            return;
          if (column.children && column.children.length > 0)
            return;
          if (draggingColumn.value && props.border) {
            dragging.value = true;
            const table = parent;
            emit("set-drag-visible", true);
            const tableEl = table == null ? void 0 : table.vnode.el;
            const tableLeft = tableEl.getBoundingClientRect().left;
            const columnEl = instance.vnode.el.querySelector(`th.${column.id}`);
            const columnRect = columnEl.getBoundingClientRect();
            const minLeft = columnRect.left - tableLeft + 30;
            addClass(columnEl, "noclick");
            dragState.value = {
              startMouseLeft: event2.clientX,
              startLeft: columnRect.right - tableLeft,
              startColumnLeft: columnRect.left - tableLeft,
              tableLeft
            };
            const resizeProxy = table == null ? void 0 : table.refs.resizeProxy;
            resizeProxy.style.left = `${dragState.value.startLeft}px`;
            document.onselectstart = function() {
              return false;
            };
            document.ondragstart = function() {
              return false;
            };
            const handleMouseMove2 = (event22) => {
              const deltaLeft = event22.clientX - dragState.value.startMouseLeft;
              const proxyLeft = dragState.value.startLeft + deltaLeft;
              resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`;
            };
            const handleMouseUp = () => {
              if (dragging.value) {
                const { startColumnLeft, startLeft } = dragState.value;
                const finalLeft = Number.parseInt(resizeProxy.style.left, 10);
                const columnWidth = finalLeft - startColumnLeft;
                column.width = column.realWidth = columnWidth;
                table == null ? void 0 : table.emit("header-dragend", column.width, startLeft - startColumnLeft, column, event2);
                requestAnimationFrame(() => {
                  props.store.scheduleLayout(false, true);
                });
                document.body.style.cursor = "";
                dragging.value = false;
                draggingColumn.value = null;
                dragState.value = {};
                emit("set-drag-visible", false);
              }
              document.removeEventListener("mousemove", handleMouseMove2);
              document.removeEventListener("mouseup", handleMouseUp);
              document.onselectstart = null;
              document.ondragstart = null;
              setTimeout(() => {
                removeClass(columnEl, "noclick");
              }, 0);
            };
            document.addEventListener("mousemove", handleMouseMove2);
            document.addEventListener("mouseup", handleMouseUp);
          }
        };
        const handleMouseMove = (event2, column) => {
          if (column.children && column.children.length > 0)
            return;
          const el = event2.target;
          if (!isElement(el)) {
            return;
          }
          const target = el == null ? void 0 : el.closest("th");
          if (!column || !column.resizable)
            return;
          if (!dragging.value && props.border) {
            const rect = target.getBoundingClientRect();
            const bodyStyle = document.body.style;
            if (rect.width > 12 && rect.right - event2.pageX < 8) {
              bodyStyle.cursor = "col-resize";
              if (hasClass(target, "is-sortable")) {
                target.style.cursor = "col-resize";
              }
              draggingColumn.value = column;
            } else if (!dragging.value) {
              bodyStyle.cursor = "";
              if (hasClass(target, "is-sortable")) {
                target.style.cursor = "pointer";
              }
              draggingColumn.value = null;
            }
          }
        };
        const handleMouseOut = () => {
          if (!isClient)
            return;
          document.body.style.cursor = "";
        };
        const toggleOrder = ({ order, sortOrders }) => {
          if (order === "")
            return sortOrders[0];
          const index = sortOrders.indexOf(order || null);
          return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];
        };
        const handleSortClick = (event2, column, givenOrder) => {
          var _a2;
          event2.stopPropagation();
          const order = column.order === givenOrder ? null : givenOrder || toggleOrder(column);
          const target = (_a2 = event2.target) == null ? void 0 : _a2.closest("th");
          if (target) {
            if (hasClass(target, "noclick")) {
              removeClass(target, "noclick");
              return;
            }
          }
          if (!column.sortable)
            return;
          const states = props.store.states;
          let sortProp = states.sortProp.value;
          let sortOrder;
          const sortingColumn = states.sortingColumn.value;
          if (sortingColumn !== column || sortingColumn === column && sortingColumn.order === null) {
            if (sortingColumn) {
              sortingColumn.order = null;
            }
            states.sortingColumn.value = column;
            sortProp = column.property;
          }
          if (!order) {
            sortOrder = column.order = null;
          } else {
            sortOrder = column.order = order;
          }
          states.sortProp.value = sortProp;
          states.sortOrder.value = sortOrder;
          parent == null ? void 0 : parent.store.commit("changeSortCondition");
        };
        return {
          handleHeaderClick,
          handleHeaderContextMenu,
          handleMouseDown,
          handleMouseMove,
          handleMouseOut,
          handleSortClick,
          handleFilterClick
        };
      }
      function useStyle$2(props) {
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const ns = useNamespace("table");
        const getHeaderRowStyle = (rowIndex) => {
          const headerRowStyle = parent == null ? void 0 : parent.props.headerRowStyle;
          if (typeof headerRowStyle === "function") {
            return headerRowStyle.call(null, { rowIndex });
          }
          return headerRowStyle;
        };
        const getHeaderRowClass = (rowIndex) => {
          const classes = [];
          const headerRowClassName = parent == null ? void 0 : parent.props.headerRowClassName;
          if (typeof headerRowClassName === "string") {
            classes.push(headerRowClassName);
          } else if (typeof headerRowClassName === "function") {
            classes.push(headerRowClassName.call(null, { rowIndex }));
          }
          return classes.join(" ");
        };
        const getHeaderCellStyle = (rowIndex, columnIndex, row, column) => {
          var _a2;
          let headerCellStyles = (_a2 = parent == null ? void 0 : parent.props.headerCellStyle) != null ? _a2 : {};
          if (typeof headerCellStyles === "function") {
            headerCellStyles = headerCellStyles.call(null, {
              rowIndex,
              columnIndex,
              row,
              column
            });
          }
          const fixedStyle = getFixedColumnOffset(columnIndex, column.fixed, props.store, row);
          ensurePosition(fixedStyle, "left");
          ensurePosition(fixedStyle, "right");
          return Object.assign({}, headerCellStyles, fixedStyle);
        };
        const getHeaderCellClass = (rowIndex, columnIndex, row, column) => {
          const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, column.fixed, props.store, row);
          const classes = [
            column.id,
            column.order,
            column.headerAlign,
            column.className,
            column.labelClassName,
            ...fixedClasses
          ];
          if (!column.children) {
            classes.push("is-leaf");
          }
          if (column.sortable) {
            classes.push("is-sortable");
          }
          const headerCellClassName = parent == null ? void 0 : parent.props.headerCellClassName;
          if (typeof headerCellClassName === "string") {
            classes.push(headerCellClassName);
          } else if (typeof headerCellClassName === "function") {
            classes.push(headerCellClassName.call(null, {
              rowIndex,
              columnIndex,
              row,
              column
            }));
          }
          classes.push(ns.e("cell"));
          return classes.filter((className) => Boolean(className)).join(" ");
        };
        return {
          getHeaderRowStyle,
          getHeaderRowClass,
          getHeaderCellStyle,
          getHeaderCellClass
        };
      }
      const getAllColumns = (columns) => {
        const result = [];
        columns.forEach((column) => {
          if (column.children) {
            result.push(column);
            result.push.apply(result, getAllColumns(column.children));
          } else {
            result.push(column);
          }
        });
        return result;
      };
      const convertToRows = (originColumns) => {
        let maxLevel = 1;
        const traverse = (column, parent) => {
          if (parent) {
            column.level = parent.level + 1;
            if (maxLevel < column.level) {
              maxLevel = column.level;
            }
          }
          if (column.children) {
            let colSpan = 0;
            column.children.forEach((subColumn) => {
              traverse(subColumn, column);
              colSpan += subColumn.colSpan;
            });
            column.colSpan = colSpan;
          } else {
            column.colSpan = 1;
          }
        };
        originColumns.forEach((column) => {
          column.level = 1;
          traverse(column, void 0);
        });
        const rows = [];
        for (let i = 0; i < maxLevel; i++) {
          rows.push([]);
        }
        const allColumns = getAllColumns(originColumns);
        allColumns.forEach((column) => {
          if (!column.children) {
            column.rowSpan = maxLevel - column.level + 1;
          } else {
            column.rowSpan = 1;
            column.children.forEach((col) => col.isSubColumn = true);
          }
          rows[column.level - 1].push(column);
        });
        return rows;
      };
      function useUtils$1(props) {
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const columnRows = vue.computed(() => {
          return convertToRows(props.store.states.originColumns.value);
        });
        const isGroup = vue.computed(() => {
          const result = columnRows.value.length > 1;
          if (result && parent) {
            parent.state.isGroup.value = true;
          }
          return result;
        });
        const toggleAllSelection = (event2) => {
          event2.stopPropagation();
          parent == null ? void 0 : parent.store.commit("toggleAllSelection");
        };
        return {
          isGroup,
          toggleAllSelection,
          columnRows
        };
      }
      var TableHeader = vue.defineComponent({
        name: "ElTableHeader",
        components: {
          ElCheckbox
        },
        props: {
          fixed: {
            type: String,
            default: ""
          },
          store: {
            required: true,
            type: Object
          },
          border: Boolean,
          defaultSort: {
            type: Object,
            default: () => {
              return {
                prop: "",
                order: ""
              };
            }
          }
        },
        setup(props, { emit }) {
          const instance = vue.getCurrentInstance();
          const parent = vue.inject(TABLE_INJECTION_KEY);
          const ns = useNamespace("table");
          const filterPanels = vue.ref({});
          const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);
          vue.onMounted(async () => {
            await vue.nextTick();
            await vue.nextTick();
            const { prop, order } = props.defaultSort;
            parent == null ? void 0 : parent.store.commit("sort", { prop, order, init: true });
          });
          const {
            handleHeaderClick,
            handleHeaderContextMenu,
            handleMouseDown,
            handleMouseMove,
            handleMouseOut,
            handleSortClick,
            handleFilterClick
          } = useEvent(props, emit);
          const {
            getHeaderRowStyle,
            getHeaderRowClass,
            getHeaderCellStyle,
            getHeaderCellClass
          } = useStyle$2(props);
          const { isGroup, toggleAllSelection, columnRows } = useUtils$1(props);
          instance.state = {
            onColumnsChange,
            onScrollableChange
          };
          instance.filterPanels = filterPanels;
          return {
            ns,
            filterPanels,
            onColumnsChange,
            onScrollableChange,
            columnRows,
            getHeaderRowClass,
            getHeaderRowStyle,
            getHeaderCellClass,
            getHeaderCellStyle,
            handleHeaderClick,
            handleHeaderContextMenu,
            handleMouseDown,
            handleMouseMove,
            handleMouseOut,
            handleSortClick,
            handleFilterClick,
            isGroup,
            toggleAllSelection
          };
        },
        render() {
          const {
            ns,
            isGroup,
            columnRows,
            getHeaderCellStyle,
            getHeaderCellClass,
            getHeaderRowClass,
            getHeaderRowStyle,
            handleHeaderClick,
            handleHeaderContextMenu,
            handleMouseDown,
            handleMouseMove,
            handleSortClick,
            handleMouseOut,
            store,
            $parent
          } = this;
          let rowSpan = 1;
          return vue.h("thead", {
            class: { [ns.is("group")]: isGroup }
          }, columnRows.map((subColumns, rowIndex) => vue.h("tr", {
            class: getHeaderRowClass(rowIndex),
            key: rowIndex,
            style: getHeaderRowStyle(rowIndex)
          }, subColumns.map((column, cellIndex) => {
            if (column.rowSpan > rowSpan) {
              rowSpan = column.rowSpan;
            }
            return vue.h("th", {
              class: getHeaderCellClass(rowIndex, cellIndex, subColumns, column),
              colspan: column.colSpan,
              key: `${column.id}-thead`,
              rowspan: column.rowSpan,
              style: getHeaderCellStyle(rowIndex, cellIndex, subColumns, column),
              onClick: ($event) => handleHeaderClick($event, column),
              onContextmenu: ($event) => handleHeaderContextMenu($event, column),
              onMousedown: ($event) => handleMouseDown($event, column),
              onMousemove: ($event) => handleMouseMove($event, column),
              onMouseout: handleMouseOut
            }, [
              vue.h("div", {
                class: [
                  "cell",
                  column.filteredValue && column.filteredValue.length > 0 ? "highlight" : ""
                ]
              }, [
                column.renderHeader ? column.renderHeader({
                  column,
                  $index: cellIndex,
                  store,
                  _self: $parent
                }) : column.label,
                column.sortable && vue.h("span", {
                  onClick: ($event) => handleSortClick($event, column),
                  class: "caret-wrapper"
                }, [
                  vue.h("i", {
                    onClick: ($event) => handleSortClick($event, column, "ascending"),
                    class: "sort-caret ascending"
                  }),
                  vue.h("i", {
                    onClick: ($event) => handleSortClick($event, column, "descending"),
                    class: "sort-caret descending"
                  })
                ]),
                column.filterable && vue.h(FilterPanel, {
                  store,
                  placement: column.filterPlacement || "bottom-start",
                  column,
                  upDataColumn: (key2, value) => {
                    column[key2] = value;
                  }
                })
              ])
            ]);
          }))));
        }
      });
      function useEvents(props) {
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const tooltipContent = vue.ref("");
        const tooltipTrigger = vue.ref(vue.h("div"));
        const handleEvent = (event2, row, name) => {
          var _a2;
          const table = parent;
          const cell = getCell(event2);
          let column;
          const namespace = (_a2 = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a2.dataset.prefix;
          if (cell) {
            column = getColumnByCell({
              columns: props.store.states.columns.value
            }, cell, namespace);
            if (column) {
              table == null ? void 0 : table.emit(`cell-${name}`, row, column, cell, event2);
            }
          }
          table == null ? void 0 : table.emit(`row-${name}`, row, column, event2);
        };
        const handleDoubleClick = (event2, row) => {
          handleEvent(event2, row, "dblclick");
        };
        const handleClick = (event2, row) => {
          props.store.commit("setCurrentRow", row);
          handleEvent(event2, row, "click");
        };
        const handleContextMenu = (event2, row) => {
          handleEvent(event2, row, "contextmenu");
        };
        const handleMouseEnter = debounce((index) => {
          props.store.commit("setHoverRow", index);
        }, 30);
        const handleMouseLeave = debounce(() => {
          props.store.commit("setHoverRow", null);
        }, 30);
        const getPadding = (el) => {
          const style = window.getComputedStyle(el, null);
          const paddingLeft = Number.parseInt(style.paddingLeft, 10) || 0;
          const paddingRight = Number.parseInt(style.paddingRight, 10) || 0;
          const paddingTop = Number.parseInt(style.paddingTop, 10) || 0;
          const paddingBottom = Number.parseInt(style.paddingBottom, 10) || 0;
          return {
            left: paddingLeft,
            right: paddingRight,
            top: paddingTop,
            bottom: paddingBottom
          };
        };
        const toggleRowClassByCell = (rowSpan, event2, toggle) => {
          let node = event2.target.parentNode;
          while (rowSpan > 1) {
            node = node == null ? void 0 : node.nextSibling;
            if (!node || node.nodeName !== "TR")
              break;
            toggle(node, "hover-row hover-fixed-row");
            rowSpan--;
          }
        };
        const handleCellMouseEnter = (event2, row, tooltipOptions) => {
          var _a2;
          const table = parent;
          const cell = getCell(event2);
          const namespace = (_a2 = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a2.dataset.prefix;
          if (cell) {
            const column = getColumnByCell({
              columns: props.store.states.columns.value
            }, cell, namespace);
            if (cell.rowSpan > 1) {
              toggleRowClassByCell(cell.rowSpan, event2, addClass);
            }
            const hoverState = table.hoverState = { cell, column, row };
            table == null ? void 0 : table.emit("cell-mouse-enter", hoverState.row, hoverState.column, hoverState.cell, event2);
          }
          if (!tooltipOptions) {
            return;
          }
          const cellChild = event2.target.querySelector(".cell");
          if (!(hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length)) {
            return;
          }
          const range2 = document.createRange();
          range2.setStart(cellChild, 0);
          range2.setEnd(cellChild, cellChild.childNodes.length);
          let rangeWidth = range2.getBoundingClientRect().width;
          let rangeHeight = range2.getBoundingClientRect().height;
          const offsetWidth = rangeWidth - Math.floor(rangeWidth);
          if (offsetWidth < 1e-3) {
            rangeWidth = Math.floor(rangeWidth);
          }
          const offsetHeight = rangeHeight - Math.floor(rangeHeight);
          if (offsetHeight < 1e-3) {
            rangeHeight = Math.floor(rangeHeight);
          }
          const { top, left, right, bottom } = getPadding(cellChild);
          const horizontalPadding = left + right;
          const verticalPadding = top + bottom;
          if (rangeWidth + horizontalPadding > cellChild.offsetWidth || rangeHeight + verticalPadding > cellChild.offsetHeight || cellChild.scrollWidth > cellChild.offsetWidth) {
            createTablePopper(tooltipOptions, cell.innerText || cell.textContent, cell, table);
          }
        };
        const handleCellMouseLeave = (event2) => {
          const cell = getCell(event2);
          if (!cell)
            return;
          if (cell.rowSpan > 1) {
            toggleRowClassByCell(cell.rowSpan, event2, removeClass);
          }
          const oldHoverState = parent == null ? void 0 : parent.hoverState;
          parent == null ? void 0 : parent.emit("cell-mouse-leave", oldHoverState == null ? void 0 : oldHoverState.row, oldHoverState == null ? void 0 : oldHoverState.column, oldHoverState == null ? void 0 : oldHoverState.cell, event2);
        };
        return {
          handleDoubleClick,
          handleClick,
          handleContextMenu,
          handleMouseEnter,
          handleMouseLeave,
          handleCellMouseEnter,
          handleCellMouseLeave,
          tooltipContent,
          tooltipTrigger
        };
      }
      function useStyles(props) {
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const ns = useNamespace("table");
        const getRowStyle = (row, rowIndex) => {
          const rowStyle = parent == null ? void 0 : parent.props.rowStyle;
          if (typeof rowStyle === "function") {
            return rowStyle.call(null, {
              row,
              rowIndex
            });
          }
          return rowStyle || null;
        };
        const getRowClass = (row, rowIndex) => {
          const classes = [ns.e("row")];
          if ((parent == null ? void 0 : parent.props.highlightCurrentRow) && row === props.store.states.currentRow.value) {
            classes.push("current-row");
          }
          if (props.stripe && rowIndex % 2 === 1) {
            classes.push(ns.em("row", "striped"));
          }
          const rowClassName = parent == null ? void 0 : parent.props.rowClassName;
          if (typeof rowClassName === "string") {
            classes.push(rowClassName);
          } else if (typeof rowClassName === "function") {
            classes.push(rowClassName.call(null, {
              row,
              rowIndex
            }));
          }
          return classes;
        };
        const getCellStyle = (rowIndex, columnIndex, row, column) => {
          const cellStyle = parent == null ? void 0 : parent.props.cellStyle;
          let cellStyles = cellStyle != null ? cellStyle : {};
          if (typeof cellStyle === "function") {
            cellStyles = cellStyle.call(null, {
              rowIndex,
              columnIndex,
              row,
              column
            });
          }
          const fixedStyle = getFixedColumnOffset(columnIndex, props == null ? void 0 : props.fixed, props.store);
          ensurePosition(fixedStyle, "left");
          ensurePosition(fixedStyle, "right");
          return Object.assign({}, cellStyles, fixedStyle);
        };
        const getCellClass = (rowIndex, columnIndex, row, column, offset) => {
          const fixedClasses = getFixedColumnsClass(ns.b(), columnIndex, props == null ? void 0 : props.fixed, props.store, void 0, offset);
          const classes = [column.id, column.align, column.className, ...fixedClasses];
          const cellClassName = parent == null ? void 0 : parent.props.cellClassName;
          if (typeof cellClassName === "string") {
            classes.push(cellClassName);
          } else if (typeof cellClassName === "function") {
            classes.push(cellClassName.call(null, {
              rowIndex,
              columnIndex,
              row,
              column
            }));
          }
          classes.push(ns.e("cell"));
          return classes.filter((className) => Boolean(className)).join(" ");
        };
        const getSpan = (row, column, rowIndex, columnIndex) => {
          let rowspan = 1;
          let colspan = 1;
          const fn2 = parent == null ? void 0 : parent.props.spanMethod;
          if (typeof fn2 === "function") {
            const result = fn2({
              row,
              column,
              rowIndex,
              columnIndex
            });
            if (Array.isArray(result)) {
              rowspan = result[0];
              colspan = result[1];
            } else if (typeof result === "object") {
              rowspan = result.rowspan;
              colspan = result.colspan;
            }
          }
          return { rowspan, colspan };
        };
        const getColspanRealWidth = (columns, colspan, index) => {
          if (colspan < 1) {
            return columns[index].realWidth;
          }
          const widthArr = columns.map(({ realWidth, width }) => realWidth || width).slice(index, index + colspan);
          return Number(widthArr.reduce((acc, width) => Number(acc) + Number(width), -1));
        };
        return {
          getRowStyle,
          getRowClass,
          getCellStyle,
          getCellClass,
          getSpan,
          getColspanRealWidth
        };
      }
      function useRender$1(props) {
        const parent = vue.inject(TABLE_INJECTION_KEY);
        const ns = useNamespace("table");
        const {
          handleDoubleClick,
          handleClick,
          handleContextMenu,
          handleMouseEnter,
          handleMouseLeave,
          handleCellMouseEnter,
          handleCellMouseLeave,
          tooltipContent,
          tooltipTrigger
        } = useEvents(props);
        const {
          getRowStyle,
          getRowClass,
          getCellStyle,
          getCellClass,
          getSpan,
          getColspanRealWidth
        } = useStyles(props);
        const firstDefaultColumnIndex = vue.computed(() => {
          return props.store.states.columns.value.findIndex(({ type }) => type === "default");
        });
        const getKeyOfRow = (row, index) => {
          const rowKey = parent.props.rowKey;
          if (rowKey) {
            return getRowIdentity(row, rowKey);
          }
          return index;
        };
        const rowRender = (row, $index, treeRowData, expanded = false) => {
          const { tooltipEffect, tooltipOptions, store } = props;
          const { indent, columns } = store.states;
          const rowClasses = getRowClass(row, $index);
          let display = true;
          if (treeRowData) {
            rowClasses.push(ns.em("row", `level-${treeRowData.level}`));
            display = treeRowData.display;
          }
          const displayStyle = display ? null : {
            display: "none"
          };
          return vue.h("tr", {
            style: [displayStyle, getRowStyle(row, $index)],
            class: rowClasses,
            key: getKeyOfRow(row, $index),
            onDblclick: ($event) => handleDoubleClick($event, row),
            onClick: ($event) => handleClick($event, row),
            onContextmenu: ($event) => handleContextMenu($event, row),
            onMouseenter: () => handleMouseEnter($index),
            onMouseleave: handleMouseLeave
          }, columns.value.map((column, cellIndex) => {
            const { rowspan, colspan } = getSpan(row, column, $index, cellIndex);
            if (!rowspan || !colspan) {
              return null;
            }
            const columnData = Object.assign({}, column);
            columnData.realWidth = getColspanRealWidth(columns.value, colspan, cellIndex);
            const data = {
              store: props.store,
              _self: props.context || parent,
              column: columnData,
              row,
              $index,
              cellIndex,
              expanded
            };
            if (cellIndex === firstDefaultColumnIndex.value && treeRowData) {
              data.treeNode = {
                indent: treeRowData.level * indent.value,
                level: treeRowData.level
              };
              if (typeof treeRowData.expanded === "boolean") {
                data.treeNode.expanded = treeRowData.expanded;
                if ("loading" in treeRowData) {
                  data.treeNode.loading = treeRowData.loading;
                }
                if ("noLazyChildren" in treeRowData) {
                  data.treeNode.noLazyChildren = treeRowData.noLazyChildren;
                }
              }
            }
            const baseKey = `${$index},${cellIndex}`;
            const patchKey = columnData.columnKey || columnData.rawColumnKey || "";
            const tdChildren = cellChildren(cellIndex, column, data);
            const mergedTooltipOptions = column.showOverflowTooltip && merge$1({
              effect: tooltipEffect
            }, tooltipOptions, column.showOverflowTooltip);
            return vue.h("td", {
              style: getCellStyle($index, cellIndex, row, column),
              class: getCellClass($index, cellIndex, row, column, colspan - 1),
              key: `${patchKey}${baseKey}`,
              rowspan,
              colspan,
              onMouseenter: ($event) => handleCellMouseEnter($event, row, mergedTooltipOptions),
              onMouseleave: handleCellMouseLeave
            }, [tdChildren]);
          }));
        };
        const cellChildren = (cellIndex, column, data) => {
          return column.renderCell(data);
        };
        const wrappedRowRender = (row, $index) => {
          const store = props.store;
          const { isRowExpanded, assertRowKey } = store;
          const { treeData, lazyTreeNodeMap, childrenColumnName, rowKey } = store.states;
          const columns = store.states.columns.value;
          const hasExpandColumn = columns.some(({ type }) => type === "expand");
          if (hasExpandColumn) {
            const expanded = isRowExpanded(row);
            const tr = rowRender(row, $index, void 0, expanded);
            const renderExpanded = parent.renderExpanded;
            if (expanded) {
              if (!renderExpanded) {
                console.error("[Element Error]renderExpanded is required.");
                return tr;
              }
              return [
                [
                  tr,
                  vue.h("tr", {
                    key: `expanded-row__${tr.key}`
                  }, [
                    vue.h("td", {
                      colspan: columns.length,
                      class: `${ns.e("cell")} ${ns.e("expanded-cell")}`
                    }, [renderExpanded({ row, $index, store, expanded })])
                  ])
                ]
              ];
            } else {
              return [[tr]];
            }
          } else if (Object.keys(treeData.value).length) {
            assertRowKey();
            const key2 = getRowIdentity(row, rowKey.value);
            let cur = treeData.value[key2];
            let treeRowData = null;
            if (cur) {
              treeRowData = {
                expanded: cur.expanded,
                level: cur.level,
                display: true
              };
              if (typeof cur.lazy === "boolean") {
                if (typeof cur.loaded === "boolean" && cur.loaded) {
                  treeRowData.noLazyChildren = !(cur.children && cur.children.length);
                }
                treeRowData.loading = cur.loading;
              }
            }
            const tmp = [rowRender(row, $index, treeRowData)];
            if (cur) {
              let i = 0;
              const traverse = (children, parent2) => {
                if (!(children && children.length && parent2))
                  return;
                children.forEach((node) => {
                  const innerTreeRowData = {
                    display: parent2.display && parent2.expanded,
                    level: parent2.level + 1,
                    expanded: false,
                    noLazyChildren: false,
                    loading: false
                  };
                  const childKey = getRowIdentity(node, rowKey.value);
                  if (childKey === void 0 || childKey === null) {
                    throw new Error("For nested data item, row-key is required.");
                  }
                  cur = { ...treeData.value[childKey] };
                  if (cur) {
                    innerTreeRowData.expanded = cur.expanded;
                    cur.level = cur.level || innerTreeRowData.level;
                    cur.display = !!(cur.expanded && innerTreeRowData.display);
                    if (typeof cur.lazy === "boolean") {
                      if (typeof cur.loaded === "boolean" && cur.loaded) {
                        innerTreeRowData.noLazyChildren = !(cur.children && cur.children.length);
                      }
                      innerTreeRowData.loading = cur.loading;
                    }
                  }
                  i++;
                  tmp.push(rowRender(node, $index + i, innerTreeRowData));
                  if (cur) {
                    const nodes2 = lazyTreeNodeMap.value[childKey] || node[childrenColumnName.value];
                    traverse(nodes2, cur);
                  }
                });
              };
              cur.display = true;
              const nodes = lazyTreeNodeMap.value[key2] || row[childrenColumnName.value];
              traverse(nodes, cur);
            }
            return tmp;
          } else {
            return rowRender(row, $index, void 0);
          }
        };
        return {
          wrappedRowRender,
          tooltipContent,
          tooltipTrigger
        };
      }
      const defaultProps$2 = {
        store: {
          required: true,
          type: Object
        },
        stripe: Boolean,
        tooltipEffect: String,
        tooltipOptions: {
          type: Object
        },
        context: {
          default: () => ({}),
          type: Object
        },
        rowClassName: [String, Function],
        rowStyle: [Object, Function],
        fixed: {
          type: String,
          default: ""
        },
        highlight: Boolean
      };
      var TableBody = vue.defineComponent({
        name: "ElTableBody",
        props: defaultProps$2,
        setup(props) {
          const instance = vue.getCurrentInstance();
          const parent = vue.inject(TABLE_INJECTION_KEY);
          const ns = useNamespace("table");
          const { wrappedRowRender, tooltipContent, tooltipTrigger } = useRender$1(props);
          const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent);
          const hoveredCellList = [];
          vue.watch(props.store.states.hoverRow, (newVal, oldVal) => {
            var _a2;
            const el = instance == null ? void 0 : instance.vnode.el;
            const rows = Array.from((el == null ? void 0 : el.children) || []).filter((e) => e == null ? void 0 : e.classList.contains(`${ns.e("row")}`));
            let rowNum = newVal;
            const childNodes = (_a2 = rows[rowNum]) == null ? void 0 : _a2.childNodes;
            if (childNodes == null ? void 0 : childNodes.length) {
              const indexes = Array.from(childNodes).reduce((acc, item, index) => {
                var _a22, _b;
                const pre = ((_a22 = childNodes[index - 1]) == null ? void 0 : _a22.colSpan) > 1;
                const next = ((_b = childNodes[index + 1]) == null ? void 0 : _b.colSpan) > 1;
                if (item.nodeName !== "TD" && !pre && !next) {
                  acc.push(index);
                }
                return acc;
              }, []);
              indexes.forEach((rowIndex) => {
                var _a22;
                while (rowNum > 0) {
                  const preChildNodes = (_a22 = rows[rowNum - 1]) == null ? void 0 : _a22.childNodes;
                  if (preChildNodes[rowIndex] && preChildNodes[rowIndex].nodeName === "TD") {
                    addClass(preChildNodes[rowIndex], "hover-cell");
                    hoveredCellList.push(preChildNodes[rowIndex]);
                    break;
                  }
                  rowNum--;
                }
              });
            } else {
              hoveredCellList.forEach((item) => removeClass(item, "hover-cell"));
              hoveredCellList.length = 0;
            }
            if (!props.store.states.isComplex.value || !isClient)
              return;
            rAF(() => {
              const oldRow = rows[oldVal];
              const newRow = rows[newVal];
              if (oldRow && !oldRow.classList.contains("hover-fixed-row")) {
                removeClass(oldRow, "hover-row");
              }
              if (newRow) {
                addClass(newRow, "hover-row");
              }
            });
          });
          vue.onUnmounted(() => {
            var _a2;
            (_a2 = removePopper) == null ? void 0 : _a2();
          });
          return {
            ns,
            onColumnsChange,
            onScrollableChange,
            wrappedRowRender,
            tooltipContent,
            tooltipTrigger
          };
        },
        render() {
          const { wrappedRowRender, store } = this;
          const data = store.states.data.value || [];
          return vue.h("tbody", { tabIndex: -1 }, [
            data.reduce((acc, row) => {
              return acc.concat(wrappedRowRender(row, acc.length));
            }, [])
          ]);
        }
      });
      function useMapState() {
        const table = vue.inject(TABLE_INJECTION_KEY);
        const store = table == null ? void 0 : table.store;
        const leftFixedLeafCount = vue.computed(() => {
          return store.states.fixedLeafColumnsLength.value;
        });
        const rightFixedLeafCount = vue.computed(() => {
          return store.states.rightFixedColumns.value.length;
        });
        const columnsCount = vue.computed(() => {
          return store.states.columns.value.length;
        });
        const leftFixedCount = vue.computed(() => {
          return store.states.fixedColumns.value.length;
        });
        const rightFixedCount = vue.computed(() => {
          return store.states.rightFixedColumns.value.length;
        });
        return {
          leftFixedLeafCount,
          rightFixedLeafCount,
          columnsCount,
          leftFixedCount,
          rightFixedCount,
          columns: store.states.columns
        };
      }
      function useStyle$1(props) {
        const { columns } = useMapState();
        const ns = useNamespace("table");
        const getCellClasses = (columns2, cellIndex) => {
          const column = columns2[cellIndex];
          const classes = [
            ns.e("cell"),
            column.id,
            column.align,
            column.labelClassName,
            ...getFixedColumnsClass(ns.b(), cellIndex, column.fixed, props.store)
          ];
          if (column.className) {
            classes.push(column.className);
          }
          if (!column.children) {
            classes.push(ns.is("leaf"));
          }
          return classes;
        };
        const getCellStyles = (column, cellIndex) => {
          const fixedStyle = getFixedColumnOffset(cellIndex, column.fixed, props.store);
          ensurePosition(fixedStyle, "left");
          ensurePosition(fixedStyle, "right");
          return fixedStyle;
        };
        return {
          getCellClasses,
          getCellStyles,
          columns
        };
      }
      var TableFooter = vue.defineComponent({
        name: "ElTableFooter",
        props: {
          fixed: {
            type: String,
            default: ""
          },
          store: {
            required: true,
            type: Object
          },
          summaryMethod: Function,
          sumText: String,
          border: Boolean,
          defaultSort: {
            type: Object,
            default: () => {
              return {
                prop: "",
                order: ""
              };
            }
          }
        },
        setup(props) {
          const { getCellClasses, getCellStyles, columns } = useStyle$1(props);
          const ns = useNamespace("table");
          return {
            ns,
            getCellClasses,
            getCellStyles,
            columns
          };
        },
        render() {
          const { columns, getCellStyles, getCellClasses, summaryMethod, sumText } = this;
          const data = this.store.states.data.value;
          let sums = [];
          if (summaryMethod) {
            sums = summaryMethod({
              columns,
              data
            });
          } else {
            columns.forEach((column, index) => {
              if (index === 0) {
                sums[index] = sumText;
                return;
              }
              const values = data.map((item) => Number(item[column.property]));
              const precisions = [];
              let notNumber = true;
              values.forEach((value) => {
                if (!Number.isNaN(+value)) {
                  notNumber = false;
                  const decimal = `${value}`.split(".")[1];
                  precisions.push(decimal ? decimal.length : 0);
                }
              });
              const precision = Math.max.apply(null, precisions);
              if (!notNumber) {
                sums[index] = values.reduce((prev, curr) => {
                  const value = Number(curr);
                  if (!Number.isNaN(+value)) {
                    return Number.parseFloat((prev + curr).toFixed(Math.min(precision, 20)));
                  } else {
                    return prev;
                  }
                }, 0);
              } else {
                sums[index] = "";
              }
            });
          }
          return vue.h(vue.h("tfoot", [
            vue.h("tr", {}, [
              ...columns.map((column, cellIndex) => vue.h("td", {
                key: cellIndex,
                colspan: column.colSpan,
                rowspan: column.rowSpan,
                class: getCellClasses(columns, cellIndex),
                style: getCellStyles(column, cellIndex)
              }, [
                vue.h("div", {
                  class: ["cell", column.labelClassName]
                }, [sums[cellIndex]])
              ]))
            ])
          ]));
        }
      });
      function useUtils(store) {
        const setCurrentRow = (row) => {
          store.commit("setCurrentRow", row);
        };
        const getSelectionRows = () => {
          return store.getSelectionRows();
        };
        const toggleRowSelection = (row, selected) => {
          store.toggleRowSelection(row, selected, false);
          store.updateAllSelected();
        };
        const clearSelection = () => {
          store.clearSelection();
        };
        const clearFilter = (columnKeys) => {
          store.clearFilter(columnKeys);
        };
        const toggleAllSelection = () => {
          store.commit("toggleAllSelection");
        };
        const toggleRowExpansion = (row, expanded) => {
          store.toggleRowExpansionAdapter(row, expanded);
        };
        const clearSort = () => {
          store.clearSort();
        };
        const sort = (prop, order) => {
          store.commit("sort", { prop, order });
        };
        return {
          setCurrentRow,
          getSelectionRows,
          toggleRowSelection,
          clearSelection,
          clearFilter,
          toggleAllSelection,
          toggleRowExpansion,
          clearSort,
          sort
        };
      }
      function useStyle(props, layout, store, table) {
        const isHidden2 = vue.ref(false);
        const renderExpanded = vue.ref(null);
        const resizeProxyVisible = vue.ref(false);
        const setDragVisible = (visible) => {
          resizeProxyVisible.value = visible;
        };
        const resizeState = vue.ref({
          width: null,
          height: null,
          headerHeight: null
        });
        const isGroup = vue.ref(false);
        const scrollbarViewStyle = {
          display: "inline-block",
          verticalAlign: "middle"
        };
        const tableWidth = vue.ref();
        const tableScrollHeight = vue.ref(0);
        const bodyScrollHeight = vue.ref(0);
        const headerScrollHeight = vue.ref(0);
        const footerScrollHeight = vue.ref(0);
        const appendScrollHeight = vue.ref(0);
        vue.watchEffect(() => {
          layout.setHeight(props.height);
        });
        vue.watchEffect(() => {
          layout.setMaxHeight(props.maxHeight);
        });
        vue.watch(() => [props.currentRowKey, store.states.rowKey], ([currentRowKey, rowKey]) => {
          if (!vue.unref(rowKey) || !vue.unref(currentRowKey))
            return;
          store.setCurrentRowKey(`${currentRowKey}`);
        }, {
          immediate: true
        });
        vue.watch(() => props.data, (data) => {
          table.store.commit("setData", data);
        }, {
          immediate: true,
          deep: true
        });
        vue.watchEffect(() => {
          if (props.expandRowKeys) {
            store.setExpandRowKeysAdapter(props.expandRowKeys);
          }
        });
        const handleMouseLeave = () => {
          table.store.commit("setHoverRow", null);
          if (table.hoverState)
            table.hoverState = null;
        };
        const handleHeaderFooterMousewheel = (event2, data) => {
          const { pixelX, pixelY } = data;
          if (Math.abs(pixelX) >= Math.abs(pixelY)) {
            table.refs.bodyWrapper.scrollLeft += data.pixelX / 5;
          }
        };
        const shouldUpdateHeight = vue.computed(() => {
          return props.height || props.maxHeight || store.states.fixedColumns.value.length > 0 || store.states.rightFixedColumns.value.length > 0;
        });
        const tableBodyStyles = vue.computed(() => {
          return {
            width: layout.bodyWidth.value ? `${layout.bodyWidth.value}px` : ""
          };
        });
        const doLayout = () => {
          if (shouldUpdateHeight.value) {
            layout.updateElsHeight();
          }
          layout.updateColumnsWidth();
          requestAnimationFrame(syncPosition);
        };
        vue.onMounted(async () => {
          await vue.nextTick();
          store.updateColumns();
          bindEvents();
          requestAnimationFrame(doLayout);
          const el = table.vnode.el;
          const tableHeader = table.refs.headerWrapper;
          if (props.flexible && el && el.parentElement) {
            el.parentElement.style.minWidth = "0";
          }
          resizeState.value = {
            width: tableWidth.value = el.offsetWidth,
            height: el.offsetHeight,
            headerHeight: props.showHeader && tableHeader ? tableHeader.offsetHeight : null
          };
          store.states.columns.value.forEach((column) => {
            if (column.filteredValue && column.filteredValue.length) {
              table.store.commit("filterChange", {
                column,
                values: column.filteredValue,
                silent: true
              });
            }
          });
          table.$ready = true;
        });
        const setScrollClassByEl = (el, className) => {
          if (!el)
            return;
          const classList = Array.from(el.classList).filter((item) => !item.startsWith("is-scrolling-"));
          classList.push(layout.scrollX.value ? className : "is-scrolling-none");
          el.className = classList.join(" ");
        };
        const setScrollClass = (className) => {
          const { tableWrapper } = table.refs;
          setScrollClassByEl(tableWrapper, className);
        };
        const hasScrollClass = (className) => {
          const { tableWrapper } = table.refs;
          return !!(tableWrapper && tableWrapper.classList.contains(className));
        };
        const syncPosition = function() {
          if (!table.refs.scrollBarRef)
            return;
          if (!layout.scrollX.value) {
            const scrollingNoneClass = "is-scrolling-none";
            if (!hasScrollClass(scrollingNoneClass)) {
              setScrollClass(scrollingNoneClass);
            }
            return;
          }
          const scrollContainer = table.refs.scrollBarRef.wrapRef;
          if (!scrollContainer)
            return;
          const { scrollLeft, offsetWidth, scrollWidth } = scrollContainer;
          const { headerWrapper, footerWrapper } = table.refs;
          if (headerWrapper)
            headerWrapper.scrollLeft = scrollLeft;
          if (footerWrapper)
            footerWrapper.scrollLeft = scrollLeft;
          const maxScrollLeftPosition = scrollWidth - offsetWidth - 1;
          if (scrollLeft >= maxScrollLeftPosition) {
            setScrollClass("is-scrolling-right");
          } else if (scrollLeft === 0) {
            setScrollClass("is-scrolling-left");
          } else {
            setScrollClass("is-scrolling-middle");
          }
        };
        const bindEvents = () => {
          if (!table.refs.scrollBarRef)
            return;
          if (table.refs.scrollBarRef.wrapRef) {
            useEventListener(table.refs.scrollBarRef.wrapRef, "scroll", syncPosition, {
              passive: true
            });
          }
          if (props.fit) {
            useResizeObserver(table.vnode.el, resizeListener);
          } else {
            useEventListener(window, "resize", resizeListener);
          }
          useResizeObserver(table.refs.bodyWrapper, () => {
            var _a2, _b;
            resizeListener();
            (_b = (_a2 = table.refs) == null ? void 0 : _a2.scrollBarRef) == null ? void 0 : _b.update();
          });
        };
        const resizeListener = () => {
          var _a2, _b, _c, _d;
          const el = table.vnode.el;
          if (!table.$ready || !el)
            return;
          let shouldUpdateLayout = false;
          const {
            width: oldWidth,
            height: oldHeight,
            headerHeight: oldHeaderHeight
          } = resizeState.value;
          const width = tableWidth.value = el.offsetWidth;
          if (oldWidth !== width) {
            shouldUpdateLayout = true;
          }
          const height = el.offsetHeight;
          if ((props.height || shouldUpdateHeight.value) && oldHeight !== height) {
            shouldUpdateLayout = true;
          }
          const tableHeader = props.tableLayout === "fixed" ? table.refs.headerWrapper : (_a2 = table.refs.tableHeaderRef) == null ? void 0 : _a2.$el;
          if (props.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) !== oldHeaderHeight) {
            shouldUpdateLayout = true;
          }
          tableScrollHeight.value = ((_b = table.refs.tableWrapper) == null ? void 0 : _b.scrollHeight) || 0;
          headerScrollHeight.value = (tableHeader == null ? void 0 : tableHeader.scrollHeight) || 0;
          footerScrollHeight.value = ((_c = table.refs.footerWrapper) == null ? void 0 : _c.offsetHeight) || 0;
          appendScrollHeight.value = ((_d = table.refs.appendWrapper) == null ? void 0 : _d.offsetHeight) || 0;
          bodyScrollHeight.value = tableScrollHeight.value - headerScrollHeight.value - footerScrollHeight.value - appendScrollHeight.value;
          if (shouldUpdateLayout) {
            resizeState.value = {
              width,
              height,
              headerHeight: props.showHeader && (tableHeader == null ? void 0 : tableHeader.offsetHeight) || 0
            };
            doLayout();
          }
        };
        const tableSize = useFormSize();
        const bodyWidth = vue.computed(() => {
          const { bodyWidth: bodyWidth_, scrollY, gutterWidth } = layout;
          return bodyWidth_.value ? `${bodyWidth_.value - (scrollY.value ? gutterWidth : 0)}px` : "";
        });
        const tableLayout = vue.computed(() => {
          if (props.maxHeight)
            return "fixed";
          return props.tableLayout;
        });
        const emptyBlockStyle = vue.computed(() => {
          if (props.data && props.data.length)
            return null;
          let height = "100%";
          if (props.height && bodyScrollHeight.value) {
            height = `${bodyScrollHeight.value}px`;
          }
          const width = tableWidth.value;
          return {
            width: width ? `${width}px` : "",
            height
          };
        });
        const tableInnerStyle = vue.computed(() => {
          if (props.height) {
            return {
              height: !Number.isNaN(Number(props.height)) ? `${props.height}px` : props.height
            };
          }
          if (props.maxHeight) {
            return {
              maxHeight: !Number.isNaN(Number(props.maxHeight)) ? `${props.maxHeight}px` : props.maxHeight
            };
          }
          return {};
        });
        const scrollbarStyle = vue.computed(() => {
          if (props.height) {
            return {
              height: "100%"
            };
          }
          if (props.maxHeight) {
            if (!Number.isNaN(Number(props.maxHeight))) {
              return {
                maxHeight: `${props.maxHeight - headerScrollHeight.value - footerScrollHeight.value}px`
              };
            } else {
              return {
                maxHeight: `calc(${props.maxHeight} - ${headerScrollHeight.value + footerScrollHeight.value}px)`
              };
            }
          }
          return {};
        });
        const handleFixedMousewheel = (event2, data) => {
          const bodyWrapper = table.refs.bodyWrapper;
          if (Math.abs(data.spinY) > 0) {
            const currentScrollTop = bodyWrapper.scrollTop;
            if (data.pixelY < 0 && currentScrollTop !== 0) {
              event2.preventDefault();
            }
            if (data.pixelY > 0 && bodyWrapper.scrollHeight - bodyWrapper.clientHeight > currentScrollTop) {
              event2.preventDefault();
            }
            bodyWrapper.scrollTop += Math.ceil(data.pixelY / 5);
          } else {
            bodyWrapper.scrollLeft += Math.ceil(data.pixelX / 5);
          }
        };
        return {
          isHidden: isHidden2,
          renderExpanded,
          setDragVisible,
          isGroup,
          handleMouseLeave,
          handleHeaderFooterMousewheel,
          tableSize,
          emptyBlockStyle,
          handleFixedMousewheel,
          resizeProxyVisible,
          bodyWidth,
          resizeState,
          doLayout,
          tableBodyStyles,
          tableLayout,
          scrollbarViewStyle,
          tableInnerStyle,
          scrollbarStyle
        };
      }
      function useKeyRender(table) {
        const observer = vue.ref();
        const initWatchDom = () => {
          const el = table.vnode.el;
          const columnsWrapper = el.querySelector(".hidden-columns");
          const config = { childList: true, subtree: true };
          const updateOrderFns = table.store.states.updateOrderFns;
          observer.value = new MutationObserver(() => {
            updateOrderFns.forEach((fn2) => fn2());
          });
          observer.value.observe(columnsWrapper, config);
        };
        vue.onMounted(() => {
          initWatchDom();
        });
        vue.onUnmounted(() => {
          var _a2;
          (_a2 = observer.value) == null ? void 0 : _a2.disconnect();
        });
      }
      var defaultProps$1 = {
        data: {
          type: Array,
          default: () => []
        },
        size: useSizeProp,
        width: [String, Number],
        height: [String, Number],
        maxHeight: [String, Number],
        fit: {
          type: Boolean,
          default: true
        },
        stripe: Boolean,
        border: Boolean,
        rowKey: [String, Function],
        showHeader: {
          type: Boolean,
          default: true
        },
        showSummary: Boolean,
        sumText: String,
        summaryMethod: Function,
        rowClassName: [String, Function],
        rowStyle: [Object, Function],
        cellClassName: [String, Function],
        cellStyle: [Object, Function],
        headerRowClassName: [String, Function],
        headerRowStyle: [Object, Function],
        headerCellClassName: [String, Function],
        headerCellStyle: [Object, Function],
        highlightCurrentRow: Boolean,
        currentRowKey: [String, Number],
        emptyText: String,
        expandRowKeys: Array,
        defaultExpandAll: Boolean,
        defaultSort: Object,
        tooltipEffect: String,
        tooltipOptions: Object,
        spanMethod: Function,
        selectOnIndeterminate: {
          type: Boolean,
          default: true
        },
        indent: {
          type: Number,
          default: 16
        },
        treeProps: {
          type: Object,
          default: () => {
            return {
              hasChildren: "hasChildren",
              children: "children"
            };
          }
        },
        lazy: Boolean,
        load: Function,
        style: {
          type: Object,
          default: () => ({})
        },
        className: {
          type: String,
          default: ""
        },
        tableLayout: {
          type: String,
          default: "fixed"
        },
        scrollbarAlwaysOn: Boolean,
        flexible: Boolean,
        showOverflowTooltip: [Boolean, Object]
      };
      function hColgroup(props) {
        const isAuto = props.tableLayout === "auto";
        let columns = props.columns || [];
        if (isAuto) {
          if (columns.every((column) => column.width === void 0)) {
            columns = [];
          }
        }
        const getPropsData = (column) => {
          const propsData = {
            key: `${props.tableLayout}_${column.id}`,
            style: {},
            name: void 0
          };
          if (isAuto) {
            propsData.style = {
              width: `${column.width}px`
            };
          } else {
            propsData.name = column.id;
          }
          return propsData;
        };
        return vue.h("colgroup", {}, columns.map((column) => vue.h("col", getPropsData(column))));
      }
      hColgroup.props = ["columns", "tableLayout"];
      const useScrollbar = () => {
        const scrollBarRef = vue.ref();
        const scrollTo = (options, yCoord) => {
          const scrollbar = scrollBarRef.value;
          if (scrollbar) {
            scrollbar.scrollTo(options, yCoord);
          }
        };
        const setScrollPosition = (position, offset) => {
          const scrollbar = scrollBarRef.value;
          if (scrollbar && isNumber(offset) && ["Top", "Left"].includes(position)) {
            scrollbar[`setScroll${position}`](offset);
          }
        };
        const setScrollTop = (top) => setScrollPosition("Top", top);
        const setScrollLeft = (left) => setScrollPosition("Left", left);
        return {
          scrollBarRef,
          scrollTo,
          setScrollTop,
          setScrollLeft
        };
      };
      let tableIdSeed = 1;
      const _sfc_main$a = vue.defineComponent({
        name: "ElTable",
        directives: {
          Mousewheel
        },
        components: {
          TableHeader,
          TableBody,
          TableFooter,
          ElScrollbar,
          hColgroup
        },
        props: defaultProps$1,
        emits: [
          "select",
          "select-all",
          "selection-change",
          "cell-mouse-enter",
          "cell-mouse-leave",
          "cell-contextmenu",
          "cell-click",
          "cell-dblclick",
          "row-click",
          "row-contextmenu",
          "row-dblclick",
          "header-click",
          "header-contextmenu",
          "sort-change",
          "filter-change",
          "current-change",
          "header-dragend",
          "expand-change"
        ],
        setup(props) {
          const { t } = useLocale();
          const ns = useNamespace("table");
          const table = vue.getCurrentInstance();
          vue.provide(TABLE_INJECTION_KEY, table);
          const store = createStore(table, props);
          table.store = store;
          const layout = new TableLayout({
            store: table.store,
            table,
            fit: props.fit,
            showHeader: props.showHeader
          });
          table.layout = layout;
          const isEmpty = vue.computed(() => (store.states.data.value || []).length === 0);
          const {
            setCurrentRow,
            getSelectionRows,
            toggleRowSelection,
            clearSelection,
            clearFilter,
            toggleAllSelection,
            toggleRowExpansion,
            clearSort,
            sort
          } = useUtils(store);
          const {
            isHidden: isHidden2,
            renderExpanded,
            setDragVisible,
            isGroup,
            handleMouseLeave,
            handleHeaderFooterMousewheel,
            tableSize,
            emptyBlockStyle,
            handleFixedMousewheel,
            resizeProxyVisible,
            bodyWidth,
            resizeState,
            doLayout,
            tableBodyStyles,
            tableLayout,
            scrollbarViewStyle,
            tableInnerStyle,
            scrollbarStyle
          } = useStyle(props, layout, store, table);
          const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } = useScrollbar();
          const debouncedUpdateLayout = debounce(doLayout, 50);
          const tableId = `${ns.namespace.value}-table_${tableIdSeed++}`;
          table.tableId = tableId;
          table.state = {
            isGroup,
            resizeState,
            doLayout,
            debouncedUpdateLayout
          };
          const computedSumText = vue.computed(() => props.sumText || t("el.table.sumText"));
          const computedEmptyText = vue.computed(() => {
            return props.emptyText || t("el.table.emptyText");
          });
          useKeyRender(table);
          return {
            ns,
            layout,
            store,
            handleHeaderFooterMousewheel,
            handleMouseLeave,
            tableId,
            tableSize,
            isHidden: isHidden2,
            isEmpty,
            renderExpanded,
            resizeProxyVisible,
            resizeState,
            isGroup,
            bodyWidth,
            tableBodyStyles,
            emptyBlockStyle,
            debouncedUpdateLayout,
            handleFixedMousewheel,
            setCurrentRow,
            getSelectionRows,
            toggleRowSelection,
            clearSelection,
            clearFilter,
            toggleAllSelection,
            toggleRowExpansion,
            clearSort,
            doLayout,
            sort,
            t,
            setDragVisible,
            context: table,
            computedSumText,
            computedEmptyText,
            tableLayout,
            scrollbarViewStyle,
            tableInnerStyle,
            scrollbarStyle,
            scrollBarRef,
            scrollTo,
            setScrollLeft,
            setScrollTop
          };
        }
      });
      const _hoisted_1$6 = ["data-prefix"];
      const _hoisted_2$4 = {
        ref: "hiddenColumns",
        class: "hidden-columns"
      };
      function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
        const _component_hColgroup = vue.resolveComponent("hColgroup");
        const _component_table_header = vue.resolveComponent("table-header");
        const _component_table_body = vue.resolveComponent("table-body");
        const _component_table_footer = vue.resolveComponent("table-footer");
        const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
        const _directive_mousewheel = vue.resolveDirective("mousewheel");
        return vue.openBlock(), vue.createElementBlock("div", {
          ref: "tableWrapper",
          class: vue.normalizeClass([
            {
              [_ctx.ns.m("fit")]: _ctx.fit,
              [_ctx.ns.m("striped")]: _ctx.stripe,
              [_ctx.ns.m("border")]: _ctx.border || _ctx.isGroup,
              [_ctx.ns.m("hidden")]: _ctx.isHidden,
              [_ctx.ns.m("group")]: _ctx.isGroup,
              [_ctx.ns.m("fluid-height")]: _ctx.maxHeight,
              [_ctx.ns.m("scrollable-x")]: _ctx.layout.scrollX.value,
              [_ctx.ns.m("scrollable-y")]: _ctx.layout.scrollY.value,
              [_ctx.ns.m("enable-row-hover")]: !_ctx.store.states.isComplex.value,
              [_ctx.ns.m("enable-row-transition")]: (_ctx.store.states.data.value || []).length !== 0 && (_ctx.store.states.data.value || []).length < 100,
              "has-footer": _ctx.showSummary
            },
            _ctx.ns.m(_ctx.tableSize),
            _ctx.className,
            _ctx.ns.b(),
            _ctx.ns.m(`layout-${_ctx.tableLayout}`)
          ]),
          style: vue.normalizeStyle(_ctx.style),
          "data-prefix": _ctx.ns.namespace.value,
          onMouseleave: _cache[0] || (_cache[0] = (...args) => _ctx.handleMouseLeave && _ctx.handleMouseLeave(...args))
        }, [
          vue.createElementVNode("div", {
            class: vue.normalizeClass(_ctx.ns.e("inner-wrapper")),
            style: vue.normalizeStyle(_ctx.tableInnerStyle)
          }, [
            vue.createElementVNode("div", _hoisted_2$4, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 512),
            _ctx.showHeader && _ctx.tableLayout === "fixed" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
              key: 0,
              ref: "headerWrapper",
              class: vue.normalizeClass(_ctx.ns.e("header-wrapper"))
            }, [
              vue.createElementVNode("table", {
                ref: "tableHeader",
                class: vue.normalizeClass(_ctx.ns.e("header")),
                style: vue.normalizeStyle(_ctx.tableBodyStyles),
                border: "0",
                cellpadding: "0",
                cellspacing: "0"
              }, [
                vue.createVNode(_component_hColgroup, {
                  columns: _ctx.store.states.columns.value,
                  "table-layout": _ctx.tableLayout
                }, null, 8, ["columns", "table-layout"]),
                vue.createVNode(_component_table_header, {
                  ref: "tableHeaderRef",
                  border: _ctx.border,
                  "default-sort": _ctx.defaultSort,
                  store: _ctx.store,
                  onSetDragVisible: _ctx.setDragVisible
                }, null, 8, ["border", "default-sort", "store", "onSetDragVisible"])
              ], 6)
            ], 2)), [
              [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
            ]) : vue.createCommentVNode("v-if", true),
            vue.createElementVNode("div", {
              ref: "bodyWrapper",
              class: vue.normalizeClass(_ctx.ns.e("body-wrapper"))
            }, [
              vue.createVNode(_component_el_scrollbar, {
                ref: "scrollBarRef",
                "view-style": _ctx.scrollbarViewStyle,
                "wrap-style": _ctx.scrollbarStyle,
                always: _ctx.scrollbarAlwaysOn
              }, {
                default: vue.withCtx(() => [
                  vue.createElementVNode("table", {
                    ref: "tableBody",
                    class: vue.normalizeClass(_ctx.ns.e("body")),
                    cellspacing: "0",
                    cellpadding: "0",
                    border: "0",
                    style: vue.normalizeStyle({
                      width: _ctx.bodyWidth,
                      tableLayout: _ctx.tableLayout
                    })
                  }, [
                    vue.createVNode(_component_hColgroup, {
                      columns: _ctx.store.states.columns.value,
                      "table-layout": _ctx.tableLayout
                    }, null, 8, ["columns", "table-layout"]),
                    _ctx.showHeader && _ctx.tableLayout === "auto" ? (vue.openBlock(), vue.createBlock(_component_table_header, {
                      key: 0,
                      ref: "tableHeaderRef",
                      class: vue.normalizeClass(_ctx.ns.e("body-header")),
                      border: _ctx.border,
                      "default-sort": _ctx.defaultSort,
                      store: _ctx.store,
                      onSetDragVisible: _ctx.setDragVisible
                    }, null, 8, ["class", "border", "default-sort", "store", "onSetDragVisible"])) : vue.createCommentVNode("v-if", true),
                    vue.createVNode(_component_table_body, {
                      context: _ctx.context,
                      highlight: _ctx.highlightCurrentRow,
                      "row-class-name": _ctx.rowClassName,
                      "tooltip-effect": _ctx.tooltipEffect,
                      "tooltip-options": _ctx.tooltipOptions,
                      "row-style": _ctx.rowStyle,
                      store: _ctx.store,
                      stripe: _ctx.stripe
                    }, null, 8, ["context", "highlight", "row-class-name", "tooltip-effect", "tooltip-options", "row-style", "store", "stripe"]),
                    _ctx.showSummary && _ctx.tableLayout === "auto" ? (vue.openBlock(), vue.createBlock(_component_table_footer, {
                      key: 1,
                      class: vue.normalizeClass(_ctx.ns.e("body-footer")),
                      border: _ctx.border,
                      "default-sort": _ctx.defaultSort,
                      store: _ctx.store,
                      "sum-text": _ctx.computedSumText,
                      "summary-method": _ctx.summaryMethod
                    }, null, 8, ["class", "border", "default-sort", "store", "sum-text", "summary-method"])) : vue.createCommentVNode("v-if", true)
                  ], 6),
                  _ctx.isEmpty ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 0,
                    ref: "emptyBlock",
                    style: vue.normalizeStyle(_ctx.emptyBlockStyle),
                    class: vue.normalizeClass(_ctx.ns.e("empty-block"))
                  }, [
                    vue.createElementVNode("span", {
                      class: vue.normalizeClass(_ctx.ns.e("empty-text"))
                    }, [
                      vue.renderSlot(_ctx.$slots, "empty", {}, () => [
                        vue.createTextVNode(vue.toDisplayString(_ctx.computedEmptyText), 1)
                      ])
                    ], 2)
                  ], 6)) : vue.createCommentVNode("v-if", true),
                  _ctx.$slots.append ? (vue.openBlock(), vue.createElementBlock("div", {
                    key: 1,
                    ref: "appendWrapper",
                    class: vue.normalizeClass(_ctx.ns.e("append-wrapper"))
                  }, [
                    vue.renderSlot(_ctx.$slots, "append")
                  ], 2)) : vue.createCommentVNode("v-if", true)
                ]),
                _: 3
              }, 8, ["view-style", "wrap-style", "always"])
            ], 2),
            _ctx.showSummary && _ctx.tableLayout === "fixed" ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
              key: 1,
              ref: "footerWrapper",
              class: vue.normalizeClass(_ctx.ns.e("footer-wrapper"))
            }, [
              vue.createElementVNode("table", {
                class: vue.normalizeClass(_ctx.ns.e("footer")),
                cellspacing: "0",
                cellpadding: "0",
                border: "0",
                style: vue.normalizeStyle(_ctx.tableBodyStyles)
              }, [
                vue.createVNode(_component_hColgroup, {
                  columns: _ctx.store.states.columns.value,
                  "table-layout": _ctx.tableLayout
                }, null, 8, ["columns", "table-layout"]),
                vue.createVNode(_component_table_footer, {
                  border: _ctx.border,
                  "default-sort": _ctx.defaultSort,
                  store: _ctx.store,
                  "sum-text": _ctx.computedSumText,
                  "summary-method": _ctx.summaryMethod
                }, null, 8, ["border", "default-sort", "store", "sum-text", "summary-method"])
              ], 6)
            ], 2)), [
              [vue.vShow, !_ctx.isEmpty],
              [_directive_mousewheel, _ctx.handleHeaderFooterMousewheel]
            ]) : vue.createCommentVNode("v-if", true),
            _ctx.border || _ctx.isGroup ? (vue.openBlock(), vue.createElementBlock("div", {
              key: 2,
              class: vue.normalizeClass(_ctx.ns.e("border-left-patch"))
            }, null, 2)) : vue.createCommentVNode("v-if", true)
          ], 6),
          vue.withDirectives(vue.createElementVNode("div", {
            ref: "resizeProxy",
            class: vue.normalizeClass(_ctx.ns.e("column-resize-proxy"))
          }, null, 2), [
            [vue.vShow, _ctx.resizeProxyVisible]
          ])
        ], 46, _hoisted_1$6);
      }
      var Table = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["render", _sfc_render$2], ["__file", "table.vue"]]);
      const defaultClassNames = {
        selection: "table-column--selection",
        expand: "table__expand-column"
      };
      const cellStarts = {
        default: {
          order: ""
        },
        selection: {
          width: 48,
          minWidth: 48,
          realWidth: 48,
          order: ""
        },
        expand: {
          width: 48,
          minWidth: 48,
          realWidth: 48,
          order: ""
        },
        index: {
          width: 48,
          minWidth: 48,
          realWidth: 48,
          order: ""
        }
      };
      const getDefaultClassName = (type) => {
        return defaultClassNames[type] || "";
      };
      const cellForced = {
        selection: {
          renderHeader({ store, column }) {
            function isDisabled() {
              return store.states.data.value && store.states.data.value.length === 0;
            }
            return vue.h(ElCheckbox, {
              disabled: isDisabled(),
              size: store.states.tableSize.value,
              indeterminate: store.states.selection.value.length > 0 && !store.states.isAllSelected.value,
              "onUpdate:modelValue": store.toggleAllSelection,
              modelValue: store.states.isAllSelected.value,
              ariaLabel: column.label
            });
          },
          renderCell({
            row,
            column,
            store,
            $index
          }) {
            return vue.h(ElCheckbox, {
              disabled: column.selectable ? !column.selectable.call(null, row, $index) : false,
              size: store.states.tableSize.value,
              onChange: () => {
                store.commit("rowSelectedChanged", row);
              },
              onClick: (event2) => event2.stopPropagation(),
              modelValue: store.isSelected(row),
              ariaLabel: column.label
            });
          },
          sortable: false,
          resizable: false
        },
        index: {
          renderHeader({ column }) {
            return column.label || "#";
          },
          renderCell({
            column,
            $index
          }) {
            let i = $index + 1;
            const index = column.index;
            if (typeof index === "number") {
              i = $index + index;
            } else if (typeof index === "function") {
              i = index($index);
            }
            return vue.h("div", {}, [i]);
          },
          sortable: false
        },
        expand: {
          renderHeader({ column }) {
            return column.label || "";
          },
          renderCell({
            row,
            store,
            expanded
          }) {
            const { ns } = store;
            const classes = [ns.e("expand-icon")];
            if (expanded) {
              classes.push(ns.em("expand-icon", "expanded"));
            }
            const callback = function(e) {
              e.stopPropagation();
              store.toggleRowExpansion(row);
            };
            return vue.h("div", {
              class: classes,
              onClick: callback
            }, {
              default: () => {
                return [
                  vue.h(ElIcon, null, {
                    default: () => {
                      return [vue.h(arrow_right_default)];
                    }
                  })
                ];
              }
            });
          },
          sortable: false,
          resizable: false
        }
      };
      function defaultRenderCell({
        row,
        column,
        $index
      }) {
        var _a2;
        const property2 = column.property;
        const value = property2 && getProp(row, property2).value;
        if (column && column.formatter) {
          return column.formatter(row, column, value, $index);
        }
        return ((_a2 = value == null ? void 0 : value.toString) == null ? void 0 : _a2.call(value)) || "";
      }
      function treeCellPrefix({
        row,
        treeNode,
        store
      }, createPlaceholder = false) {
        const { ns } = store;
        if (!treeNode) {
          if (createPlaceholder) {
            return [
              vue.h("span", {
                class: ns.e("placeholder")
              })
            ];
          }
          return null;
        }
        const ele = [];
        const callback = function(e) {
          e.stopPropagation();
          if (treeNode.loading) {
            return;
          }
          store.loadOrToggle(row);
        };
        if (treeNode.indent) {
          ele.push(vue.h("span", {
            class: ns.e("indent"),
            style: { "padding-left": `${treeNode.indent}px` }
          }));
        }
        if (typeof treeNode.expanded === "boolean" && !treeNode.noLazyChildren) {
          const expandClasses = [
            ns.e("expand-icon"),
            treeNode.expanded ? ns.em("expand-icon", "expanded") : ""
          ];
          let icon = arrow_right_default;
          if (treeNode.loading) {
            icon = loading_default;
          }
          ele.push(vue.h("div", {
            class: expandClasses,
            onClick: callback
          }, {
            default: () => {
              return [
                vue.h(ElIcon, { class: { [ns.is("loading")]: treeNode.loading } }, {
                  default: () => [vue.h(icon)]
                })
              ];
            }
          }));
        } else {
          ele.push(vue.h("span", {
            class: ns.e("placeholder")
          }));
        }
        return ele;
      }
      function getAllAliases(props, aliases) {
        return props.reduce((prev, cur) => {
          prev[cur] = cur;
          return prev;
        }, aliases);
      }
      function useWatcher(owner, props_) {
        const instance = vue.getCurrentInstance();
        const registerComplexWatchers = () => {
          const props = ["fixed"];
          const aliases = {
            realWidth: "width",
            realMinWidth: "minWidth"
          };
          const allAliases = getAllAliases(props, aliases);
          Object.keys(allAliases).forEach((key2) => {
            const columnKey = aliases[key2];
            if (hasOwn(props_, columnKey)) {
              vue.watch(() => props_[columnKey], (newVal) => {
                let value = newVal;
                if (columnKey === "width" && key2 === "realWidth") {
                  value = parseWidth(newVal);
                }
                if (columnKey === "minWidth" && key2 === "realMinWidth") {
                  value = parseMinWidth(newVal);
                }
                instance.columnConfig.value[columnKey] = value;
                instance.columnConfig.value[key2] = value;
                const updateColumns = columnKey === "fixed";
                owner.value.store.scheduleLayout(updateColumns);
              });
            }
          });
        };
        const registerNormalWatchers = () => {
          const props = [
            "label",
            "filters",
            "filterMultiple",
            "filteredValue",
            "sortable",
            "index",
            "formatter",
            "className",
            "labelClassName",
            "filterClassName",
            "showOverflowTooltip"
          ];
          const aliases = {
            property: "prop",
            align: "realAlign",
            headerAlign: "realHeaderAlign"
          };
          const allAliases = getAllAliases(props, aliases);
          Object.keys(allAliases).forEach((key2) => {
            const columnKey = aliases[key2];
            if (hasOwn(props_, columnKey)) {
              vue.watch(() => props_[columnKey], (newVal) => {
                instance.columnConfig.value[key2] = newVal;
              });
            }
          });
        };
        return {
          registerComplexWatchers,
          registerNormalWatchers
        };
      }
      function useRender(props, slots, owner) {
        const instance = vue.getCurrentInstance();
        const columnId = vue.ref("");
        const isSubColumn = vue.ref(false);
        const realAlign = vue.ref();
        const realHeaderAlign = vue.ref();
        const ns = useNamespace("table");
        vue.watchEffect(() => {
          realAlign.value = props.align ? `is-${props.align}` : null;
          realAlign.value;
        });
        vue.watchEffect(() => {
          realHeaderAlign.value = props.headerAlign ? `is-${props.headerAlign}` : realAlign.value;
          realHeaderAlign.value;
        });
        const columnOrTableParent = vue.computed(() => {
          let parent = instance.vnode.vParent || instance.parent;
          while (parent && !parent.tableId && !parent.columnId) {
            parent = parent.vnode.vParent || parent.parent;
          }
          return parent;
        });
        const hasTreeColumn = vue.computed(() => {
          const { store } = instance.parent;
          if (!store)
            return false;
          const { treeData } = store.states;
          const treeDataValue = treeData.value;
          return treeDataValue && Object.keys(treeDataValue).length > 0;
        });
        const realWidth = vue.ref(parseWidth(props.width));
        const realMinWidth = vue.ref(parseMinWidth(props.minWidth));
        const setColumnWidth = (column) => {
          if (realWidth.value)
            column.width = realWidth.value;
          if (realMinWidth.value) {
            column.minWidth = realMinWidth.value;
          }
          if (!realWidth.value && realMinWidth.value) {
            column.width = void 0;
          }
          if (!column.minWidth) {
            column.minWidth = 80;
          }
          column.realWidth = Number(column.width === void 0 ? column.minWidth : column.width);
          return column;
        };
        const setColumnForcedProps = (column) => {
          const type = column.type;
          const source = cellForced[type] || {};
          Object.keys(source).forEach((prop) => {
            const value = source[prop];
            if (prop !== "className" && value !== void 0) {
              column[prop] = value;
            }
          });
          const className = getDefaultClassName(type);
          if (className) {
            const forceClass = `${vue.unref(ns.namespace)}-${className}`;
            column.className = column.className ? `${column.className} ${forceClass}` : forceClass;
          }
          return column;
        };
        const checkSubColumn = (children) => {
          if (Array.isArray(children)) {
            children.forEach((child) => check(child));
          } else {
            check(children);
          }
          function check(item) {
            var _a2;
            if (((_a2 = item == null ? void 0 : item.type) == null ? void 0 : _a2.name) === "ElTableColumn") {
              item.vParent = instance;
            }
          }
        };
        const setColumnRenders = (column) => {
          if (props.renderHeader)
            ;
          else if (column.type !== "selection") {
            column.renderHeader = (scope) => {
              instance.columnConfig.value["label"];
              return vue.renderSlot(slots, "header", scope, () => [column.label]);
            };
          }
          let originRenderCell = column.renderCell;
          if (column.type === "expand") {
            column.renderCell = (data) => vue.h("div", {
              class: "cell"
            }, [originRenderCell(data)]);
            owner.value.renderExpanded = (data) => {
              return slots.default ? slots.default(data) : slots.default;
            };
          } else {
            originRenderCell = originRenderCell || defaultRenderCell;
            column.renderCell = (data) => {
              let children = null;
              if (slots.default) {
                const vnodes = slots.default(data);
                children = vnodes.some((v2) => v2.type !== vue.Comment) ? vnodes : originRenderCell(data);
              } else {
                children = originRenderCell(data);
              }
              const { columns } = owner.value.store.states;
              const firstUserColumnIndex = columns.value.findIndex((item) => item.type === "default");
              const shouldCreatePlaceholder = hasTreeColumn.value && data.cellIndex === firstUserColumnIndex;
              const prefix2 = treeCellPrefix(data, shouldCreatePlaceholder);
              const props2 = {
                class: "cell",
                style: {}
              };
              if (column.showOverflowTooltip) {
                props2.class = `${props2.class} ${vue.unref(ns.namespace)}-tooltip`;
                props2.style = {
                  width: `${(data.column.realWidth || Number(data.column.width)) - 1}px`
                };
              }
              checkSubColumn(children);
              return vue.h("div", props2, [prefix2, children]);
            };
          }
          return column;
        };
        const getPropsData = (...propsKey) => {
          return propsKey.reduce((prev, cur) => {
            if (Array.isArray(cur)) {
              cur.forEach((key2) => {
                prev[key2] = props[key2];
              });
            }
            return prev;
          }, {});
        };
        const getColumnElIndex = (children, child) => {
          return Array.prototype.indexOf.call(children, child);
        };
        const updateColumnOrder = () => {
          owner.value.store.commit("updateColumnOrder", instance.columnConfig.value);
        };
        return {
          columnId,
          realAlign,
          isSubColumn,
          realHeaderAlign,
          columnOrTableParent,
          setColumnWidth,
          setColumnForcedProps,
          setColumnRenders,
          getPropsData,
          getColumnElIndex,
          updateColumnOrder
        };
      }
      var defaultProps = {
        type: {
          type: String,
          default: "default"
        },
        label: String,
        className: String,
        labelClassName: String,
        property: String,
        prop: String,
        width: {
          type: [String, Number],
          default: ""
        },
        minWidth: {
          type: [String, Number],
          default: ""
        },
        renderHeader: Function,
        sortable: {
          type: [Boolean, String],
          default: false
        },
        sortMethod: Function,
        sortBy: [String, Function, Array],
        resizable: {
          type: Boolean,
          default: true
        },
        columnKey: String,
        align: String,
        headerAlign: String,
        showOverflowTooltip: {
          type: [Boolean, Object],
          default: void 0
        },
        fixed: [Boolean, String],
        formatter: Function,
        selectable: Function,
        reserveSelection: Boolean,
        filterMethod: Function,
        filteredValue: Array,
        filters: Array,
        filterPlacement: String,
        filterMultiple: {
          type: Boolean,
          default: true
        },
        filterClassName: String,
        index: [Number, Function],
        sortOrders: {
          type: Array,
          default: () => {
            return ["ascending", "descending", null];
          },
          validator: (val) => {
            return val.every((order) => ["ascending", "descending", null].includes(order));
          }
        }
      };
      let columnIdSeed = 1;
      var ElTableColumn$1 = vue.defineComponent({
        name: "ElTableColumn",
        components: {
          ElCheckbox
        },
        props: defaultProps,
        setup(props, { slots }) {
          const instance = vue.getCurrentInstance();
          const columnConfig = vue.ref({});
          const owner = vue.computed(() => {
            let parent2 = instance.parent;
            while (parent2 && !parent2.tableId) {
              parent2 = parent2.parent;
            }
            return parent2;
          });
          const { registerNormalWatchers, registerComplexWatchers } = useWatcher(owner, props);
          const {
            columnId,
            isSubColumn,
            realHeaderAlign,
            columnOrTableParent,
            setColumnWidth,
            setColumnForcedProps,
            setColumnRenders,
            getPropsData,
            getColumnElIndex,
            realAlign,
            updateColumnOrder
          } = useRender(props, slots, owner);
          const parent = columnOrTableParent.value;
          columnId.value = `${parent.tableId || parent.columnId}_column_${columnIdSeed++}`;
          vue.onBeforeMount(() => {
            isSubColumn.value = owner.value !== parent;
            const type = props.type || "default";
            const sortable = props.sortable === "" ? true : props.sortable;
            const showOverflowTooltip = isUndefined(props.showOverflowTooltip) ? parent.props.showOverflowTooltip : props.showOverflowTooltip;
            const defaults = {
              ...cellStarts[type],
              id: columnId.value,
              type,
              property: props.prop || props.property,
              align: realAlign,
              headerAlign: realHeaderAlign,
              showOverflowTooltip,
              filterable: props.filters || props.filterMethod,
              filteredValue: [],
              filterPlacement: "",
              filterClassName: "",
              isColumnGroup: false,
              isSubColumn: false,
              filterOpened: false,
              sortable,
              index: props.index,
              rawColumnKey: instance.vnode.key
            };
            const basicProps = [
              "columnKey",
              "label",
              "className",
              "labelClassName",
              "type",
              "renderHeader",
              "formatter",
              "fixed",
              "resizable"
            ];
            const sortProps = ["sortMethod", "sortBy", "sortOrders"];
            const selectProps = ["selectable", "reserveSelection"];
            const filterProps = [
              "filterMethod",
              "filters",
              "filterMultiple",
              "filterOpened",
              "filteredValue",
              "filterPlacement",
              "filterClassName"
            ];
            let column = getPropsData(basicProps, sortProps, selectProps, filterProps);
            column = mergeOptions(defaults, column);
            const chains = compose(setColumnRenders, setColumnWidth, setColumnForcedProps);
            column = chains(column);
            columnConfig.value = column;
            registerNormalWatchers();
            registerComplexWatchers();
          });
          vue.onMounted(() => {
            var _a2;
            const parent2 = columnOrTableParent.value;
            const children = isSubColumn.value ? parent2.vnode.el.children : (_a2 = parent2.refs.hiddenColumns) == null ? void 0 : _a2.children;
            const getColumnIndex = () => getColumnElIndex(children || [], instance.vnode.el);
            columnConfig.value.getColumnIndex = getColumnIndex;
            const columnIndex = getColumnIndex();
            columnIndex > -1 && owner.value.store.commit("insertColumn", columnConfig.value, isSubColumn.value ? parent2.columnConfig.value : null, updateColumnOrder);
          });
          vue.onBeforeUnmount(() => {
            owner.value.store.commit("removeColumn", columnConfig.value, isSubColumn.value ? parent.columnConfig.value : null, updateColumnOrder);
          });
          instance.columnId = columnId.value;
          instance.columnConfig = columnConfig;
          return;
        },
        render() {
          var _a2, _b, _c;
          try {
            const renderDefault = (_b = (_a2 = this.$slots).default) == null ? void 0 : _b.call(_a2, {
              row: {},
              column: {},
              $index: -1
            });
            const children = [];
            if (Array.isArray(renderDefault)) {
              for (const childNode of renderDefault) {
                if (((_c = childNode.type) == null ? void 0 : _c.name) === "ElTableColumn" || childNode.shapeFlag & 2) {
                  children.push(childNode);
                } else if (childNode.type === vue.Fragment && Array.isArray(childNode.children)) {
                  childNode.children.forEach((vnode2) => {
                    if ((vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 && !isString(vnode2 == null ? void 0 : vnode2.children)) {
                      children.push(vnode2);
                    }
                  });
                }
              }
            }
            const vnode = vue.h("div", children);
            return vnode;
          } catch (e) {
            return vue.h("div", []);
          }
        }
      });
      const ElTable = withInstall(Table, {
        TableColumn: ElTableColumn$1
      });
      const ElTableColumn = withNoopInstall(ElTableColumn$1);
      const textProps = buildProps({
        type: {
          type: String,
          values: ["primary", "success", "info", "warning", "danger", ""],
          default: ""
        },
        size: {
          type: String,
          values: componentSizes,
          default: ""
        },
        truncated: {
          type: Boolean
        },
        lineClamp: {
          type: [String, Number]
        },
        tag: {
          type: String,
          default: "span"
        }
      });
      const __default__$1 = vue.defineComponent({
        name: "ElText"
      });
      const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
        ...__default__$1,
        props: textProps,
        setup(__props) {
          const props = __props;
          const textSize = useFormSize();
          const ns = useNamespace("text");
          const textKls = vue.computed(() => [
            ns.b(),
            ns.m(props.type),
            ns.m(textSize.value),
            ns.is("truncated", props.truncated),
            ns.is("line-clamp", !isUndefined(props.lineClamp))
          ]);
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.tag), {
              class: vue.normalizeClass(vue.unref(textKls)),
              style: vue.normalizeStyle({ "-webkit-line-clamp": _ctx.lineClamp })
            }, {
              default: vue.withCtx(() => [
                vue.renderSlot(_ctx.$slots, "default")
              ]),
              _: 3
            }, 8, ["class", "style"]);
          };
        }
      });
      var Text = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__file", "text.vue"]]);
      const ElText = withInstall(Text);
      const watermarkProps = buildProps({
        zIndex: {
          type: Number,
          default: 9
        },
        rotate: {
          type: Number,
          default: -22
        },
        width: Number,
        height: Number,
        image: String,
        content: {
          type: definePropType([String, Array]),
          default: "Element Plus"
        },
        font: {
          type: definePropType(Object)
        },
        gap: {
          type: definePropType(Array),
          default: () => [100, 100]
        },
        offset: {
          type: definePropType(Array)
        }
      });
      function toLowercaseSeparator(key2) {
        return key2.replace(/([A-Z])/g, "-$1").toLowerCase();
      }
      function getStyleStr(style) {
        return Object.keys(style).map((key2) => `${toLowercaseSeparator(key2)}: ${style[key2]};`).join(" ");
      }
      function getPixelRatio() {
        return window.devicePixelRatio || 1;
      }
      const reRendering = (mutation, watermarkElement) => {
        let flag = false;
        if (mutation.removedNodes.length && watermarkElement) {
          flag = Array.from(mutation.removedNodes).includes(watermarkElement);
        }
        if (mutation.type === "attributes" && mutation.target === watermarkElement) {
          flag = true;
        }
        return flag;
      };
      const FontGap = 3;
      function prepareCanvas(width, height, ratio = 1) {
        const canvas = document.createElement("canvas");
        const ctx = canvas.getContext("2d");
        const realWidth = width * ratio;
        const realHeight = height * ratio;
        canvas.setAttribute("width", `${realWidth}px`);
        canvas.setAttribute("height", `${realHeight}px`);
        ctx.save();
        return [ctx, canvas, realWidth, realHeight];
      }
      function useClips() {
        function getClips(content, rotate, ratio, width, height, font, gapX, gapY) {
          const [ctx, canvas, contentWidth, contentHeight] = prepareCanvas(width, height, ratio);
          if (content instanceof HTMLImageElement) {
            ctx.drawImage(content, 0, 0, contentWidth, contentHeight);
          } else {
            const {
              color,
              fontSize,
              fontStyle,
              fontWeight,
              fontFamily,
              textAlign,
              textBaseline
            } = font;
            const mergedFontSize = Number(fontSize) * ratio;
            ctx.font = `${fontStyle} normal ${fontWeight} ${mergedFontSize}px/${height}px ${fontFamily}`;
            ctx.fillStyle = color;
            ctx.textAlign = textAlign;
            ctx.textBaseline = textBaseline;
            const contents = Array.isArray(content) ? content : [content];
            contents == null ? void 0 : contents.forEach((item, index) => {
              ctx.fillText(item != null ? item : "", contentWidth / 2, index * (mergedFontSize + FontGap * ratio));
            });
          }
          const angle = Math.PI / 180 * Number(rotate);
          const maxSize = Math.max(width, height);
          const [rCtx, rCanvas, realMaxSize] = prepareCanvas(maxSize, maxSize, ratio);
          rCtx.translate(realMaxSize / 2, realMaxSize / 2);
          rCtx.rotate(angle);
          if (contentWidth > 0 && contentHeight > 0) {
            rCtx.drawImage(canvas, -contentWidth / 2, -contentHeight / 2);
          }
          function getRotatePos(x2, y) {
            const targetX = x2 * Math.cos(angle) - y * Math.sin(angle);
            const targetY = x2 * Math.sin(angle) + y * Math.cos(angle);
            return [targetX, targetY];
          }
          let left = 0;
          let right = 0;
          let top = 0;
          let bottom = 0;
          const halfWidth = contentWidth / 2;
          const halfHeight = contentHeight / 2;
          const points = [
            [0 - halfWidth, 0 - halfHeight],
            [0 + halfWidth, 0 - halfHeight],
            [0 + halfWidth, 0 + halfHeight],
            [0 - halfWidth, 0 + halfHeight]
          ];
          points.forEach(([x2, y]) => {
            const [targetX, targetY] = getRotatePos(x2, y);
            left = Math.min(left, targetX);
            right = Math.max(right, targetX);
            top = Math.min(top, targetY);
            bottom = Math.max(bottom, targetY);
          });
          const cutLeft = left + realMaxSize / 2;
          const cutTop = top + realMaxSize / 2;
          const cutWidth = right - left;
          const cutHeight = bottom - top;
          const realGapX = gapX * ratio;
          const realGapY = gapY * ratio;
          const filledWidth = (cutWidth + realGapX) * 2;
          const filledHeight = cutHeight + realGapY;
          const [fCtx, fCanvas] = prepareCanvas(filledWidth, filledHeight);
          function drawImg(targetX = 0, targetY = 0) {
            fCtx.drawImage(rCanvas, cutLeft, cutTop, cutWidth, cutHeight, targetX, targetY, cutWidth, cutHeight);
          }
          drawImg();
          drawImg(cutWidth + realGapX, -cutHeight / 2 - realGapY / 2);
          drawImg(cutWidth + realGapX, +cutHeight / 2 + realGapY / 2);
          return [fCanvas.toDataURL(), filledWidth / ratio, filledHeight / ratio];
        }
        return getClips;
      }
      const __default__ = vue.defineComponent({
        name: "ElWatermark"
      });
      const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
        ...__default__,
        props: watermarkProps,
        setup(__props) {
          const props = __props;
          const style = {
            position: "relative"
          };
          const color = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.color) != null ? _b : "rgba(0,0,0,.15)";
          });
          const fontSize = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.fontSize) != null ? _b : 16;
          });
          const fontWeight = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.fontWeight) != null ? _b : "normal";
          });
          const fontStyle = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.fontStyle) != null ? _b : "normal";
          });
          const fontFamily = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.fontFamily) != null ? _b : "sans-serif";
          });
          const textAlign = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.textAlign) != null ? _b : "center";
          });
          const textBaseline = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.font) == null ? void 0 : _a2.textBaseline) != null ? _b : "top";
          });
          const gapX = vue.computed(() => props.gap[0]);
          const gapY = vue.computed(() => props.gap[1]);
          const gapXCenter = vue.computed(() => gapX.value / 2);
          const gapYCenter = vue.computed(() => gapY.value / 2);
          const offsetLeft = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.offset) == null ? void 0 : _a2[0]) != null ? _b : gapXCenter.value;
          });
          const offsetTop = vue.computed(() => {
            var _a2, _b;
            return (_b = (_a2 = props.offset) == null ? void 0 : _a2[1]) != null ? _b : gapYCenter.value;
          });
          const getMarkStyle = () => {
            const markStyle = {
              zIndex: props.zIndex,
              position: "absolute",
              left: 0,
              top: 0,
              width: "100%",
              height: "100%",
              pointerEvents: "none",
              backgroundRepeat: "repeat"
            };
            let positionLeft = offsetLeft.value - gapXCenter.value;
            let positionTop = offsetTop.value - gapYCenter.value;
            if (positionLeft > 0) {
              markStyle.left = `${positionLeft}px`;
              markStyle.width = `calc(100% - ${positionLeft}px)`;
              positionLeft = 0;
            }
            if (positionTop > 0) {
              markStyle.top = `${positionTop}px`;
              markStyle.height = `calc(100% - ${positionTop}px)`;
              positionTop = 0;
            }
            markStyle.backgroundPosition = `${positionLeft}px ${positionTop}px`;
            return markStyle;
          };
          const containerRef = vue.shallowRef(null);
          const watermarkRef = vue.shallowRef();
          const stopObservation = vue.ref(false);
          const destroyWatermark = () => {
            if (watermarkRef.value) {
              watermarkRef.value.remove();
              watermarkRef.value = void 0;
            }
          };
          const appendWatermark = (base64Url, markWidth) => {
            var _a2;
            if (containerRef.value && watermarkRef.value) {
              stopObservation.value = true;
              watermarkRef.value.setAttribute("style", getStyleStr({
                ...getMarkStyle(),
                backgroundImage: `url('${base64Url}')`,
                backgroundSize: `${Math.floor(markWidth)}px`
              }));
              (_a2 = containerRef.value) == null ? void 0 : _a2.append(watermarkRef.value);
              setTimeout(() => {
                stopObservation.value = false;
              });
            }
          };
          const getMarkSize = (ctx) => {
            let defaultWidth = 120;
            let defaultHeight = 64;
            const image = props.image;
            const content = props.content;
            const width = props.width;
            const height = props.height;
            if (!image && ctx.measureText) {
              ctx.font = `${Number(fontSize.value)}px ${fontFamily.value}`;
              const contents = Array.isArray(content) ? content : [content];
              const sizes = contents.map((item) => {
                const metrics = ctx.measureText(item);
                return [
                  metrics.width,
                  metrics.fontBoundingBoxAscent !== void 0 ? metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent : metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent
                ];
              });
              defaultWidth = Math.ceil(Math.max(...sizes.map((size) => size[0])));
              defaultHeight = Math.ceil(Math.max(...sizes.map((size) => size[1]))) * contents.length + (contents.length - 1) * FontGap;
            }
            return [width != null ? width : defaultWidth, height != null ? height : defaultHeight];
          };
          const getClips = useClips();
          const renderWatermark = () => {
            const canvas = document.createElement("canvas");
            const ctx = canvas.getContext("2d");
            const image = props.image;
            const content = props.content;
            const rotate = props.rotate;
            if (ctx) {
              if (!watermarkRef.value) {
                watermarkRef.value = document.createElement("div");
              }
              const ratio = getPixelRatio();
              const [markWidth, markHeight] = getMarkSize(ctx);
              const drawCanvas = (drawContent) => {
                const [textClips, clipWidth] = getClips(drawContent || "", rotate, ratio, markWidth, markHeight, {
                  color: color.value,
                  fontSize: fontSize.value,
                  fontStyle: fontStyle.value,
                  fontWeight: fontWeight.value,
                  fontFamily: fontFamily.value,
                  textAlign: textAlign.value,
                  textBaseline: textBaseline.value
                }, gapX.value, gapY.value);
                appendWatermark(textClips, clipWidth);
              };
              if (image) {
                const img = new Image();
                img.onload = () => {
                  drawCanvas(img);
                };
                img.onerror = () => {
                  drawCanvas(content);
                };
                img.crossOrigin = "anonymous";
                img.referrerPolicy = "no-referrer";
                img.src = image;
              } else {
                drawCanvas(content);
              }
            }
          };
          vue.onMounted(() => {
            renderWatermark();
          });
          vue.watch(() => props, () => {
            renderWatermark();
          }, {
            deep: true,
            flush: "post"
          });
          vue.onBeforeUnmount(() => {
            destroyWatermark();
          });
          const onMutate = (mutations) => {
            if (stopObservation.value) {
              return;
            }
            mutations.forEach((mutation) => {
              if (reRendering(mutation, watermarkRef.value)) {
                destroyWatermark();
                renderWatermark();
              }
            });
          };
          useMutationObserver(containerRef, onMutate, {
            attributes: true,
            subtree: true,
            childList: true
          });
          return (_ctx, _cache) => {
            return vue.openBlock(), vue.createElementBlock("div", {
              ref_key: "containerRef",
              ref: containerRef,
              style: vue.normalizeStyle([style])
            }, [
              vue.renderSlot(_ctx.$slots, "default")
            ], 4);
          };
        }
      });
      var Watermark = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__file", "watermark.vue"]]);
      const ElWatermark = withInstall(Watermark);
      function createLoadingComponent(options) {
        let afterLeaveTimer;
        const afterLeaveFlag = vue.ref(false);
        const data = vue.reactive({
          ...options,
          originalPosition: "",
          originalOverflow: "",
          visible: false
        });
        function setText(text) {
          data.text = text;
        }
        function destroySelf() {
          const target = data.parent;
          const ns = vm.ns;
          if (!target.vLoadingAddClassList) {
            let loadingNumber = target.getAttribute("loading-number");
            loadingNumber = Number.parseInt(loadingNumber) - 1;
            if (!loadingNumber) {
              removeClass(target, ns.bm("parent", "relative"));
              target.removeAttribute("loading-number");
            } else {
              target.setAttribute("loading-number", loadingNumber.toString());
            }
            removeClass(target, ns.bm("parent", "hidden"));
          }
          removeElLoadingChild();
          loadingInstance.unmount();
        }
        function removeElLoadingChild() {
          var _a2, _b;
          (_b = (_a2 = vm.$el) == null ? void 0 : _a2.parentNode) == null ? void 0 : _b.removeChild(vm.$el);
        }
        function close() {
          var _a2;
          if (options.beforeClose && !options.beforeClose())
            return;
          afterLeaveFlag.value = true;
          clearTimeout(afterLeaveTimer);
          afterLeaveTimer = window.setTimeout(handleAfterLeave, 400);
          data.visible = false;
          (_a2 = options.closed) == null ? void 0 : _a2.call(options);
        }
        function handleAfterLeave() {
          if (!afterLeaveFlag.value)
            return;
          const target = data.parent;
          afterLeaveFlag.value = false;
          target.vLoadingAddClassList = void 0;
          destroySelf();
        }
        const elLoadingComponent = vue.defineComponent({
          name: "ElLoading",
          setup(_2, { expose }) {
            const { ns, zIndex: zIndex2 } = useGlobalComponentSettings("loading");
            expose({
              ns,
              zIndex: zIndex2
            });
            return () => {
              const svg = data.spinner || data.svg;
              const spinner = vue.h("svg", {
                class: "circular",
                viewBox: data.svgViewBox ? data.svgViewBox : "0 0 50 50",
                ...svg ? { innerHTML: svg } : {}
              }, [
                vue.h("circle", {
                  class: "path",
                  cx: "25",
                  cy: "25",
                  r: "20",
                  fill: "none"
                })
              ]);
              const spinnerText = data.text ? vue.h("p", { class: ns.b("text") }, [data.text]) : void 0;
              return vue.h(vue.Transition, {
                name: ns.b("fade"),
                onAfterLeave: handleAfterLeave
              }, {
                default: vue.withCtx(() => [
                  vue.withDirectives(vue.createVNode("div", {
                    style: {
                      backgroundColor: data.background || ""
                    },
                    class: [
                      ns.b("mask"),
                      data.customClass,
                      data.fullscreen ? "is-fullscreen" : ""
                    ]
                  }, [
                    vue.h("div", {
                      class: ns.b("spinner")
                    }, [spinner, spinnerText])
                  ]), [[vue.vShow, data.visible]])
                ])
              });
            };
          }
        });
        const loadingInstance = vue.createApp(elLoadingComponent);
        const vm = loadingInstance.mount(document.createElement("div"));
        return {
          ...vue.toRefs(data),
          setText,
          removeElLoadingChild,
          close,
          handleAfterLeave,
          vm,
          get $el() {
            return vm.$el;
          }
        };
      }
      let fullscreenInstance = void 0;
      const Loading = function(options = {}) {
        if (!isClient)
          return void 0;
        const resolved = resolveOptions(options);
        if (resolved.fullscreen && fullscreenInstance) {
          return fullscreenInstance;
        }
        const instance = createLoadingComponent({
          ...resolved,
          closed: () => {
            var _a2;
            (_a2 = resolved.closed) == null ? void 0 : _a2.call(resolved);
            if (resolved.fullscreen)
              fullscreenInstance = void 0;
          }
        });
        addStyle(resolved, resolved.parent, instance);
        addClassList(resolved, resolved.parent, instance);
        resolved.parent.vLoadingAddClassList = () => addClassList(resolved, resolved.parent, instance);
        let loadingNumber = resolved.parent.getAttribute("loading-number");
        if (!loadingNumber) {
          loadingNumber = "1";
        } else {
          loadingNumber = `${Number.parseInt(loadingNumber) + 1}`;
        }
        resolved.parent.setAttribute("loading-number", loadingNumber);
        resolved.parent.appendChild(instance.$el);
        vue.nextTick(() => instance.visible.value = resolved.visible);
        if (resolved.fullscreen) {
          fullscreenInstance = instance;
        }
        return instance;
      };
      const resolveOptions = (options) => {
        var _a2, _b, _c, _d;
        let target;
        if (isString(options.target)) {
          target = (_a2 = document.querySelector(options.target)) != null ? _a2 : document.body;
        } else {
          target = options.target || document.body;
        }
        return {
          parent: target === document.body || options.body ? document.body : target,
          background: options.background || "",
          svg: options.svg || "",
          svgViewBox: options.svgViewBox || "",
          spinner: options.spinner || false,
          text: options.text || "",
          fullscreen: target === document.body && ((_b = options.fullscreen) != null ? _b : true),
          lock: (_c = options.lock) != null ? _c : false,
          customClass: options.customClass || "",
          visible: (_d = options.visible) != null ? _d : true,
          target
        };
      };
      const addStyle = async (options, parent, instance) => {
        const { nextZIndex } = instance.vm.zIndex || instance.vm._.exposed.zIndex;
        const maskStyle = {};
        if (options.fullscreen) {
          instance.originalPosition.value = getStyle(document.body, "position");
          instance.originalOverflow.value = getStyle(document.body, "overflow");
          maskStyle.zIndex = nextZIndex();
        } else if (options.parent === document.body) {
          instance.originalPosition.value = getStyle(document.body, "position");
          await vue.nextTick();
          for (const property2 of ["top", "left"]) {
            const scroll = property2 === "top" ? "scrollTop" : "scrollLeft";
            maskStyle[property2] = `${options.target.getBoundingClientRect()[property2] + document.body[scroll] + document.documentElement[scroll] - Number.parseInt(getStyle(document.body, `margin-${property2}`), 10)}px`;
          }
          for (const property2 of ["height", "width"]) {
            maskStyle[property2] = `${options.target.getBoundingClientRect()[property2]}px`;
          }
        } else {
          instance.originalPosition.value = getStyle(parent, "position");
        }
        for (const [key2, value] of Object.entries(maskStyle)) {
          instance.$el.style[key2] = value;
        }
      };
      const addClassList = (options, parent, instance) => {
        const ns = instance.vm.ns || instance.vm._.exposed.ns;
        if (!["absolute", "fixed", "sticky"].includes(instance.originalPosition.value)) {
          addClass(parent, ns.bm("parent", "relative"));
        } else {
          removeClass(parent, ns.bm("parent", "relative"));
        }
        if (options.fullscreen && options.lock) {
          addClass(parent, ns.bm("parent", "hidden"));
        } else {
          removeClass(parent, ns.bm("parent", "hidden"));
        }
      };
      const INSTANCE_KEY = Symbol("ElLoading");
      const createInstance = (el, binding) => {
        var _a2, _b, _c, _d;
        const vm = binding.instance;
        const getBindingProp = (key2) => isObject$1(binding.value) ? binding.value[key2] : void 0;
        const resolveExpression = (key2) => {
          const data = isString(key2) && (vm == null ? void 0 : vm[key2]) || key2;
          if (data)
            return vue.ref(data);
          else
            return data;
        };
        const getProp2 = (name) => resolveExpression(getBindingProp(name) || el.getAttribute(`element-loading-${hyphenate(name)}`));
        const fullscreen = (_a2 = getBindingProp("fullscreen")) != null ? _a2 : binding.modifiers.fullscreen;
        const options = {
          text: getProp2("text"),
          svg: getProp2("svg"),
          svgViewBox: getProp2("svgViewBox"),
          spinner: getProp2("spinner"),
          background: getProp2("background"),
          customClass: getProp2("customClass"),
          fullscreen,
          target: (_b = getBindingProp("target")) != null ? _b : fullscreen ? void 0 : el,
          body: (_c = getBindingProp("body")) != null ? _c : binding.modifiers.body,
          lock: (_d = getBindingProp("lock")) != null ? _d : binding.modifiers.lock
        };
        el[INSTANCE_KEY] = {
          options,
          instance: Loading(options)
        };
      };
      const updateOptions = (newOptions, originalOptions) => {
        for (const key2 of Object.keys(originalOptions)) {
          if (vue.isRef(originalOptions[key2]))
            originalOptions[key2].value = newOptions[key2];
        }
      };
      const vLoading = {
        mounted(el, binding) {
          if (binding.value) {
            createInstance(el, binding);
          }
        },
        updated(el, binding) {
          const instance = el[INSTANCE_KEY];
          if (binding.oldValue !== binding.value) {
            if (binding.value && !binding.oldValue) {
              createInstance(el, binding);
            } else if (binding.value && binding.oldValue) {
              if (isObject$1(binding.value))
                updateOptions(binding.value, instance.options);
            } else {
              instance == null ? void 0 : instance.instance.close();
            }
          }
        },
        unmounted(el) {
          var _a2;
          (_a2 = el[INSTANCE_KEY]) == null ? void 0 : _a2.instance.close();
          el[INSTANCE_KEY] = null;
        }
      };
      /*!
       * pinia v2.1.7
       * (c) 2023 Eduardo San Martin Morote
       * @license MIT
       */
      let activePinia;
      const setActivePinia = (pinia) => activePinia = pinia;
      const piniaSymbol = (
        /* istanbul ignore next */
        Symbol()
      );
      function isPlainObject(o2) {
        return o2 && typeof o2 === "object" && Object.prototype.toString.call(o2) === "[object Object]" && typeof o2.toJSON !== "function";
      }
      var MutationType;
      (function(MutationType2) {
        MutationType2["direct"] = "direct";
        MutationType2["patchObject"] = "patch object";
        MutationType2["patchFunction"] = "patch function";
      })(MutationType || (MutationType = {}));
      function createPinia() {
        const scope = vue.effectScope(true);
        const state = scope.run(() => vue.ref({}));
        let _p = [];
        let toBeInstalled = [];
        const pinia = vue.markRaw({
          install(app) {
            setActivePinia(pinia);
            {
              pinia._a = app;
              app.provide(piniaSymbol, pinia);
              app.config.globalProperties.$pinia = pinia;
              toBeInstalled.forEach((plugin) => _p.push(plugin));
              toBeInstalled = [];
            }
          },
          use(plugin) {
            if (!this._a && !isVue2) {
              toBeInstalled.push(plugin);
            } else {
              _p.push(plugin);
            }
            return this;
          },
          _p,
          // it's actually undefined here
          // @ts-expect-error
          _a: null,
          _e: scope,
          _s: /* @__PURE__ */ new Map(),
          state
        });
        return pinia;
      }
      const noop = () => {
      };
      function addSubscription(subscriptions, callback, detached, onCleanup = noop) {
        subscriptions.push(callback);
        const removeSubscription = () => {
          const idx = subscriptions.indexOf(callback);
          if (idx > -1) {
            subscriptions.splice(idx, 1);
            onCleanup();
          }
        };
        if (!detached && vue.getCurrentScope()) {
          vue.onScopeDispose(removeSubscription);
        }
        return removeSubscription;
      }
      function triggerSubscriptions(subscriptions, ...args) {
        subscriptions.slice().forEach((callback) => {
          callback(...args);
        });
      }
      const fallbackRunWithContext = (fn2) => fn2();
      function mergeReactiveObjects(target, patchToApply) {
        if (target instanceof Map && patchToApply instanceof Map) {
          patchToApply.forEach((value, key2) => target.set(key2, value));
        }
        if (target instanceof Set && patchToApply instanceof Set) {
          patchToApply.forEach(target.add, target);
        }
        for (const key2 in patchToApply) {
          if (!patchToApply.hasOwnProperty(key2))
            continue;
          const subPatch = patchToApply[key2];
          const targetValue = target[key2];
          if (isPlainObject(targetValue) && isPlainObject(subPatch) && target.hasOwnProperty(key2) && !vue.isRef(subPatch) && !vue.isReactive(subPatch)) {
            target[key2] = mergeReactiveObjects(targetValue, subPatch);
          } else {
            target[key2] = subPatch;
          }
        }
        return target;
      }
      const skipHydrateSymbol = (
        /* istanbul ignore next */
        Symbol()
      );
      function shouldHydrate(obj) {
        return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);
      }
      const { assign } = Object;
      function isComputed(o2) {
        return !!(vue.isRef(o2) && o2.effect);
      }
      function createOptionsStore(id, options, pinia, hot) {
        const { state, actions, getters } = options;
        const initialState = pinia.state.value[id];
        let store;
        function setup() {
          if (!initialState && true) {
            {
              pinia.state.value[id] = state ? state() : {};
            }
          }
          const localState = vue.toRefs(pinia.state.value[id]);
          return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {
            computedGetters[name] = vue.markRaw(vue.computed(() => {
              setActivePinia(pinia);
              const store2 = pinia._s.get(id);
              return getters[name].call(store2, store2);
            }));
            return computedGetters;
          }, {}));
        }
        store = createSetupStore(id, setup, options, pinia, hot, true);
        return store;
      }
      function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {
        let scope;
        const optionsForPlugin = assign({ actions: {} }, options);
        const $subscribeOptions = {
          deep: true
          // flush: 'post',
        };
        let isListening;
        let isSyncListening;
        let subscriptions = [];
        let actionSubscriptions = [];
        let debuggerEvents;
        const initialState = pinia.state.value[$id];
        if (!isOptionsStore && !initialState && true) {
          {
            pinia.state.value[$id] = {};
          }
        }
        vue.ref({});
        let activeListener;
        function $patch(partialStateOrMutator) {
          let subscriptionMutation;
          isListening = isSyncListening = false;
          if (typeof partialStateOrMutator === "function") {
            partialStateOrMutator(pinia.state.value[$id]);
            subscriptionMutation = {
              type: MutationType.patchFunction,
              storeId: $id,
              events: debuggerEvents
            };
          } else {
            mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);
            subscriptionMutation = {
              type: MutationType.patchObject,
              payload: partialStateOrMutator,
              storeId: $id,
              events: debuggerEvents
            };
          }
          const myListenerId = activeListener = Symbol();
          vue.nextTick().then(() => {
            if (activeListener === myListenerId) {
              isListening = true;
            }
          });
          isSyncListening = true;
          triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
        }
        const $reset = isOptionsStore ? function $reset2() {
          const { state } = options;
          const newState = state ? state() : {};
          this.$patch(($state) => {
            assign($state, newState);
          });
        } : (
          /* istanbul ignore next */
          noop
        );
        function $dispose() {
          scope.stop();
          subscriptions = [];
          actionSubscriptions = [];
          pinia._s.delete($id);
        }
        function wrapAction(name, action) {
          return function() {
            setActivePinia(pinia);
            const args = Array.from(arguments);
            const afterCallbackList = [];
            const onErrorCallbackList = [];
            function after(callback) {
              afterCallbackList.push(callback);
            }
            function onError(callback) {
              onErrorCallbackList.push(callback);
            }
            triggerSubscriptions(actionSubscriptions, {
              args,
              name,
              store,
              after,
              onError
            });
            let ret;
            try {
              ret = action.apply(this && this.$id === $id ? this : store, args);
            } catch (error) {
              triggerSubscriptions(onErrorCallbackList, error);
              throw error;
            }
            if (ret instanceof Promise) {
              return ret.then((value) => {
                triggerSubscriptions(afterCallbackList, value);
                return value;
              }).catch((error) => {
                triggerSubscriptions(onErrorCallbackList, error);
                return Promise.reject(error);
              });
            }
            triggerSubscriptions(afterCallbackList, ret);
            return ret;
          };
        }
        const partialStore = {
          _p: pinia,
          // _s: scope,
          $id,
          $onAction: addSubscription.bind(null, actionSubscriptions),
          $patch,
          $reset,
          $subscribe(callback, options2 = {}) {
            const removeSubscription = addSubscription(subscriptions, callback, options2.detached, () => stopWatcher());
            const stopWatcher = scope.run(() => vue.watch(() => pinia.state.value[$id], (state) => {
              if (options2.flush === "sync" ? isSyncListening : isListening) {
                callback({
                  storeId: $id,
                  type: MutationType.direct,
                  events: debuggerEvents
                }, state);
              }
            }, assign({}, $subscribeOptions, options2)));
            return removeSubscription;
          },
          $dispose
        };
        const store = vue.reactive(partialStore);
        pinia._s.set($id, store);
        const runWithContext = pinia._a && pinia._a.runWithContext || fallbackRunWithContext;
        const setupStore = runWithContext(() => pinia._e.run(() => (scope = vue.effectScope()).run(setup)));
        for (const key2 in setupStore) {
          const prop = setupStore[key2];
          if (vue.isRef(prop) && !isComputed(prop) || vue.isReactive(prop)) {
            if (!isOptionsStore) {
              if (initialState && shouldHydrate(prop)) {
                if (vue.isRef(prop)) {
                  prop.value = initialState[key2];
                } else {
                  mergeReactiveObjects(prop, initialState[key2]);
                }
              }
              {
                pinia.state.value[$id][key2] = prop;
              }
            }
          } else if (typeof prop === "function") {
            const actionValue = wrapAction(key2, prop);
            {
              setupStore[key2] = actionValue;
            }
            optionsForPlugin.actions[key2] = prop;
          } else
            ;
        }
        {
          assign(store, setupStore);
          assign(vue.toRaw(store), setupStore);
        }
        Object.defineProperty(store, "$state", {
          get: () => pinia.state.value[$id],
          set: (state) => {
            $patch(($state) => {
              assign($state, state);
            });
          }
        });
        pinia._p.forEach((extender) => {
          {
            assign(store, scope.run(() => extender({
              store,
              app: pinia._a,
              pinia,
              options: optionsForPlugin
            })));
          }
        });
        if (initialState && isOptionsStore && options.hydrate) {
          options.hydrate(store.$state, initialState);
        }
        isListening = true;
        isSyncListening = true;
        return store;
      }
      function defineStore(idOrOptions, setup, setupOptions) {
        let id;
        let options;
        const isSetupStore = typeof setup === "function";
        if (typeof idOrOptions === "string") {
          id = idOrOptions;
          options = isSetupStore ? setupOptions : setup;
        } else {
          options = idOrOptions;
          id = idOrOptions.id;
        }
        function useStore2(pinia, hot) {
          const hasContext = vue.hasInjectionContext();
          pinia = // in test mode, ignore the argument provided as we can always retrieve a
          // pinia instance with getActivePinia()
          pinia || (hasContext ? vue.inject(piniaSymbol, null) : null);
          if (pinia)
            setActivePinia(pinia);
          pinia = activePinia;
          if (!pinia._s.has(id)) {
            if (isSetupStore) {
              createSetupStore(id, setup, options, pinia);
            } else {
              createOptionsStore(id, options, pinia);
            }
          }
          const store = pinia._s.get(id);
          return store;
        }
        useStore2.$id = id;
        return useStore2;
      }
      const prefix = "AiAsk_";
      class Cache {
        /**
         * 封装缓存
         * @param key 缓存key
         * @param value 缓存值
         * @param expire 过期时间
         * 
         * @returns 缓存值
         */
        static set(key2, value, expire = 0) {
          key2 = prefix + key2;
          if (expire > 0) {
            _GM_setValue(key2, {
              value,
              expire: (/* @__PURE__ */ new Date()).getTime() + expire * 1e3
            });
          } else {
            _GM_setValue(key2, {
              value,
              expire: 0
            });
          }
          return _GM_getValue(key2);
        }
        /**
         * 获取缓存
         * @param key 缓存key
         * 
         * @returns 缓存值
         */
        static get(key2, defaultVal = null) {
          key2 = prefix + key2;
          let cache = _GM_getValue(key2);
          if (cache && cache.expire > 0 && cache.expire < (/* @__PURE__ */ new Date()).getTime()) {
            _GM_setValue(key2, null);
            return defaultVal;
          }
          return cache ? cache.value : defaultVal;
        }
        /**
         * 前缀匹配
         */
        static match(key2) {
          key2 = prefix + key2;
          let allKeys = _GM_listValues();
          return allKeys.filter((k) => {
            return k.startsWith(key2);
          });
        }
        /**
         * 前缀匹配,获取值
         */
        static matchGet(key2) {
          key2 = prefix + key2;
          let allKeys = _GM_listValues();
          let res = [];
          allKeys.forEach((k) => {
            if (k.startsWith(key2)) {
              res.push(_GM_getValue(k, {
                value: null,
                expire: 0
              }).value);
            }
          });
          return res;
        }
        /**
         * 删除缓存
         * @param key 缓存key
         */
        static remove(key2) {
          key2 = prefix + key2;
          _GM_deleteValue(key2);
        }
        /**
         * 清空缓存
         */
        static clear() {
          let allKeys = _GM_listValues();
          allKeys.forEach((key2) => {
            if (key2.startsWith(prefix)) {
              _GM_deleteValue(key2);
            }
          });
        }
        /**
         * 前缀匹配删除
         */
        static matchRemove(key2) {
          key2 = prefix + key2;
          let allKeys = _GM_listValues();
          allKeys.forEach((k) => {
            if (k.startsWith(key2)) {
              _GM_deleteValue(k);
            }
          });
        }
      }
      var md5 = { exports: {} };
      const __viteBrowserExternal = {};
      const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
        __proto__: null,
        default: __viteBrowserExternal
      }, Symbol.toStringTag, { value: "Module" }));
      const require$$1 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
      /**
       * [js-md5]{@link https://github.com/emn178/js-md5}
       *
       * @namespace md5
       * @version 0.8.3
       * @author Chen, Yi-Cyuan [[email protected]]
       * @copyright Chen, Yi-Cyuan 2014-2023
       * @license MIT
       */
      (function(module2) {
        (function() {
          var INPUT_ERROR = "input is invalid type";
          var FINALIZE_ERROR = "finalize already called";
          var WINDOW = typeof window === "object";
          var root2 = WINDOW ? window : {};
          if (root2.JS_MD5_NO_WINDOW) {
            WINDOW = false;
          }
          var WEB_WORKER = !WINDOW && typeof self === "object";
          var NODE_JS = !root2.JS_MD5_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
          if (NODE_JS) {
            root2 = commonjsGlobal;
          } else if (WEB_WORKER) {
            root2 = self;
          }
          var COMMON_JS = !root2.JS_MD5_NO_COMMON_JS && true && module2.exports;
          var ARRAY_BUFFER = !root2.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
          var HEX_CHARS = "0123456789abcdef".split("");
          var EXTRA = [128, 32768, 8388608, -2147483648];
          var SHIFT = [0, 8, 16, 24];
          var OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"];
          var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
          var blocks = [], buffer8;
          if (ARRAY_BUFFER) {
            var buffer = new ArrayBuffer(68);
            buffer8 = new Uint8Array(buffer);
            blocks = new Uint32Array(buffer);
          }
          var isArray2 = Array.isArray;
          if (root2.JS_MD5_NO_NODE_JS || !isArray2) {
            isArray2 = function(obj) {
              return Object.prototype.toString.call(obj) === "[object Array]";
            };
          }
          var isView = ArrayBuffer.isView;
          if (ARRAY_BUFFER && (root2.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !isView)) {
            isView = function(obj) {
              return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
            };
          }
          var formatMessage = function(message) {
            var type = typeof message;
            if (type === "string") {
              return [message, true];
            }
            if (type !== "object" || message === null) {
              throw new Error(INPUT_ERROR);
            }
            if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
              return [new Uint8Array(message), false];
            }
            if (!isArray2(message) && !isView(message)) {
              throw new Error(INPUT_ERROR);
            }
            return [message, false];
          };
          var createOutputMethod = function(outputType) {
            return function(message) {
              return new Md5(true).update(message)[outputType]();
            };
          };
          var createMethod = function() {
            var method = createOutputMethod("hex");
            if (NODE_JS) {
              method = nodeWrap(method);
            }
            method.create = function() {
              return new Md5();
            };
            method.update = function(message) {
              return method.create().update(message);
            };
            for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
              var type = OUTPUT_TYPES[i];
              method[type] = createOutputMethod(type);
            }
            return method;
          };
          var nodeWrap = function(method) {
            var crypto = require$$1;
            var Buffer3 = require$$1.Buffer;
            var bufferFrom;
            if (Buffer3.from && !root2.JS_MD5_NO_BUFFER_FROM) {
              bufferFrom = Buffer3.from;
            } else {
              bufferFrom = function(message) {
                return new Buffer3(message);
              };
            }
            var nodeMethod = function(message) {
              if (typeof message === "string") {
                return crypto.createHash("md5").update(message, "utf8").digest("hex");
              } else {
                if (message === null || message === void 0) {
                  throw new Error(INPUT_ERROR);
                } else if (message.constructor === ArrayBuffer) {
                  message = new Uint8Array(message);
                }
              }
              if (isArray2(message) || isView(message) || message.constructor === Buffer3) {
                return crypto.createHash("md5").update(bufferFrom(message)).digest("hex");
              } else {
                return method(message);
              }
            };
            return nodeMethod;
          };
          var createHmacOutputMethod = function(outputType) {
            return function(key2, message) {
              return new HmacMd5(key2, true).update(message)[outputType]();
            };
          };
          var createHmacMethod = function() {
            var method = createHmacOutputMethod("hex");
            method.create = function(key2) {
              return new HmacMd5(key2);
            };
            method.update = function(key2, message) {
              return method.create(key2).update(message);
            };
            for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
              var type = OUTPUT_TYPES[i];
              method[type] = createHmacOutputMethod(type);
            }
            return method;
          };
          function Md5(sharedMemory) {
            if (sharedMemory) {
              blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
              this.blocks = blocks;
              this.buffer8 = buffer8;
            } else {
              if (ARRAY_BUFFER) {
                var buffer2 = new ArrayBuffer(68);
                this.buffer8 = new Uint8Array(buffer2);
                this.blocks = new Uint32Array(buffer2);
              } else {
                this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
              }
            }
            this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;
            this.finalized = this.hashed = false;
            this.first = true;
          }
          Md5.prototype.update = function(message) {
            if (this.finalized) {
              throw new Error(FINALIZE_ERROR);
            }
            var result = formatMessage(message);
            message = result[0];
            var isString2 = result[1];
            var code, index = 0, i, length = message.length, blocks2 = this.blocks;
            var buffer82 = this.buffer8;
            while (index < length) {
              if (this.hashed) {
                this.hashed = false;
                blocks2[0] = blocks2[16];
                blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
              }
              if (isString2) {
                if (ARRAY_BUFFER) {
                  for (i = this.start; index < length && i < 64; ++index) {
                    code = message.charCodeAt(index);
                    if (code < 128) {
                      buffer82[i++] = code;
                    } else if (code < 2048) {
                      buffer82[i++] = 192 | code >>> 6;
                      buffer82[i++] = 128 | code & 63;
                    } else if (code < 55296 || code >= 57344) {
                      buffer82[i++] = 224 | code >>> 12;
                      buffer82[i++] = 128 | code >>> 6 & 63;
                      buffer82[i++] = 128 | code & 63;
                    } else {
                      code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
                      buffer82[i++] = 240 | code >>> 18;
                      buffer82[i++] = 128 | code >>> 12 & 63;
                      buffer82[i++] = 128 | code >>> 6 & 63;
                      buffer82[i++] = 128 | code & 63;
                    }
                  }
                } else {
                  for (i = this.start; index < length && i < 64; ++index) {
                    code = message.charCodeAt(index);
                    if (code < 128) {
                      blocks2[i >>> 2] |= code << SHIFT[i++ & 3];
                    } else if (code < 2048) {
                      blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                    } else if (code < 55296 || code >= 57344) {
                      blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                    } else {
                      code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
                      blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
                      blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
                    }
                  }
                }
              } else {
                if (ARRAY_BUFFER) {
                  for (i = this.start; index < length && i < 64; ++index) {
                    buffer82[i++] = message[index];
                  }
                } else {
                  for (i = this.start; index < length && i < 64; ++index) {
                    blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];
                  }
                }
              }
              this.lastByteIndex = i;
              this.bytes += i - this.start;
              if (i >= 64) {
                this.start = i - 64;
                this.hash();
                this.hashed = true;
              } else {
                this.start = i;
              }
            }
            if (this.bytes > 4294967295) {
              this.hBytes += this.bytes / 4294967296 << 0;
              this.bytes = this.bytes % 4294967296;
            }
            return this;
          };
          Md5.prototype.finalize = function() {
            if (this.finalized) {
              return;
            }
            this.finalized = true;
            var blocks2 = this.blocks, i = this.lastByteIndex;
            blocks2[i >>> 2] |= EXTRA[i & 3];
            if (i >= 56) {
              if (!this.hashed) {
                this.hash();
              }
              blocks2[0] = blocks2[16];
              blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
            }
            blocks2[14] = this.bytes << 3;
            blocks2[15] = this.hBytes << 3 | this.bytes >>> 29;
            this.hash();
          };
          Md5.prototype.hash = function() {
            var a2, b2, c2, d2, bc, da, blocks2 = this.blocks;
            if (this.first) {
              a2 = blocks2[0] - 680876937;
              a2 = (a2 << 7 | a2 >>> 25) - 271733879 << 0;
              d2 = (-1732584194 ^ a2 & 2004318071) + blocks2[1] - 117830708;
              d2 = (d2 << 12 | d2 >>> 20) + a2 << 0;
              c2 = (-271733879 ^ d2 & (a2 ^ -271733879)) + blocks2[2] - 1126478375;
              c2 = (c2 << 17 | c2 >>> 15) + d2 << 0;
              b2 = (a2 ^ c2 & (d2 ^ a2)) + blocks2[3] - 1316259209;
              b2 = (b2 << 22 | b2 >>> 10) + c2 << 0;
            } else {
              a2 = this.h0;
              b2 = this.h1;
              c2 = this.h2;
              d2 = this.h3;
              a2 += (d2 ^ b2 & (c2 ^ d2)) + blocks2[0] - 680876936;
              a2 = (a2 << 7 | a2 >>> 25) + b2 << 0;
              d2 += (c2 ^ a2 & (b2 ^ c2)) + blocks2[1] - 389564586;
              d2 = (d2 << 12 | d2 >>> 20) + a2 << 0;
              c2 += (b2 ^ d2 & (a2 ^ b2)) + blocks2[2] + 606105819;
              c2 = (c2 << 17 | c2 >>> 15) + d2 << 0;
              b2 += (a2 ^ c2 & (d2 ^ a2)) + blocks2[3] - 1044525330;
              b2 = (b2 << 22 | b2 >>> 10) + c2 << 0;
            }
            a2 += (d2 ^ b2 & (c2 ^ d2)) + blocks2[4] - 176418897;
            a2 = (a2 << 7 | a2 >>> 25) + b2 << 0;
            d2 += (c2 ^ a2 & (b2 ^ c2)) + blocks2[5] + 1200080426;
            d2 = (d2 << 12 | d2 >>> 20) + a2 << 0;
            c2 += (b2 ^ d2 & (a2 ^ b2)) + blocks2[6] - 1473231341;
            c2 = (c2 << 17 | c2 >>> 15) + d2 << 0;
            b2 += (a2 ^ c2 & (d2 ^ a2)) + blocks2[7] - 45705983;
            b2 = (b2 << 22 | b2 >>> 10) + c2 << 0;
            a2 += (d2 ^ b2 & (c2 ^ d2)) + blocks2[8] + 1770035416;
            a2 = (a2 << 7 | a2 >>> 25) + b2 << 0;
            d2 += (c2 ^ a2 & (b2 ^ c2)) + blocks2[9] - 1958414417;
            d2 = (d2 << 12 | d2 >>> 20) + a2 << 0;
            c2 += (b2 ^ d2 & (a2 ^ b2)) + blocks2[10] - 42063;
            c2 = (c2 << 17 | c2 >>> 15) + d2 << 0;
            b2 += (a2 ^ c2 & (d2 ^ a2)) + blocks2[11] - 1990404162;
            b2 = (b2 << 22 | b2 >>> 10) + c2 << 0;
            a2 += (d2 ^ b2 & (c2 ^ d2)) + blocks2[12] + 1804603682;
            a2 = (a2 << 7 | a2 >>> 25) + b2 << 0;
            d2 += (c2 ^ a2 & (b2 ^ c2)) + blocks2[13] - 40341101;
            d2 = (d2 << 12 | d2 >>> 20) + a2 << 0;
            c2 += (b2 ^ d2 & (a2 ^ b2)) + blocks2[14] - 1502002290;
            c2 = (c2 << 17 | c2 >>> 15) + d2 << 0;
            b2 += (a2 ^ c2 & (d2 ^ a2)) + blocks2[15] + 1236535329;
            b2 = (b2 << 22 | b2 >>> 10) + c2 << 0;
            a2 += (c2 ^ d2 & (b2 ^ c2)) + blocks2[1] - 165796510;
            a2 = (a2 << 5 | a2 >>> 27) + b2 << 0;
            d2 += (b2 ^ c2 & (a2 ^ b2)) + blocks2[6] - 1069501632;
            d2 = (d2 << 9 | d2 >>> 23) + a2 << 0;
            c2 += (a2 ^ b2 & (d2 ^ a2)) + blocks2[11] + 643717713;
            c2 = (c2 << 14 | c2 >>> 18) + d2 << 0;
            b2 += (d2 ^ a2 & (c2 ^ d2)) + blocks2[0] - 373897302;
            b2 = (b2 << 20 | b2 >>> 12) + c2 << 0;
            a2 += (c2 ^ d2 & (b2 ^ c2)) + blocks2[5] - 701558691;
            a2 = (a2 << 5 | a2 >>> 27) + b2 << 0;
            d2 += (b2 ^ c2 & (a2 ^ b2)) + blocks2[10] + 38016083;
            d2 = (d2 << 9 | d2 >>> 23) + a2 << 0;
            c2 += (a2 ^ b2 & (d2 ^ a2)) + blocks2[15] - 660478335;
            c2 = (c2 << 14 | c2 >>> 18) + d2 << 0;
            b2 += (d2 ^ a2 & (c2 ^ d2)) + blocks2[4] - 405537848;
            b2 = (b2 << 20 | b2 >>> 12) + c2 << 0;
            a2 += (c2 ^ d2 & (b2 ^ c2)) + blocks2[9] + 568446438;
            a2 = (a2 << 5 | a2 >>> 27) + b2 << 0;
            d2 += (b2 ^ c2 & (a2 ^ b2)) + blocks2[14] - 1019803690;
            d2 = (d2 << 9 | d2 >>> 23) + a2 << 0;
            c2 += (a2 ^ b2 & (d2 ^ a2)) + blocks2[3] - 187363961;
            c2 = (c2 << 14 | c2 >>> 18) + d2 << 0;
            b2 += (d2 ^ a2 & (c2 ^ d2)) + blocks2[8] + 1163531501;
            b2 = (b2 << 20 | b2 >>> 12) + c2 << 0;
            a2 += (c2 ^ d2 & (b2 ^ c2)) + blocks2[13] - 1444681467;
            a2 = (a2 << 5 | a2 >>> 27) + b2 << 0;
            d2 += (b2 ^ c2 & (a2 ^ b2)) + blocks2[2] - 51403784;
            d2 = (d2 << 9 | d2 >>> 23) + a2 << 0;
            c2 += (a2 ^ b2 & (d2 ^ a2)) + blocks2[7] + 1735328473;
            c2 = (c2 << 14 | c2 >>> 18) + d2 << 0;
            b2 += (d2 ^ a2 & (c2 ^ d2)) + blocks2[12] - 1926607734;
            b2 = (b2 << 20 | b2 >>> 12) + c2 << 0;
            bc = b2 ^ c2;
            a2 += (bc ^ d2) + blocks2[5] - 378558;
            a2 = (a2 << 4 | a2 >>> 28) + b2 << 0;
            d2 += (bc ^ a2) + blocks2[8] - 2022574463;
            d2 = (d2 << 11 | d2 >>> 21) + a2 << 0;
            da = d2 ^ a2;
            c2 += (da ^ b2) + blocks2[11] + 1839030562;
            c2 = (c2 << 16 | c2 >>> 16) + d2 << 0;
            b2 += (da ^ c2) + blocks2[14] - 35309556;
            b2 = (b2 << 23 | b2 >>> 9) + c2 << 0;
            bc = b2 ^ c2;
            a2 += (bc ^ d2) + blocks2[1] - 1530992060;
            a2 = (a2 << 4 | a2 >>> 28) + b2 << 0;
            d2 += (bc ^ a2) + blocks2[4] + 1272893353;
            d2 = (d2 << 11 | d2 >>> 21) + a2 << 0;
            da = d2 ^ a2;
            c2 += (da ^ b2) + blocks2[7] - 155497632;
            c2 = (c2 << 16 | c2 >>> 16) + d2 << 0;
            b2 += (da ^ c2) + blocks2[10] - 1094730640;
            b2 = (b2 << 23 | b2 >>> 9) + c2 << 0;
            bc = b2 ^ c2;
            a2 += (bc ^ d2) + blocks2[13] + 681279174;
            a2 = (a2 << 4 | a2 >>> 28) + b2 << 0;
            d2 += (bc ^ a2) + blocks2[0] - 358537222;
            d2 = (d2 << 11 | d2 >>> 21) + a2 << 0;
            da = d2 ^ a2;
            c2 += (da ^ b2) + blocks2[3] - 722521979;
            c2 = (c2 << 16 | c2 >>> 16) + d2 << 0;
            b2 += (da ^ c2) + blocks2[6] + 76029189;
            b2 = (b2 << 23 | b2 >>> 9) + c2 << 0;
            bc = b2 ^ c2;
            a2 += (bc ^ d2) + blocks2[9] - 640364487;
            a2 = (a2 << 4 | a2 >>> 28) + b2 << 0;
            d2 += (bc ^ a2) + blocks2[12] - 421815835;
            d2 = (d2 << 11 | d2 >>> 21) + a2 << 0;
            da = d2 ^ a2;
            c2 += (da ^ b2) + blocks2[15] + 530742520;
            c2 = (c2 << 16 | c2 >>> 16) + d2 << 0;
            b2 += (da ^ c2) + blocks2[2] - 995338651;
            b2 = (b2 << 23 | b2 >>> 9) + c2 << 0;
            a2 += (c2 ^ (b2 | ~d2)) + blocks2[0] - 198630844;
            a2 = (a2 << 6 | a2 >>> 26) + b2 << 0;
            d2 += (b2 ^ (a2 | ~c2)) + blocks2[7] + 1126891415;
            d2 = (d2 << 10 | d2 >>> 22) + a2 << 0;
            c2 += (a2 ^ (d2 | ~b2)) + blocks2[14] - 1416354905;
            c2 = (c2 << 15 | c2 >>> 17) + d2 << 0;
            b2 += (d2 ^ (c2 | ~a2)) + blocks2[5] - 57434055;
            b2 = (b2 << 21 | b2 >>> 11) + c2 << 0;
            a2 += (c2 ^ (b2 | ~d2)) + blocks2[12] + 1700485571;
            a2 = (a2 << 6 | a2 >>> 26) + b2 << 0;
            d2 += (b2 ^ (a2 | ~c2)) + blocks2[3] - 1894986606;
            d2 = (d2 << 10 | d2 >>> 22) + a2 << 0;
            c2 += (a2 ^ (d2 | ~b2)) + blocks2[10] - 1051523;
            c2 = (c2 << 15 | c2 >>> 17) + d2 << 0;
            b2 += (d2 ^ (c2 | ~a2)) + blocks2[1] - 2054922799;
            b2 = (b2 << 21 | b2 >>> 11) + c2 << 0;
            a2 += (c2 ^ (b2 | ~d2)) + blocks2[8] + 1873313359;
            a2 = (a2 << 6 | a2 >>> 26) + b2 << 0;
            d2 += (b2 ^ (a2 | ~c2)) + blocks2[15] - 30611744;
            d2 = (d2 << 10 | d2 >>> 22) + a2 << 0;
            c2 += (a2 ^ (d2 | ~b2)) + blocks2[6] - 1560198380;
            c2 = (c2 << 15 | c2 >>> 17) + d2 << 0;
            b2 += (d2 ^ (c2 | ~a2)) + blocks2[13] + 1309151649;
            b2 = (b2 << 21 | b2 >>> 11) + c2 << 0;
            a2 += (c2 ^ (b2 | ~d2)) + blocks2[4] - 145523070;
            a2 = (a2 << 6 | a2 >>> 26) + b2 << 0;
            d2 += (b2 ^ (a2 | ~c2)) + blocks2[11] - 1120210379;
            d2 = (d2 << 10 | d2 >>> 22) + a2 << 0;
            c2 += (a2 ^ (d2 | ~b2)) + blocks2[2] + 718787259;
            c2 = (c2 << 15 | c2 >>> 17) + d2 << 0;
            b2 += (d2 ^ (c2 | ~a2)) + blocks2[9] - 343485551;
            b2 = (b2 << 21 | b2 >>> 11) + c2 << 0;
            if (this.first) {
              this.h0 = a2 + 1732584193 << 0;
              this.h1 = b2 - 271733879 << 0;
              this.h2 = c2 - 1732584194 << 0;
              this.h3 = d2 + 271733878 << 0;
              this.first = false;
            } else {
              this.h0 = this.h0 + a2 << 0;
              this.h1 = this.h1 + b2 << 0;
              this.h2 = this.h2 + c2 << 0;
              this.h3 = this.h3 + d2 << 0;
            }
          };
          Md5.prototype.hex = function() {
            this.finalize();
            var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
            return HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15];
          };
          Md5.prototype.toString = Md5.prototype.hex;
          Md5.prototype.digest = function() {
            this.finalize();
            var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
            return [
              h0 & 255,
              h0 >>> 8 & 255,
              h0 >>> 16 & 255,
              h0 >>> 24 & 255,
              h1 & 255,
              h1 >>> 8 & 255,
              h1 >>> 16 & 255,
              h1 >>> 24 & 255,
              h2 & 255,
              h2 >>> 8 & 255,
              h2 >>> 16 & 255,
              h2 >>> 24 & 255,
              h3 & 255,
              h3 >>> 8 & 255,
              h3 >>> 16 & 255,
              h3 >>> 24 & 255
            ];
          };
          Md5.prototype.array = Md5.prototype.digest;
          Md5.prototype.arrayBuffer = function() {
            this.finalize();
            var buffer2 = new ArrayBuffer(16);
            var blocks2 = new Uint32Array(buffer2);
            blocks2[0] = this.h0;
            blocks2[1] = this.h1;
            blocks2[2] = this.h2;
            blocks2[3] = this.h3;
            return buffer2;
          };
          Md5.prototype.buffer = Md5.prototype.arrayBuffer;
          Md5.prototype.base64 = function() {
            var v1, v2, v3, base64Str = "", bytes = this.array();
            for (var i = 0; i < 15; ) {
              v1 = bytes[i++];
              v2 = bytes[i++];
              v3 = bytes[i++];
              base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63];
            }
            v1 = bytes[i];
            base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + "==";
            return base64Str;
          };
          function HmacMd5(key2, sharedMemory) {
            var i, result = formatMessage(key2);
            key2 = result[0];
            if (result[1]) {
              var bytes = [], length = key2.length, index = 0, code;
              for (i = 0; i < length; ++i) {
                code = key2.charCodeAt(i);
                if (code < 128) {
                  bytes[index++] = code;
                } else if (code < 2048) {
                  bytes[index++] = 192 | code >>> 6;
                  bytes[index++] = 128 | code & 63;
                } else if (code < 55296 || code >= 57344) {
                  bytes[index++] = 224 | code >>> 12;
                  bytes[index++] = 128 | code >>> 6 & 63;
                  bytes[index++] = 128 | code & 63;
                } else {
                  code = 65536 + ((code & 1023) << 10 | key2.charCodeAt(++i) & 1023);
                  bytes[index++] = 240 | code >>> 18;
                  bytes[index++] = 128 | code >>> 12 & 63;
                  bytes[index++] = 128 | code >>> 6 & 63;
                  bytes[index++] = 128 | code & 63;
                }
              }
              key2 = bytes;
            }
            if (key2.length > 64) {
              key2 = new Md5(true).update(key2).array();
            }
            var oKeyPad = [], iKeyPad = [];
            for (i = 0; i < 64; ++i) {
              var b2 = key2[i] || 0;
              oKeyPad[i] = 92 ^ b2;
              iKeyPad[i] = 54 ^ b2;
            }
            Md5.call(this, sharedMemory);
            this.update(iKeyPad);
            this.oKeyPad = oKeyPad;
            this.inner = true;
            this.sharedMemory = sharedMemory;
          }
          HmacMd5.prototype = new Md5();
          HmacMd5.prototype.finalize = function() {
            Md5.prototype.finalize.call(this);
            if (this.inner) {
              this.inner = false;
              var innerHash = this.array();
              Md5.call(this, this.sharedMemory);
              this.update(this.oKeyPad);
              this.update(innerHash);
              Md5.prototype.finalize.call(this);
            }
          };
          var exports2 = createMethod();
          exports2.md5 = exports2;
          exports2.md5.hmac = createHmacMethod();
          if (COMMON_JS) {
            module2.exports = exports2;
          } else {
            root2.md5 = exports2;
          }
        })();
      })(md5);
      var md5Exports = md5.exports;
      const scriptInfo$1 = _GM_info;
      const key = randomString(9) + "_";
      function request(url, method, data = void 0, headers = void 0, timeout = 5e3) {
        if (method === "GET" && data) {
          url += `?${new URLSearchParams(data).toString()}`;
        }
        if (method === "POST") {
          const t = get_t(data);
          headers = {
            ...headers,
            "aka": t
          };
        }
        const finalHeaders = {
          "User-Agent": _unsafeWindow.navigator.userAgent,
          "Content-Type": "application/json",
          "referer": location.href,
          "v": scriptInfo$1.script.version,
          ...headers
        };
        return new Promise((resolve, reject) => {
          const startTime = Date.now();
          _GM_xmlhttpRequest({
            method,
            url,
            headers: finalHeaders,
            data: method !== "GET" ? JSON.stringify(data) : void 0,
            timeout,
            onload: function(response) {
              const endTime = Date.now();
              const duration = endTime - startTime;
              resolve([response, duration]);
            },
            ontimeout: () => reject(new Error("接口请求超时")),
            onerror: (error) => {
              reject(error);
            }
          });
        });
      }
      function requestFetch(url, method, data, headers, timeout = 5e3) {
        const finalHeaders = {
          "User-Agent": _unsafeWindow.navigator.userAgent,
          "Content-Type": method === "POST" ? "application/json" : "text/plain;charset=UTF-8",
          ...headers
        };
        return new Promise((resolve, reject) => {
          fetch(url, {
            method,
            headers: finalHeaders,
            body: method === "POST" ? JSON.stringify(data) : void 0
          }).then((response) => resolve(response.text())).catch(function(error) {
            reject(error);
          });
        });
      }
      function headi() {
        let z = Array.from({ length: 4 }, () => Math.floor(Math.random() * 255)).join(".");
        return {
          "X-Forwarded-For": z,
          "X-Real-IP": z
        };
      }
      function sleep(time) {
        return new Promise((resolve) => setTimeout(resolve, time));
      }
      function removeHtml(htmlStr) {
        const textArea = document.createElement("textarea");
        textArea.innerHTML = htmlStr;
        htmlStr = textArea.value;
        htmlStr = htmlStr.replace(/[\t\r\xa0]/g, " ");
        htmlStr = htmlStr.replace(/[\u2000-\u200a]/g, " ");
        htmlStr = htmlStr.replace(/<br\s*\/?>/g, "\n");
        htmlStr = htmlStr.replace(/<(\/)?(p|div).*?>/g, "\n");
        htmlStr = htmlStr.replace(/ {2,}/g, " ");
        htmlStr = htmlStr.replace(/\n{2,}/g, "\n");
        htmlStr = DOMPurify.sanitize(htmlStr, { ALLOWED_TAGS: ["img", "br", "sub", "sup", "table", "caption", "thead", "tfoot", "tbody", "tr", "th", "td", "strong"], ALLOWED_ATTR: ["src", "href"], ALLOW_DATA_ATTR: false });
        return htmlStr.trim();
      }
      function removeHtml1(htmlStr, replacen = true) {
        const textArea = document.createElement("textarea");
        textArea.innerHTML = htmlStr;
        htmlStr = textArea.value;
        htmlStr = htmlStr.replace(/[\t\r\xa0]/g, " ");
        htmlStr = htmlStr.replace(/[\u2000-\u200a]/g, " ");
        htmlStr = htmlStr.replace(/<br\s*\/?>/g, "\n");
        if (replacen) {
          htmlStr = htmlStr.replace(/<(\/)?(p|div).*?>/g, "\n");
        }
        htmlStr = htmlStr.replace(/ {2,}/g, " ");
        htmlStr = htmlStr.replace(/\n{2,}/g, "\n");
        htmlStr = htmlStr.replace(/<xmp.*?>/g, "<pre>");
        htmlStr = htmlStr.replace(/<\/xmp>/g, "</pre>");
        htmlStr = DOMPurify.sanitize(htmlStr, { ALLOWED_TAGS: ["img", "br", "sub", "sup"], ALLOWED_ATTR: ["src", "href"], ALLOW_DATA_ATTR: false, KEEP_CONTENT: true });
        let imgReg = /<img.*?src="(.*?)".*?>/g;
        let imgArr = htmlStr.match(imgReg);
        if (imgArr) {
          imgArr.forEach((item) => {
            let src = item.match(/src="(.*?)"/);
            if (src) {
              if (src[1].indexOf("http") == -1 && !src[1].includes("data:image")) {
                if (src[1].startsWith("/")) {
                  htmlStr = htmlStr.replace(src[1], location.origin + src[1]);
                } else {
                  htmlStr = htmlStr.replace(src[1], location.origin + "/" + src[1]);
                }
              }
            }
          });
        }
        return htmlStr.trim();
      }
      function titleClean(title) {
        return title.replace(/^【.*?】\s*/, "").replace(/\s*(\d+\.\d+分)$/, "").replace(/^\d+\./, "").trim();
      }
      function typeChange(typeNumber) {
        let types2 = {
          "单选题": "0",
          "多选题": "1",
          "填空题": "2",
          "判断题": "3",
          "简答题": "4",
          "问答题": "4",
          "名词解释": "5",
          "论述题": "6",
          "计算题": "7",
          "分录题": "9",
          "资料题": "10",
          "连线题": "11",
          "匹配题": "11",
          "排序题": "13",
          "完型填空": "14",
          "完形填空题": "14",
          "阅读理解": "15",
          "程序题": "17",
          "口语题": "18",
          "听力题": "19",
          "共用选项题": "20",
          "测评题": "21",
          "钟表题": "23",
          "选词填空": "24",
          "选做题": "25",
          "其它": "8"
        };
        return types2[typeNumber] ?? "8";
      }
      function typeChange2(typeNumber) {
        let types2 = {
          "0": "单选题",
          "1": "多选题",
          "2": "填空题",
          "3": "判断题",
          "4": "简答题",
          "5": "名词解释",
          "6": "论述题",
          "7": "计算题",
          "9": "分录题",
          "10": "资料题",
          "11": "连线题",
          "13": "排序题",
          "14": "完型填空",
          "15": "阅读理解",
          "17": "程序题",
          "18": "口语题",
          "19": "听力题",
          "20": "共用选项题",
          "21": "测评题",
          "23": "钟表题",
          "24": "选词填空",
          "25": "选做题",
          "8": "其它"
        };
        return types2[typeNumber] ?? "其他";
      }
      function answerFormat(answer) {
        if (answer instanceof Array) {
          answer = answer.filter(function(item) {
            return item !== null;
          });
          for (let i = 0; i < answer.length; i++) {
            answer[i] = removeHtml(answer[i]);
          }
        } else if (typeof answer === "string") {
          answer = titleClean(answer);
        }
        return answer;
      }
      function removeSpace(str) {
        if (/^[+-]?\d+(\.\d+)?$/.test(str)) {
          return str;
        }
        return str.replace(/[\s\p{P}]/gu, "");
      }
      function matchAnswer(answer, options) {
        if (answer == "" || answer == null || answer == void 0) {
          return [];
        }
        answer = answer.map((item) => removeHtml1(item));
        options = options.map((item) => removeHtml1(item));
        answer = answerFormat(answer);
        let isMatch = options.every((item) => {
          return /[\u4e00-\u9fa5a-zA-Z0-9]/.test(item);
        });
        if (isMatch) {
          answer = answer.map((item) => removeSpace(item));
          options = options.map((item) => removeSpace(item));
        }
        var matchArr = [];
        for (var i = 0; i < answer.length; i++) {
          for (var j = 0; j < options.length; j++) {
            if (answer[i] == options[j]) {
              matchArr.push(j);
            }
          }
        }
        return matchArr;
      }
      function recoverConsole() {
        var iframe = document.createElement("iframe");
        iframe.style.display = "none";
        document.body.appendChild(iframe);
        window.console = iframe.contentWindow.console;
      }
      function qc(item) {
        $(item).find(".answerBg, .textDIV, .eidtDiv").each(function() {
          ($(this).find(".check_answer").length || $(this).find(".check_answer_dx").length) && $(this).click();
        });
        $(item).find(".answerBg, .textDIV, .eidtDiv").find("textarea").each(function() {
          _unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
            this.setContent("");
          });
        });
        $(item).find(":radio, :checkbox").prop("checked", false);
        $(item).find("textarea").each(function() {
          _unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
            this.setContent("");
          });
        });
      }
      function qc1(item) {
        $(item).find(".before-after,.before-after-checkbox, .textDIV, .eidtDiv").each(function() {
          ($(this).find(".check_answer").length || $(this).find(".check_answer_dx").length) && $(this).click();
        });
        $(item).find(".before-after, .textDIV, .eidtDiv").find("textarea").each(function() {
          _unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
            this.setContent("");
          });
        });
        $(item).find(":radio, :checkbox").prop("checked", false);
        $(item).find("textarea").each(function() {
          _unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
            this.setContent("");
          });
        });
      }
      const allowCopy = () => {
        document.body.oncopy = null;
        document.body.oncut = null;
        document.body.onpaste = null;
        document.body.onselectstart = null;
        document.body.ondragstart = null;
        const style = document.createElement("style");
        style.innerHTML = `
      * {
          -webkit-user-select: auto !important;
          -moz-user-select: auto !important;
          -o-user-select: auto !important;
          user-select: auto !important;
      }
  `;
        document.head.appendChild(style);
      };
      function isTrue(text) {
        return Boolean(String(text).match(/(正确|是|对|√|T|ri|true)/));
      }
      function isFalse(text) {
        return Boolean(String(text).match(/(错误|否|错|×|F|wr|false)/));
      }
      function msg(content, type = "info") {
        try {
          ElementPlus.ElNotification({
            // @ts-ignore
            title: `${scriptInfo$1.script.name} v${scriptInfo$1.script.version}`,
            // 设置通知标题,使用模板字符串拼接脚本信息
            message: content,
            // 设置通知内容
            type,
            // 设置通知类型,默认为 "info"
            dangerouslyUseHTMLString: true,
            // 允许使用 HTML 字符串
            // el改aah
            appendTo: document.getElementById("AiAskApp")
          });
        } catch (e) {
        }
      }
      const formatDate = (dateString) => {
        let date = new Date(dateString);
        return date.toISOString().replace("T", " ").substring(0, 19);
      };
      const updateCheck = () => {
        const app = wapp().app;
        if (!app.app.checkUpdate) {
          return Promise.resolve(null);
        }
        let updateCache = Cache.get("lastCheckTime");
        if (updateCache && (/* @__PURE__ */ new Date()).getTime() - updateCache < 1e3 * 60) {
          return Promise.resolve(null);
        }
        try {
          let scriptId = app.script.updateURL.match(/scripts\/(\d+)/)[1];
          if (!scriptId) {
            return Promise.resolve(null);
          }
          let url = `https://greasyfork.org/zh-CN/scripts/${scriptId}.json`;
          return new Promise((resolve, reject) => {
            requestFetch(url, "GET", {}, {}).then((res) => {
              res = JSON.parse(res);
              log("更新检测", res, "info");
              if (res.version > scriptInfo$1.script.version) {
                msg(`检测到新版本<span style="color:red">${res.version}</span>,请及时更新<br>更新时间:${formatDate(res.code_updated_at)}<br><a target="_blank" href="https://greasyfork.org/zh-CN/scripts/${scriptId}">>>点我快捷跳转更新<<</a>`, "warning");
              }
              Cache.set("lastCheckTime", (/* @__PURE__ */ new Date()).getTime());
            }).catch(
              (error) => {
                console.error("更新检测失败", error);
                resolve(null);
              }
            );
          });
        } catch {
          console.error("更新检测失败");
          return Promise.resolve(null);
        }
      };
      const updateCheck1 = () => {
        const app = wapp().app;
        let scriptId = app.script.updateURL.match(/scripts\/(\d+)/)[1];
        if (!scriptId) {
          return Promise.resolve(null);
        }
        let url = `https://greasyfork.org/zh-CN/scripts/${scriptId}.json`;
        return new Promise((resolve, reject) => {
          requestFetch(url, "GET", {}, {}).then((res) => {
            res = JSON.parse(res);
            if (res.version > scriptInfo$1.script.version) {
              msg(`检测到新版本<span style="color:red">${res.version}</span>,请及时更新<br>更新时间:${formatDate(res.code_updated_at)}<br><a target="_blank" href="https://greasyfork.org/zh-CN/scripts/${scriptId}">>>点我快捷跳转更新<<</a>`, "warning");
            } else {
              msg(`当前版本为最新版本`, "success");
            }
            Cache.set("lastCheckTime", (/* @__PURE__ */ new Date()).getTime());
          }).catch(
            (error) => {
              console.error("更新检测失败", error);
              resolve(null);
            }
          );
        });
      };
      function randomString(len) {
        let str = "";
        for (; str.length < len; str += Math.random().toString(36).substr(2))
          ;
        return str.substr(0, len);
      }
      function wapp() {
        const app = _unsafeWindow[key];
        return app;
      }
      const waitUntil = (condition, interval = 100) => {
        return new Promise((resolve) => {
          const timer = setInterval(() => {
            if (condition()) {
              clearInterval(timer);
              resolve();
            }
          }, interval);
        });
      };
      const questionHash = (type, question, options, optionsSort = true) => {
        let option = Array.from(options);
        if (optionsSort) {
          option.sort();
        }
        const optionsStr = option.join("");
        const hash = md5Exports.md5(`${type}${question}${optionsStr}`);
        return hash;
      };
      const env = (dev, prod) => {
        return prod;
      };
      function get_t(data) {
        const { sign, t, ...rest } = data;
        const keys2 = Object.keys(rest).sort();
        const str = keys2.map((key2) => {
          let value = rest[key2];
          if (typeof value === "object") {
            value = JSON.stringify(value);
          }
          return `${key2}=${value}`;
        }).join("&");
        return md5Exports.md5(str);
      }
      function removeStartChar(options) {
        return options.map((item, inx) => {
          let chr = String.fromCharCode(65 + inx) + ".";
          return item.replace(new RegExp(`^${chr}`), "").trim();
        });
      }
      function log(...args) {
      }
      function getUrl() {
        return location.href;
      }
      function isExist(selector) {
        return $(selector).length > 0;
      }
      class Answer {
        constructor() {
        }
        /**
         * @description: 接口打分,是否有答案,是否匹配
         */
        static score(api, score) {
          let cache = Cache.get("api_" + api, { score: 0 });
          cache.score += score;
          Cache.set("api_" + api, cache, 600);
        }
        /**
         * @description: 批量获取所有答案
         */
        static async getAllAnswers(questionList) {
          const promises = [
            this.getAnswer3(questionList),
            this.getAnswer1(questionList)
          ];
          return Promise.all(promises);
        }
        /**
         * @description: 批量获取答案
         */
        static async getAnswers(questionList) {
          const promises = [
            this.getAnswer3(questionList)
          ];
          return Promise.all(promises);
        }
        /**
         * @description: 批量获取答案(免费接口)
         */
        static async getAnswersFree(questionList) {
          const promises = [
            this.getMainAnswer(questionList),
            this.getAnswer1(questionList)
          ];
          return Promise.all(promises);
        }
        /**
         * @description: 内置接口1 一之题库
         */
        static async getAnswer1(questionData) {
          let headers = headi();
          return new Promise((resolve) => {
            request("http://cx.icodef.com/wyn-nb?v=4", "POST", {
              question: questionData.question
            }, headers).then((res) => {
              let duration = res[1];
              try {
                res = JSON.parse(res[0].responseText);
              } catch (error) {
                resolve({ form: "免费题库", answer: null, error, duration });
              }
              let answer = "";
              if (res.code === 1) {
                let data = res.data.replace(/javascript:void\(0\);/g, "").trim().replace(/\n/g, "");
                const keywords = ["叛逆", "公众号", "李恒雅", "一之"];
                if (keywords.every((keyword) => !data.includes(keyword))) {
                  answer = data.split("#");
                }
              }
              resolve({ form: "免费题库", answer, duration });
            }).catch((error) => {
              if (error === "timeout") {
                this.score("icodef", -1);
              }
              resolve({ form: "免费题库", answer: "", msg: error, duration: 5e3 });
            });
          });
        }
        static async getAnswer2(questionData) {
          return new Promise((resolve) => {
            if (![0, 1, 2].includes(parseInt(questionData.type))) {
              resolve({
                form: "muketool",
                answer: "",
                duration: "不支持的题型"
              });
              return;
            }
            request("https://api.muketool.com/cx/v2/query", "POST", {
              question: questionData.question,
              type: parseInt(questionData.type)
            }, {}).then((res) => {
              let duration = res[1];
              res = JSON.parse(res[0].responseText);
              resolve({
                form: "muketool",
                answer: res.code === 1 ? res.data.split("#") : "",
                duration
              });
            }).catch((error) => {
              if (error === "timeout") {
                this.score("muketool", -1);
              }
              resolve({
                form: "muketool",
                answer: ""
              });
            });
          });
        }
        static async getAnswer3(questionData) {
          const headers = {
            "Content-Type": "application/json",
            "referer": location.href,
            "v": scriptInfo.version,
            "s": scriptInfo.author
          };
          const data = {
            question: questionData.question,
            // 选项数组
            options: questionData.options.map((item) => item),
            type: questionData.type,
            questionData: questionData.html.innerHTML,
            workType: questionData.workType,
            key: appCache.key ?? ""
          };
          return new Promise((resolve) => {
            request("https://api.tikuhai.com/search", "POST", data, headers).then((res) => {
              let duration = res[1];
              res = JSON.parse(res[0].responseText);
              if (res.code === 200) {
                resolve({
                  form: "付费题库",
                  answer: res.data.answer,
                  duration,
                  msg: res.msg
                });
              } else {
                resolve({
                  form: "付费题库",
                  answer: "",
                  duration,
                  msg: res.msg
                });
              }
            }).catch((error) => {
              if (error === "timeout") {
                this.score("tikuhai", -1);
              }
              resolve({
                form: "付费题库",
                answer: "",
                error,
                duration: 10,
                msg: "请求失败"
              });
            });
          });
        }
        /**
         * @description: 将答案缓存在本地
         */
        static cacheAnswer(questionData) {
          const data = {
            type: questionData.type,
            question: questionData.question,
            options: questionData.options,
            answer: questionData.answer
          };
          const hash = questionHash(data.type, data.question, data.options);
          Cache.set("ques_" + hash, data);
        }
        /**
         * @description: 从本地缓存获取答案
         */
        static async getCacheAnswer(questionData) {
          const hash = questionHash(questionData.type, questionData.question, questionData.options);
          let data = Cache.get("ques_" + hash);
          if (data) {
            return {
              form: "本地缓存",
              answer: data.answer,
              duration: 10
            };
          }
          return {
            form: "本地缓存",
            answer: "",
            duration: 10,
            msg: "未找到缓存"
          };
        }
        /**
         * @description: 从自建题库获取答案
         */
        static getMainAnswer(questionData) {
          const data = {
            type: questionData.type,
            question: questionData.question,
            options: questionData.options.map((item) => item),
            html: questionData.html.innerHTML,
            workType: questionData.workType,
            pageType: questionData.pageType
          };
          const url = env("http://127.0.0.1:9966/api/search", "https://aiask.wk66.top/api/search");
          return new Promise((resolve) => {
            request(url, "POST", data, {}).then((res) => {
              let duration = res[1];
              res = JSON.parse(res[0].responseText);
              if (res.code === 200) {
                resolve({
                  form: "爱问答题库",
                  answer: res.data.answer,
                  duration,
                  msg: res.msg
                });
              } else {
                resolve({
                  form: "爱问答题库",
                  answer: "",
                  duration,
                  msg: res.msg
                });
              }
            }).catch((error) => {
              resolve({
                form: "爱问答题库",
                answer: "",
                error,
                duration: 10,
                msg: "请求失败"
              });
            });
          });
        }
        /**
         * @description: 同步题库
         */
        static async syncQuestionList(data) {
          return new Promise((resolve) => {
            const url = env("http://127.0.0.1:9966/api/sync", "https://aiask.wk66.top/api/sync");
            request(url, "POST", data, {}).then((res) => {
              log(res[0].responseText);
              resolve(res[0].responseText);
            }).catch((error) => {
              resolve(error);
            });
          });
        }
      }
      const parsePack = (str) => {
        const pattern = /data:\s*({.*?})\s*\n/g;
        const result = [];
        let match;
        while ((match = pattern.exec(str)) !== null) {
          const jsonStr = match[1];
          try {
            const json = JSON.parse(jsonStr);
            result.push(json);
          } catch (e) {
          }
        }
        return result;
      };
      const aiAsk = async (message, callback, isfinish) => {
        let config = getApp();
        let url = config.gpt[0].api;
        let data = JSON.stringify({
          "model": "gpt-3.5-turbo",
          "messages": [
            { "role": "system", "content": "请只需要回答我的问题不要有多余的话,如果你不知道请返回【我不会】" },
            {
              "role": "user",
              "content": message
            }
          ],
          "stream": true
        });
        let headers = {
          "Accept": "application/json",
          "Authorization": `Bearer ${config.gpt[0].key}`,
          "Content-Type": "application/json"
        };
        return new Promise((resolve, reject) => {
          if (!config.gpt[0].key) {
            callback(`AI响应异常,可能是没有获取KEY,请按下方步骤操作  
            1. 打开[智普清言](https://chatglm.cn/main/alltoolsdetail)  
            2. 登录后随便发一条消息即可  
            3. 返回答题页刷新页面  `);
            return resolve("暂无KEY");
          }
          _GM_xmlhttpRequest({
            method: "POST",
            url,
            data,
            headers,
            responseType: "stream",
            onloadstart: async (r) => {
              let finish = false;
              const reader = r.response.getReader();
              const decoder = new TextDecoder();
              while (!finish) {
                const { done, value } = await reader.read();
                if (done) {
                  finish = true;
                  isfinish();
                  break;
                }
                const jsonArray = parsePack(decoder.decode(value));
                jsonArray.forEach((json) => {
                  if (!json.choices || json.choices.length === 0) {
                    return;
                  }
                  const text = json.choices[0].delta.content;
                  if (text === void 0 || text === "") {
                    return;
                  }
                  callback(text);
                });
              }
            }
          });
        });
      };
      const yunmuxueyuan = [
        {
          type: "hook",
          name: "云幕学苑hook",
          match: location.host.includes("w-ling.cn"),
          main: (data) => {
            _unsafeWindow.mainClass = $(".backup >a").attr("href");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $(".backup >a").attr("href")) {
                _unsafeWindow.mainClass = $(".backup >a").attr("href");
                if (_unsafeWindow.mainClass === "homework-detail-container") {
                  await waitUntil(function() {
                    return $(".selectDan").length !== 0;
                  });
                }
                vuePageChange();
                observer.disconnect();
              }
            });
            if ($("#app").length >= 1) {
              observer.observe($("#app")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "save",
          name: "云幕学苑收录",
          match: () => location.host.includes("w-ling.cn") && location.href.includes("practiceRecord"),
          question: {
            html: ".selectDan >div >div",
            question: ".title",
            options: ".selectItem label .tagbq",
            type: ".question-box .tag",
            workType: "yunmuxueyuan",
            pageType: "yunmuxueyuan"
          },
          init: async () => {
          },
          answerHook: (item) => {
            const type = $(item.html).parent().find("h3").text().split("、")[1];
            item.question = item.question.replace(/^\d+、/, "");
            item.question = item.question.replace(/\(\d+分\)$/, "");
            let answer = $(item.html).find(".anaylize > span:eq(0)").text().replace("作答正确:", "");
            if (answer === "") {
              answer = $(item.html).find(".falsanaly > span:eq(1)").text().replace("正确答案:", "");
            }
            switch (type) {
              case "单选题":
              case "多选题":
                answer = answer.split("");
                item.answer = answer.map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                if (item.answer.length === 0) {
                  return;
                }
                item.answer.length > 1 ? item.type = "1" : item.type = "0";
                break;
              case "判断题":
                item.type = "3";
                if (answer == "T") {
                  item.answer = ["正确"];
                }
                if (answer == "F") {
                  item.answer = ["错误"];
                }
                break;
              case "填空题":
                item.answer = $(item.html).find(".riganswer > span").first().nextAll("span").map((inx, element) => {
                  return removeHtml1($(element).text());
                }).get();
                item.type = "2";
                break;
            }
            return item;
          }
        },
        {
          type: "ask",
          name: "云幕学苑",
          tips: "云幕学苑仅支持选择判断,其他题型待适配",
          match: () => location.host.includes("w-ling.cn") && location.href.includes("practicePaper"),
          question: {
            html: ".selectDan >div >div",
            question: ".title",
            options: ".selectItem label .tagbq",
            type: ".question-box .tag",
            workType: "yunmuxueyuan",
            pageType: "yunmuxueyuan"
          },
          init: async () => {
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            item.question = item.question.replace(/^\d+、/, "");
            item.question = item.question.replace(/\(\d+分\)$/, "");
            const type = $(item.html).parent().find("h4").text().split("、")[1];
            switch (type) {
              case "单选题":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.type = "3";
                item.$options = $(item.html).find(".selectItem label");
                item.options = item.$options.map((inx, element) => {
                  return removeHtml1($(element).text());
                }).get();
                log(item.$options);
                break;
              case "填空题":
                item.type = "2";
                break;
            }
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "3":
                break;
              case "2":
                $(item.html).find(".tiankong input").each((inx, element) => {
                  let vueL = $(element).parent()[0].__vue__;
                  $(element).val(item.answer[inx]);
                  const event2 = new Event("input");
                  element.dispatchEvent(event2);
                  vueL.$emit("change", item.answer[inx]);
                });
                return false;
            }
            return true;
          },
          finish: (item) => {
          }
        }
      ];
      var Typr = {};
      Typr.parse = function(buff) {
        var bin = Typr._bin;
        var data = new Uint8Array(buff);
        var offset = 0;
        bin.readFixed(data, offset);
        offset += 4;
        var numTables = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        var tags = ["cmap", "head", "hhea", "maxp", "hmtx", "name", "OS/2", "post", "loca", "glyf", "kern", "CFF ", "GPOS", "GSUB", "SVG "];
        var obj = { _data: data };
        var tabs = {};
        for (var i = 0; i < numTables; i++) {
          var tag = bin.readASCII(data, offset, 4);
          offset += 4;
          bin.readUint(data, offset);
          offset += 4;
          var toffset = bin.readUint(data, offset);
          offset += 4;
          var length = bin.readUint(data, offset);
          offset += 4;
          tabs[tag] = { offset: toffset, length };
        }
        for (var i = 0; i < tags.length; i++) {
          var t = tags[i];
          if (tabs[t])
            obj[t.trim()] = Typr[t.trim()].parse(data, tabs[t].offset, tabs[t].length, obj);
        }
        return obj;
      };
      Typr._tabOffset = function(data, tab) {
        var bin = Typr._bin;
        var numTables = bin.readUshort(data, 4);
        var offset = 12;
        for (var i = 0; i < numTables; i++) {
          var tag = bin.readASCII(data, offset, 4);
          offset += 4;
          bin.readUint(data, offset);
          offset += 4;
          var toffset = bin.readUint(data, offset);
          offset += 4;
          bin.readUint(data, offset);
          offset += 4;
          if (tag == tab)
            return toffset;
        }
        return 0;
      };
      Typr._bin = { readFixed: function(data, o2) {
        return (data[o2] << 8 | data[o2 + 1]) + (data[o2 + 2] << 8 | data[o2 + 3]) / (256 * 256 + 4);
      }, readF2dot14: function(data, o2) {
        var num = Typr._bin.readShort(data, o2);
        return num / 16384;
      }, readInt: function(buff, p2) {
        var a2 = Typr._bin.t.uint8;
        a2[0] = buff[p2 + 3];
        a2[1] = buff[p2 + 2];
        a2[2] = buff[p2 + 1];
        a2[3] = buff[p2];
        return Typr._bin.t.int32[0];
      }, readInt8: function(buff, p2) {
        var a2 = Typr._bin.t.uint8;
        a2[0] = buff[p2];
        return Typr._bin.t.int8[0];
      }, readShort: function(buff, p2) {
        var a2 = Typr._bin.t.uint8;
        a2[1] = buff[p2];
        a2[0] = buff[p2 + 1];
        return Typr._bin.t.int16[0];
      }, readUshort: function(buff, p2) {
        return buff[p2] << 8 | buff[p2 + 1];
      }, readUshorts: function(buff, p2, len) {
        var arr = [];
        for (var i = 0; i < len; i++)
          arr.push(Typr._bin.readUshort(buff, p2 + i * 2));
        return arr;
      }, readUint: function(buff, p2) {
        var a2 = Typr._bin.t.uint8;
        a2[3] = buff[p2];
        a2[2] = buff[p2 + 1];
        a2[1] = buff[p2 + 2];
        a2[0] = buff[p2 + 3];
        return Typr._bin.t.uint32[0];
      }, readUint64: function(buff, p2) {
        return Typr._bin.readUint(buff, p2) * (4294967295 + 1) + Typr._bin.readUint(buff, p2 + 4);
      }, readASCII: function(buff, p2, l2) {
        var s2 = "";
        for (var i = 0; i < l2; i++)
          s2 += String.fromCharCode(buff[p2 + i]);
        return s2;
      }, readUnicode: function(buff, p2, l2) {
        var s2 = "";
        for (var i = 0; i < l2; i++) {
          var c2 = buff[p2++] << 8 | buff[p2++];
          s2 += String.fromCharCode(c2);
        }
        return s2;
      }, _tdec: window["TextDecoder"] ? new window["TextDecoder"]() : null, readUTF8: function(buff, p2, l2) {
        var tdec = Typr._bin._tdec;
        if (tdec && p2 == 0 && l2 == buff.length)
          return tdec["decode"](buff);
        return Typr._bin.readASCII(buff, p2, l2);
      }, readBytes: function(buff, p2, l2) {
        var arr = [];
        for (var i = 0; i < l2; i++)
          arr.push(buff[p2 + i]);
        return arr;
      }, readASCIIArray: function(buff, p2, l2) {
        var s2 = [];
        for (var i = 0; i < l2; i++)
          s2.push(String.fromCharCode(buff[p2 + i]));
        return s2;
      } };
      Typr._bin.t = { buff: new ArrayBuffer(8) };
      Typr._bin.t.int8 = new Int8Array(Typr._bin.t.buff);
      Typr._bin.t.uint8 = new Uint8Array(Typr._bin.t.buff);
      Typr._bin.t.int16 = new Int16Array(Typr._bin.t.buff);
      Typr._bin.t.uint16 = new Uint16Array(Typr._bin.t.buff);
      Typr._bin.t.int32 = new Int32Array(Typr._bin.t.buff);
      Typr._bin.t.uint32 = new Uint32Array(Typr._bin.t.buff);
      Typr._lctf = {};
      Typr._lctf.parse = function(data, offset, length, font, subt) {
        var bin = Typr._bin;
        var obj = {};
        var offset0 = offset;
        bin.readFixed(data, offset);
        offset += 4;
        var offScriptList = bin.readUshort(data, offset);
        offset += 2;
        var offFeatureList = bin.readUshort(data, offset);
        offset += 2;
        var offLookupList = bin.readUshort(data, offset);
        offset += 2;
        obj.scriptList = Typr._lctf.readScriptList(data, offset0 + offScriptList);
        obj.featureList = Typr._lctf.readFeatureList(data, offset0 + offFeatureList);
        obj.lookupList = Typr._lctf.readLookupList(data, offset0 + offLookupList, subt);
        return obj;
      };
      Typr._lctf.readLookupList = function(data, offset, subt) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = [];
        var count = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < count; i++) {
          var noff = bin.readUshort(data, offset);
          offset += 2;
          var lut = Typr._lctf.readLookupTable(data, offset0 + noff, subt);
          obj.push(lut);
        }
        return obj;
      };
      Typr._lctf.readLookupTable = function(data, offset, subt) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = { tabs: [] };
        obj.ltype = bin.readUshort(data, offset);
        offset += 2;
        obj.flag = bin.readUshort(data, offset);
        offset += 2;
        var cnt = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < cnt; i++) {
          var noff = bin.readUshort(data, offset);
          offset += 2;
          var tab = subt(data, obj.ltype, offset0 + noff);
          obj.tabs.push(tab);
        }
        return obj;
      };
      Typr._lctf.numOfOnes = function(n) {
        var num = 0;
        for (var i = 0; i < 32; i++)
          if ((n >>> i & 1) != 0)
            num++;
        return num;
      };
      Typr._lctf.readClassDef = function(data, offset) {
        var bin = Typr._bin;
        var obj = [];
        var format2 = bin.readUshort(data, offset);
        offset += 2;
        if (format2 == 1) {
          var startGlyph = bin.readUshort(data, offset);
          offset += 2;
          var glyphCount = bin.readUshort(data, offset);
          offset += 2;
          for (var i = 0; i < glyphCount; i++) {
            obj.push(startGlyph + i);
            obj.push(startGlyph + i);
            obj.push(bin.readUshort(data, offset));
            offset += 2;
          }
        }
        if (format2 == 2) {
          var count = bin.readUshort(data, offset);
          offset += 2;
          for (var i = 0; i < count; i++) {
            obj.push(bin.readUshort(data, offset));
            offset += 2;
            obj.push(bin.readUshort(data, offset));
            offset += 2;
            obj.push(bin.readUshort(data, offset));
            offset += 2;
          }
        }
        return obj;
      };
      Typr._lctf.getInterval = function(tab, val) {
        for (var i = 0; i < tab.length; i += 3) {
          var start = tab[i], end = tab[i + 1];
          tab[i + 2];
          if (start <= val && val <= end)
            return i;
        }
        return -1;
      };
      Typr._lctf.readValueRecord = function(data, offset, valFmt) {
        var bin = Typr._bin;
        var arr = [];
        arr.push(valFmt & 1 ? bin.readShort(data, offset) : 0);
        offset += valFmt & 1 ? 2 : 0;
        arr.push(valFmt & 2 ? bin.readShort(data, offset) : 0);
        offset += valFmt & 2 ? 2 : 0;
        arr.push(valFmt & 4 ? bin.readShort(data, offset) : 0);
        offset += valFmt & 4 ? 2 : 0;
        arr.push(valFmt & 8 ? bin.readShort(data, offset) : 0);
        offset += valFmt & 8 ? 2 : 0;
        return arr;
      };
      Typr._lctf.readCoverage = function(data, offset) {
        var bin = Typr._bin;
        var cvg = {};
        cvg.fmt = bin.readUshort(data, offset);
        offset += 2;
        var count = bin.readUshort(data, offset);
        offset += 2;
        if (cvg.fmt == 1)
          cvg.tab = bin.readUshorts(data, offset, count);
        if (cvg.fmt == 2)
          cvg.tab = bin.readUshorts(data, offset, count * 3);
        return cvg;
      };
      Typr._lctf.coverageIndex = function(cvg, val) {
        var tab = cvg.tab;
        if (cvg.fmt == 1)
          return tab.indexOf(val);
        if (cvg.fmt == 2) {
          var ind = Typr._lctf.getInterval(tab, val);
          if (ind != -1)
            return tab[ind + 2] + (val - tab[ind]);
        }
        return -1;
      };
      Typr._lctf.readFeatureList = function(data, offset) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = [];
        var count = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < count; i++) {
          var tag = bin.readASCII(data, offset, 4);
          offset += 4;
          var noff = bin.readUshort(data, offset);
          offset += 2;
          obj.push({ tag: tag.trim(), tab: Typr._lctf.readFeatureTable(data, offset0 + noff) });
        }
        return obj;
      };
      Typr._lctf.readFeatureTable = function(data, offset) {
        var bin = Typr._bin;
        bin.readUshort(data, offset);
        offset += 2;
        var lookupCount = bin.readUshort(data, offset);
        offset += 2;
        var indices = [];
        for (var i = 0; i < lookupCount; i++)
          indices.push(bin.readUshort(data, offset + 2 * i));
        return indices;
      };
      Typr._lctf.readScriptList = function(data, offset) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = {};
        var count = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < count; i++) {
          var tag = bin.readASCII(data, offset, 4);
          offset += 4;
          var noff = bin.readUshort(data, offset);
          offset += 2;
          obj[tag.trim()] = Typr._lctf.readScriptTable(data, offset0 + noff);
        }
        return obj;
      };
      Typr._lctf.readScriptTable = function(data, offset) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = {};
        var defLangSysOff = bin.readUshort(data, offset);
        offset += 2;
        obj.default = Typr._lctf.readLangSysTable(data, offset0 + defLangSysOff);
        var langSysCount = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < langSysCount; i++) {
          var tag = bin.readASCII(data, offset, 4);
          offset += 4;
          var langSysOff = bin.readUshort(data, offset);
          offset += 2;
          obj[tag.trim()] = Typr._lctf.readLangSysTable(data, offset0 + langSysOff);
        }
        return obj;
      };
      Typr._lctf.readLangSysTable = function(data, offset) {
        var bin = Typr._bin;
        var obj = {};
        bin.readUshort(data, offset);
        offset += 2;
        obj.reqFeature = bin.readUshort(data, offset);
        offset += 2;
        var featureCount = bin.readUshort(data, offset);
        offset += 2;
        obj.features = bin.readUshorts(data, offset, featureCount);
        return obj;
      };
      Typr.CFF = {};
      Typr.CFF.parse = function(data, offset, length) {
        var bin = Typr._bin;
        data = new Uint8Array(data.buffer, offset, length);
        offset = 0;
        data[offset];
        offset++;
        data[offset];
        offset++;
        data[offset];
        offset++;
        data[offset];
        offset++;
        var ninds = [];
        offset = Typr.CFF.readIndex(data, offset, ninds);
        var names2 = [];
        for (var i = 0; i < ninds.length - 1; i++)
          names2.push(bin.readASCII(data, offset + ninds[i], ninds[i + 1] - ninds[i]));
        offset += ninds[ninds.length - 1];
        var tdinds = [];
        offset = Typr.CFF.readIndex(data, offset, tdinds);
        var topDicts = [];
        for (var i = 0; i < tdinds.length - 1; i++)
          topDicts.push(Typr.CFF.readDict(data, offset + tdinds[i], offset + tdinds[i + 1]));
        offset += tdinds[tdinds.length - 1];
        var topdict = topDicts[0];
        var sinds = [];
        offset = Typr.CFF.readIndex(data, offset, sinds);
        var strings = [];
        for (var i = 0; i < sinds.length - 1; i++)
          strings.push(bin.readASCII(data, offset + sinds[i], sinds[i + 1] - sinds[i]));
        offset += sinds[sinds.length - 1];
        Typr.CFF.readSubrs(data, offset, topdict);
        if (topdict.CharStrings) {
          offset = topdict.CharStrings;
          var sinds = [];
          offset = Typr.CFF.readIndex(data, offset, sinds);
          var cstr = [];
          for (var i = 0; i < sinds.length - 1; i++)
            cstr.push(bin.readBytes(data, offset + sinds[i], sinds[i + 1] - sinds[i]));
          topdict.CharStrings = cstr;
        }
        if (topdict.Encoding)
          topdict.Encoding = Typr.CFF.readEncoding(data, topdict.Encoding, topdict.CharStrings.length);
        if (topdict.charset)
          topdict.charset = Typr.CFF.readCharset(data, topdict.charset, topdict.CharStrings.length);
        if (topdict.Private) {
          offset = topdict.Private[1];
          topdict.Private = Typr.CFF.readDict(data, offset, offset + topdict.Private[0]);
          if (topdict.Private.Subrs)
            Typr.CFF.readSubrs(data, offset + topdict.Private.Subrs, topdict.Private);
        }
        var obj = {};
        for (var p2 in topdict) {
          if (["FamilyName", "FullName", "Notice", "version", "Copyright"].indexOf(p2) != -1)
            obj[p2] = strings[topdict[p2] - 426 + 35];
          else
            obj[p2] = topdict[p2];
        }
        return obj;
      };
      Typr.CFF.readSubrs = function(data, offset, obj) {
        var bin = Typr._bin;
        var gsubinds = [];
        offset = Typr.CFF.readIndex(data, offset, gsubinds);
        var bias, nSubrs = gsubinds.length;
        if (nSubrs < 1240)
          bias = 107;
        else if (nSubrs < 33900)
          bias = 1131;
        else
          bias = 32768;
        obj.Bias = bias;
        obj.Subrs = [];
        for (var i = 0; i < gsubinds.length - 1; i++)
          obj.Subrs.push(bin.readBytes(data, offset + gsubinds[i], gsubinds[i + 1] - gsubinds[i]));
      };
      Typr.CFF.tableSE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 0, 0];
      Typr.CFF.glyphByUnicode = function(cff, code) {
        for (var i = 0; i < cff.charset.length; i++)
          if (cff.charset[i] == code)
            return i;
        return -1;
      };
      Typr.CFF.glyphBySE = function(cff, charcode) {
        if (charcode < 0 || charcode > 255)
          return -1;
        return Typr.CFF.glyphByUnicode(cff, Typr.CFF.tableSE[charcode]);
      };
      Typr.CFF.readEncoding = function(data, offset, num) {
        Typr._bin;
        var array = [".notdef"];
        var format2 = data[offset];
        offset++;
        if (format2 == 0) {
          var nCodes = data[offset];
          offset++;
          for (var i = 0; i < nCodes; i++)
            array.push(data[offset + i]);
        } else
          throw "error: unknown encoding format: " + format2;
        return array;
      };
      Typr.CFF.readCharset = function(data, offset, num) {
        var bin = Typr._bin;
        var charset = [".notdef"];
        var format2 = data[offset];
        offset++;
        if (format2 == 0) {
          for (var i = 0; i < num; i++) {
            var first = bin.readUshort(data, offset);
            offset += 2;
            charset.push(first);
          }
        } else if (format2 == 1 || format2 == 2) {
          while (charset.length < num) {
            var first = bin.readUshort(data, offset);
            offset += 2;
            var nLeft = 0;
            if (format2 == 1) {
              nLeft = data[offset];
              offset++;
            } else {
              nLeft = bin.readUshort(data, offset);
              offset += 2;
            }
            for (var i = 0; i <= nLeft; i++) {
              charset.push(first);
              first++;
            }
          }
        } else
          throw "error: format: " + format2;
        return charset;
      };
      Typr.CFF.readIndex = function(data, offset, inds) {
        var bin = Typr._bin;
        var count = bin.readUshort(data, offset);
        offset += 2;
        var offsize = data[offset];
        offset++;
        if (offsize == 1)
          for (var i = 0; i < count + 1; i++)
            inds.push(data[offset + i]);
        else if (offsize == 2)
          for (var i = 0; i < count + 1; i++)
            inds.push(bin.readUshort(data, offset + i * 2));
        else if (offsize == 3)
          for (var i = 0; i < count + 1; i++)
            inds.push(bin.readUint(data, offset + i * 3 - 1) & 16777215);
        else if (count != 0)
          throw "unsupported offset size: " + offsize + ", count: " + count;
        offset += (count + 1) * offsize;
        return offset - 1;
      };
      Typr.CFF.getCharString = function(data, offset, o2) {
        var bin = Typr._bin;
        var b0 = data[offset], b1 = data[offset + 1];
        data[offset + 2];
        data[offset + 3];
        data[offset + 4];
        var vs = 1;
        var op = null, val = null;
        if (b0 <= 20) {
          op = b0;
          vs = 1;
        }
        if (b0 == 12) {
          op = b0 * 100 + b1;
          vs = 2;
        }
        if (21 <= b0 && b0 <= 27) {
          op = b0;
          vs = 1;
        }
        if (b0 == 28) {
          val = bin.readShort(data, offset + 1);
          vs = 3;
        }
        if (29 <= b0 && b0 <= 31) {
          op = b0;
          vs = 1;
        }
        if (32 <= b0 && b0 <= 246) {
          val = b0 - 139;
          vs = 1;
        }
        if (247 <= b0 && b0 <= 250) {
          val = (b0 - 247) * 256 + b1 + 108;
          vs = 2;
        }
        if (251 <= b0 && b0 <= 254) {
          val = -(b0 - 251) * 256 - b1 - 108;
          vs = 2;
        }
        if (b0 == 255) {
          val = bin.readInt(data, offset + 1) / 65535;
          vs = 5;
        }
        o2.val = val != null ? val : "o" + op;
        o2.size = vs;
      };
      Typr.CFF.readCharString = function(data, offset, length) {
        var end = offset + length;
        var bin = Typr._bin;
        var arr = [];
        while (offset < end) {
          var b0 = data[offset], b1 = data[offset + 1];
          data[offset + 2];
          data[offset + 3];
          data[offset + 4];
          var vs = 1;
          var op = null, val = null;
          if (b0 <= 20) {
            op = b0;
            vs = 1;
          }
          if (b0 == 12) {
            op = b0 * 100 + b1;
            vs = 2;
          }
          if (b0 == 19 || b0 == 20) {
            op = b0;
            vs = 2;
          }
          if (21 <= b0 && b0 <= 27) {
            op = b0;
            vs = 1;
          }
          if (b0 == 28) {
            val = bin.readShort(data, offset + 1);
            vs = 3;
          }
          if (29 <= b0 && b0 <= 31) {
            op = b0;
            vs = 1;
          }
          if (32 <= b0 && b0 <= 246) {
            val = b0 - 139;
            vs = 1;
          }
          if (247 <= b0 && b0 <= 250) {
            val = (b0 - 247) * 256 + b1 + 108;
            vs = 2;
          }
          if (251 <= b0 && b0 <= 254) {
            val = -(b0 - 251) * 256 - b1 - 108;
            vs = 2;
          }
          if (b0 == 255) {
            val = bin.readInt(data, offset + 1) / 65535;
            vs = 5;
          }
          arr.push(val != null ? val : "o" + op);
          offset += vs;
        }
        return arr;
      };
      Typr.CFF.readDict = function(data, offset, end) {
        var bin = Typr._bin;
        var dict = {};
        var carr = [];
        while (offset < end) {
          var b0 = data[offset], b1 = data[offset + 1];
          data[offset + 2];
          data[offset + 3];
          data[offset + 4];
          var vs = 1;
          var key2 = null, val = null;
          if (b0 == 28) {
            val = bin.readShort(data, offset + 1);
            vs = 3;
          }
          if (b0 == 29) {
            val = bin.readInt(data, offset + 1);
            vs = 5;
          }
          if (32 <= b0 && b0 <= 246) {
            val = b0 - 139;
            vs = 1;
          }
          if (247 <= b0 && b0 <= 250) {
            val = (b0 - 247) * 256 + b1 + 108;
            vs = 2;
          }
          if (251 <= b0 && b0 <= 254) {
            val = -(b0 - 251) * 256 - b1 - 108;
            vs = 2;
          }
          if (b0 == 255) {
            val = bin.readInt(data, offset + 1) / 65535;
            vs = 5;
            throw "unknown number";
          }
          if (b0 == 30) {
            var nibs = [];
            vs = 1;
            while (true) {
              var b2 = data[offset + vs];
              vs++;
              var nib0 = b2 >> 4, nib1 = b2 & 15;
              if (nib0 != 15)
                nibs.push(nib0);
              if (nib1 != 15)
                nibs.push(nib1);
              if (nib1 == 15)
                break;
            }
            var s2 = "";
            var chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"];
            for (var i = 0; i < nibs.length; i++)
              s2 += chars[nibs[i]];
            val = parseFloat(s2);
          }
          if (b0 <= 21) {
            var keys2 = ["version", "Notice", "FullName", "FamilyName", "Weight", "FontBBox", "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "escape", "UniqueID", "XUID", "charset", "Encoding", "CharStrings", "Private", "Subrs", "defaultWidthX", "nominalWidthX"];
            key2 = keys2[b0];
            vs = 1;
            if (b0 == 12) {
              var keys2 = ["Copyright", "isFixedPitch", "ItalicAngle", "UnderlinePosition", "UnderlineThickness", "PaintType", "CharstringType", "FontMatrix", "StrokeWidth", "BlueScale", "BlueShift", "BlueFuzz", "StemSnapH", "StemSnapV", "ForceBold", 0, 0, "LanguageGroup", "ExpansionFactor", "initialRandomSeed", "SyntheticBase", "PostScript", "BaseFontName", "BaseFontBlend", 0, 0, 0, 0, 0, 0, "ROS", "CIDFontVersion", "CIDFontRevision", "CIDFontType", "CIDCount", "UIDBase", "FDArray", "FDSelect", "FontName"];
              key2 = keys2[b1];
              vs = 2;
            }
          }
          if (key2 != null) {
            dict[key2] = carr.length == 1 ? carr[0] : carr;
            carr = [];
          } else
            carr.push(val);
          offset += vs;
        }
        return dict;
      };
      Typr.cmap = {};
      Typr.cmap.parse = function(data, offset, length) {
        data = new Uint8Array(data.buffer, offset, length);
        offset = 0;
        var bin = Typr._bin;
        var obj = {};
        bin.readUshort(data, offset);
        offset += 2;
        var numTables = bin.readUshort(data, offset);
        offset += 2;
        var offs = [];
        obj.tables = [];
        for (var i = 0; i < numTables; i++) {
          var platformID = bin.readUshort(data, offset);
          offset += 2;
          var encodingID = bin.readUshort(data, offset);
          offset += 2;
          var noffset = bin.readUint(data, offset);
          offset += 4;
          var id = "p" + platformID + "e" + encodingID;
          var tind = offs.indexOf(noffset);
          if (tind == -1) {
            tind = obj.tables.length;
            var subt;
            offs.push(noffset);
            var format2 = bin.readUshort(data, noffset);
            if (format2 == 0)
              subt = Typr.cmap.parse0(data, noffset);
            else if (format2 == 4)
              subt = Typr.cmap.parse4(data, noffset);
            else if (format2 == 6)
              subt = Typr.cmap.parse6(data, noffset);
            else if (format2 == 12)
              subt = Typr.cmap.parse12(data, noffset);
            else
              console.log("unknown format: " + format2, platformID, encodingID, noffset);
            obj.tables.push(subt);
          }
          if (obj[id] != null)
            throw "multiple tables for one platform+encoding";
          obj[id] = tind;
        }
        return obj;
      };
      Typr.cmap.parse0 = function(data, offset) {
        var bin = Typr._bin;
        var obj = {};
        obj.format = bin.readUshort(data, offset);
        offset += 2;
        var len = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        obj.map = [];
        for (var i = 0; i < len - 6; i++)
          obj.map.push(data[offset + i]);
        return obj;
      };
      Typr.cmap.parse4 = function(data, offset) {
        var bin = Typr._bin;
        var offset0 = offset;
        var obj = {};
        obj.format = bin.readUshort(data, offset);
        offset += 2;
        var length = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        var segCountX2 = bin.readUshort(data, offset);
        offset += 2;
        var segCount = segCountX2 / 2;
        obj.searchRange = bin.readUshort(data, offset);
        offset += 2;
        obj.entrySelector = bin.readUshort(data, offset);
        offset += 2;
        obj.rangeShift = bin.readUshort(data, offset);
        offset += 2;
        obj.endCount = bin.readUshorts(data, offset, segCount);
        offset += segCount * 2;
        offset += 2;
        obj.startCount = bin.readUshorts(data, offset, segCount);
        offset += segCount * 2;
        obj.idDelta = [];
        for (var i = 0; i < segCount; i++) {
          obj.idDelta.push(bin.readShort(data, offset));
          offset += 2;
        }
        obj.idRangeOffset = bin.readUshorts(data, offset, segCount);
        offset += segCount * 2;
        obj.glyphIdArray = [];
        while (offset < offset0 + length) {
          obj.glyphIdArray.push(bin.readUshort(data, offset));
          offset += 2;
        }
        return obj;
      };
      Typr.cmap.parse6 = function(data, offset) {
        var bin = Typr._bin;
        var obj = {};
        obj.format = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        obj.firstCode = bin.readUshort(data, offset);
        offset += 2;
        var entryCount = bin.readUshort(data, offset);
        offset += 2;
        obj.glyphIdArray = [];
        for (var i = 0; i < entryCount; i++) {
          obj.glyphIdArray.push(bin.readUshort(data, offset));
          offset += 2;
        }
        return obj;
      };
      Typr.cmap.parse12 = function(data, offset) {
        var bin = Typr._bin;
        var obj = {};
        obj.format = bin.readUshort(data, offset);
        offset += 2;
        offset += 2;
        bin.readUint(data, offset);
        offset += 4;
        bin.readUint(data, offset);
        offset += 4;
        var nGroups = bin.readUint(data, offset);
        offset += 4;
        obj.groups = [];
        for (var i = 0; i < nGroups; i++) {
          var off = offset + i * 12;
          var startCharCode = bin.readUint(data, off + 0);
          var endCharCode = bin.readUint(data, off + 4);
          var startGlyphID = bin.readUint(data, off + 8);
          obj.groups.push([startCharCode, endCharCode, startGlyphID]);
        }
        return obj;
      };
      Typr.glyf = {};
      Typr.glyf.parse = function(data, offset, length, font) {
        var obj = [];
        for (var g = 0; g < font.maxp.numGlyphs; g++)
          obj.push(null);
        return obj;
      };
      Typr.glyf._parseGlyf = function(font, g) {
        var bin = Typr._bin;
        var data = font._data;
        var offset = Typr._tabOffset(data, "glyf") + font.loca[g];
        if (font.loca[g] == font.loca[g + 1])
          return null;
        var gl = {};
        gl.noc = bin.readShort(data, offset);
        offset += 2;
        gl.xMin = bin.readShort(data, offset);
        offset += 2;
        gl.yMin = bin.readShort(data, offset);
        offset += 2;
        gl.xMax = bin.readShort(data, offset);
        offset += 2;
        gl.yMax = bin.readShort(data, offset);
        offset += 2;
        if (gl.xMin >= gl.xMax || gl.yMin >= gl.yMax)
          return null;
        if (gl.noc > 0) {
          gl.endPts = [];
          for (var i = 0; i < gl.noc; i++) {
            gl.endPts.push(bin.readUshort(data, offset));
            offset += 2;
          }
          var instructionLength = bin.readUshort(data, offset);
          offset += 2;
          if (data.length - offset < instructionLength)
            return null;
          gl.instructions = bin.readBytes(data, offset, instructionLength);
          offset += instructionLength;
          var crdnum = gl.endPts[gl.noc - 1] + 1;
          gl.flags = [];
          for (var i = 0; i < crdnum; i++) {
            var flag = data[offset];
            offset++;
            gl.flags.push(flag);
            if ((flag & 8) != 0) {
              var rep = data[offset];
              offset++;
              for (var j = 0; j < rep; j++) {
                gl.flags.push(flag);
                i++;
              }
            }
          }
          gl.xs = [];
          for (var i = 0; i < crdnum; i++) {
            var i8 = (gl.flags[i] & 2) != 0, same = (gl.flags[i] & 16) != 0;
            if (i8) {
              gl.xs.push(same ? data[offset] : -data[offset]);
              offset++;
            } else {
              if (same)
                gl.xs.push(0);
              else {
                gl.xs.push(bin.readShort(data, offset));
                offset += 2;
              }
            }
          }
          gl.ys = [];
          for (var i = 0; i < crdnum; i++) {
            var i8 = (gl.flags[i] & 4) != 0, same = (gl.flags[i] & 32) != 0;
            if (i8) {
              gl.ys.push(same ? data[offset] : -data[offset]);
              offset++;
            } else {
              if (same)
                gl.ys.push(0);
              else {
                gl.ys.push(bin.readShort(data, offset));
                offset += 2;
              }
            }
          }
          var x2 = 0, y = 0;
          for (var i = 0; i < crdnum; i++) {
            x2 += gl.xs[i];
            y += gl.ys[i];
            gl.xs[i] = x2;
            gl.ys[i] = y;
          }
        } else {
          var ARG_1_AND_2_ARE_WORDS = 1 << 0;
          var ARGS_ARE_XY_VALUES = 1 << 1;
          var WE_HAVE_A_SCALE = 1 << 3;
          var MORE_COMPONENTS = 1 << 5;
          var WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
          var WE_HAVE_A_TWO_BY_TWO = 1 << 7;
          var WE_HAVE_INSTRUCTIONS = 1 << 8;
          gl.parts = [];
          var flags;
          do {
            flags = bin.readUshort(data, offset);
            offset += 2;
            var part = { m: { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 }, p1: -1, p2: -1 };
            gl.parts.push(part);
            part.glyphIndex = bin.readUshort(data, offset);
            offset += 2;
            if (flags & ARG_1_AND_2_ARE_WORDS) {
              var arg1 = bin.readShort(data, offset);
              offset += 2;
              var arg2 = bin.readShort(data, offset);
              offset += 2;
            } else {
              var arg1 = bin.readInt8(data, offset);
              offset++;
              var arg2 = bin.readInt8(data, offset);
              offset++;
            }
            if (flags & ARGS_ARE_XY_VALUES) {
              part.m.tx = arg1;
              part.m.ty = arg2;
            } else {
              part.p1 = arg1;
              part.p2 = arg2;
            }
            if (flags & WE_HAVE_A_SCALE) {
              part.m.a = part.m.d = bin.readF2dot14(data, offset);
              offset += 2;
            } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
              part.m.a = bin.readF2dot14(data, offset);
              offset += 2;
              part.m.d = bin.readF2dot14(data, offset);
              offset += 2;
            } else if (flags & WE_HAVE_A_TWO_BY_TWO) {
              part.m.a = bin.readF2dot14(data, offset);
              offset += 2;
              part.m.b = bin.readF2dot14(data, offset);
              offset += 2;
              part.m.c = bin.readF2dot14(data, offset);
              offset += 2;
              part.m.d = bin.readF2dot14(data, offset);
              offset += 2;
            }
          } while (flags & MORE_COMPONENTS);
          if (flags & WE_HAVE_INSTRUCTIONS) {
            var numInstr = bin.readUshort(data, offset);
            offset += 2;
            gl.instr = [];
            for (var i = 0; i < numInstr; i++) {
              gl.instr.push(data[offset]);
              offset++;
            }
          }
        }
        return gl;
      };
      Typr.GPOS = {};
      Typr.GPOS.parse = function(data, offset, length, font) {
        return Typr._lctf.parse(data, offset, length, font, Typr.GPOS.subt);
      };
      Typr.GPOS.subt = function(data, ltype, offset) {
        if (ltype != 2)
          return null;
        var bin = Typr._bin, offset0 = offset, tab = {};
        tab.format = bin.readUshort(data, offset);
        offset += 2;
        var covOff = bin.readUshort(data, offset);
        offset += 2;
        tab.coverage = Typr._lctf.readCoverage(data, covOff + offset0);
        tab.valFmt1 = bin.readUshort(data, offset);
        offset += 2;
        tab.valFmt2 = bin.readUshort(data, offset);
        offset += 2;
        var ones1 = Typr._lctf.numOfOnes(tab.valFmt1);
        var ones2 = Typr._lctf.numOfOnes(tab.valFmt2);
        if (tab.format == 1) {
          tab.pairsets = [];
          var count = bin.readUshort(data, offset);
          offset += 2;
          for (var i = 0; i < count; i++) {
            var psoff = bin.readUshort(data, offset);
            offset += 2;
            psoff += offset0;
            var pvcount = bin.readUshort(data, psoff);
            psoff += 2;
            var arr = [];
            for (var j = 0; j < pvcount; j++) {
              var gid2 = bin.readUshort(data, psoff);
              psoff += 2;
              var value1, value2;
              if (tab.valFmt1 != 0) {
                value1 = Typr._lctf.readValueRecord(data, psoff, tab.valFmt1);
                psoff += ones1 * 2;
              }
              if (tab.valFmt2 != 0) {
                value2 = Typr._lctf.readValueRecord(data, psoff, tab.valFmt2);
                psoff += ones2 * 2;
              }
              arr.push({ gid2, val1: value1, val2: value2 });
            }
            tab.pairsets.push(arr);
          }
        }
        if (tab.format == 2) {
          var classDef1 = bin.readUshort(data, offset);
          offset += 2;
          var classDef2 = bin.readUshort(data, offset);
          offset += 2;
          var class1Count = bin.readUshort(data, offset);
          offset += 2;
          var class2Count = bin.readUshort(data, offset);
          offset += 2;
          tab.classDef1 = Typr._lctf.readClassDef(data, offset0 + classDef1);
          tab.classDef2 = Typr._lctf.readClassDef(data, offset0 + classDef2);
          tab.matrix = [];
          for (var i = 0; i < class1Count; i++) {
            var row = [];
            for (var j = 0; j < class2Count; j++) {
              var value1 = null, value2 = null;
              if (tab.valFmt1 != 0) {
                value1 = Typr._lctf.readValueRecord(data, offset, tab.valFmt1);
                offset += ones1 * 2;
              }
              if (tab.valFmt2 != 0) {
                value2 = Typr._lctf.readValueRecord(data, offset, tab.valFmt2);
                offset += ones2 * 2;
              }
              row.push({ val1: value1, val2: value2 });
            }
            tab.matrix.push(row);
          }
        }
        return tab;
      };
      Typr.GSUB = {};
      Typr.GSUB.parse = function(data, offset, length, font) {
        return Typr._lctf.parse(data, offset, length, font, Typr.GSUB.subt);
      };
      Typr.GSUB.subt = function(data, ltype, offset) {
        var bin = Typr._bin, offset0 = offset, tab = {};
        if (ltype != 1 && ltype != 4 && ltype != 5)
          return null;
        tab.fmt = bin.readUshort(data, offset);
        offset += 2;
        var covOff = bin.readUshort(data, offset);
        offset += 2;
        tab.coverage = Typr._lctf.readCoverage(data, covOff + offset0);
        if (ltype == 1) {
          if (tab.fmt == 1) {
            tab.delta = bin.readShort(data, offset);
            offset += 2;
          } else if (tab.fmt == 2) {
            var cnt = bin.readUshort(data, offset);
            offset += 2;
            tab.newg = bin.readUshorts(data, offset, cnt);
            offset += tab.newg.length * 2;
          }
        } else if (ltype == 4) {
          tab.vals = [];
          var cnt = bin.readUshort(data, offset);
          offset += 2;
          for (var i = 0; i < cnt; i++) {
            var loff = bin.readUshort(data, offset);
            offset += 2;
            tab.vals.push(Typr.GSUB.readLigatureSet(data, offset0 + loff));
          }
        } else if (ltype == 5) {
          if (tab.fmt == 2) {
            var cDefOffset = bin.readUshort(data, offset);
            offset += 2;
            tab.cDef = Typr._lctf.readClassDef(data, offset0 + cDefOffset);
            tab.scset = [];
            var subClassSetCount = bin.readUshort(data, offset);
            offset += 2;
            for (var i = 0; i < subClassSetCount; i++) {
              var scsOff = bin.readUshort(data, offset);
              offset += 2;
              tab.scset.push(scsOff == 0 ? null : Typr.GSUB.readSubClassSet(data, offset0 + scsOff));
            }
          } else
            console.log("unknown table format", tab.fmt);
        }
        return tab;
      };
      Typr.GSUB.readSubClassSet = function(data, offset) {
        var rUs = Typr._bin.readUshort, offset0 = offset, lset = [];
        var cnt = rUs(data, offset);
        offset += 2;
        for (var i = 0; i < cnt; i++) {
          var loff = rUs(data, offset);
          offset += 2;
          lset.push(Typr.GSUB.readSubClassRule(data, offset0 + loff));
        }
        return lset;
      };
      Typr.GSUB.readSubClassRule = function(data, offset) {
        var rUs = Typr._bin.readUshort, rule2 = {};
        var gcount = rUs(data, offset);
        offset += 2;
        var scount = rUs(data, offset);
        offset += 2;
        rule2.input = [];
        for (var i = 0; i < gcount - 1; i++) {
          rule2.input.push(rUs(data, offset));
          offset += 2;
        }
        rule2.substLookupRecords = Typr.GSUB.readSubstLookupRecords(data, offset, scount);
        return rule2;
      };
      Typr.GSUB.readSubstLookupRecords = function(data, offset, cnt) {
        var rUs = Typr._bin.readUshort;
        var out = [];
        for (var i = 0; i < cnt; i++) {
          out.push(rUs(data, offset), rUs(data, offset + 2));
          offset += 4;
        }
        return out;
      };
      Typr.GSUB.readChainSubClassSet = function(data, offset) {
        var bin = Typr._bin, offset0 = offset, lset = [];
        var cnt = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < cnt; i++) {
          var loff = bin.readUshort(data, offset);
          offset += 2;
          lset.push(Typr.GSUB.readChainSubClassRule(data, offset0 + loff));
        }
        return lset;
      };
      Typr.GSUB.readChainSubClassRule = function(data, offset) {
        var bin = Typr._bin, rule2 = {};
        var pps = ["backtrack", "input", "lookahead"];
        for (var pi = 0; pi < pps.length; pi++) {
          var cnt = bin.readUshort(data, offset);
          offset += 2;
          if (pi == 1)
            cnt--;
          rule2[pps[pi]] = bin.readUshorts(data, offset, cnt);
          offset += rule2[pps[pi]].length * 2;
        }
        var cnt = bin.readUshort(data, offset);
        offset += 2;
        rule2.subst = bin.readUshorts(data, offset, cnt * 2);
        offset += rule2.subst.length * 2;
        return rule2;
      };
      Typr.GSUB.readLigatureSet = function(data, offset) {
        var bin = Typr._bin, offset0 = offset, lset = [];
        var lcnt = bin.readUshort(data, offset);
        offset += 2;
        for (var j = 0; j < lcnt; j++) {
          var loff = bin.readUshort(data, offset);
          offset += 2;
          lset.push(Typr.GSUB.readLigature(data, offset0 + loff));
        }
        return lset;
      };
      Typr.GSUB.readLigature = function(data, offset) {
        var bin = Typr._bin, lig = { chain: [] };
        lig.nglyph = bin.readUshort(data, offset);
        offset += 2;
        var ccnt = bin.readUshort(data, offset);
        offset += 2;
        for (var k = 0; k < ccnt - 1; k++) {
          lig.chain.push(bin.readUshort(data, offset));
          offset += 2;
        }
        return lig;
      };
      Typr.head = {};
      Typr.head.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = {};
        bin.readFixed(data, offset);
        offset += 4;
        obj.fontRevision = bin.readFixed(data, offset);
        offset += 4;
        bin.readUint(data, offset);
        offset += 4;
        bin.readUint(data, offset);
        offset += 4;
        obj.flags = bin.readUshort(data, offset);
        offset += 2;
        obj.unitsPerEm = bin.readUshort(data, offset);
        offset += 2;
        obj.created = bin.readUint64(data, offset);
        offset += 8;
        obj.modified = bin.readUint64(data, offset);
        offset += 8;
        obj.xMin = bin.readShort(data, offset);
        offset += 2;
        obj.yMin = bin.readShort(data, offset);
        offset += 2;
        obj.xMax = bin.readShort(data, offset);
        offset += 2;
        obj.yMax = bin.readShort(data, offset);
        offset += 2;
        obj.macStyle = bin.readUshort(data, offset);
        offset += 2;
        obj.lowestRecPPEM = bin.readUshort(data, offset);
        offset += 2;
        obj.fontDirectionHint = bin.readShort(data, offset);
        offset += 2;
        obj.indexToLocFormat = bin.readShort(data, offset);
        offset += 2;
        obj.glyphDataFormat = bin.readShort(data, offset);
        offset += 2;
        return obj;
      };
      Typr.hhea = {};
      Typr.hhea.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = {};
        bin.readFixed(data, offset);
        offset += 4;
        obj.ascender = bin.readShort(data, offset);
        offset += 2;
        obj.descender = bin.readShort(data, offset);
        offset += 2;
        obj.lineGap = bin.readShort(data, offset);
        offset += 2;
        obj.advanceWidthMax = bin.readUshort(data, offset);
        offset += 2;
        obj.minLeftSideBearing = bin.readShort(data, offset);
        offset += 2;
        obj.minRightSideBearing = bin.readShort(data, offset);
        offset += 2;
        obj.xMaxExtent = bin.readShort(data, offset);
        offset += 2;
        obj.caretSlopeRise = bin.readShort(data, offset);
        offset += 2;
        obj.caretSlopeRun = bin.readShort(data, offset);
        offset += 2;
        obj.caretOffset = bin.readShort(data, offset);
        offset += 2;
        offset += 4 * 2;
        obj.metricDataFormat = bin.readShort(data, offset);
        offset += 2;
        obj.numberOfHMetrics = bin.readUshort(data, offset);
        offset += 2;
        return obj;
      };
      Typr.hmtx = {};
      Typr.hmtx.parse = function(data, offset, length, font) {
        var bin = Typr._bin;
        var obj = {};
        obj.aWidth = [];
        obj.lsBearing = [];
        var aw = 0, lsb = 0;
        for (var i = 0; i < font.maxp.numGlyphs; i++) {
          if (i < font.hhea.numberOfHMetrics) {
            aw = bin.readUshort(data, offset);
            offset += 2;
            lsb = bin.readShort(data, offset);
            offset += 2;
          }
          obj.aWidth.push(aw);
          obj.lsBearing.push(lsb);
        }
        return obj;
      };
      Typr.kern = {};
      Typr.kern.parse = function(data, offset, length, font) {
        var bin = Typr._bin;
        var version = bin.readUshort(data, offset);
        offset += 2;
        if (version == 1)
          return Typr.kern.parseV1(data, offset - 2, length, font);
        var nTables = bin.readUshort(data, offset);
        offset += 2;
        var map2 = { glyph1: [], rval: [] };
        for (var i = 0; i < nTables; i++) {
          offset += 2;
          var length = bin.readUshort(data, offset);
          offset += 2;
          var coverage = bin.readUshort(data, offset);
          offset += 2;
          var format2 = coverage >>> 8;
          format2 &= 15;
          if (format2 == 0)
            offset = Typr.kern.readFormat0(data, offset, map2);
          else
            throw "unknown kern table format: " + format2;
        }
        return map2;
      };
      Typr.kern.parseV1 = function(data, offset, length, font) {
        var bin = Typr._bin;
        bin.readFixed(data, offset);
        offset += 4;
        var nTables = bin.readUint(data, offset);
        offset += 4;
        var map2 = { glyph1: [], rval: [] };
        for (var i = 0; i < nTables; i++) {
          bin.readUint(data, offset);
          offset += 4;
          var coverage = bin.readUshort(data, offset);
          offset += 2;
          bin.readUshort(data, offset);
          offset += 2;
          var format2 = coverage >>> 8;
          format2 &= 15;
          if (format2 == 0)
            offset = Typr.kern.readFormat0(data, offset, map2);
          else
            throw "unknown kern table format: " + format2;
        }
        return map2;
      };
      Typr.kern.readFormat0 = function(data, offset, map2) {
        var bin = Typr._bin;
        var pleft = -1;
        var nPairs = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        for (var j = 0; j < nPairs; j++) {
          var left = bin.readUshort(data, offset);
          offset += 2;
          var right = bin.readUshort(data, offset);
          offset += 2;
          var value = bin.readShort(data, offset);
          offset += 2;
          if (left != pleft) {
            map2.glyph1.push(left);
            map2.rval.push({ glyph2: [], vals: [] });
          }
          var rval = map2.rval[map2.rval.length - 1];
          rval.glyph2.push(right);
          rval.vals.push(value);
          pleft = left;
        }
        return offset;
      };
      Typr.loca = {};
      Typr.loca.parse = function(data, offset, length, font) {
        var bin = Typr._bin;
        var obj = [];
        var ver = font.head.indexToLocFormat;
        var len = font.maxp.numGlyphs + 1;
        if (ver == 0)
          for (var i = 0; i < len; i++)
            obj.push(bin.readUshort(data, offset + (i << 1)) << 1);
        if (ver == 1)
          for (var i = 0; i < len; i++)
            obj.push(bin.readUint(data, offset + (i << 2)));
        return obj;
      };
      Typr.maxp = {};
      Typr.maxp.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = {};
        var ver = bin.readUint(data, offset);
        offset += 4;
        obj.numGlyphs = bin.readUshort(data, offset);
        offset += 2;
        if (ver == 65536) {
          obj.maxPoints = bin.readUshort(data, offset);
          offset += 2;
          obj.maxContours = bin.readUshort(data, offset);
          offset += 2;
          obj.maxCompositePoints = bin.readUshort(data, offset);
          offset += 2;
          obj.maxCompositeContours = bin.readUshort(data, offset);
          offset += 2;
          obj.maxZones = bin.readUshort(data, offset);
          offset += 2;
          obj.maxTwilightPoints = bin.readUshort(data, offset);
          offset += 2;
          obj.maxStorage = bin.readUshort(data, offset);
          offset += 2;
          obj.maxFunctionDefs = bin.readUshort(data, offset);
          offset += 2;
          obj.maxInstructionDefs = bin.readUshort(data, offset);
          offset += 2;
          obj.maxStackElements = bin.readUshort(data, offset);
          offset += 2;
          obj.maxSizeOfInstructions = bin.readUshort(data, offset);
          offset += 2;
          obj.maxComponentElements = bin.readUshort(data, offset);
          offset += 2;
          obj.maxComponentDepth = bin.readUshort(data, offset);
          offset += 2;
        }
        return obj;
      };
      Typr.name = {};
      Typr.name.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = {};
        bin.readUshort(data, offset);
        offset += 2;
        var count = bin.readUshort(data, offset);
        offset += 2;
        bin.readUshort(data, offset);
        offset += 2;
        var offset0 = offset;
        for (var i = 0; i < count; i++) {
          var platformID = bin.readUshort(data, offset);
          offset += 2;
          var encodingID = bin.readUshort(data, offset);
          offset += 2;
          var languageID = bin.readUshort(data, offset);
          offset += 2;
          var nameID = bin.readUshort(data, offset);
          offset += 2;
          var length = bin.readUshort(data, offset);
          offset += 2;
          var noffset = bin.readUshort(data, offset);
          offset += 2;
          var plat = "p" + platformID;
          if (obj[plat] == null)
            obj[plat] = {};
          var names2 = ["copyright", "fontFamily", "fontSubfamily", "ID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "urlVendor", "urlDesigner", "licence", "licenceURL", "---", "typoFamilyName", "typoSubfamilyName", "compatibleFull", "sampleText", "postScriptCID", "wwsFamilyName", "wwsSubfamilyName", "lightPalette", "darkPalette"];
          var cname = names2[nameID];
          var soff = offset0 + count * 12 + noffset;
          var str;
          if (platformID == 0)
            str = bin.readUnicode(data, soff, length / 2);
          else if (platformID == 3 && encodingID == 0)
            str = bin.readUnicode(data, soff, length / 2);
          else if (encodingID == 0)
            str = bin.readASCII(data, soff, length);
          else if (encodingID == 1)
            str = bin.readUnicode(data, soff, length / 2);
          else if (encodingID == 3)
            str = bin.readUnicode(data, soff, length / 2);
          else if (platformID == 1) {
            str = bin.readASCII(data, soff, length);
            console.log("reading unknown MAC encoding " + encodingID + " as ASCII");
          } else
            throw "unknown encoding " + encodingID + ", platformID: " + platformID;
          obj[plat][cname] = str;
          obj[plat]._lang = languageID;
        }
        for (var p2 in obj)
          if (obj[p2].postScriptName != null && obj[p2]._lang == 1033)
            return obj[p2];
        for (var p2 in obj)
          if (obj[p2].postScriptName != null && obj[p2]._lang == 3084)
            return obj[p2];
        for (var p2 in obj)
          if (obj[p2].postScriptName != null)
            return obj[p2];
        var tname;
        for (var p2 in obj) {
          tname = p2;
          break;
        }
        console.log("returning name table with languageID " + obj[tname]._lang);
        return obj[tname];
      };
      Typr["OS/2"] = {};
      Typr["OS/2"].parse = function(data, offset, length) {
        var bin = Typr._bin;
        var ver = bin.readUshort(data, offset);
        offset += 2;
        var obj = {};
        if (ver == 0)
          Typr["OS/2"].version0(data, offset, obj);
        else if (ver == 1)
          Typr["OS/2"].version1(data, offset, obj);
        else if (ver == 2 || ver == 3 || ver == 4)
          Typr["OS/2"].version2(data, offset, obj);
        else if (ver == 5)
          Typr["OS/2"].version5(data, offset, obj);
        else
          throw "unknown OS/2 table version: " + ver;
        return obj;
      };
      Typr["OS/2"].version0 = function(data, offset, obj) {
        var bin = Typr._bin;
        obj.xAvgCharWidth = bin.readShort(data, offset);
        offset += 2;
        obj.usWeightClass = bin.readUshort(data, offset);
        offset += 2;
        obj.usWidthClass = bin.readUshort(data, offset);
        offset += 2;
        obj.fsType = bin.readUshort(data, offset);
        offset += 2;
        obj.ySubscriptXSize = bin.readShort(data, offset);
        offset += 2;
        obj.ySubscriptYSize = bin.readShort(data, offset);
        offset += 2;
        obj.ySubscriptXOffset = bin.readShort(data, offset);
        offset += 2;
        obj.ySubscriptYOffset = bin.readShort(data, offset);
        offset += 2;
        obj.ySuperscriptXSize = bin.readShort(data, offset);
        offset += 2;
        obj.ySuperscriptYSize = bin.readShort(data, offset);
        offset += 2;
        obj.ySuperscriptXOffset = bin.readShort(data, offset);
        offset += 2;
        obj.ySuperscriptYOffset = bin.readShort(data, offset);
        offset += 2;
        obj.yStrikeoutSize = bin.readShort(data, offset);
        offset += 2;
        obj.yStrikeoutPosition = bin.readShort(data, offset);
        offset += 2;
        obj.sFamilyClass = bin.readShort(data, offset);
        offset += 2;
        obj.panose = bin.readBytes(data, offset, 10);
        offset += 10;
        obj.ulUnicodeRange1 = bin.readUint(data, offset);
        offset += 4;
        obj.ulUnicodeRange2 = bin.readUint(data, offset);
        offset += 4;
        obj.ulUnicodeRange3 = bin.readUint(data, offset);
        offset += 4;
        obj.ulUnicodeRange4 = bin.readUint(data, offset);
        offset += 4;
        obj.achVendID = [bin.readInt8(data, offset), bin.readInt8(data, offset + 1), bin.readInt8(data, offset + 2), bin.readInt8(data, offset + 3)];
        offset += 4;
        obj.fsSelection = bin.readUshort(data, offset);
        offset += 2;
        obj.usFirstCharIndex = bin.readUshort(data, offset);
        offset += 2;
        obj.usLastCharIndex = bin.readUshort(data, offset);
        offset += 2;
        obj.sTypoAscender = bin.readShort(data, offset);
        offset += 2;
        obj.sTypoDescender = bin.readShort(data, offset);
        offset += 2;
        obj.sTypoLineGap = bin.readShort(data, offset);
        offset += 2;
        obj.usWinAscent = bin.readUshort(data, offset);
        offset += 2;
        obj.usWinDescent = bin.readUshort(data, offset);
        offset += 2;
        return offset;
      };
      Typr["OS/2"].version1 = function(data, offset, obj) {
        var bin = Typr._bin;
        offset = Typr["OS/2"].version0(data, offset, obj);
        obj.ulCodePageRange1 = bin.readUint(data, offset);
        offset += 4;
        obj.ulCodePageRange2 = bin.readUint(data, offset);
        offset += 4;
        return offset;
      };
      Typr["OS/2"].version2 = function(data, offset, obj) {
        var bin = Typr._bin;
        offset = Typr["OS/2"].version1(data, offset, obj);
        obj.sxHeight = bin.readShort(data, offset);
        offset += 2;
        obj.sCapHeight = bin.readShort(data, offset);
        offset += 2;
        obj.usDefault = bin.readUshort(data, offset);
        offset += 2;
        obj.usBreak = bin.readUshort(data, offset);
        offset += 2;
        obj.usMaxContext = bin.readUshort(data, offset);
        offset += 2;
        return offset;
      };
      Typr["OS/2"].version5 = function(data, offset, obj) {
        var bin = Typr._bin;
        offset = Typr["OS/2"].version2(data, offset, obj);
        obj.usLowerOpticalPointSize = bin.readUshort(data, offset);
        offset += 2;
        obj.usUpperOpticalPointSize = bin.readUshort(data, offset);
        offset += 2;
        return offset;
      };
      Typr.post = {};
      Typr.post.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = {};
        obj.version = bin.readFixed(data, offset);
        offset += 4;
        obj.italicAngle = bin.readFixed(data, offset);
        offset += 4;
        obj.underlinePosition = bin.readShort(data, offset);
        offset += 2;
        obj.underlineThickness = bin.readShort(data, offset);
        offset += 2;
        return obj;
      };
      Typr.SVG = {};
      Typr.SVG.parse = function(data, offset, length) {
        var bin = Typr._bin;
        var obj = { entries: [] };
        var offset0 = offset;
        bin.readUshort(data, offset);
        offset += 2;
        var svgDocIndexOffset = bin.readUint(data, offset);
        offset += 4;
        bin.readUint(data, offset);
        offset += 4;
        offset = svgDocIndexOffset + offset0;
        var numEntries = bin.readUshort(data, offset);
        offset += 2;
        for (var i = 0; i < numEntries; i++) {
          var startGlyphID = bin.readUshort(data, offset);
          offset += 2;
          var endGlyphID = bin.readUshort(data, offset);
          offset += 2;
          var svgDocOffset = bin.readUint(data, offset);
          offset += 4;
          var svgDocLength = bin.readUint(data, offset);
          offset += 4;
          var sbuf = new Uint8Array(data.buffer, offset0 + svgDocOffset + svgDocIndexOffset, svgDocLength);
          var svg = bin.readUTF8(sbuf, 0, sbuf.length);
          for (var f2 = startGlyphID; f2 <= endGlyphID; f2++) {
            obj.entries[f2] = svg;
          }
        }
        return obj;
      };
      Typr.SVG.toPath = function(str) {
        var pth = { cmds: [], crds: [] };
        if (str == null)
          return pth;
        var prsr = new DOMParser();
        var doc = prsr["parseFromString"](str, "image/svg+xml");
        var svg = doc.firstChild;
        while (svg.tagName != "svg")
          svg = svg.nextSibling;
        var vb = svg.getAttribute("viewBox");
        if (vb)
          vb = vb.trim().split(" ").map(parseFloat);
        else
          vb = [0, 0, 1e3, 1e3];
        Typr.SVG._toPath(svg.children, pth);
        for (var i = 0; i < pth.crds.length; i += 2) {
          var x2 = pth.crds[i], y = pth.crds[i + 1];
          x2 -= vb[0];
          y -= vb[1];
          y = -y;
          pth.crds[i] = x2;
          pth.crds[i + 1] = y;
        }
        return pth;
      };
      Typr.SVG._toPath = function(nds, pth, fill) {
        for (var ni = 0; ni < nds.length; ni++) {
          var nd = nds[ni], tn2 = nd.tagName;
          var cfl = nd.getAttribute("fill");
          if (cfl == null)
            cfl = fill;
          if (tn2 == "g")
            Typr.SVG._toPath(nd.children, pth, cfl);
          else if (tn2 == "path") {
            pth.cmds.push(cfl ? cfl : "#000000");
            var d2 = nd.getAttribute("d");
            var toks = Typr.SVG._tokens(d2);
            Typr.SVG._toksToPath(toks, pth);
            pth.cmds.push("X");
          } else if (tn2 == "defs")
            ;
          else
            console.log(tn2, nd);
        }
      };
      Typr.SVG._tokens = function(d2) {
        var ts = [], off = 0, rn2 = false, cn2 = "";
        while (off < d2.length) {
          var cc = d2.charCodeAt(off), ch = d2.charAt(off);
          off++;
          var isNum = 48 <= cc && cc <= 57 || ch == "." || ch == "-";
          if (rn2) {
            if (ch == "-") {
              ts.push(parseFloat(cn2));
              cn2 = ch;
            } else if (isNum)
              cn2 += ch;
            else {
              ts.push(parseFloat(cn2));
              if (ch != "," && ch != " ")
                ts.push(ch);
              rn2 = false;
            }
          } else {
            if (isNum) {
              cn2 = ch;
              rn2 = true;
            } else if (ch != "," && ch != " ")
              ts.push(ch);
          }
        }
        if (rn2)
          ts.push(parseFloat(cn2));
        return ts;
      };
      Typr.SVG._toksToPath = function(ts, pth) {
        var i = 0, x2 = 0, y = 0, ox = 0, oy = 0;
        var pc = { M: 2, L: 2, H: 1, V: 1, S: 4, C: 6 };
        var cmds = pth.cmds, crds = pth.crds;
        while (i < ts.length) {
          var cmd = ts[i];
          i++;
          if (cmd == "z") {
            cmds.push("Z");
            x2 = ox;
            y = oy;
          } else {
            var cmu = cmd.toUpperCase();
            var ps = pc[cmu], reps = Typr.SVG._reps(ts, i, ps);
            for (var j = 0; j < reps; j++) {
              var xi = 0, yi = 0;
              if (cmd != cmu) {
                xi = x2;
                yi = y;
              }
              if (cmu == "M") {
                x2 = xi + ts[i++];
                y = yi + ts[i++];
                cmds.push("M");
                crds.push(x2, y);
                ox = x2;
                oy = y;
              } else if (cmu == "L") {
                x2 = xi + ts[i++];
                y = yi + ts[i++];
                cmds.push("L");
                crds.push(x2, y);
              } else if (cmu == "H") {
                x2 = xi + ts[i++];
                cmds.push("L");
                crds.push(x2, y);
              } else if (cmu == "V") {
                y = yi + ts[i++];
                cmds.push("L");
                crds.push(x2, y);
              } else if (cmu == "C") {
                var x1 = xi + ts[i++], y1 = yi + ts[i++], x22 = xi + ts[i++], y2 = yi + ts[i++], x3 = xi + ts[i++], y3 = yi + ts[i++];
                cmds.push("C");
                crds.push(x1, y1, x22, y2, x3, y3);
                x2 = x3;
                y = y3;
              } else if (cmu == "S") {
                var co = Math.max(crds.length - 4, 0);
                var x1 = x2 + x2 - crds[co], y1 = y + y - crds[co + 1];
                var x22 = xi + ts[i++], y2 = yi + ts[i++], x3 = xi + ts[i++], y3 = yi + ts[i++];
                cmds.push("C");
                crds.push(x1, y1, x22, y2, x3, y3);
                x2 = x3;
                y = y3;
              } else
                console.log("Unknown SVG command " + cmd);
            }
          }
        }
      };
      Typr.SVG._reps = function(ts, off, ps) {
        var i = off;
        while (i < ts.length) {
          if (typeof ts[i] == "string")
            break;
          i += ps;
        }
        return (i - off) / ps;
      };
      if (Typr == null)
        Typr = {};
      if (Typr.U == null)
        Typr.U = {};
      Typr.U.codeToGlyph = function(font, code) {
        var cmap = font.cmap;
        var tind = -1;
        if (cmap.p0e4 != null)
          tind = cmap.p0e4;
        else if (cmap.p3e1 != null)
          tind = cmap.p3e1;
        else if (cmap.p1e0 != null)
          tind = cmap.p1e0;
        if (tind == -1)
          throw "no familiar platform and encoding!";
        var tab = cmap.tables[tind];
        if (tab.format == 0) {
          if (code >= tab.map.length)
            return 0;
          return tab.map[code];
        } else if (tab.format == 4) {
          var sind = -1;
          for (var i = 0; i < tab.endCount.length; i++)
            if (code <= tab.endCount[i]) {
              sind = i;
              break;
            }
          if (sind == -1)
            return 0;
          if (tab.startCount[sind] > code)
            return 0;
          var gli = 0;
          if (tab.idRangeOffset[sind] != 0)
            gli = tab.glyphIdArray[code - tab.startCount[sind] + (tab.idRangeOffset[sind] >> 1) - (tab.idRangeOffset.length - sind)];
          else
            gli = code + tab.idDelta[sind];
          return gli & 65535;
        } else if (tab.format == 12) {
          if (code > tab.groups[tab.groups.length - 1][1])
            return 0;
          for (var i = 0; i < tab.groups.length; i++) {
            var grp = tab.groups[i];
            if (grp[0] <= code && code <= grp[1])
              return grp[2] + (code - grp[0]);
          }
          return 0;
        } else
          throw "unknown cmap table format " + tab.format;
      };
      Typr.U.glyphToPath = function(font, gid) {
        var path = { cmds: [], crds: [] };
        if (font.SVG && font.SVG.entries[gid]) {
          var p2 = font.SVG.entries[gid];
          if (p2 == null)
            return path;
          if (typeof p2 == "string") {
            p2 = Typr.SVG.toPath(p2);
            font.SVG.entries[gid] = p2;
          }
          return p2;
        } else if (font.CFF) {
          var state = { x: 0, y: 0, stack: [], nStems: 0, haveWidth: false, width: font.CFF.Private ? font.CFF.Private.defaultWidthX : 0, open: false };
          Typr.U._drawCFF(font.CFF.CharStrings[gid], state, font.CFF, path);
        } else if (font.glyf) {
          Typr.U._drawGlyf(gid, font, path);
        }
        return path;
      };
      Typr.U._drawGlyf = function(gid, font, path) {
        var gl = font.glyf[gid];
        if (gl == null)
          gl = font.glyf[gid] = Typr.glyf._parseGlyf(font, gid);
        if (gl != null) {
          if (gl.noc > -1)
            Typr.U._simpleGlyph(gl, path);
          else
            Typr.U._compoGlyph(gl, font, path);
        }
      };
      Typr.U._simpleGlyph = function(gl, p2) {
        for (var c2 = 0; c2 < gl.noc; c2++) {
          var i0 = c2 == 0 ? 0 : gl.endPts[c2 - 1] + 1;
          var il = gl.endPts[c2];
          for (var i = i0; i <= il; i++) {
            var pr = i == i0 ? il : i - 1;
            var nx = i == il ? i0 : i + 1;
            var onCurve = gl.flags[i] & 1;
            var prOnCurve = gl.flags[pr] & 1;
            var nxOnCurve = gl.flags[nx] & 1;
            var x2 = gl.xs[i], y = gl.ys[i];
            if (i == i0) {
              if (onCurve) {
                if (prOnCurve)
                  Typr.U.P.moveTo(p2, gl.xs[pr], gl.ys[pr]);
                else {
                  Typr.U.P.moveTo(p2, x2, y);
                  continue;
                }
              } else {
                if (prOnCurve)
                  Typr.U.P.moveTo(p2, gl.xs[pr], gl.ys[pr]);
                else
                  Typr.U.P.moveTo(p2, (gl.xs[pr] + x2) / 2, (gl.ys[pr] + y) / 2);
              }
            }
            if (onCurve) {
              if (prOnCurve)
                Typr.U.P.lineTo(p2, x2, y);
            } else {
              if (nxOnCurve)
                Typr.U.P.qcurveTo(p2, x2, y, gl.xs[nx], gl.ys[nx]);
              else
                Typr.U.P.qcurveTo(p2, x2, y, (x2 + gl.xs[nx]) / 2, (y + gl.ys[nx]) / 2);
            }
          }
          Typr.U.P.closePath(p2);
        }
      };
      Typr.U._compoGlyph = function(gl, font, p2) {
        for (var j = 0; j < gl.parts.length; j++) {
          var path = { cmds: [], crds: [] };
          var prt = gl.parts[j];
          Typr.U._drawGlyf(prt.glyphIndex, font, path);
          var m2 = prt.m;
          for (var i = 0; i < path.crds.length; i += 2) {
            var x2 = path.crds[i], y = path.crds[i + 1];
            p2.crds.push(x2 * m2.a + y * m2.b + m2.tx);
            p2.crds.push(x2 * m2.c + y * m2.d + m2.ty);
          }
          for (var i = 0; i < path.cmds.length; i++)
            p2.cmds.push(path.cmds[i]);
        }
      };
      Typr.U._getGlyphClass = function(g, cd) {
        var intr = Typr._lctf.getInterval(cd, g);
        return intr == -1 ? 0 : cd[intr + 2];
      };
      Typr.U.getPairAdjustment = function(font, g1, g2) {
        if (font.GPOS) {
          var ltab = null;
          for (var i = 0; i < font.GPOS.featureList.length; i++) {
            var fl = font.GPOS.featureList[i];
            if (fl.tag == "kern") {
              for (var j = 0; j < fl.tab.length; j++)
                if (font.GPOS.lookupList[fl.tab[j]].ltype == 2)
                  ltab = font.GPOS.lookupList[fl.tab[j]];
            }
          }
          if (ltab) {
            for (var i = 0; i < ltab.tabs.length; i++) {
              var tab = ltab.tabs[i];
              var ind = Typr._lctf.coverageIndex(tab.coverage, g1);
              if (ind == -1)
                continue;
              var adj;
              if (tab.format == 1) {
                var right = tab.pairsets[ind];
                for (var j = 0; j < right.length; j++)
                  if (right[j].gid2 == g2)
                    adj = right[j];
                if (adj == null)
                  continue;
              } else if (tab.format == 2) {
                var c1 = Typr.U._getGlyphClass(g1, tab.classDef1);
                var c2 = Typr.U._getGlyphClass(g2, tab.classDef2);
                var adj = tab.matrix[c1][c2];
              }
              return adj.val1[2];
            }
          }
        }
        if (font.kern) {
          var ind1 = font.kern.glyph1.indexOf(g1);
          if (ind1 != -1) {
            var ind2 = font.kern.rval[ind1].glyph2.indexOf(g2);
            if (ind2 != -1)
              return font.kern.rval[ind1].vals[ind2];
          }
        }
        return 0;
      };
      Typr.U.stringToGlyphs = function(font, str) {
        var gls = [];
        for (var i = 0; i < str.length; i++) {
          var cc = str.codePointAt(i);
          if (cc > 65535)
            i++;
          gls.push(Typr.U.codeToGlyph(font, cc));
        }
        var gsub = font["GSUB"];
        if (gsub == null)
          return gls;
        var llist = gsub.lookupList, flist = gsub.featureList;
        var wsep = '\n	" ,.:;!?()  ،';
        var R2 = "آأؤإاةدذرزوٱٲٳٵٶٷڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙۀۃۄۅۆۇۈۉۊۋۍۏےۓەۮۯܐܕܖܗܘܙܞܨܪܬܯݍݙݚݛݫݬݱݳݴݸݹࡀࡆࡇࡉࡔࡧࡩࡪࢪࢫࢬࢮࢱࢲࢹૅેૉ૊૎૏ૐ૑૒૝ૡ૤૯஁ஃ஄அஉ஌எஏ஑னப஫஬";
        var L = "ꡲ્૗";
        for (var ci = 0; ci < gls.length; ci++) {
          var gl = gls[ci];
          var slft = ci == 0 || wsep.indexOf(str[ci - 1]) != -1;
          var srgt = ci == gls.length - 1 || wsep.indexOf(str[ci + 1]) != -1;
          if (!slft && R2.indexOf(str[ci - 1]) != -1)
            slft = true;
          if (!srgt && R2.indexOf(str[ci]) != -1)
            srgt = true;
          if (!srgt && L.indexOf(str[ci + 1]) != -1)
            srgt = true;
          if (!slft && L.indexOf(str[ci]) != -1)
            slft = true;
          var feat = null;
          if (slft)
            feat = srgt ? "isol" : "init";
          else
            feat = srgt ? "fina" : "medi";
          for (var fi = 0; fi < flist.length; fi++) {
            if (flist[fi].tag != feat)
              continue;
            for (var ti = 0; ti < flist[fi].tab.length; ti++) {
              var tab = llist[flist[fi].tab[ti]];
              if (tab.ltype != 1)
                continue;
              Typr.U._applyType1(gls, ci, tab);
            }
          }
        }
        var cligs = ["rlig", "liga", "mset"];
        for (var ci = 0; ci < gls.length; ci++) {
          var gl = gls[ci];
          var rlim = Math.min(3, gls.length - ci - 1);
          for (var fi = 0; fi < flist.length; fi++) {
            var fl = flist[fi];
            if (cligs.indexOf(fl.tag) == -1)
              continue;
            for (var ti = 0; ti < fl.tab.length; ti++) {
              var tab = llist[fl.tab[ti]];
              for (var j = 0; j < tab.tabs.length; j++) {
                if (tab.tabs[j] == null)
                  continue;
                var ind = Typr._lctf.coverageIndex(tab.tabs[j].coverage, gl);
                if (ind == -1)
                  continue;
                if (tab.ltype == 4) {
                  var vals = tab.tabs[j].vals[ind];
                  for (var k = 0; k < vals.length; k++) {
                    var lig = vals[k], rl = lig.chain.length;
                    if (rl > rlim)
                      continue;
                    var good = true;
                    for (var l2 = 0; l2 < rl; l2++)
                      if (lig.chain[l2] != gls[ci + (1 + l2)])
                        good = false;
                    if (!good)
                      continue;
                    gls[ci] = lig.nglyph;
                    for (var l2 = 0; l2 < rl; l2++)
                      gls[ci + l2 + 1] = -1;
                  }
                } else if (tab.ltype == 5) {
                  var ltab = tab.tabs[j];
                  if (ltab.fmt != 2)
                    continue;
                  var cind = Typr._lctf.getInterval(ltab.cDef, gl);
                  var cls = ltab.cDef[cind + 2], scs = ltab.scset[cls];
                  for (var i = 0; i < scs.length; i++) {
                    var sc = scs[i], inp = sc.input;
                    if (inp.length > rlim)
                      continue;
                    var good = true;
                    for (var l2 = 0; l2 < inp.length; l2++) {
                      var cind2 = Typr._lctf.getInterval(ltab.cDef, gls[ci + 1 + l2]);
                      if (cind == -1 && ltab.cDef[cind2 + 2] != inp[l2]) {
                        good = false;
                        break;
                      }
                    }
                    if (!good)
                      continue;
                    var lrs = sc.substLookupRecords;
                    for (var k = 0; k < lrs.length; k += 2) {
                      lrs[k];
                      lrs[k + 1];
                    }
                  }
                }
              }
            }
          }
        }
        return gls;
      };
      Typr.U._applyType1 = function(gls, ci, tab) {
        var gl = gls[ci];
        for (var j = 0; j < tab.tabs.length; j++) {
          var ttab = tab.tabs[j];
          var ind = Typr._lctf.coverageIndex(ttab.coverage, gl);
          if (ind == -1)
            continue;
          if (ttab.fmt == 1)
            gls[ci] = gls[ci] + ttab.delta;
          else
            gls[ci] = ttab.newg[ind];
        }
      };
      Typr.U.glyphsToPath = function(font, gls, clr) {
        var tpath = { cmds: [], crds: [] };
        var x2 = 0;
        for (var i = 0; i < gls.length; i++) {
          var gid = gls[i];
          if (gid == -1)
            continue;
          var gid2 = i < gls.length - 1 && gls[i + 1] != -1 ? gls[i + 1] : 0;
          var path = Typr.U.glyphToPath(font, gid);
          for (var j = 0; j < path.crds.length; j += 2) {
            tpath.crds.push(path.crds[j] + x2);
            tpath.crds.push(path.crds[j + 1]);
          }
          if (clr)
            tpath.cmds.push(clr);
          for (var j = 0; j < path.cmds.length; j++)
            tpath.cmds.push(path.cmds[j]);
          if (clr)
            tpath.cmds.push("X");
          x2 += font.hmtx.aWidth[gid];
          if (i < gls.length - 1)
            x2 += Typr.U.getPairAdjustment(font, gid, gid2);
        }
        return tpath;
      };
      Typr.U.pathToSVG = function(path, prec) {
        if (prec == null)
          prec = 5;
        var out = [], co = 0, lmap = { M: 2, L: 2, Q: 4, C: 6 };
        for (var i = 0; i < path.cmds.length; i++) {
          var cmd = path.cmds[i], cn2 = co + (lmap[cmd] ? lmap[cmd] : 0);
          out.push(cmd);
          while (co < cn2) {
            var c2 = path.crds[co++];
            out.push(parseFloat(c2.toFixed(prec)) + (co == cn2 ? "" : " "));
          }
        }
        return out.join("");
      };
      Typr.U.pathToContext = function(path, ctx) {
        var c2 = 0, crds = path.crds;
        for (var j = 0; j < path.cmds.length; j++) {
          var cmd = path.cmds[j];
          if (cmd == "M") {
            ctx.moveTo(crds[c2], crds[c2 + 1]);
            c2 += 2;
          } else if (cmd == "L") {
            ctx.lineTo(crds[c2], crds[c2 + 1]);
            c2 += 2;
          } else if (cmd == "C") {
            ctx.bezierCurveTo(crds[c2], crds[c2 + 1], crds[c2 + 2], crds[c2 + 3], crds[c2 + 4], crds[c2 + 5]);
            c2 += 6;
          } else if (cmd == "Q") {
            ctx.quadraticCurveTo(crds[c2], crds[c2 + 1], crds[c2 + 2], crds[c2 + 3]);
            c2 += 4;
          } else if (cmd.charAt(0) == "#") {
            ctx.beginPath();
            ctx.fillStyle = cmd;
          } else if (cmd == "Z") {
            ctx.closePath();
          } else if (cmd == "X") {
            ctx.fill();
          }
        }
      };
      Typr.U.P = {};
      Typr.U.P.moveTo = function(p2, x2, y) {
        p2.cmds.push("M");
        p2.crds.push(x2, y);
      };
      Typr.U.P.lineTo = function(p2, x2, y) {
        p2.cmds.push("L");
        p2.crds.push(x2, y);
      };
      Typr.U.P.curveTo = function(p2, a2, b2, c2, d2, e, f2) {
        p2.cmds.push("C");
        p2.crds.push(a2, b2, c2, d2, e, f2);
      };
      Typr.U.P.qcurveTo = function(p2, a2, b2, c2, d2) {
        p2.cmds.push("Q");
        p2.crds.push(a2, b2, c2, d2);
      };
      Typr.U.P.closePath = function(p2) {
        p2.cmds.push("Z");
      };
      Typr.U._drawCFF = function(cmds, state, font, p2) {
        var stack = state.stack;
        var nStems = state.nStems, haveWidth = state.haveWidth, width = state.width, open = state.open;
        var i = 0;
        var x2 = state.x, y = state.y, c1x = 0, c1y = 0, c2x = 0, c2y = 0, c3x = 0, c3y = 0, c4x = 0, c4y = 0, jpx = 0, jpy = 0;
        var o2 = { val: 0, size: 0 };
        while (i < cmds.length) {
          Typr.CFF.getCharString(cmds, i, o2);
          var v2 = o2.val;
          i += o2.size;
          if (v2 == "o1" || v2 == "o18") {
            var hasWidthArg;
            hasWidthArg = stack.length % 2 !== 0;
            if (hasWidthArg && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
            }
            nStems += stack.length >> 1;
            stack.length = 0;
            haveWidth = true;
          } else if (v2 == "o3" || v2 == "o23") {
            var hasWidthArg;
            hasWidthArg = stack.length % 2 !== 0;
            if (hasWidthArg && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
            }
            nStems += stack.length >> 1;
            stack.length = 0;
            haveWidth = true;
          } else if (v2 == "o4") {
            if (stack.length > 1 && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
              haveWidth = true;
            }
            if (open)
              Typr.U.P.closePath(p2);
            y += stack.pop();
            Typr.U.P.moveTo(p2, x2, y);
            open = true;
          } else if (v2 == "o5") {
            while (stack.length > 0) {
              x2 += stack.shift();
              y += stack.shift();
              Typr.U.P.lineTo(p2, x2, y);
            }
          } else if (v2 == "o6" || v2 == "o7") {
            var count = stack.length;
            var isX = v2 == "o6";
            for (var j = 0; j < count; j++) {
              var sval = stack.shift();
              if (isX)
                x2 += sval;
              else
                y += sval;
              isX = !isX;
              Typr.U.P.lineTo(p2, x2, y);
            }
          } else if (v2 == "o8" || v2 == "o24") {
            var count = stack.length;
            var index = 0;
            while (index + 6 <= count) {
              c1x = x2 + stack.shift();
              c1y = y + stack.shift();
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              x2 = c2x + stack.shift();
              y = c2y + stack.shift();
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, x2, y);
              index += 6;
            }
            if (v2 == "o24") {
              x2 += stack.shift();
              y += stack.shift();
              Typr.U.P.lineTo(p2, x2, y);
            }
          } else if (v2 == "o11")
            break;
          else if (v2 == "o1234" || v2 == "o1235" || v2 == "o1236" || v2 == "o1237") {
            if (v2 == "o1234") {
              c1x = x2 + stack.shift();
              c1y = y;
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              jpx = c2x + stack.shift();
              jpy = c2y;
              c3x = jpx + stack.shift();
              c3y = c2y;
              c4x = c3x + stack.shift();
              c4y = y;
              x2 = c4x + stack.shift();
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, jpx, jpy);
              Typr.U.P.curveTo(p2, c3x, c3y, c4x, c4y, x2, y);
            }
            if (v2 == "o1235") {
              c1x = x2 + stack.shift();
              c1y = y + stack.shift();
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              jpx = c2x + stack.shift();
              jpy = c2y + stack.shift();
              c3x = jpx + stack.shift();
              c3y = jpy + stack.shift();
              c4x = c3x + stack.shift();
              c4y = c3y + stack.shift();
              x2 = c4x + stack.shift();
              y = c4y + stack.shift();
              stack.shift();
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, jpx, jpy);
              Typr.U.P.curveTo(p2, c3x, c3y, c4x, c4y, x2, y);
            }
            if (v2 == "o1236") {
              c1x = x2 + stack.shift();
              c1y = y + stack.shift();
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              jpx = c2x + stack.shift();
              jpy = c2y;
              c3x = jpx + stack.shift();
              c3y = c2y;
              c4x = c3x + stack.shift();
              c4y = c3y + stack.shift();
              x2 = c4x + stack.shift();
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, jpx, jpy);
              Typr.U.P.curveTo(p2, c3x, c3y, c4x, c4y, x2, y);
            }
            if (v2 == "o1237") {
              c1x = x2 + stack.shift();
              c1y = y + stack.shift();
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              jpx = c2x + stack.shift();
              jpy = c2y + stack.shift();
              c3x = jpx + stack.shift();
              c3y = jpy + stack.shift();
              c4x = c3x + stack.shift();
              c4y = c3y + stack.shift();
              if (Math.abs(c4x - x2) > Math.abs(c4y - y)) {
                x2 = c4x + stack.shift();
              } else {
                y = c4y + stack.shift();
              }
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, jpx, jpy);
              Typr.U.P.curveTo(p2, c3x, c3y, c4x, c4y, x2, y);
            }
          } else if (v2 == "o14") {
            if (stack.length > 0 && !haveWidth) {
              width = stack.shift() + font.nominalWidthX;
              haveWidth = true;
            }
            if (stack.length == 4) {
              var adx = stack.shift();
              var ady = stack.shift();
              var bchar = stack.shift();
              var achar = stack.shift();
              var bind = Typr.CFF.glyphBySE(font, bchar);
              var aind = Typr.CFF.glyphBySE(font, achar);
              Typr.U._drawCFF(font.CharStrings[bind], state, font, p2);
              state.x = adx;
              state.y = ady;
              Typr.U._drawCFF(font.CharStrings[aind], state, font, p2);
            }
            if (open) {
              Typr.U.P.closePath(p2);
              open = false;
            }
          } else if (v2 == "o19" || v2 == "o20") {
            var hasWidthArg;
            hasWidthArg = stack.length % 2 !== 0;
            if (hasWidthArg && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
            }
            nStems += stack.length >> 1;
            stack.length = 0;
            haveWidth = true;
            i += nStems + 7 >> 3;
          } else if (v2 == "o21") {
            if (stack.length > 2 && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
              haveWidth = true;
            }
            y += stack.pop();
            x2 += stack.pop();
            if (open)
              Typr.U.P.closePath(p2);
            Typr.U.P.moveTo(p2, x2, y);
            open = true;
          } else if (v2 == "o22") {
            if (stack.length > 1 && !haveWidth) {
              width = stack.shift() + font.Private.nominalWidthX;
              haveWidth = true;
            }
            x2 += stack.pop();
            if (open)
              Typr.U.P.closePath(p2);
            Typr.U.P.moveTo(p2, x2, y);
            open = true;
          } else if (v2 == "o25") {
            while (stack.length > 6) {
              x2 += stack.shift();
              y += stack.shift();
              Typr.U.P.lineTo(p2, x2, y);
            }
            c1x = x2 + stack.shift();
            c1y = y + stack.shift();
            c2x = c1x + stack.shift();
            c2y = c1y + stack.shift();
            x2 = c2x + stack.shift();
            y = c2y + stack.shift();
            Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, x2, y);
          } else if (v2 == "o26") {
            if (stack.length % 2) {
              x2 += stack.shift();
            }
            while (stack.length > 0) {
              c1x = x2;
              c1y = y + stack.shift();
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              x2 = c2x;
              y = c2y + stack.shift();
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, x2, y);
            }
          } else if (v2 == "o27") {
            if (stack.length % 2) {
              y += stack.shift();
            }
            while (stack.length > 0) {
              c1x = x2 + stack.shift();
              c1y = y;
              c2x = c1x + stack.shift();
              c2y = c1y + stack.shift();
              x2 = c2x + stack.shift();
              y = c2y;
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, x2, y);
            }
          } else if (v2 == "o10" || v2 == "o29") {
            var obj = v2 == "o10" ? font.Private : font;
            if (stack.length == 0) {
              console.log("error: empty stack");
            } else {
              var ind = stack.pop();
              var subr = obj.Subrs[ind + obj.Bias];
              state.x = x2;
              state.y = y;
              state.nStems = nStems;
              state.haveWidth = haveWidth;
              state.width = width;
              state.open = open;
              Typr.U._drawCFF(subr, state, font, p2);
              x2 = state.x;
              y = state.y;
              nStems = state.nStems;
              haveWidth = state.haveWidth;
              width = state.width;
              open = state.open;
            }
          } else if (v2 == "o30" || v2 == "o31") {
            var count, count1 = stack.length;
            var index = 0;
            var alternate = v2 == "o31";
            count = count1 & ~2;
            index += count1 - count;
            while (index < count) {
              if (alternate) {
                c1x = x2 + stack.shift();
                c1y = y;
                c2x = c1x + stack.shift();
                c2y = c1y + stack.shift();
                y = c2y + stack.shift();
                if (count - index == 5) {
                  x2 = c2x + stack.shift();
                  index++;
                } else
                  x2 = c2x;
                alternate = false;
              } else {
                c1x = x2;
                c1y = y + stack.shift();
                c2x = c1x + stack.shift();
                c2y = c1y + stack.shift();
                x2 = c2x + stack.shift();
                if (count - index == 5) {
                  y = c2y + stack.shift();
                  index++;
                } else
                  y = c2y;
                alternate = true;
              }
              Typr.U.P.curveTo(p2, c1x, c1y, c2x, c2y, x2, y);
              index += 4;
            }
          } else if ((v2 + "").charAt(0) == "o") {
            console.log("Unknown operation: " + v2, cmds);
            throw v2;
          } else
            stack.push(v2);
        }
        state.x = x2;
        state.y = y;
        state.nStems = nStems;
        state.haveWidth = haveWidth;
        state.width = width;
        state.open = open;
      };
      var typr_js = Typr;
      const Typr$1 = /* @__PURE__ */ getDefaultExportFromCjs(typr_js);
      const decode = () => {
        var _a2;
        const styleElements = _unsafeWindow.document.querySelectorAll("style");
        let tipElement = null;
        styleElements.forEach((styleElement) => {
          var _a3;
          if (((_a3 = styleElement.textContent) == null ? void 0 : _a3.indexOf("font-cxsecret")) !== -1) {
            tipElement = styleElement;
          }
        });
        if (!tipElement)
          return;
        const fontMatch = (_a2 = tipElement.textContent) == null ? void 0 : _a2.match(/base64,([\w\W]+?)'/);
        if (!fontMatch)
          return;
        const fontData = base64ToUint8Array(fontMatch[1]);
        const font = Typr$1.parse(fontData);
        const table = JSON.parse(_GM_getResourceText("ttf"));
        let text = {};
        for (let i = 19968; i < 40870; i++) {
          let t = Typr$1.U.codeToGlyph(font, i);
          if (!t)
            continue;
          t = Typr$1.U.glyphToPath(font, t);
          t = md5Exports.md5(JSON.stringify(t)).slice(24);
          text[i] = table[t];
        }
        const fontElements = _unsafeWindow.document.querySelectorAll(".font-cxsecret");
        fontElements.forEach((fontElement) => {
          let html = fontElement.innerHTML;
          Object.keys(text).forEach((key2) => {
            const regex = new RegExp(String.fromCharCode(key2), "g");
            html = html.replace(regex, String.fromCharCode(text[key2]));
          });
          fontElement.innerHTML = html;
          fontElement.classList.remove("font-cxsecret");
        });
      };
      const base64ToUint8Array = (base64) => {
        const decodedData = atob(base64);
        const array = new Uint8Array(decodedData.length);
        for (let i = 0; i < decodedData.length; i++) {
          array[i] = decodedData.charCodeAt(i);
        }
        return array;
      };
      const chaoxing = [
        {
          type: "save",
          name: "学习通考试新版收录",
          match: () => location.href.includes("work/view") || location.href.includes("test/reVersionPaperMarkContentNew"),
          question: {
            html: ".questionLi",
            question: "h3.mark_name",
            options: "ul.mark_letter.colorDeep > li",
            type: ".colorShallow",
            workType: "zj",
            pageType: "cx"
          },
          answerHook: (item) => {
            let quesType = removeHtml1($(item.html).find('span[class="colorShallow"]').html());
            if (quesType === "") {
              return null;
            }
            let matchResult = quesType.match(/^\((.+?)\)/);
            if (matchResult !== null) {
              item.type = matchResult[1].split(",")[0];
            } else {
              return null;
            }
            item.question = titleClean(item.question.split(quesType)[1].trim()).trim();
            item.options = removeStartChar(item.options);
            let isT = $(item.html).find(".marking_dui").length > 0;
            let answer;
            switch (item.type) {
              case "单选题":
              case "多选题":
                item.type = item.type === "单选题" ? "0" : "1";
                item.answer = $(item.html).find(".mark_answer>div>span.colorGreen:eq(0)").text().replace("正确答案:", "").trim().split("").map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                item.answer = item.answer.filter((item2) => item2 !== "");
                if (item.answer.length === 0 && isT) {
                  item.answer = $(item.html).find(".mark_answer>div>span.colorDeep:eq(0)").text().replace("我的答案:", "").trim().split("").map((xx) => {
                    return item.options[xx.charCodeAt(0) - 65];
                  });
                  item.answer = item.answer.filter((item2) => item2 !== "");
                }
                break;
              case "判断题":
                item.type = "3";
                item.options = [];
                item.answer = $(item.html).find(".mark_answer>div>span.colorGreen:eq(0)").text().trim().split("").map((answer2) => {
                  if (answer2.includes("正确") || answer2.includes("对") || answer2.includes("√")) {
                    return "正确";
                  } else if (answer2.includes("错误") || answer2.includes("错") || answer2.includes("×")) {
                    return "错误";
                  } else {
                    return null;
                  }
                }).filter((item2) => item2 !== null);
                item.answer = item.answer.filter((item2) => item2 !== "");
                if (item.answer.length === 0) {
                  answer = removeHtml1($(item.html).find(".mark_answer>div>span.colorDeep:eq(0)").html());
                  let [marking_dui, marking_cuo] = [".marking_dui", ".marking_cuo"].map((selector) => $(item.html).find(selector).length);
                  if (marking_dui + marking_cuo === 0) {
                    return null;
                  }
                  if (answer.includes("正确") || answer.includes("对") || answer.includes("√")) {
                    item.answer = ["正确"];
                  } else if (answer.includes("错误") || answer.includes("错") || answer.includes("×")) {
                    item.answer = ["错误"];
                  } else {
                    return null;
                  }
                  if (marking_dui === 0 && marking_cuo !== 0) {
                    item.answer = item.answer[0] === "正确" ? "错误" : "正确";
                  }
                }
                break;
              case "简答题":
                item.type = "4";
                item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
                if (item.answer.length < 10) {
                  return null;
                } else {
                  item.answer = [item.answer];
                }
                break;
              case "名词解释":
                item.type = "5";
                item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
                if (item.answer.length < 10) {
                  return null;
                } else {
                  item.answer = [item.answer];
                }
                break;
              case "计算题":
                item.type = "7";
                item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
                if (item.answer.length < 10) {
                  return null;
                } else {
                  item.answer = [item.answer];
                }
                break;
              case "论述题":
                item.type = "6";
                item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
                if (item.answer.length < 10) {
                  return null;
                } else {
                  item.answer = [item.answer];
                }
                break;
              case "填空题":
                item.type = "2";
                item.answer = $(item.html).find(".mark_answer>div>.colorGreen:eq(0)>dd").map((index, element) => {
                  return removeHtml1($(element).html()).replace(`(${index + 1})`, "").trim();
                }).get();
                break;
              default:
                return null;
            }
            return item;
          }
        },
        {
          type: "hook",
          name: "hook",
          match: location.href.includes("work/selectWorkQuestionYiPiYue") && !location.href.includes("mooc2=1"),
          main: (data) => {
            if (location.href.includes("mooc2=0")) {
              _unsafeWindow.location.href = location.href.replace("mooc2=0", "mooc2=1");
            } else {
              _unsafeWindow.location.href = location.href + "&mooc2=1";
            }
          }
        },
        {
          type: "save",
          name: "学习通作业收录新",
          match: () => location.href.includes("work/selectWorkQuestionYiPiYue") && location.href.includes("mooc2=1"),
          question: {
            html: ".TiMu",
            question: ".Zy_TItle .clearfix",
            options: "ul.Zy_ulTop li",
            type: ".newZy_TItle",
            workType: "zj",
            pageType: "cx"
          },
          answerHook: (item) => {
            item.type = $(item.html).find(".newZy_TItle").text().replace(/【|】/g, "").trim();
            let isT = $(item.html).find(".marking_dui").length > 0;
            removeHtml1($(item.html).find(".Py_addpy:eq(0)").html());
            let answer;
            item.question = titleClean(item.question).trim();
            switch (item.type) {
              case "单选题":
              case "多选题":
                item.type = item.type === "单选题" ? "0" : "1";
                item.options = $(item.html).find("ul.Zy_ulTop li").map((index, element) => {
                  let inx = $(element).find("i.fl").text().trim();
                  let optionText = removeHtml1($(element).html());
                  if (inx === "") {
                    return optionText.trim();
                  }
                  return optionText.split(inx)[1].trim();
                }).get();
                item.answer = $(item.html).find(".correctAnswer >.fl.answerCon").text().trim().split("").map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                if (item.answer.length === 0 && isT) {
                  item.answer = $(item.html).find(".myAnswer > .fl.answerCon").text().trim().split("").map((xx) => {
                    return item.options[xx.charCodeAt(0) - 65];
                  });
                }
                break;
              case "判断题":
                item.type = "3";
                item.answer = $(item.html).find(".correctAnswer > .fl.answerCon").text().trim().split("").map((answer2) => {
                  if (answer2.includes("正确") || answer2.includes("对") || answer2.includes("√")) {
                    return "正确";
                  } else if (answer2.includes("错误") || answer2.includes("错") || answer2.includes("×")) {
                    return "错误";
                  } else {
                    return null;
                  }
                }).filter((item2) => item2 !== null);
                if (item.answer.length === 0) {
                  answer = removeHtml1($(item.html).find(".fl.answerCon").html());
                  let [marking_dui, marking_cuo] = [".marking_dui", ".marking_cuo"].map((selector) => $(item.html).find(selector).length);
                  if (marking_dui + marking_cuo === 0) {
                    return null;
                  }
                  if (answer.includes("正确") || answer.includes("对") || answer.includes("√")) {
                    item.answer = ["正确"];
                  } else if (answer.includes("错误") || answer.includes("错") || answer.includes("×")) {
                    item.answer = ["错误"];
                  } else {
                    return null;
                  }
                  if (marking_dui === 0 && marking_cuo !== 0) {
                    item.answer = item.answer[0] === "正确" ? "错误" : "正确";
                  }
                }
                break;
              case "填空题":
                item.type = "2";
                item.answer = $(item.html).find(".correctAnswerBx>.correctAnswer>p:not(.clear)").map((index, element) => {
                  return removeHtml1($(element).html()).replace(`(${index + 1})`, "").trim();
                }).get().filter((item2) => item2 !== "");
                break;
              case "分录题":
                item.type = "9";
                item.answer = $(item.html).find(".correctAnswerBx>.correctAnswer>p:not(.clear)").map((index, element) => {
                  return removeHtml1($(element).html());
                }).get().filter((item2) => item2 !== "");
                if (item.answer.length != $(item.html).find(".CorrectOrNot").length) {
                  if ($(item.html).find(".marking_cuo").length > 0) {
                    return null;
                  }
                  item.answer = $(item.html).find(".myAnswerBx>.myAnswer>p:not(.clear)").map((index, element) => {
                    return removeHtml1($(element).html());
                  }).get().filter((item2) => item2 !== "");
                  if (item.answer.length != $(item.html).find(".CorrectOrNot").length) {
                    return null;
                  }
                }
                log(item.answer, "warn");
                break;
              case "连线题":
                item.type = "11";
                let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                answer = $(item.html).find(".correctAnswer >.fl.answerCon >.collectAnswer").map((index, element) => {
                  return removeHtml1($(element).text());
                }).get();
                item.options = [left, right];
                let ans = {};
                answer.forEach((item2) => {
                  let [l2, r] = item2.split("-");
                  if (l2.charCodeAt(0) >= 65) {
                    l2 = (l2.charCodeAt(0) - 65).toString();
                  } else if (/^\d+$/.test(l2)) {
                    l2 = (parseInt(l2) - 1).toString();
                  }
                  if (r.charCodeAt(0) >= 65) {
                    r = (r.charCodeAt(0) - 65).toString();
                  } else if (/^\d+$/.test(r)) {
                    r = (parseInt(r) - 1).toString();
                  }
                  ans[left[l2]] = right[r];
                });
                item.answer = ans;
                log(left, right, item.answer, "warn");
                break;
              default:
                log("暂未适配当前题型", item.type, "error");
                return null;
            }
            return item;
          }
        },
        {
          type: "ask",
          name: "学习通新版作业",
          match: /\/mooc2\/work\/dowork/i.test(location.pathname),
          question: {
            html: ".questionLi",
            question: "h3",
            options: "ul:eq(0) li .after, .answer_p",
            type: "input[name^=answertype]:eq(0)",
            workType: "zy",
            pageType: "cx"
          },
          questionHook: (item) => {
            const type = removeHtml1($(item.html).find(".colorShallow").html());
            item.question = titleClean(item.question.split(type)[1].trim()).trim();
            item.$options = $(item.html).find(".answerBg");
            return item;
          },
          setAnswerHook: (item) => {
            qc(item.html);
            qc1(item.html);
          }
        },
        {
          type: "ask",
          name: "学习通新版考试",
          match: /exam\/preview/i.test(location.pathname) || /exam\/test\/reVersionTestStartNew/i.test(location.pathname),
          question: {
            html: ".questionLi",
            question: "h3",
            options: "ul:eq(0) li .after, .answer_p",
            type: "input[name^=type]:not([name=type])",
            workType: "ks",
            pageType: "cx"
          },
          questionHook: (item) => {
            const type = removeHtml1($(item.html).find(".colorShallow").html());
            item.question = titleClean(item.question.split(type)[1].trim()).trim();
            item.$options = $(item.html).find(".answerBg");
            return item;
          },
          setAnswerHook: (item) => {
            qc(item.html);
            qc1(item.html);
          },
          next: () => {
            $('.nextDiv .jb_btn:contains("下一题")').click();
          }
        },
        {
          type: "ask",
          name: "学习通旧版作业",
          match: /work\/doHomeWorkNew/i.test(location.pathname) && location.href.includes("mooc2=1") == false,
          init: () => {
            decode();
          },
          question: {
            html: ".TiMu",
            question: ".clearfix.fontLabel",
            options: "ul:eq(0) li .after",
            type: "input[name^=answertype]:eq(0), .answer_p",
            workType: "zy",
            pageType: "cx"
          },
          questionHook: (item) => {
            item.question = titleClean(item.question).trim();
            item.$options = $(item.html).find(".fl.before");
            switch (item.type) {
              case "3":
                item.options = $(item.html).find("ul:eq(0) li").map((index, element) => {
                  if ($(element).find(".ri").length > 0) {
                    return "正确";
                  }
                  if ($(element).find(".wr").length > 0) {
                    return "错误";
                  }
                  if (isTrue($(element).attr("aria-label"))) {
                    return "正确";
                  }
                  if (isFalse($(element).attr("aria-label"))) {
                    return "错误";
                  }
                }).get();
                item.options = [];
                item.$options = $(item.html).find("ul>li");
                break;
              case "11":
                let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                item.options = [left, right];
                item.$options = $(item.html).find("ul.thirdUlList>li:not(.groupTitile)");
                break;
            }
            return item;
          },
          setAnswerHook: (item) => {
            qc(item.html);
            qc1(item.html);
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "11":
                item.ques.$options.each((index, element) => {
                  let left = item.ques.options[0];
                  let right = item.ques.options[1];
                  let chose = item.answer[left[index]];
                  let index1 = right.indexOf(chose);
                  chose = String.fromCharCode(index1 + 65);
                  $(element).find("select>option").each((inx, ele) => {
                    log($(ele).val() == chose, "warn");
                    $(ele).val() == chose && $(ele).prop("selected", true);
                  });
                });
                log(item.answer, "success");
                return false;
              case "3":
                let bold = item.answer;
                item.ques.$options.each((index, element) => {
                  if (isTrue(bold) && isTrue(removeHtml1($(element).html()))) {
                    $(element).find("input").click();
                  }
                  if (isFalse(bold) && isFalse(removeHtml1($(element).html()))) {
                    $(element).find("input").click();
                  }
                });
                return false;
              default:
                return true;
            }
          }
        },
        {
          type: "ask",
          name: "学习通新版章节",
          match: /work\/doHomeWorkNew/i.test(location.pathname) && location.href.includes("mooc2=1"),
          init: () => {
            decode();
          },
          question: {
            html: ".TiMu",
            question: ".clearfix.fontLabel",
            options: "ul:eq(0) li .after, .answer_p",
            type: "input[name^=answertype]:eq(0)",
            workType: "zj",
            pageType: "cx"
          },
          questionHook: (item) => {
            item.question = titleClean(item.question).trim();
            switch (item.type) {
              case "3":
                item.options = $(item.html).find("ul:eq(0) li").map((index, element) => {
                  if ($(element).find(".num_option").attr("data") === "true") {
                    return "正确";
                  }
                  if ($(element).find(".num_option").attr("data") === "false") {
                    return "错误";
                  }
                }).get();
                item.options = [];
                break;
              case "11":
                let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
                  let $clone = $(element).clone();
                  $clone.find(".fl").remove();
                  return removeHtml1($clone.html());
                }).get();
                item.options = [left, right];
                item.$options = $(item.html).find("ul.thirdUlList>li:not(.groupTitile)");
                break;
              default:
                log("暂未适配当前题型", item.type, "error");
            }
            return item;
          },
          setAnswerHook: (item) => {
            qc(item.html);
            qc1(item.html);
          },
          setAnswer: (item) => {
            log(item.ques.options, "warn");
            switch (item.type) {
              case "11":
                item.ques.$options.each((index, element) => {
                  let left = item.ques.options[0];
                  let right = item.ques.options[1];
                  let chose = item.answer[left[index]];
                  let index1 = right.indexOf(chose);
                  chose = String.fromCharCode(index1 + 65);
                  let $chosen = _unsafeWindow.$(element).find(".dept_select");
                  $chosen.chosen().val(chose).trigger("chosen:updated");
                });
                log(item.answer, "success");
                return false;
              default:
                return true;
            }
          }
        }
      ];
      const zhihuishu = [
        {
          type: "ask",
          name: "智慧树章节",
          tips: "智慧树必须开自动跳转,否则答案可能无法保存导致低分!",
          match: location.href.includes("zhihuishu.com") && (!location.href.includes("checkHomework") && location.host.includes("zhihuishu") && (location.pathname === "/stuExamWeb.html" || location.href.includes("/webExamList/dohomework/") || location.href.includes("/webExamList/doexamination/"))),
          question: {
            html: ".examPaper_box > div:eq(1) >div:not(.examPaper_partTit)",
            question: ".subject_describe.dynamic-fonts:eq(0) div:eq(0)",
            options: ".subject_node .nodeLab .label.clearfix .node_detail",
            type: ".subject_type span:first-child",
            workType: "zhs",
            pageType: "zhs"
          },
          init: async () => {
            await waitUntil(function() {
              return !$(".yidun_popup").hasClass("yidun_popup--light") && _unsafeWindow.zhsques;
            });
          },
          next: () => {
            $(".switch-btn-box button:eq(1)").click();
          },
          questionHook: (item, inx) => {
            const ques = _unsafeWindow.zhsques.examBase.workExamParts.map((item2) => item2.questionDtos).flat();
            const quesData = ques[inx];
            item.type = typeChange(quesData.questionType.name);
            item.question = removeHtml1(quesData.name);
            item.options = quesData.questionOptions ? quesData.questionOptions.map((item2) => removeHtml1(item2.content)) : [];
            return item;
          }
        },
        {
          type: "save",
          name: "智慧树作业收录",
          match: location.href.includes("zhihuishu.com") && (location.href.includes("checkHomework") && location.host.includes("zhihuishu") && (location.pathname === "/stuExamWeb.html" || location.href.includes("/webExamList/checkHomework/"))),
          question: {
            html: ".questionType",
            question: ".subject_describe",
            options: ".examquestions-answer",
            type: ".newZy_TItle",
            workType: "zhs",
            pageType: "zhs"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".questionType").length > 0 && _unsafeWindow.zhsques && _unsafeWindow.zhsimgAnswer;
            });
          },
          answerHook: (item) => {
            let tid = $(item.html).find(".examPaper_subject").attr("data-questionid");
            const quesData = _unsafeWindow.zhsimgAnswer;
            const quesList = _unsafeWindow.zhsques.examBase.workExamParts.map((item2) => item2.questionDtos).flat();
            let data = quesList.find((item2) => item2.id == tid);
            data.answer = quesData[data.id];
            item.question = removeHtml1(data.name);
            item.type = typeChange(data.questionType.name);
            item.options = data.questionOptions.map((item2) => removeHtml1(item2.content));
            item.answer = data.answer.split("").map((code) => {
              return item.options[code.charCodeAt(0) - 65];
            });
            if (item.type == "3") {
              item.options = [];
              item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
            }
            return item;
          }
        }
      ];
      const xinwei = [
        {
          type: "hook",
          name: "芯位教育hook",
          match: location.host === "www.51xinwei.com",
          main: (data) => {
            _unsafeWindow.mainClass = $(".el-main > div:eq(0)").attr("class");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $(".el-main > div:eq(0)").attr("class")) {
                _unsafeWindow.mainClass = $(".el-main > div:eq(0)").attr("class");
                if (_unsafeWindow.mainClass === "homework-detail-container") {
                  await waitUntil(function() {
                    return $(".el-loading-mask").length === 0;
                  });
                }
                vuePageChange();
                observer.disconnect();
              }
              for (let mutation of mutations) {
                if (mutation.type === "attributes" && mutation.attributeName === "class") {
                  if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
                    observer.disconnect();
                    vuePageChange();
                  }
                }
              }
            });
            if ($("#app").length >= 1) {
              observer.observe($("#app")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "ask",
          name: "芯位教育作业",
          tips: "芯位教育仅支持选择判断,其他题型待适配",
          match: () => location.host === "www.51xinwei.com" && /student\/#\/courseInfo\/[A-Za-z0-9]+\/homework/i.test(location.href),
          question: {
            html: ".content-area > div.content",
            question: ".content",
            options: ".el-radio-group label .label,.el-checkbox-group label .label",
            type: ".question-box .tag",
            workType: "xinwei",
            pageType: "xinwei"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".question-box").length !== 0;
            });
          },
          next: () => {
            $('.toggle-box > button:contains("下一题")').click();
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            const type = $(item.html).find(".question-box .tag").text();
            switch (type) {
              case "单选":
                item.type = "0";
                break;
              case "多选":
                item.type = "1";
                break;
              case "判断":
                item.type = "3";
                break;
            }
            return item;
          }
        },
        // 芯位教育收录
        {
          type: "save",
          name: "芯位教育",
          match: () => location.host === "www.51xinwei.com" && location.href.includes("/homeworkDetailPage"),
          question: {
            html: ".question-content-body",
            question: ".topic-title",
            options: ".el-radio-group label .label,.el-checkbox-group label .label",
            type: ".question-box .tag",
            workType: "xinwei",
            pageType: "xinwei"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".question-content-body").length !== 0;
            });
          },
          answerHook: (item) => {
            const type = $(item.html).find(".question-box .tag").text();
            let answer = $(item.html).find(".answer-area > span:eq(1)").text();
            switch (type) {
              case "单选":
              case "多选":
                answer = answer.split(",");
                item.answer = answer.map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                if (item.answer.length === 0) {
                  return;
                }
                item.type = type === "单选" ? "0" : "1";
                break;
              case "判断":
                item.type = "3";
                if (answer == "T") {
                  item.answer = ["正确"];
                }
                if (answer == "F") {
                  item.answer = ["错误"];
                }
                break;
            }
            return item;
          }
        }
      ];
      const chatglm = [
        {
          type: "hook",
          name: "智普清言token获取",
          match: /chatglm.cn\/main\//i.test(location.href),
          main: (data) => {
            const app = data.app;
            const cookies = document.cookie.split(";");
            let chatglm_refresh_token = "";
            cookies.forEach((cookie) => {
              if (/chatglm_refresh_token/i.test(cookie)) {
                chatglm_refresh_token = cookie.split("=")[1];
              }
            });
            if (chatglm_refresh_token) {
              app.app.gpt.forEach((item) => {
                if (item.name === "GLM") {
                  item.key = chatglm_refresh_token;
                }
              });
              app.setConfig(app.app);
              msg("智普清言token获取成功");
            }
          }
        }
      ];
      const typeMap = {
        "single_selection": "单选题",
        "multiple_selection": "多选题",
        "true_or_false": "判断题",
        "fill_in_blank": "填空题",
        "short_answer": "简答题",
        "text": "文本",
        "analysis": "综合题",
        "matching": "匹配题",
        "random": "随机题",
        "cloze": "完形填空题"
      };
      const guokai = [
        {
          type: "hook",
          name: "国开hook",
          match: location.host.includes("ouchn.cn"),
          main: (data) => {
            _unsafeWindow.mainClass = getUrl();
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== getUrl()) {
                _unsafeWindow.mainClass = getUrl();
                if (_unsafeWindow.mainClass === "homework-detail-container") {
                  await waitUntil(function() {
                    return $(".selectDan").length !== 0;
                  });
                }
                vuePageChange();
                observer.disconnect();
              }
            });
            if ($("body").length >= 1) {
              observer.observe($("body")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        // 国开答案收录
        {
          type: "save",
          name: "国开答案收录旧",
          match: /\/exam\/([0-9]+)\/subjects#\/submission\/([0-9]+)/i.test(location.href),
          question: {
            html: "li.subject",
            question: ".summary-title .subject-description",
            options: ".subject-options li .option-content",
            type: ".subject-point > span:eq(0)",
            workType: "guokai",
            pageType: "guokai"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".loading-gif").hasClass("ng-hide");
            });
          },
          answerHook: (item) => {
            const scope = _unsafeWindow.angular.element(item.html).scope();
            const subject = scope.subject;
            if (subject.type === "text") {
              return;
            }
            let haveAnswer = false;
            const point = parseFloat(subject.point);
            const score = parseFloat(subject.score);
            const isT = point !== 0 && point === score;
            let ques = $(`<div>${subject.description}</div>`).clone();
            ques.find("span.__blank__").remove();
            item.question = removeHtml1(ques.html());
            item.options = subject.options.map((item1) => {
              return removeHtml1(item1.content);
            });
            item.type = typeChange(typeMap[subject.type]);
            if (subject.correctOptions && subject.correctOptions.length > 0) {
              item.answer = subject.correctOptions.map((item1) => {
                return removeHtml1(item1.content);
              });
              haveAnswer = true;
            }
            if (subject.correct_answers && subject.correct_answers.length > 0) {
              item.answer = subject.correct_answers.map((item1) => {
                return item1.content;
              });
              haveAnswer = true;
            }
            if (!haveAnswer && !isT && subject.type !== "true_or_false") {
              return;
            }
            switch (subject.type) {
              case "single_selection":
              case "multiple_selection":
              case "true_or_false":
                if (!haveAnswer) {
                  item.answer = subject.options.filter((item2) => item2.isChosen).map((item2) => removeHtml1(item2.content));
                  if (item.answer.length === 0)
                    return;
                  if (subject.type === "true_or_false") {
                    const answer = item.answer[0];
                    item.options = [];
                    const isCorrect = isTrue(answer) ? "正确" : isFalse(answer) ? "错误" : "";
                    if (isCorrect) {
                      item.answer = [isT ? isCorrect : isCorrect === "正确" ? "错误" : "正确"];
                    } else {
                      item.answer = [];
                    }
                  }
                } else {
                  if (subject.type === "true_or_false") {
                    const answer = item.answer[0];
                    item.options = [];
                    const isCorrect = isTrue(answer) ? "正确" : isFalse(answer) ? "错误" : "";
                    if (isCorrect) {
                      item.answer = [isCorrect];
                    }
                  }
                }
                break;
              case "analysis":
                break;
              case "cloze":
                item.options = subject.sub_subjects.map((item1) => {
                  return item1.options.map((item2) => {
                    return removeHtml1(item2.content);
                  });
                }).get();
                break;
              case "fill_in_blank":
                if (!haveAnswer) {
                  item.answer = subject.answers.map((item1) => {
                    return item1.content;
                  });
                }
                break;
            }
            return item;
          }
        },
        // 广开答案收录
        {
          type: "save",
          name: "广开答案收录",
          match: /mod\/quiz\/review\.php/i.test(location.pathname) && ["moodle.syxy.ouchn.cn", "xczxzdbf.moodle.qwbx.ouchn.cn", "elearning.bjou.edu.cn", "whkpc.hnqtyq.cn:5678", "course.ougd.cn", "study.ouchn.cn"].includes(location.host),
          question: {
            html: ".que",
            question: ".qtext",
            options: ".answer > div",
            type: "",
            answer: ".rightanswer",
            workType: "guokai",
            pageType: "guokai"
          },
          init: async () => {
            $(".specificfeedback").remove();
          },
          next: async () => {
            !$(".qn_buttons > a").last().hasClass("thispage") && $(".arrow_text").click();
          },
          answerHook: (item) => {
            const quesStatus = $(item.html).find(".info .state").text();
            item.type = $(item.html).attr("class").split(" ")[1];
            $(item.html).find(".qtext .accesshide").remove();
            item.question = removeHtml1($(item.html).find(".qtext").html());
            switch (item.type) {
              case "truefalse":
                item.type = "3";
                item.$options = $(item.html).find("input[type=radio]");
                item.options = $(item.html).find(".answer > div").map((index, element) => {
                  let optionText = removeHtml1($(element).html());
                  return optionText.trim();
                }).get();
                item.answer = [];
                item.answer = $(item.html).find(".answer > div").map((index, element) => {
                  if (item.$options.eq(index).prop("checked")) {
                    return item.options[index];
                  } else {
                    return "";
                  }
                }).get();
                item.answer = item.answer.filter((item2) => item2 !== "");
                if (item.answer.length === 0) {
                  item.temp = removeHtml1($(item.html).find(".rightanswer").html()).replace("正确答案是", "").trim();
                  item.answer = [item.temp];
                } else {
                  if (!quesStatus.includes("正确")) {
                    item.answer = item.options.filter((zzz) => !zzz.includes(item.answer[0]));
                  }
                }
                isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
                item.options = [];
                break;
              case "multichoice":
              case "multichoiceset":
                item.type = "1";
                item.$options = $(item.html).find("input[type=checkbox]");
                if (item.$options.length === 0) {
                  item.type = "0";
                  item.$options = $(item.html).find("input[type=radio]");
                }
                item.options = $(item.html).find(".answer > div").map((index, element) => {
                  let inx = $(element).find(".answernumber").text().trim();
                  let optionText = removeHtml1($(element).html());
                  if (inx === "") {
                    return optionText.trim();
                  }
                  return optionText.split(inx)[1].trim();
                }).get();
                if (quesStatus.includes("正确") && !quesStatus.includes("部分正确")) {
                  item.answer = [];
                  item.answer = $(item.html).find(".answer > div").map((index, element) => {
                    let inx = $(element).find(".answernumber").text().trim();
                    let optionText = removeHtml1($(element).html());
                    if (item.$options.eq(index).prop("checked") && $(element).find(".text-success").length > 0) {
                      if (inx === "") {
                        return optionText.trim();
                      }
                      return optionText.split(inx)[1].trim();
                    } else {
                      return "";
                    }
                  }).get();
                  item.answer = item.answer.filter((item2) => item2 !== "");
                } else {
                  item.temp = removeHtml1($(item.html).find(".rightanswer").html(), false).replace("正确答案是:", "").trim();
                  const optionsBase = item.options.slice(0);
                  optionsBase.sort((a2, b2) => {
                    return b2.length - a2.length;
                  });
                  item.answer = optionsBase.map((item1) => {
                    if (item.temp.includes(item1)) {
                      item.temp = item.temp.replace(item1, "");
                      return item1;
                    } else {
                      return "";
                    }
                  });
                  item.answer = item.answer.filter((item2) => item2 !== "");
                  if (item.answer.length > 1)
                    ;
                }
                break;
              case "shortanswer":
                item.type = "4";
                item.$options = $(item.html).find("input[type=text]");
                break;
              case "match":
                item.type = "24";
                item.match = $(".answer tr td.text").map((index, element) => {
                  return removeHtml1($(element).html());
                }).get();
                item.$options = $(".answer tr td.control select");
                item.selects = $(".answer tr td.control select").map((index, element) => {
                  let option = $(element).find("option").map((index2, element2) => {
                    let value = $(element2).val();
                    let text = $(element2).text();
                    return {
                      value,
                      text
                    };
                  }).get();
                  return [option];
                }).get();
                break;
              case "description":
                return;
            }
            return item;
          }
        },
        {
          type: "ask",
          name: "广开形考",
          tips: "广开仅支持基础题型,特殊题型请手动完成",
          match: /mod\/quiz\/attempt\.php/i.test(location.pathname) && ["moodle.syxy.ouchn.cn", "xczxzdbf.moodle.qwbx.ouchn.cn", "elearning.bjou.edu.cn", "whkpc.hnqtyq.cn:5678", "course.ougd.cn", "study.ouchn.cn"].includes(location.host),
          question: {
            html: ".que",
            question: ".qtext",
            options: ".answer > div",
            type: "",
            workType: "guangkai",
            pageType: "guangkai"
          },
          ischecked: (item) => {
            return Boolean(item.prop("checked"));
          },
          questionHook: (item) => {
            item.type = $(item.html).attr("class").split(" ")[1];
            $(item.html).find(".qtext .accesshide").remove();
            item.question = removeHtml1($(item.html).find(".qtext").html());
            switch (item.type) {
              case "truefalse":
                item.type = "3";
                item.$options = $(item.html).find("input[type=radio]");
                item.options = [];
                break;
              case "multichoice":
              case "multichoiceset":
                item.type = "1";
                item.$options = $(item.html).find("input[type=checkbox]");
                if (item.$options.length === 0) {
                  item.type = "0";
                  item.$options = $(item.html).find("input[type=radio]");
                }
                item.options = $(item.html).find(".answer > div").map((index, element) => {
                  let inx = $(element).find(".answernumber").text().trim();
                  let optionText = removeHtml1($(element).html());
                  if (inx === "") {
                    return optionText.trim();
                  }
                  return optionText.split(inx)[1].trim();
                }).get();
                break;
              case "shortanswer":
                item.type = "4";
                item.$options = $(item.html).find("input[type=text]");
                break;
              case "match":
                item.type = "24";
                item.match = $(".answer tr td.text").map((index, element) => {
                  return removeHtml1($(element).html());
                }).get();
                item.$options = $(".answer tr td.control select");
                item.selects = $(".answer tr td.control select").map((index, element) => {
                  let option = $(element).find("option").map((index2, element2) => {
                    let value = $(element2).val();
                    let text = $(element2).text();
                    return {
                      value,
                      text
                    };
                  }).get();
                  return [option];
                }).get();
              case "essay":
                item.type = "4";
                item.$options = $(item.html).find("iframe");
                break;
              case "description":
                return;
            }
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "4":
                $(item.html).find("input.form-control").each(function(index, element) {
                  $(element).val(item.answer[index]);
                });
                $(item.html).find("iframe:eq(0)").contents().find("body").html(item.answer[0]);
                return false;
              case "3":
                item.ques.$options.each((index, element) => {
                  const pdtext = $(element).parent().find("label").text();
                  if (typeof item.answer === "object") {
                    item.answer = item.answer[0];
                  }
                  if (isTrue(item.answer) && isTrue(pdtext)) {
                    $(element).click();
                    return false;
                  } else if (isFalse(item.answer) && isFalse(pdtext)) {
                    $(element).click();
                    return false;
                  }
                  return true;
                });
              default:
                return true;
            }
          },
          finish: (item) => {
            $(".submitbtns .btn-primary").click();
          }
        },
        {
          type: "ask",
          name: "国开专题测验",
          match: location.host === "lms.ouchn.cn" && /\/exam\/([0-9]+)\/subjects/i.test(location.pathname) && !/\/exam\/([0-9]+)\/subjects#\/submission\/([0-9]+)/i.test(location.href),
          question: {
            html: "li.subject",
            question: ".summary-title .subject-description",
            options: ".subject-options li .option-content",
            type: ".summary-sub-title span:eq(0)",
            workType: "guokai",
            pageType: "guokai"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".loading-gif").hasClass("ng-hide") && $(".hd .examinee .submit-label").eq(0).text() === "";
            });
          },
          ischecked: (item) => {
            return Boolean(item.parent().find("input").eq(-1).prop("checked"));
          },
          questionHook: (item) => {
            const scope = _unsafeWindow.angular.element(item.html).scope();
            const subject = scope.subject;
            if (subject.type === "text") {
              return;
            }
            item.type = typeChange(typeMap[subject.type]);
            let ques = $(`<div>${subject.description}</div>`).clone();
            ques.find("span.__blank__").remove();
            item.question = removeHtml1(ques.html());
            subject.options = subject.options.sort((a2, b2) => {
              return a2.sort - b2.sort;
            });
            item.options = subject.options.map((item1) => {
              return removeHtml1(item1.content);
            });
            log(item.type, subject.type);
            switch (subject.type) {
              case "cloze":
                item.options = subject.sub_subjects.map((item1) => {
                  return item1.options.map((item2) => {
                    return removeHtml1(item2.content);
                  });
                });
                item.$options = $(item.html).find("select");
              case "true_or_false":
                item.options = [];
            }
            item.subject = subject;
            item.scope = scope;
            return item;
          },
          setAnswer: (item) => {
            log(item.ques, "success");
            switch (item.type) {
              case "2":
                log($(item.html).find(".___answer"), "success");
                $(item.html).find(".___answer").each((index, element) => {
                  $(element).html(item.answer[index]);
                  item.ques.scope.subject.answers[index].content = item.answer[index];
                  item.ques.scope.onChangeSubmission(item.ques.subject);
                });
                return false;
              case "4":
                $(item.html).find(".simditor-body.needsclick>p").each(function(index, element) {
                  $(element).html(item.answer[index]);
                  item.ques.subject.answered_content = item.answer[index];
                });
                item.ques.scope.onChangeSubmission(item.ques.subject);
                return false;
              case "14":
                item.ques.subject.sub_subjects.forEach((sub_subject, index) => {
                  let an2 = item.answer[index];
                  sub_subject.options.forEach((option, index1) => {
                    if (option.content === an2) {
                      sub_subject.answeredOption = String(option.id);
                      item.ques.scope.onChangeSubmission(sub_subject);
                      $(item.html).find(`input[value="${option.id}"]`).click();
                      $(item.html).find(`button:eq(${index})>span:eq(1)`).text(an2);
                    }
                  });
                });
                return false;
            }
            return true;
          }
        },
        {
          type: "save",
          name: "上海开放收录",
          match: () => location.host === "l.shou.org.cn" && location.href.includes("assignment/history.aspx?homeWorkId"),
          question: {
            html: ".e-q-body",
            question: ".ErichText",
            options: "ul>li>.ErichText",
            type: ".question-box .tag",
            workType: "shou",
            pageType: "shou"
          },
          init: async () => {
          },
          answerHook: (item) => {
            item.$options = $(item.html).find("ul>li");
            let an2 = $(item.html).find("ul>li.checked").map((index, element) => {
              return removeHtml1($(element).find(".ErichText").html());
            }).get();
            const isT = $(item.html).find(".e-q-right").length > 0;
            item.answer = an2.filter((item2) => item2 !== "");
            const ckAnswer = $(item.html).find(".e-ans-ref .e-ans-r").map((index, element) => {
              return removeHtml1($(element).html());
            }).get();
            let ans = ckAnswer.map((item1) => {
              let index = item1.charCodeAt() - 65;
              return item.options[index];
            }).filter((item1) => item1 !== "" && item1 !== void 0);
            switch ($(item.html).attr("data-questiontype")) {
              case "2":
                item.type = "1";
                break;
              case "1":
                item.type = "0";
                break;
              case "3":
                item.type = "3";
                item.answer = $(item.html).find("ul>li.checked").map((index, element) => {
                  return removeHtml1($(element).html());
                }).get();
                item.options = [];
                isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
                break;
              case "11":
                item.type = "19";
                const quesList = $(item.html).find("form").map((index, element) => {
                  return {
                    type: "0",
                    question: removeHtml1($(element).find(".e-q-q .ErichText").html()),
                    options: $(element).find("ul li .ErichText").map((index2, element2) => {
                      return removeHtml1($(element2).html());
                    }).get()
                  };
                }).get();
                ans = ans.length > 0 ? isTrue(ans[0]) ? ["正确"] : isFalse(ans[0]) ? ["错误"] : [] : [];
                item.options = quesList;
              default:
                log("暂未适配当前题型", $(item.html).attr("data-questiontype"), "error");
                return;
            }
            if (ans.length > 0) {
              item.answer = ans;
              return item;
            }
            if (!isT && item.type === "3" && item.answer.length > 0) {
              item.answer = isTrue(item.answer[0]) ? ["错误"] : isFalse(item.answer[0]) ? ["正确"] : [];
            } else if (!isT) {
              return;
            }
            return item;
          }
        },
        {
          type: "ask",
          name: "上海开放作业",
          tips: "上海开放大学目前仅支持选择判断题,其他题型请手动完成",
          match: () => location.host === "l.shou.org.cn" && location.href.includes("assignment/preview.aspx?homeWorkId"),
          question: {
            html: ".e-q-body",
            question: ".ErichText",
            options: "ul>li>.ErichText",
            type: ".question-box .tag",
            workType: "shou",
            pageType: "shou"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".e-q-body").length !== 0;
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            switch ($(item.html).attr("data-questiontype")) {
              case "2":
                item.type = "1";
                break;
              case "1":
                item.type = "0";
                break;
              case "3":
                item.type = "3";
                item.$options = $(item.html).find("ul>li");
                break;
              default:
                log("暂未适配当前题型", $(item.html).attr("data-questiontype"), "error");
                return;
            }
            return item;
          },
          setAnswer: (item) => {
            return true;
          },
          finish: (item) => {
          }
        }
      ];
      const chengjiaoyun = [
        {
          type: "ask",
          name: "成教云考试",
          tips: "成教云仅支持选择判断,其他题型请反馈给作者",
          match: () => location.href.includes("exam/student/exam2/doexam"),
          question: {
            html: () => {
              return $(".ui-paper-iframe").contents().find(".ui-question");
            },
            question: ".ui-question-content-wrapper",
            options: ".ui-question-options li .ui-question-content-wrapper",
            type: ".ui-question-group-title",
            workType: "chengjiaoyun",
            pageType: "chengjiaoyun"
          },
          init: async () => {
            await waitUntil(function() {
              let exists = $(".ui-paper-iframe").contents().find(".ui-question").length > 0;
              return exists;
            });
          },
          toquestion: (index) => {
            $(`.ui-card-questions ul li:eq(${index - 1})`).click();
          },
          next: async () => {
            $("#next-btn").click();
          },
          ischecked: (item) => {
            return item.hasClass("ui-option-selected");
          },
          questionHook: (item) => {
            let type = $(item.html).parent().find(".ui-question-group-title").text().split(".")[1].trim();
            item.$options = $(item.html).find(".ui-question-options li>span");
            switch (type) {
              case "单选题":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.type = "3";
                item.options = [];
                break;
            }
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "3":
                let bold = item.answer;
                item.ques.$options.each((index, element) => {
                  if (isTrue(bold) && isTrue(removeHtml1($(element).parent().html()))) {
                    $(element).click();
                  }
                  if (isFalse(bold) && isFalse(removeHtml1($(element).parent().html()))) {
                    $(element).click();
                  }
                });
                return false;
              default:
                return true;
            }
          },
          finish: (item) => {
          }
        },
        {
          type: "save",
          name: "成教云收录",
          match: () => location.href.includes("exam/student/exam2/doview"),
          question: {
            html: () => {
              return $(".ui-paper-iframe").contents().find(".ui-question");
            },
            question: ".ui-question-content-wrapper",
            options: ".ui-question-options li .ui-question-content-wrapper",
            type: ".ui-question-group-title",
            workType: "chengjiaoyun",
            pageType: "chengjiaoyun"
          },
          init: async () => {
            await waitUntil(function() {
              let exists = $(".ui-paper-iframe").contents().find(".ui-question").length > 0;
              log($(".ui-paper-iframe").contents().find(".ui-question"));
              return exists;
            });
          },
          answerHook: (item) => {
            let type = $(item.html).parent().find(".ui-question-group-title").text().split(".")[1].trim();
            item.$options = $(item.html).find(".ui-question-options li>span");
            item.answer = $(item.html).find(".ui-question-options li.ui-correct-answer .ui-question-content-wrapper").map((_index, item2) => {
              return removeHtml1($(item2).html());
            }).get();
            switch (type) {
              case "单选题":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.type = "3";
                item.options = [];
                item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
                break;
            }
            return item;
          }
        }
      ];
      const jsou = [
        {
          type: "hook",
          name: "hook",
          match: () => location.host === "xuexi.jsou.cn" && location.href.includes("newHomework/showHomeworkByStatus") && location.href.includes("checked=true"),
          main: (data) => {
            _unsafeWindow.mainClass = $("#homeworkHistory").find(".active").attr("id");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $("#homeworkHistory").find(".active").attr("id")) {
                _unsafeWindow.mainClass = $("#homeworkHistory").find(".active").attr("id");
                await waitUntil(function() {
                  return $(".layui-layer-shade").length === 0;
                });
                vuePageChange();
                observer.disconnect();
              }
              for (let mutation of mutations) {
                if (mutation.type === "attributes" && mutation.attributeName === "class") {
                  if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
                    observer.disconnect();
                    vuePageChange();
                  }
                }
              }
            });
            if ($("body").length >= 1) {
              observer.observe($("body")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "ask",
          name: "江苏开放大学答题",
          tips: "江开适配中,目前仅支持选择、判断题、填空题,其他题型请反馈账号给作者",
          match: () => location.host === "xuexi.jsou.cn" && location.href.includes("/showHomeworkByStatus") && location.href.includes("checked=false"),
          question: {
            html: ".insert",
            question: ".window-title",
            options: ".questionId-option li > div:not(.numberCover)",
            type: ".questionDiv >div:eq(0)",
            workType: "jsou",
            pageType: "jsou"
          },
          init: async () => {
            document.addEventListener("copy", function(event2) {
              event2.stopImmediatePropagation();
              layer.msg("复制成功", { icon: 4 });
              event2.clipboardData.setData("text/plain", window.getSelection().toString());
            });
            document.addEventListener("paste", () => {
              event.stopImmediatePropagation();
              let paste = (event.clipboardData || window.clipboardData).getData("text");
              layer.msg("粘贴成功", { icon: 4 });
              document.execCommand("insertText", false, paste);
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            item.type = $(item.html).find(".questionDiv >div:eq(1)").text().trim();
            item.type = typeChange(item.type);
            item.$options = $(item.html).find(".questionId-option li .numberCover");
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "2":
                item.$options = $(item.html).find(".questionTitle input");
                if (item.$options.length == item.answer.length) {
                  item.$options.each((index, element) => {
                    $(element).val(item.answer[index]);
                  });
                  return false;
                }
            }
            return true;
          },
          finish: (item) => {
          }
        },
        // 江开收录
        {
          type: "save",
          name: "江苏开放大学收录",
          match: () => location.host === "xuexi.jsou.cn" && location.href.includes("newHomework/showHomeworkByStatus") && location.href.includes("checked=true"),
          question: {
            html: ".insert",
            question: ".window-title",
            options: "#questionId-option li > div:not(.numberCover)",
            type: ".questionDiv >div:eq(0)",
            workType: "jsou",
            pageType: "jsou"
          },
          init: async () => {
          },
          answerHook: (item) => {
            item.type = $(item.html).find(".questionDiv >div:eq(1)").text();
            let score = $(item.html).find(".questionDiv >div").text().match(/分值(\d+)分/)[1];
            let score2 = $(item.html).find(".questionDiv >div").text().match(/得分:(\d+)/)[1];
            item.type = typeChange(item.type);
            let isT = score == score2 && score2 !== 0;
            if (!isT && item.type != 3) {
              return;
            }
            switch (item.type) {
              case "0":
              case "1":
              case "3":
                item.answer = $(item.html).find(".answer .correctAnswer").text().trim().split(";").map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                item.answer = item.answer.filter((x2) => x2);
                if (item.answer.length == 0) {
                  item.answer = $(item.html).find(".answer .studentAnswer").text().trim().split(";").map((xx) => {
                    return item.options[xx.charCodeAt(0) - 65];
                  });
                }
                item.answer = item.answer.filter((x2) => x2);
                if (item.type == 3) {
                  item.options = [];
                  let answer = item.answer[0];
                  if (isFalse(answer))
                    item.answer = "错误";
                  else if (isTrue(answer))
                    item.answer = "正确";
                  else
                    return;
                  if (["正确", "错误"].includes(item.answer) && !isT) {
                    item.answer = item.answer === "正确" ? "错误" : "正确";
                  }
                }
                break;
              case "2":
                item.options = [];
                item.answer = $(item.html).find(".answer .correctAnswer").text().trim().split(";");
                item.answer = item.answer.filter((x2) => x2);
                if (item.answer.length == 0) {
                  item.answer = $(item.html).find(".answer .studentAnswer").text().trim().split(";");
                }
                item.answer = item.answer.filter((x2) => x2);
                break;
              default:
                return;
            }
            return item;
          }
        }
      ];
      const zhijiaoyun = [
        {
          type: "hook",
          name: "hook",
          match: location.host === "spoc-exam.icve.com.cn" || location.host.includes("exam.courshare.cn"),
          main: (data) => {
            _unsafeWindow.mainClass = $(".q_content").first().attr("id");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $(".q_content").first().attr("id")) {
                _unsafeWindow.mainClass = $(".q_content").first().attr("id");
                if (_unsafeWindow.mainClass === "homework-detail-container") {
                  await waitUntil(function() {
                    return $(".q_content").length !== 0;
                  });
                }
                vuePageChange();
                observer.disconnect();
              }
              for (let mutation of mutations) {
                if (mutation.type === "attributes" && mutation.attributeName === "class") {
                  if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
                    observer.disconnect();
                    vuePageChange();
                  }
                }
              }
            });
            if ($("#examPage").length >= 1) {
              observer.observe($("#examPage")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "hook",
          name: "hook",
          match: location.host === "zjy2.icve.com.cn",
          main: (data) => {
            $(".minimized-dialog img").css({
              "z-index": "999999"
            });
            _unsafeWindow.mainClass = $(".r.rFu>div:eq(0)").first().attr("class");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $(".r.rFu>div:eq(0)").first().attr("class")) {
                _unsafeWindow.mainClass = $(".r.rFu>div:eq(0)").first().attr("class");
                if (_unsafeWindow.mainClass === "homework-detail-container") {
                  await waitUntil(function() {
                    return $(".q_content").length !== 0;
                  });
                }
                vuePageChange();
                observer.disconnect();
              }
            });
            if ($("#app").length >= 1) {
              observer.observe($("#app")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "ask",
          name: "职教云作业",
          tips: "职教云只支持选择、判断题,其他题型请反馈给作者",
          match: () => location.href.includes("examflow_index.action"),
          question: {
            html: ".q_content",
            question: ".divQuestionTitle",
            options: ".questionOptions > div",
            type: ".question-box .tag",
            workType: "zhijiaoyun",
            pageType: "zhijiaoyun"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".q_content").length !== 0;
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            var _a2, _b;
            item.question = removeHtml1($(item.html).find(".divQuestionTitle").html());
            let qid = $(item.html).find("[name='quesId']").attr("id");
            let type = (_b = (_a2 = document.getElementById(`questionId[${qid}]`)) == null ? void 0 : _a2.getAttribute("answertype")) == null ? void 0 : _b.trim();
            let inx = $(item.html).find("span[name^='questionIndex']").text().trim() + "、";
            let score = $(item.html).find(".q_score").text().trim();
            item.question = item.question.replace(inx, "").replace(score, "").trim();
            switch (type) {
              case "单项选择题":
              case "单选题":
              case "singlechoice":
                item.type = "0";
                break;
              case "多项选择题":
              case "多选题":
              case "multichoice":
                item.type = "1";
                break;
              case "判断题":
              case "bijudgement":
                item.type = "3";
                break;
              case "fillblank":
                item.type = "2";
                item.question = removeHtml1($(item.html).find("[name='fillblankTitle']").html());
                break;
            }
            item.options = $(item.html).find(".questionOptions>div").map((_inx, item2) => {
              let inx2 = $(item2).find(".option_index").text().trim();
              return removeHtml1($(item2).html()).replace(inx2, "").trim();
            }).get();
            item.$options = $(item.html).find(".questionOptions>div input");
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "2":
                $(item.html).find(".fillblank_input > input").each((inx, xx) => {
                  $(xx).val(item.answer[inx]);
                });
                return false;
            }
            return true;
          },
          finish: (item) => {
            $(".paging_next").click();
          }
        },
        {
          type: "save",
          name: "职教云收录",
          match: () => location.href.includes("examrecord_recordDetail.action"),
          question: {
            html: ".q_content",
            question: ".divQuestionTitle",
            options: ".questionOptions>div.q_option_readonly",
            type: ".question-box .tag",
            workType: "zhijiaoyun",
            pageType: "zhijiaoyun"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".q_content").length !== 0;
            });
          },
          answerHook: (item) => {
            const isT = $(item.html).find(".exam.icon_examright").length;
            const qid = $(item.html).find("input[name='quesId']:not([id='']").attr("id");
            const type = $(`input#qId${qid}`).attr("qtype");
            const inx = $(item.html).find("span[name^='questionIndex']").text().trim() + "、";
            const score = $(item.html).find(".q_score").text().trim();
            item.question = item.question.replace(inx, "").replace(score, "").trim();
            item.options = $(item.html).find(".questionOptions>div.q_option_readonly").map((_inx, xx) => {
              let opInx = $(xx).find("span[name='optionIndexName']").text().trim();
              return removeHtml1($(xx).html()).replace(opInx, "").trim();
            }).get();
            switch (type) {
              case "单项选择题":
              case "单选题":
              case "singlechoice":
                item.type = "0";
                break;
              case "多项选择题":
              case "多选题":
              case "multichoice":
                item.type = "1";
                break;
              case "判断题":
              case "bijudgement":
                item.type = "3";
                break;
              case "fillblank":
                item.type = "2";
                item.question = removeHtml1($(item.html).find(".answerOption>span:eq(0)").html());
                break;
            }
            switch (item.type) {
              case "0":
              case "1":
                item.answer = $(item.html).find('.exam_rightAnswer .exam_answers_tit>span[name="rightAnswer"]').text().trim().split("").map((xx) => {
                  return item.options[xx.charCodeAt(0) - 65];
                });
                log(item.answer, "success");
                if (item.answer.length == 0) {
                  if (isT == 0) {
                    return;
                  }
                  item.answer = $(item.html).find('.exam_stu_answer span[name="stuAnswer"]').text().trim().split("").map((xx) => {
                    return item.options[xx.charCodeAt(0) - 65];
                  });
                }
                break;
              case "2":
                if (isT == 0) {
                  return;
                }
                item.answer = $(item.html).find("span.fillblank_answer").map((inx2, xx) => {
                  return removeHtml1($(xx).html());
                }).get();
                if (item.answer.length !== isT) {
                  item.answer = [];
                  return;
                }
                break;
              case "3":
                item.options = [];
                let answer = $(item.html).find('.exam_stu_answer span[name="stuAnswer"]').text().trim();
                if (["正确", "错误"].includes(answer)) {
                  if (isT) {
                    item.answer = [answer];
                  } else {
                    item.answer = [answer === "正确" ? "错误" : "正确"];
                  }
                }
                break;
            }
            return item;
          }
        }
      ];
      const cnzx = [
        {
          type: "ask",
          name: "川农在线答题",
          tips: "川农在线仅支持选择判断题,其他题型请反馈",
          match: () => (location.host === "any.cnzx.info:81" || location.host === "zice.cnzx.info") && location.href.includes("KaoShi/ShiTiYe.aspx"),
          question: {
            html: "li.question",
            question: ".wenti >p.stem",
            options: ".wenti > ol > li",
            type: ".question_head > span:eq(0)",
            workType: "cnzx",
            pageType: "cnzx"
          },
          init: async () => {
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.find("input").prop("checked");
          },
          questionHook: (item) => {
            item.$options = $(item.html).find(".wenti > ol > li input");
            if (item.options.length !== 0) {
              item.type = item.$options.eq(0).attr("type") === "radio" ? "0" : "1";
              if (item.options.length === 2 && item.options.includes("正确") && item.options.includes("错误")) {
                item.type = "3";
                item.options = [];
              }
            }
            return item;
          },
          setAnswer(item) {
            switch (item.type) {
              case "3":
                $(item.html).find(".wenti > ol > li").each((i, element) => {
                  if (isTrue(item.answer) && isTrue(removeHtml1($(element).html()))) {
                    item.ques.$options.eq(i).click();
                  }
                  if (isFalse(item.answer) && isFalse(removeHtml1($(element).html()))) {
                    item.ques.$options.eq(i).click();
                  }
                });
                return false;
            }
            return true;
          },
          finish: (item) => {
            $("li.paginationjs-next.J-paginationjs-next").click();
          }
        },
        {
          type: "save",
          name: "收录",
          match: () => location.host === "zice.cnzx.info" && location.href.includes("ZaiXianLianXi.aspx"),
          question: {
            html: ".ShiTi>.ShiTiMiaoShu",
            question: ".ShiTiMiaoShu",
            options: ".el-radio-group label .label,.el-checkbox-group label .label",
            type: ".question-box .tag",
            workType: "cnzx",
            pageType: "cnzx"
          },
          init: async () => {
          },
          answerHook: (item) => {
            log($(item.html).text());
            item.question = removeHtml1(titleClean(removeHtml1($(item.html).html())));
            let type = $("ul.TiXing>li.DangQianTiXing:eq(0)>a").text();
            let answer = [];
            let option = $(item.html).next();
            item.options = removeStartChar(option.find("ul li").map((_i, e) => {
              if ($(e).hasClass("DaAn1")) {
                answer.push(_i);
              }
              return titleClean(removeHtml1($(e).html()));
            }).get());
            item.answer = answer.map((i) => {
              return item.options[i];
            });
            switch (type) {
              case "单选题":
              case "词汇与结构":
              case "交际用语":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.type = "3";
                item.options = [];
                item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
                break;
            }
            return item;
          }
        }
      ];
      const yktDecode = (table, table1, text) => {
        let reg = /<span class="xuetangx-com-encrypted-font">(.+?)<\/span>/g;
        let fontList = text.match(reg);
        if (fontList) {
          fontList.forEach((font) => {
            reg = /<span class="xuetangx-com-encrypted-font">(.+?)<\/span>/;
            let fontStr = reg.exec(font);
            if (fontStr && fontStr.length > 1) {
              let zz = fontStr[1];
              let zz1 = zz.split("").map((item) => {
                return table[table1[item]];
              }).join("");
              text = text.replace(fontStr[0], zz1);
            }
          });
        }
        return text;
      };
      const ttfDownload = async (url) => {
        return new Promise((resolve) => {
          _GM_xmlhttpRequest({
            method: "GET",
            url,
            responseType: "arraybuffer",
            onload: function(response) {
              let tables = {};
              const font = Typr$1.parse(response.response);
              for (let i = 19968; i <= 40959 + 1; i++) {
                let char = String.fromCharCode(i);
                let glyphIndex = Typr$1.U.codeToGlyph(font, i);
                const path = Typr$1.U.glyphToPath(font, glyphIndex);
                let hash = md5Exports.md5(JSON.stringify(path));
                tables[char] = hash;
              }
              resolve(tables);
            },
            onerror: function(error) {
              resolve({});
            }
          });
        });
      };
      const ykt = [
        {
          type: "hook",
          name: "hook",
          match: location.host.includes("yuketang.cn"),
          main: (data) => {
            _unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
            log(_unsafeWindow.mainClass, "success");
            let observer = new MutationObserver(async (mutations) => {
              if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.name) {
                _unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
                vuePageChange();
                observer.disconnect();
              }
            });
            if ($("#app").length >= 1) {
              observer.observe($("#app")[0], {
                subtree: true,
                attributes: true,
                childList: true
              });
            }
          }
        },
        {
          type: "ask",
          name: "雨课堂考试",
          tips: "雨课堂暂时未开发完,仅支持选择判断",
          match: () => location.host.includes("yuketang.cn") && location.href.includes("/exam/"),
          question: {
            html: ".exercise-item",
            question: ".content",
            options: ".el-checkbox__label,.el-radio__label",
            type: ".question-box .tag",
            workType: "xinwei",
            pageType: "xinwei"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".exercise-item").length !== 0;
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            const ques = item.html.__vue__.item;
            item.type = typeChange(ques.TypeText);
            item.question = titleClean(removeHtml1(ques.Body)).trim();
            const options = {};
            ques.Options && ques.Options.forEach((item1) => {
              options[item1.key] = removeHtml1(item1.value);
            });
            item.options = ques.Options.sort((a2, b2) => {
              return a2.key.charCodeAt(0) - b2.key.charCodeAt(0);
            }).map((item1) => {
              return removeHtml1(item1.value);
            });
            switch (item.type) {
              case "0":
              case "1":
                break;
              case "2":
                item.options = [];
                break;
              case "3":
                item.options = [];
                break;
            }
            return item;
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "3":
                item.ques.$options.get().forEach((element) => {
                  isFalse(item.answer) && $(element).find(".el-icon-close").length > 0 && element.click();
                  isTrue(item.answer) && $(element).find(".el-icon-check").length > 0 && element.click();
                });
                return false;
            }
            return true;
          },
          finish: (item) => {
          }
        },
        {
          type: "ask",
          name: "雨课堂作业",
          tips: "雨课堂仅兼容选择判断,其他题型请反馈给作者。雨课堂作业请务必开启自动切换,否则无法自动答题或导致答题错乱",
          match: () => location.host.includes("yuketang.cn") && location.href.includes("cloud/student/exercise"),
          question: {
            html: ".subject-item.J_order",
            question: ".content",
            options: ".el-radio__label",
            type: ".question-box .tag",
            workType: "yuketang",
            pageType: "yuketang"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".el-icon-loading").length == 0 && $(".container-problem").length > 0 && $(".container-problem")[0].__vue__ && $(".container-problem")[0].__vue__.exerciseList;
            });
            const yktQues = $(".container-problem")[0].__vue__.exerciseList;
            if (!yktQues) {
              msg("未找到题目");
              return;
            }
            msg("正在下载字体包,请耐心等待");
            _unsafeWindow.ttfTable = await ttfDownload(yktQues.font);
            _unsafeWindow.problems = yktQues.problems;
          },
          // 跳转指定
          toquestion: (index) => {
            $(`.aside-body ul>li:eq(${index}) .subject-item`).click();
          },
          // 下一题
          next: () => {
            $('.el-button.el-button--text:contains("下一题")').click();
          },
          ischecked: (item) => {
            return item.hasClass("is-checked");
          },
          questionHook: (item, index) => {
            if ($(".el-button.el-button--info.is-disabled.is-plain").length > 0) {
              return;
            }
            const problem = _unsafeWindow.problems[index];
            const ttfTable = _unsafeWindow.ttfTable;
            const content = problem.content;
            problem.user;
            const table = JSON.parse(_GM_getResourceText("ttf2"));
            item.question = titleClean(removeHtml1(yktDecode(table, ttfTable, content.Body))).trim();
            item.type = typeChange(content.TypeText);
            item.$options = () => {
              return $(".item-body ul>li>label");
            };
            const options = {};
            if (content.Options) {
              content.Options.map((item1) => {
                options[item1.key] = removeHtml1(yktDecode(table, ttfTable, item1.value));
              });
              item.options = content.Options.sort(
                (a2, b2) => {
                  return a2.key.charCodeAt(0) - b2.key.charCodeAt(0);
                }
              ).map((item1) => {
                return removeHtml1(yktDecode(table, ttfTable, item1.value));
              });
            }
            switch (item.type) {
              case "0":
              case "1":
                break;
              case "2":
                item.question = removeHtml1(item.question.replace(/\[填空\d\]/g, ""));
                break;
              case "3":
                item.options = [];
                break;
              default:
                log("未知题型", item.type, "error");
                break;
            }
            return item;
          },
          setAnswerHook: (item) => {
          },
          setAnswer: (item) => {
            switch (item.type) {
              case "3":
                $(".item-body ul>li").get().forEach((element) => {
                  isFalse(item.answer) && $(element).find('use[*|href="#icon--tiankongticuowu"]').length > 0 && $(element).find("label").click();
                  isTrue(item.answer) && $(element).find('use[*|href="#icon--tiankongtizhengque"]').length > 0 && $(element).find("label").click();
                });
                return false;
            }
            return true;
          },
          finish: (item) => {
          }
        },
        {
          type: "save",
          name: "考试收录",
          match: () => location.host.includes("yuketang.cn") && location.href.includes("/result/"),
          question: {
            html: ".subject-item > .result_item",
            question: "h4.clearfix.exam-font",
            options: "ul.list-unstyled li",
            type: ".item-type",
            workType: "yuketang",
            pageType: "yuketang"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".subject-item").length;
            });
          },
          answerHook: (item, index) => {
            const ques = item.html.__vue__.item;
            item.type = typeChange(ques.TypeText);
            const options = {};
            if (ques.Options) {
              ques.Options.forEach((item1) => {
                options[item1.key] = removeHtml1(item1.value);
              });
              item.options = ques.Options.sort((a2, b2) => {
                return a2.key.charCodeAt(0) - b2.key.charCodeAt(0);
              }).map((item1) => {
                return removeHtml1(item1.value);
              });
            }
            item.question = titleClean(removeHtml1(ques.Body)).trim();
            switch (item.type) {
              case "0":
              case "1":
                if (typeof ques.Answer === "string") {
                  item.answer = ques.Answer.split("").map((item2) => {
                    return options[item2];
                  });
                } else if (typeof ques.Answer === "object") {
                  item.answer = ques.Answer.map((item2) => {
                    return options[item2];
                  });
                }
                break;
              case "2":
                log(ques.Blanks, "error");
                item.answer = ques.Blanks.map((aa) => {
                  return removeHtml1(aa.Answers[0]);
                });
                break;
              case "3":
                item.options = [];
                isTrue(ques.Answer[0]) ? item.answer = ["正确"] : isFalse(ques.Answer[0]) ? item.answer = ["错误"] : item.answer = [];
                break;
            }
            return item;
          }
        },
        {
          type: "save",
          name: "作业收录",
          match: () => location.host.includes("yuketang.cn") && location.href.includes("cloud/student/exercise"),
          question: {
            html: ".dot",
            question: "h4.clearfix.exam-font",
            options: "ul.list-unstyled li",
            type: ".item-type",
            workType: "yuketang",
            pageType: "yuketang"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".el-icon-loading").length == 0 && $(".container-problem").length > 0 && $(".container-problem")[0].__vue__ && $(".container-problem")[0].__vue__.exerciseList;
            });
            await waitUntil(function() {
              return $(".el-button.el-button--info.is-disabled.is-plain").length != 0;
            });
            const yktQues = $(".container-problem")[0].__vue__.exerciseList;
            if (!yktQues) {
              msg("未找到题目");
              return;
            }
            msg("正在下载字体包,请耐心等待");
            _unsafeWindow.ttfTable = await ttfDownload(yktQues.font);
            _unsafeWindow.problems = yktQues.problems;
            log($(".container-problem")[0].__vue__.exerciseList, "success");
          },
          answerHook: (item, index) => {
            const problem = _unsafeWindow.problems[index];
            const ttfTable = _unsafeWindow.ttfTable;
            const content = problem.content;
            const user = problem.user;
            const table = JSON.parse(_GM_getResourceText("ttf2"));
            item.question = titleClean(removeHtml1(yktDecode(table, ttfTable, content.Body))).trim();
            item.type = typeChange(content.TypeText);
            const options = {};
            if (content.Options) {
              content.Options.map((item1) => {
                options[item1.key] = removeHtml1(yktDecode(table, ttfTable, item1.value));
              });
              item.options = content.Options.sort(
                (a2, b2) => {
                  return a2.key.charCodeAt(0) - b2.key.charCodeAt(0);
                }
              ).map((item1) => {
                return removeHtml1(yktDecode(table, ttfTable, item1.value));
              });
            }
            switch (item.type) {
              case "0":
              case "1":
                if (typeof user.answer === "string") {
                  item.answer = user.answer.split("").map((item2) => {
                    return options[item2];
                  });
                } else if (typeof user.answer === "object") {
                  item.answer = user.answer.map((item2) => {
                    return options[item2];
                  });
                }
                break;
              case "2":
                item.question = removeHtml1(item.question.replace(/\[填空\d\]/g, ""));
                item.answer = content.Blanks.map((xx) => {
                  return removeHtml1(xx[0]);
                });
                item.answer = item.answer.filter((item2) => {
                  return item2 !== "undefined";
                });
                if (item.answer.length != content.blank_count) {
                  log("填空题数量不对", item.answer, "error");
                  item.answer = [];
                  log(user.answers, "error");
                  item.answer = Object.values(user.answers).map((xx) => {
                    return removeHtml1(xx[0]);
                  });
                }
                break;
              case "3":
                item.options = [];
                isTrue(user.answer[0]) ? item.answer = ["正确"] : isFalse(user.answer[0]) ? item.answer = ["错误"] : item.answer = [];
                break;
            }
            return item;
          }
        }
      ];
      const ahjxjy = [
        {
          type: "ask",
          name: "安徽继续教育答题",
          tips: "该平台仅支持单选、多选、判断题型,其他题型暂不支持",
          match: () => location.host === "main.ahjxjy.cn" && (location.href.includes("study/html/content/studying/?courseOpenId=") || location.href.includes("study/html/content/sxsk/?courseOpenId=")),
          question: {
            html: ".e-q-body>.e-q",
            question: ".ErichText",
            options: "ul>li>.ErichText",
            type: ".question-box .tag",
            workType: "ahjxjy",
            pageType: "ahjxjy"
          },
          init: async () => {
            await waitUntil(function() {
              return isExist(".e-q-body>.e-q") && isExist(".e-save");
            });
            if (!isExist(".photo-time")) {
              return false;
            }
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            item.type = $(item.html).parent().parent().attr("id").trim();
            switch (item.type) {
              case "2":
                item.type = "1";
                break;
              case "1":
                item.type = "0";
                break;
              case "3":
                item.type = "3";
                item.$options = $(item.html).find("ul>li");
                break;
              default:
                log("暂未适配当前题型", item.type, "error");
                return;
            }
            return item;
          },
          setAnswer: (item) => {
            return true;
          },
          finish: (item) => {
          }
        },
        {
          type: "save",
          name: "安徽继续教育收录",
          tips: "该平台仅支持单选、多选、判断题型,其他题型暂不支持",
          match: () => location.host === "main.ahjxjy.cn" && (location.href.includes("study/html/content/studying/?courseOpenId=") || location.href.includes("study/html/content/sxsk/?courseOpenId=")),
          question: {
            html: ".e-q-body>.e-q",
            question: ".ErichText",
            options: "ul>li>.ErichText",
            type: ".question-box .tag",
            workType: "ahjxjy",
            pageType: "ahjxjy"
          },
          init: async () => {
            await waitUntil(function() {
              log(isExist(".e-save"));
              return isExist(".e-q-body>.e-q") && isExist(".e-save");
            });
            if (!isExist(".totalscore")) {
              return false;
            }
          },
          answerHook: (item) => {
            item.type = $(item.html).parent().parent().attr("id").trim();
            item.$options = $(item.html).find("ul>li");
            let an2 = $(item.html).find("ul>li.checked").map((index, element) => {
              return removeHtml1($(element).find(".ErichText").html());
            }).get();
            const isT = $(item.html).find(".e-q-right").length > 0;
            item.answer = an2.filter((item2) => item2 !== "");
            let ckAnswer = $(item.html).find(".e-ans-ref .e-ans-r").map((index, element) => {
              return removeHtml1($(element).html());
            }).get();
            if (ckAnswer.length === 1 && ckAnswer[0].length > 1) {
              ckAnswer = ckAnswer[0].split("、");
            }
            let ans = ckAnswer.map((item1) => {
              let index = item1.charCodeAt() - 65;
              return item.options[index];
            }).filter((item1) => item1 !== "" && item1 !== void 0);
            switch (item.type) {
              case "2":
                item.type = "1";
                break;
              case "1":
                item.type = "0";
                break;
              case "3":
                item.type = "3";
                item.answer = $(item.html).find("ul>li.checked").map((index, element) => {
                  return removeHtml1($(element).html());
                }).get();
                item.options = [];
                isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
                break;
              case "11":
                item.type = "19";
                const quesList = $(item.html).find("form").map((index, element) => {
                  return {
                    type: "0",
                    question: removeHtml1($(element).find(".e-q-q .ErichText").html()),
                    options: $(element).find("ul li .ErichText").map((index2, element2) => {
                      return removeHtml1($(element2).html());
                    }).get()
                  };
                }).get();
                ans = ans.length > 0 ? isTrue(ans[0]) ? ["正确"] : isFalse(ans[0]) ? ["错误"] : [] : [];
                item.options = quesList;
              default:
                log("暂未适配当前题型", item.type, "error");
                return;
            }
            if (ans.length > 0) {
              item.answer = ans;
              return item;
            }
            if (!isT && item.type === "3" && item.answer.length > 0) {
              item.answer = isTrue(item.answer[0]) ? ["错误"] : isFalse(item.answer[0]) ? ["正确"] : [];
            } else if (!isT) {
              return;
            }
            return item;
          }
        }
      ];
      const qingshu = [
        {
          type: "hook",
          name: "青书学堂考试外部收录",
          match: location.host === "degree.qingshuxuetang.com" && location.href.includes("Student/ExamInstruction"),
          main: (data) => {
          }
        },
        {
          type: "save",
          name: "青书作业答题收录",
          match: () => location.host === "degree.qingshuxuetang.com" && (location.href.includes("Student/ExercisePaper?courseId=") || location.href.includes("Student/ViewQuiz?quizId=")),
          question: {
            html: ".paper-container > .question-detail-container",
            question: ".question-detail-description",
            options: ".question-detail-options .question-detail-option .option-description-preview",
            type: ".question-detail-type-desc",
            workType: "qingshu",
            pageType: "qingshu"
          },
          init: async () => {
            await waitUntil(function() {
              return isExist(".question-detail-container") && _unsafeWindow.qsques;
            });
          },
          answerHook: (item, index) => {
            const ques = _unsafeWindow.qsques[index];
            item.question = removeHtml1(ques.description);
            item.options = ques.options ? ques.options.map((v2) => {
              return removeHtml1(v2.description);
            }) : [];
            item.type = typeChange(ques.typeDesc);
            item.answer = ques.solution.split("").map((v2) => {
              return item.options[v2.charCodeAt(0) - 65];
            });
            switch (item.type) {
              case "3":
                item.options = [];
                item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [""];
                break;
              case "15":
                item.options = [];
                item.answer = [];
                ques.subQuestions.forEach((v2) => {
                  let options = v2.options ? v2.options.map((v22) => {
                    return removeHtml1(v22.description);
                  }) : [];
                  let answer = v2.solution.split("").map((v22) => {
                    return options[v22.charCodeAt(0) - 65];
                  });
                  item.answer.push(answer);
                  item.options.push(options);
                });
            }
            return item;
          }
        },
        {
          type: "ask",
          name: "青书学堂作业答题",
          tips: "青书学堂仅支持选择、判断等题型,其他题型请反馈给作者",
          match: () => location.host === "degree.qingshuxuetang.com" && (location.href.includes("/Student/ExercisePaper") || location.href.includes("Student/ExamPaper")),
          question: {
            html: ".paper-container > .question-detail-container",
            question: ".question-detail-description",
            options: ".question-detail-options .question-detail-option .option-description",
            type: ".question-detail-type-desc",
            workType: "qingshu",
            pageType: "qingshu"
          },
          init: async () => {
            await waitUntil(function() {
              return isExist(".question-detail-container") && _unsafeWindow.qsques;
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().find("input").prop("checked");
          },
          toquestion: (index) => {
            log($(`.answered.group_item:eq(${index})`));
            $(`.answered.group_item:eq(${index})`).click();
          },
          questionHook: (item, index) => {
            const ques = _unsafeWindow.qsques[index];
            item.question = removeHtml1(ques.description);
            item.options = ques.options ? ques.options.map((v2) => {
              return removeHtml1(v2.description);
            }) : [];
            item.type = typeChange(ques.typeDesc);
            switch (item.type) {
              case "3":
                item.options = [];
                break;
            }
            return item;
          },
          setAnswer: (item) => {
            return true;
          },
          finish: (item) => {
          }
        }
      ];
      const uooc = [
        {
          type: "save",
          name: "优课在线收录",
          match: () => location.host === "cce.org.uooconline.com" && (location.href.includes("/exam/paper") || location.href.includes("/exam/")),
          question: {
            html: ".queContainer",
            question: ".topic-title",
            options: ".el-radio-group label .label,.el-checkbox-group label .label",
            type: ".question-box .tag",
            workType: "uooc",
            pageType: "uooc"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".queContainer").length !== 0;
            });
          },
          answerHook: (item) => {
            const ques = _unsafeWindow.angular.element(item.html).scope().question;
            item.type = typeChange(ques.type_text);
            item.question = ques.question;
            item.options = ques.options_app.map((item2) => item2.value);
            item.answer = ques.answer.map((ans) => {
              return ques.options[ans];
            });
            switch (item.type) {
              case "3":
                item.options = [];
                item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
                break;
            }
            return item;
          }
        }
      ];
      const cjedu = [
        {
          type: "ask",
          name: "京人平台答题",
          tips: "京人平台仅支持选择判断,其他题型请反馈给作者",
          match: () => location.host.includes("cj-edu.com") && location.href.includes("/Examination"),
          question: {
            html: ".el-main>.all_subject>div.el-row",
            question: "div.stem",
            options: "ul li > label > span.el-radio__label > div:nth-child(2),ul li > label > span.el-checkbox__label > div:nth-child(2)",
            type: ".question-box .tag",
            workType: "cjedu",
            pageType: "cjedu"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".el-main>.all_subject>div.el-row").length !== 0;
            });
          },
          next: () => {
          },
          ischecked: (item) => {
            return item.parent().parent().hasClass("is-checked");
          },
          questionHook: (item) => {
            let type = $(item.html).prevAll("h1").first().text().trim();
            switch (type) {
              case "单选题":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.$options = $(item.html).find("ul li>label");
                item.options = [];
                item.type = "3";
                break;
            }
            return item;
          },
          setAnswer: (item) => {
            return true;
          },
          finish: (item) => {
          }
        },
        // 芯位教育收录
        {
          type: "save",
          name: "京人平台作业收录",
          match: () => location.host.includes("cj-edu.com") && location.href.includes("/ViewAnswerSheet"),
          question: {
            html: ".el-main>.all_subject>div.el-row",
            question: "p.stem",
            options: "ul li > label > span.el-radio__label > div:nth-child(2),ul li > label > span.el-checkbox__label > div:nth-child(2)",
            type: ".question-box .tag",
            workType: "cjedu",
            pageType: "cjedu"
          },
          init: async () => {
            await waitUntil(function() {
              return $(".el-main>.all_subject>div.el-row").length !== 0;
            });
          },
          answerHook: (item) => {
            let answer = $(item.html).find(".seeStudentAnswer>p.answer").text().replace("参考答案:", "").trim();
            let type = $(item.html).prevAll("h1").first().text().trim();
            if (item.options.length > 0) {
              item.answer = answer.split(",").map((i) => {
                return item.options[i.charCodeAt(0) - 65];
              });
            }
            switch (type) {
              case "单选题":
                item.type = "0";
                break;
              case "多选题":
                item.type = "1";
                break;
              case "判断题":
                item.options = [];
                item.answer = isTrue(answer) ? ["正确"] : isFalse(answer) ? ["错误"] : [];
                item.type = "3";
                break;
            }
            return item;
          }
        }
      ];
      const _ruleList = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
        __proto__: null,
        ahjxjy,
        chaoxing,
        chatglm,
        chengjiaoyun,
        cjedu,
        cnzx,
        guokai,
        jsou,
        qingshu,
        uooc,
        xinwei,
        ykt,
        yunmuxueyuan,
        zhihuishu,
        zhijiaoyun
      }, Symbol.toStringTag, { value: "Module" }));
      const rule = [];
      for (const key2 in _ruleList) {
        rule.push(..._ruleList[key2]);
      }
      const parseRuleHook = (rule2) => {
        rule2.filter((item) => item.match && item.hook).forEach((item) => {
          item.hook();
        });
      };
      const parseRule = async (rule2) => {
        await waitUntil(() => _unsafeWindow[key] !== void 0);
        const matchedRule = rule2.filter((item) => {
          if (typeof item.match === "function") {
            return item.match();
          }
          return item.match;
        });
        if (!matchedRule.length) {
          console.log("没有匹配到规则", "error");
          return;
        }
        const app = wapp();
        for (const item of matchedRule) {
          console.log(`匹配到规则:${item.name}`, "success");
          if (item.init) {
            let init = await item.init();
            if (typeof init == "boolean" && init === false) {
              continue;
            }
          }
          if (item.type === "hook")
            item.main(app);
          if (item.type === "ask")
            askParser(item, app);
          if (item.type === "save")
            saveParser(item, app);
        }
      };
      const saveParser = (rule2, data) => {
        const app = data.app;
        const ask = data.ask;
        ask.rule = rule2;
        rule2.tips && (ask.tips = rule2.tips);
        const quesList = questionSaveParser(rule2.question, rule2.answerHook || null).filter((item) => {
          if (item == null || item.answer.length === 0 || item.answer === "") {
            return false;
          }
          return true;
        });
        ask.saveQuestionData = quesList;
        quesList.forEach((item) => {
          if (item.answer.length !== 0) {
            Answer.cacheAnswer(item);
          }
        });
        const postData = {
          "questionList": quesList,
          "pageType": rule2.question.pageType
        };
        app.setPage("question");
        quesList.length && Answer.syncQuestionList(postData);
        msg(`题库收录完成,共缓存${quesList.length}道题目`, "success");
        rule2.next && rule2.next();
      };
      const askParser = (rule2, data) => {
        const app = data.app;
        const ask = data.ask;
        ask.rule = rule2;
        rule2.tips && (ask.tips = rule2.tips);
        app.app.showFloat = true;
        app.setPage("ask");
        ask.clearQuestion();
        const quesList = questionParser(rule2.question, rule2.questionHook || null);
        quesList.forEach((item) => {
          ask.addQuestion(item);
        });
        ask.autoAnswer && ask.toggleStart();
      };
      const questionSaveParser = (item, hook) => {
        if (typeof item.html === "function") {
          item.html = item.html();
        }
        const quesLIst = $(item.html).map((index, element) => {
          const questionText = removeHtml1($(element).find(item.question).html());
          const options = $(element).find(item.options).map((index2, element2) => {
            return removeHtml1($(element2).html());
          }).get();
          const questionTypeId = $(element).find(item.type).val();
          const html = $(element)[0];
          let questionData = {
            question: titleClean(questionText ?? ""),
            options,
            $options: $(element).find(item.options),
            $answer: $(element).find(item.answer),
            answer: [],
            type: questionTypeId,
            html
          };
          hook && (questionData = hook(questionData, index));
          if (questionData == void 0 || questionData == null) {
            return null;
          }
          return {
            question: questionData.question,
            options: questionData.options,
            answer: questionData.answer,
            type: questionData.type
          };
        });
        return quesLIst.get();
      };
      const questionParser = (item, hook) => {
        if (typeof item.html === "function") {
          item.html = item.html();
        }
        const quesLIst = $(item.html).map((index, element) => {
          const questionText = removeHtml1($(element).find(item.question).html());
          const options = $(element).find(item.options).map((index2, element2) => {
            return removeHtml1($(element2).html());
          }).get();
          const questionTypeId = $(element).find(item.type).val();
          const workType = item.workType;
          const html = $(element)[0];
          let questionData = {
            question: titleClean(questionText ?? ""),
            options,
            $options: $(element).find(item.options),
            type: questionTypeId,
            html,
            workType,
            pageType: item.pageType
          };
          hook && (questionData = hook(questionData, index));
          return questionData;
        });
        return quesLIst.get();
      };
      const defaultSetAnswer = async (type, answer, ques, rule2) => {
        var _a2;
        switch (type) {
          case "xx":
            for (let i = 0; i < ques.$options.length; i++) {
              if (answer.includes(i)) {
                if (rule2.ischecked && rule2.ischecked(ques.$options.eq(i))) {
                  continue;
                }
                ques.$options.eq(i).click();
                await sleep(Math.floor(Math.random() * 300 + 200));
              } else if (rule2.ischecked && rule2.ischecked(ques.$options.eq(i))) {
                ques.$options.eq(i).click();
                await sleep(Math.floor(Math.random() * 300 + 200));
              }
            }
            break;
          case "pd":
            let bold = answer;
            if (ques.options.length == 0) {
              ques.$options.each((index, element) => {
                if (isTrue(bold) && isTrue(removeHtml1($(element).html()))) {
                  $(element).click();
                }
                if (isFalse(bold) && isFalse(removeHtml1($(element).html()))) {
                  $(element).click();
                }
              });
            } else {
              ques.$options.each((index, element) => {
                if (isTrue(bold) && isTrue(ques.options[index])) {
                  $(element).click();
                }
                if (isFalse(bold) && isFalse(ques.options[index])) {
                  $(element).click();
                }
              });
            }
            break;
          case "jd":
            $(ques.html).find("textarea").each(function(index) {
              _unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
                this.setContent(answer[index].replace(/第.空:/g, ""));
              });
            });
            (_a2 = $(ques.html).find(".savebtndiv>a")) == null ? void 0 : _a2.click();
            break;
        }
      };
      const ApiAnswerMatch = (res, ques) => {
        const data = wapp();
        const ask = data.ask;
        let blankNum = 0;
        let answer;
        let setHook = true;
        let type = ques.type, html = ques.html;
        let matchArr = [];
        let answerData = [
          "",
          matchArr,
          ques,
          ask.rule
        ];
        if (ques.$options && typeof ques.$options === "function") {
          ques.$options = ques.$options();
        }
        switch (type) {
          case "0":
          case "1":
            for (let i = 0; i < res.length; i++) {
              let answer2 = res[i].answer;
              let matchArr2 = matchAnswer(answer2, ques.options);
              res[i].match = matchArr2;
            }
            matchArr = res.filter((item) => item.match.length > 0);
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            if (matchArr.length > 1) {
              let isSame = matchArr.every((item) => item.match.length === matchArr[0].match.length);
              if (!isSame) {
                let max = matchArr[0];
                for (let i = 1; i < matchArr.length; i++) {
                  if (matchArr[i].match.length > max.match.length) {
                    max = matchArr[i];
                  }
                }
                matchArr = [max];
              }
            }
            let selectM = matchArr[0].match;
            answerData[0] = "xx";
            answerData[1] = selectM;
            break;
          case "3":
            matchArr = res.map((item) => {
              let answer2 = item.answer;
              if (typeof answer2 === "object") {
                answer2 = answer2[0];
              }
              if (isTrue(answer2)) {
                item.answer = "正确";
              } else if (isFalse(answer2)) {
                item.answer = "错误";
              } else {
                item.answer = "";
              }
              return item;
            });
            matchArr = res.filter((item) => item.answer !== "");
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answerData[0] = "pd";
            answerData[1] = matchArr[0].answer;
            break;
          case "2":
          case "9":
          case "4":
          case "5":
          case "6":
          case "7":
            blankNum = $(html).find("textarea").length;
            matchArr = res.filter((item) => item.answer.length > 0);
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answer = matchArr[0].answer;
            if (typeof answer === "string") {
              answer = [answer];
            }
            matchArr = matchArr.filter((item) => (typeof item.answer === "string" ? 1 : item.answer.length) === blankNum);
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answerData[0] = "jd";
            answerData[1] = answer;
            break;
          case "14":
            blankNum = ques.$options.length;
            matchArr = res.filter((item) => item.answer.length > 0 && item.answer.length === blankNum);
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answer = matchArr[0].answer;
            matchArr = matchArr.filter((item) => (typeof item.answer === "string" ? 1 : item.answer.length) === blankNum);
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answerData[0] = "wxtk";
            answerData[1] = answer;
            break;
          case "11":
            matchArr = res.filter((item) => {
              return typeof item.answer === "object";
            });
            if (matchArr.length === 0) {
              return {
                res,
                haveAnswer: false
              };
            }
            answer = matchArr[0].answer;
            answerData[0] = "lx";
            answerData[1] = answer;
            break;
          default:
            return {
              res,
              haveAnswer: false
            };
        }
        if (ask.rule.setAnswerHook && typeof ask.rule.setAnswerHook === "function") {
          ask.rule.setAnswerHook({
            type,
            answer: answerData[1],
            html: ques.html,
            ques
          });
        }
        if (ask.rule.setAnswer && typeof ask.rule.setAnswer === "function") {
          setHook = ask.rule.setAnswer({
            type,
            answer: answerData[1],
            html,
            ques,
            rule: ask.rule
          });
        }
        if (setHook) {
          defaultSetAnswer(answerData[0], answerData[1], ques, ask.rule);
        }
        return {
          res,
          // 采用答案
          form: matchArr ? matchArr[0] : [],
          haveAnswer: true
        };
      };
      const randomAnswerMatch = (res, ques) => {
        const data = wapp();
        const ask = data.ask;
        let setHook = true;
        let type = ques.type, html = ques.html;
        let answerData = [
          "",
          [],
          ques,
          ask.rule
        ];
        switch (type) {
          case "0":
          case "1":
            let selectM = [Math.floor(Math.random() * ques.options.length)];
            answerData[0] = "xx";
            answerData[1] = selectM;
            break;
          case "3":
            let bold = Math.random() > 0.5 ? "正确" : "错误";
            answerData[0] = "pd";
            answerData[1] = bold;
            break;
          default:
            return;
        }
        if (ask.rule.setAnswerHook && typeof ask.rule.setAnswerHook === "function") {
          ask.rule.setAnswerHook({
            type,
            answer: answerData[1],
            html: ques.html,
            ques
          });
        }
        if (ask.rule.setAnswer && typeof ask.rule.setAnswer === "function") {
          setHook = ask.rule.setAnswer({
            type,
            answer: answerData[1],
            html,
            ques,
            rule: ask.rule
          });
        }
        if (setHook) {
          defaultSetAnswer(answerData[0], answerData[1], ques, ask.rule);
        }
        return;
      };
      const vuePageChange = async () => {
        if (_unsafeWindow.vuePageChangeLock)
          return;
        _unsafeWindow.vuePageChangeLock = true;
        const data = wapp();
        const app = data.app;
        const ask = data.ask;
        ask.questionInx = 0;
        app.app.showFloat = false;
        app.setPage("home");
        ask.clearQuestion();
        await parseRule(rule);
        _unsafeWindow.vuePageChangeLock = false;
      };
      const zhsimgList = {
        "ef16b0304b00ce71fd40a6ec2ee77005": "ACDFGHIJ",
        "735b46e223cfc7bad9b86c9937c75234": "BDEFG",
        "24ec8818a8cc7ef047261e702dac5815": "ABCDEFGHIJ",
        "196888b3dcb1e1bfff5881cb653ba923": "BDEFGH",
        "b935cd024690d61b8fba0484a66108f0": "ABCDEGH",
        "2015082c8ae5776bfd6939c5b987bde8": "BEF",
        "95018628ad8e26805393ebbb913f5655": "AF",
        "9cbff65dc6a768716f51443d6086a1c3": "BDG",
        "b8f6dedb0bf830a10b66369b1c602088": "CFG",
        "1ad38a724dc5bac06ce6d1c63b0184cf": "ACDEFGI",
        "6ba30ef9d51b4c81a126ff6d17ee4fb2": "AEFHIJ",
        "78a0d910c07fde12bafafda0f23c8b31": "CEH",
        "9ae999623635bc09942f1d0eb59e6837": "BH",
        "7d6006b8e10d9dffbe1fa0570757caa7": "DH",
        "86eba22e064f8fe7223621469d91c696": "ACDF",
        "4e585ee0c6ac7c985615389285c830ef": "BCF",
        "5ff23de904db9fb6485cddb667995cd7": "ABCDEFGHI",
        "fc402dcdbd1751096532c45785acbbbe": "DF",
        "ece41fab3f00663e05f8f58eb73d24dd": "ABCDEFGH",
        "784388b61ba6bc8106194478e383908a": "CDFIJ",
        "e735470377881c422d187ce9bb7f4f24": "ACDEG",
        "6a721d0773b4945fbe8f550da3850005": "ABCDEFI",
        "cfcabe2eeaeef886169447086ac23b96": "AEG",
        "c38f5ab64c8b82df3bb66f8f9831097b": "AEF",
        "b684fb365965c6b3488eeedcae114384": "ADEF",
        "1c402ceeda5ea92b80fe8b5b5bcbdc4d": "ACF",
        "ce75bbb9a8b72f97de5a8bb03ee95df7": "J",
        "e21ba3c8d7f8bbb66e4af7a9182d87a5": "ACGI",
        "445adaca0de2f938fe7bacf8140eef36": "ABF",
        "4f14c1e0a1eccde02ee4f0a77eaa78cd": "BCEF",
        "e78e28ee7040cdf3894293cd2eeade9b": "H",
        "ee5a026e9664d3d75f0471b9bc826c98": "EF",
        "904d82937a49e762ec1fa7c53574bb39": "ADF",
        "2ee96820a6a35990bff61a607953274c": "BDDF",
        "dc13afaff7b568f31d96c0ff8b5998b8": "ABEF",
        "13c11253a2bb72c3726d318163662263": "ABCF",
        "ca8b276d3213cfda5e6406c0930dfdb5": "CDF",
        "0d38524f7ca472260864ef7b79b11591": "ABCDG",
        "0e9bfd8011be1eddfcf97102f9e21ab6": "DEF",
        "ca88100d2fd190136cdcb3ffe1648820": "DG",
        "2d8c02e62a414df727f2bd36d4231c68": "ABCFG",
        "099b9f86638886c7ca57401d4360165c": "ABCDEFG",
        "7a0a8f7222c07c8c24c4a6d201105ecc": "ACEF",
        "181f54c34d485b426b900e2c777a831c": "AEFHI",
        "993215603eb31c60f31aa261267790e8": "ABCEF",
        "fcae686eac9b3de629da73618ea6cdc0": "ABCDF",
        "8b6271d28906b0a6a765ea1c37c31ff9": "ABDF",
        "5dfd875662f18654b374acd37e6c3790": "CF",
        "e8b47f587340890e698ccb14ef1f39c4": "CDEF",
        "de2c87983e695e599c1a2f6836277a4f": "ABDEF",
        "14189c3fbb519be795b7fbe6e182debf": "A",
        "94f5aa9777f0f1fb7d53e669691d8bde": "AB",
        "3be90a70f03362711cf62e97751dfabe": "ABC",
        "b9691b2259745815096c074d5cc27514": "ABCD",
        "16374490395999a162f0652a32d13b8b": "ABCDE",
        "8b2a7f5a361969be6a905da99af21b44": "ABCDEF",
        "e12185b3db81b9ec20d0402632e83f74": "ACDEF",
        "83bd97c6c3ac69318ad965f7776a51b4": "ABCE",
        "80e9325ef9406e82b8202de25fd80cbb": "ABD",
        "7d2f8e1fc8dabca4d9baca38bf413732": "ABDE",
        "e329dd6e7aecd220d271ba06a87c1d4f": "ABE",
        "8d234f3f7209a68f21d4e2b8f367d0b3": "AC",
        "6ecb31b10f3e3a751f8d2caacbdc850d": "ACD",
        "034b452c93b9be10f437a385608d8c0f": "ACDE",
        "79b887d55f7fbe5f8f1e29537c4099b7": "ACE",
        "d23fcd2143ca2071fc33f912cf1c28e4": "AD",
        "32e93bed7ac49065a1af9639795f4b47": "ADE",
        "81e4110d9047c39ea1444a178b7cd33d": "AE",
        "fc9eb0edae6ae531956f368178f287e1": "B",
        "998251adc1952f413e9b2b8d2b3cad37": "BC",
        "47e6f17113fb5d7fa896270917aafb99": "BCD",
        "26fee236555e7629f11308452c47b032": "BCDE",
        "d22d3cc146b96cf9d049da3decb8060e": "BCDEF",
        "a90e4a238e95a9ef750a1e0844b6730b": "BCDG",
        "a4bfbd439f12870ac2294ac4f59c2ade": "BCE",
        "d7e98cd9fa6c9fc480ebcba65bbd5ed7": "BD",
        "859f062ed997fc06bebde9c00669d29d": "BDE",
        "1ad8f209d08633c3cee74a4f48862c4f": "BDEF",
        "8d34b7e5f05d2d9188a6d40a0f882cb0": "BDF",
        "fe4bf0dc5ee6f3e858034bacfbd8c657": "BE",
        "73223444a1f6ae044cc12664cfed422a": "C",
        "e5abe969bb50ce2495a7591f32d67cc3": "CD",
        "a897c5097bbbf5f66ad491c083a897f2": "CDE",
        "b01f11bd3ef4311b47cef1a032dde5c2": "CE",
        "ed3febdc9d4c5ca73f1066f3b6040d5a": "D",
        "6a1137dfc861563b83e2579024ce929f": "DE",
        "2e256e5ceb7a86e50fe2c93f622d30ac": "E",
        "ddeacacae3b5f3ceb9ae1638d1585271": "EG",
        "19be069faa48362663d092896fa7d4d4": "F",
        "52113efae9e75eacdb3529fefb168982": "G"
      };
      const comHook = () => {
        Function.prototype.__constructor_back = Function.prototype.constructor;
        Function.prototype.constructor = function() {
          if (arguments && typeof arguments[0] === "string") {
            if ("debugger" === arguments[0]) {
              return;
            }
          }
          return Function.prototype.__constructor_back.apply(this, arguments);
        };
        const get_href = () => {
          return location.href;
        };
        let baseSend = XMLHttpRequest.prototype.send;
        XMLHttpRequest.prototype.send = function() {
          this.addEventListener("readystatechange", function() {
            switch (true) {
              case /onlineexamh5new.zhihuishu.com/i.test(get_href()):
                if (this.readyState === 4 && (this.response.includes("workExamParts") || this.response.includes("lookHomework"))) {
                  const data = JSON.parse(this.response);
                  _unsafeWindow.zhsques = data.rt;
                }
                if (this.readyState === 4 && this.responseURL.includes("getAnswerImgInfo")) {
                  let ques = {};
                  const data = JSON.parse(this.response).rt;
                  for (let key2 in JSON.parse(this.response).rt) {
                    ques[key2] = zhsimgList[md5Exports.md5(data[key2])];
                  }
                  _unsafeWindow.zhsimgAnswer = ques;
                }
                break;
              case /icve.com.cn/i.test(location.host):
                log(this.responseURL);
                if (this.readyState === 4 && this.responseURL && this.responseURL.includes("examRecordPaperList")) {
                  log(JSON.parse(this.response), "success");
                }
                break;
              case /yuketang.cn/i.test(get_href()):
                break;
              case /degree.qingshuxuetang.com/i.test(get_href()):
                if (this.readyState === 4 && this.responseURL.includes("Student/DetailData")) {
                  const data = JSON.parse(this.response);
                  _unsafeWindow.qsques = data.data.paperDetail.questions;
                  log(data.data.paperDetail.questions, "success");
                }
                break;
              case /cce.org.uooconline.com/i.test(get_href()):
                if (this.readyState === 4 && this.responseURL.includes("/exam/view?cid=")) {
                  const data = JSON.parse(this.response);
                  _unsafeWindow.cceques = data.data.questions;
                  log(data.data.questions, "success");
                }
                break;
              case /cj-edu.com/i.test(get_href()):
                if (this.readyState === 4 && this.responseURL.includes("api/student/getHomeworkStudentInfo.do")) {
                  const data = JSON.parse(this.response);
                  _unsafeWindow.cjques = data.data;
                  log(data.data, "success");
                }
                break;
            }
          }, false);
          return baseSend.apply(this, arguments);
        };
        if (/onlineexamh5new.zhihuishu.com/i.test(get_href())) {
          const baseyxyz = _unsafeWindow.yxyz;
          _unsafeWindow.yxyz = function(a2, b2) {
            !_unsafeWindow.yxyzpush && (_unsafeWindow.yxyzpush = []);
            let data = baseyxyz(a2, b2);
            _unsafeWindow.yxyzpush.push({ ...a2, data });
            return data;
          };
        }
        if (/icve.com.cn/i.test(get_href()) || /courshare.cn/i.test(get_href())) {
          const baseOpen = _unsafeWindow.open;
          _unsafeWindow.open = function() {
            arguments[2] = "";
            return baseOpen.apply(this, arguments);
          };
        }
      };
      const appConfig = {
        debug: true,
        // 第三方接口
        searchApi: [],
        // 默认显示悬浮窗
        showFloat: false,
        // 右下角看板
        showBoard: true,
        // 检测更新
        checkUpdate: true,
        // key
        key: "",
        gpt: [
          {
            "name": "GLM",
            "desc": "智普清言4.0",
            "api": "http://82.157.105.20:8002/v1/chat/completions",
            "key": ""
          }
        ]
      };
      const appCache = Cache.get("app") || appConfig;
      Object.keys(appConfig).forEach((key2) => {
        if (appCache[key2] === void 0) {
          appCache[key2] = appConfig[key2];
        }
        setApp(appCache);
      });
      function getApp() {
        return Cache.get("app") || appConfig;
      }
      function setApp(config) {
        Cache.set("app", config);
      }
      const scriptInfo = _GM_info.script;
      const ConfigInput = {
        "base": [
          {
            "type": "switch",
            "label": "显示悬浮窗",
            "name": "showFloat",
            "value": appCache.showFloat,
            "desc": "打开页面时是否显示悬浮窗",
            "options": []
          },
          {
            "type": "switch",
            "label": "看板小图标",
            "name": "showBoard",
            "value": appCache.showBoard,
            "desc": "打开页面时是否显示右下角看板",
            "options": []
          },
          {
            "type": "switch",
            "label": "检测更新",
            "name": "checkUpdate",
            "value": appCache.checkUpdate,
            "desc": "打开页面时是否检测更新",
            "options": []
          }
        ]
      };
      const useAppStore = defineStore("app", {
        state: () => ({
          app: appCache,
          script: scriptInfo,
          page: "home",
          ConfigInput
        }),
        actions: {
          setConfig(config) {
            this.app = config;
            Cache.set("app", config);
          },
          // 修改页面
          setPage(page) {
            this.page = page;
          }
        }
      });
      const useAskStore = defineStore("ask", {
        state: () => ({
          questionList: [],
          questionInx: 0,
          // 当前索引
          inx: 0,
          // 定时器
          Interval: 0,
          // 开启答题
          start: false,
          // 跳过已答题
          skipFinish: Cache.get("skipFinish", false),
          // 自动跳转
          autoNext: Cache.get("autoNext", false),
          // 默认开启自动答题
          autoAnswer: Cache.get("autoAnswer", true),
          // 免费题库优先
          freeFirst: Cache.get("freeFirst", true),
          // 无答案随机答题
          randomAnswer: Cache.get("randomAnswer", false),
          // 运行锁
          lock: false,
          // 统计题库
          formMap: {},
          // 问答类型
          type: "cx",
          // 加载状态
          loading: false,
          // 默认msg
          tips: "本脚本仅供学习研究,请勿用于非法用途",
          // 答题延迟
          delay: 1e3,
          saveQuestionData: []
        }),
        actions: {
          addQuestion(questionData) {
            this.questionList.push({
              ...questionData,
              answer: [],
              status: 0,
              aiMsg: ""
            });
          },
          // 清空问题列表
          clearQuestion() {
            this.questionList = [];
          },
          getQuestion() {
            return this.questionList[this.questionInx];
          },
          nextQuestion() {
            if (this.questionInx === this.questionList.length - 1) {
              clearInterval(this.Interval);
              this.start = false;
              return;
            }
            this.questionInx++;
          },
          prevQuestion() {
            if (this.questionInx === 0) {
              return;
            }
            this.questionInx--;
          },
          // 切换到指定问题
          toQuestion(inx) {
            this.questionInx = inx;
            let ques = this.questionList[inx];
            this.rule.toquestion && this.rule.toquestion(inx);
            ques.html.scrollIntoView({ block: "center" });
            if (_unsafeWindow.self !== _unsafeWindow.top) {
              let el = document.querySelector(".el-dialog");
              if (el) {
                el.style.transform = "none";
                let rect = ques.html.getBoundingClientRect();
                el.style.top = `${rect.top - 700}px`;
                if (inx === 0) {
                  el.style.top = "0px";
                }
                if (inx === this.questionList.length - 1) {
                  if (document.documentElement.scrollHeight > 2e3) {
                    el.style.top = `${rect.top - 900}px`;
                  }
                }
              }
            }
            ques.html.style.boxShadow = "0 0 10px rgba(0, 0, 0, 0.15)";
            setTimeout(() => {
              ques.html.style.boxShadow = "";
            }, 500);
          },
          // 修改题目状态
          setQuestionStatus(inx, status) {
            if (this.questionList[inx] && this.questionList[inx].status != void 0) {
              this.questionList[inx].status = status;
            }
          },
          // 切换答题状态
          async toggleStart() {
            if (this.lock)
              return;
            this.start = !this.start;
            if (!this.start)
              return;
            this.lock = true;
            for (let i = this.questionInx; i < this.questionList.length && this.start; i++) {
              if (this.skipFinish && this.questionList[i].status === 1) {
                continue;
              }
              this.questionInx = i;
              let ques = this.questionList[i];
              if (ques.type === "8") {
                this.setQuestionStatus(i, 2);
                continue;
              }
              await this.reAnswer(i);
              await sleep(this.delay + Math.random() * 1e3);
              this.rule.toquestion && this.rule.toquestion(this.questionInx + 1);
              this.autoNext && this.rule.next && this.rule.next();
            }
            this.autoNext && this.rule.finish && this.rule.finish({
              "question": this.questionList
            });
            this.start = false;
            this.lock = false;
            this.formMap = {};
            this.questionList.forEach((item) => {
              var _a2;
              if ((_a2 = item.form) == null ? void 0 : _a2.form) {
                let key2 = item.form.form;
                if (key2) {
                  this.formMap[key2] = this.formMap[key2] ? this.formMap[key2] + 1 : 1;
                }
              } else {
                this.formMap["无答案"] = this.formMap["无答案"] ? this.formMap["无答案"] + 1 : 1;
              }
            });
          },
          // 重答指定题
          async reAnswer(inx) {
            let ques = this.questionList[inx];
            this.loading = true;
            let res = await Answer.getCacheAnswer(ques);
            let m2 = ApiAnswerMatch([res], ques);
            if (!m2.haveAnswer) {
              if (this.freeFirst) {
                res = await Answer.getAnswersFree(ques);
                m2 = ApiAnswerMatch(res, ques);
                if (!m2.haveAnswer) {
                  let res1 = await Answer.getAnswers(ques);
                  res1 = res.concat(res1);
                  m2 = ApiAnswerMatch(res1, ques);
                }
              } else {
                res = await Answer.getAllAnswers(ques);
                m2 = ApiAnswerMatch(res, ques);
              }
            }
            ques.answer = m2.res;
            ques.form = m2.form;
            if (!m2.haveAnswer) {
              this.randomAnswer && randomAnswerMatch(res, ques);
              this.setQuestionStatus(inx, 2);
            } else {
              this.setQuestionStatus(inx, 1);
            }
            this.loading = false;
          },
          // ai答题
          async aiAnswer(inx) {
            const errorMsg = `AI响应异常,可能是没有获取KEY,请按下方步骤操作  
            1. 打开[智普清言](https://chatglm.cn/main/alltoolsdetail)  
            2. 登录后随便发一条消息即可  
            3. 返回答题页刷新页面  `;
            let ques = this.questionList[inx];
            this.loading = true;
            let text = "";
            ques.aiMsg = "";
            text += `[${typeChange2(ques.type)}]${ques.question}
`;
            ques.options.forEach((item, inx2) => {
              text += `${item}
`;
            });
            switch (ques.type) {
              case "24":
                ques.match.forEach((item, inx2) => {
                  text += `第一列${item}
`;
                });
                ques.selects[0].forEach((item, inx2) => {
                  text += `第二列${item.text}
`;
                });
                break;
            }
            await aiAsk(text, (msg2) => {
              ques.aiMsg += msg2;
              if (ques.aiMsg.length > 0) {
                this.loading = false;
              }
            }, () => {
              this.loading = false;
              if (ques.aiMsg.length <= 0) {
                ques.aiMsg = errorMsg;
              }
            });
          },
          pause() {
            this.start = false;
          },
          restart() {
            this.questionInx = 0;
            this.start = true;
            this.toggleStart();
          }
        },
        getters: {
          // 当前问题
          current() {
            return this.questionList[this.questionInx];
          },
          currentAiMd() {
            const md = markdownit({
              highlight: function(str, lang) {
                if (lang && hljs.getLanguage(lang)) {
                  try {
                    return '<pre><code class="hljs">' + hljs.highlight(str, { language: lang, ignoreIllegals: true }).value + "</code></pre>";
                  } catch (__) {
                  }
                }
                return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + "</code></pre>";
              }
            });
            return md.render(this.questionList[this.questionInx].aiMsg);
          }
        }
      });
      const ApiCache = Cache.get("apiList", []);
      const DefApi = {
        name: "",
        url: "",
        method: "GET",
        params: [],
        response: [],
        request: [],
        headers: []
      };
      const DefParam = {
        name: "",
        value: "",
        type: "sys"
      };
      const testQuestionData = {
        "question": "急性吗啡中毒的拮抗剂是:",
        "options": ["纳酪酮", "曲马朵", "尼莫地平", "阿托品", "肾上腺素"],
        "type": "0",
        "questionData": "",
        "workType": "ks"
      };
      const useApiStore = defineStore("api", {
        state: () => ({
          apiList: ApiCache,
          // 当前编辑的接口
          currentApi: DefApi,
          currentParam: DefParam
        }),
        actions: {
          // 删除接口
          deleteApi(index) {
            this.apiList.splice(index, 1);
            Cache.set("apiList", this.apiList);
          },
          // 添加接口
          addApi() {
            this.apiList.push(this.currentApi);
            Cache.set("apiList", this.apiList);
          },
          // 更新接口
          updateApi(index, api) {
            this.apiList[index] = api;
            Cache.set("apiList", this.apiList);
          },
          // 添加参数
          addParam() {
            this.currentApi.params.push({
              name: this.currentParam.name,
              value: this.currentParam.value,
              type: this.currentParam.type
            });
            this.currentParam = DefParam;
          },
          // 删除参数
          deleteParam(index) {
            this.currentApi.params.splice(index, 1);
          },
          // 恢复默认
          reset() {
            this.currentApi = DefApi;
            this.currentParam = DefParam;
          },
          // 编辑接口
          editApi(index) {
            this.currentApi = this.apiList[index];
          },
          // 编辑参数
          editParam(index) {
            this.currentParam = this.currentApi.params[index];
          },
          // 测试API
          testApi(index) {
            let api = this.apiList[index];
            let data = {};
            api.params.forEach((item) => {
              switch (item.value) {
                case "$question":
                  data[item.name] = testQuestionData.question;
                  break;
                case "$options":
                  data[item.name] = testQuestionData.options;
                  break;
                case "$typeid":
                  data[item.name] = testQuestionData.type;
                  break;
                case "$questionData":
                  data[item.name] = testQuestionData.questionData;
                  break;
                case "$workType":
                  data[item.name] = testQuestionData.workType;
                  break;
                case "$timestamp":
                  data[item.name] = (/* @__PURE__ */ new Date()).getTime();
                  break;
                case "$random":
                  data[item.name] = Math.random();
                  break;
                default:
                  data[item.name] = item.value;
              }
            });
            return requestFetch(api.url, api.method, data, {});
          }
        },
        getters: {}
      });
      const mini = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1702363595473'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='9984'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M253.360825%201024l-115.279176-58.836014v-53.205773c-64.888522-68.266667-62.917938-94.728797%2014.075602-153.424055-23.506254-17.594502-63.762474%202.674364-77.275052-36.315051%2047.434777-42.930584%2070.378007-101.062818%2087.972509-162.010172a326.694708%20326.694708%200%200%201%20208.037388-226.617182c4.644948-89.380069%2086.84646-143.430378%20178.478626-112.604811l-35.611272%2090.36536c105.144742%207.319313%20192.413471%2045.041924%20256.316701%20123.302268%2040.537732%2015.483162%2038.84866-34.766735%2069.251959-40.819244l11.964261%2058.27299%2050.390653-27.306667c28.151203%2018.72055-5.207973%2031.951615-10.415945%2052.220482%2014.779381%2020.12811%2028.995739%2040.537732%2044.4789%2060.243573a142.867354%20142.867354%200%200%201%2028.995739%20114.153128c-12.527285%2077.838076-30.262543%20154.831615-41.100756%20233.091958a1276.938557%201276.938557%200%200%200-5.207972%20139.48921h-21.113402l-89.239313-70.378007%209.993677-10.415945-17.735258%2036.878076L731.931271%20959.956014l-39.411683%2023.787766-42.226804-21.113402c-28.151203%2014.075601-52.501993%2036.03354-86.564949%2027.306667l-9.008385-37.863368H332.747216l-26.602886%2071.926323z%20m-9.993677-380.041237l-0.844536%200.985292%20126.680412%2019.705842%2010.838213%2010.978969c-29.277251%2032.373883-19.846598%2074.178419-29.699519%20110.493471L384.404674%20816.38488l-35.189004%2094.869553a412.274364%20412.274364%200%200%200%20233.514227%202.11134l9.712165-26.602886%2012.808797%2015.905429-11.823505%2050.672165%205.348728%204.644949c16.749966-11.682749%2033.218419-24.210034%2050.812921-34.62598a84.453608%2084.453608%200%200%201%2026.039863-5.348728l7.460069%2033.922199L731.931271%20928.145155l52.924262%2014.075601c-1.829828-43.212096-2.955876-80.934708-5.911753-118.516564%200-4.92646-9.852921-9.289897-15.060893-14.075601l-5.630241-23.224742%2014.075601-100.922062h18.72055l3.237389-1.266804c-11.964261%20106.411546%208.023093%20202.266392%2087.127972%20281.512027%208.726873-48.842337%2016.60921-93.321237%2024.632302-137.659381%207.460069-40.96%2015.060893-81.92%2022.520963-122.88%2010.556701-48.420069%2025.476838-97.262405-10.978969-140.756014L886.762887%20602.435739c0-16.468454%201.126048-33.077663%201.126048-49.546117%200-70.378007-53.205773-104.722474-115.982956-76.289759a232.951203%20232.951203%200%200%201-32.936907%209.430652c16.046186-32.373883-3.5189-52.924261-25.476838-70.378006a292.209485%20292.209485%200%200%200-209.304193-70.378007c-11.401237%200.70378-22.802474%200-40.25622%200l45.182681-104.581718c-40.396976%2010.978969-74.037663%2014.779381-94.728798%2045.464192s14.920137%2045.88646%2020.831891%2069.674227C325.005636%20360.194639%20232.528935%20436.343643%20198.606735%20548.948454l-70.378006%20172.707628%2049.123848%203.518901%205.630241%2054.191065c32.514639-26.039863%2026.039863-61.08811%2030.262543-92.898969h17.876014v58.413746l30.966323%206.33402c1.40756-6.615533%202.392852-11.682749%203.659656-16.468453%209.149141-34.625979-19.705842-59.117526-22.380206-91.491409zM205.50378%20822.859656l-6.474777%2020.83189-25.336082%2084.453609c1.548316%208.867629%200%2023.224742%205.067216%2025.476838%2032.373883%2016.046186%2065.733058%2029.277251%20104.159451%2045.745705%2021.113402-65.451546%2063.621718-114.434639%2069.53347-180.871478C315.152715%20802.309278%20281.512027%20786.966873%20247.730584%20774.158076c-17.031478-6.756289-36.315052-10.978969-35.048247%2019.002061z%20m121.753952-38.848659l10.556701-90.224605-48.138557-6.193265v78.964124z%20m-168.907217%2096.980893l23.083987-73.474639c-28.151203-10.415945-47.575533-9.289897-56.302406%2015.483161s2.674364%2042.789828%2032.936907%2057.991478z'%20fill='%23353947'%20p-id='9985'%3e%3c/path%3e%3cpath%20d='M198.606735%20548.948454c33.922199-112.604811%20126.680412-188.472302%20235.907079-192.272715-5.911753-23.787766-41.100756-39.55244-20.83189-69.674227s54.331821-34.485223%2094.728798-45.464192l-45.182681%20104.581718h40.25622a292.209485%20292.209485%200%200%201%20209.304193%2070.378007c21.957938%2017.735258%2042.226804%2038.285636%2025.476838%2070.378007l0.985292-0.985293c-30.966323%2026.743643-32.796151%2059.399038-19.846598%2095.151066l25.195327%2040.96-40.819244-6.193265-103.174158-14.075601-62.214158-93.039725-31.670104%2050.672165c-19.42433-5.630241-26.602887%200.844536-20.691134%2020.691134L464.494845%20579.210997a165.669828%20165.669828%200%200%200-100.077525-17.172234l-10.415945-86.564949L316.560275%20506.721649l-44.338144%2042.226805z%20m255.190653-62.917939l-10.556701-10.556701c-17.172234-17.031478-35.048247-15.060893-47.29402%203.378145s-4.785704%2036.73732%2012.105017%2050.249897c20.12811%2016.046186%2034.907491%209.712165%2045.745704-11.541993%2014.216357-10.838213%2015.201649-21.394914%200-31.81086z'%20fill='%23F5F5F6'%20p-id='9986'%20data-spm-anchor-id='a313x.search_index.0.i5.dc0f3a810XA6r8'%20class='selected'%3e%3c/path%3e%3cpath%20d='M592.442062%20886.762887l-9.712165%2026.602886a412.274364%20412.274364%200%200%201-233.514227-2.11134l35.189004-94.869553-34.062956-30.544055c9.852921-36.315052%200-78.119588%2029.699519-110.493471a198.184467%20198.184467%200%200%200%20105.426254-94.869553c16.327698%202.392852%2026.039863-1.689072%2020.691134-20.691134l31.670104-4.926461L600.887423%20633.402062c0%207.882337-1.970584%2018.01677%201.970584%2023.083986%2030.966323%2038.707904%2023.787766%2080.934708%2014.075601%20123.865292-8.586117%2036.03354-16.468454%2071.363299-24.491546%20106.411547zM442.818419%20663.523849c0%2014.075601-2.81512%2023.64701%200%2026.884398%2020.268866%2020.691134%2020.83189%2045.604948%2019.565086%2071.926323a96.840137%2096.840137%200%200%200%203.237388%2031.107079c5.911753%2020.409622%2012.668041%2041.382268%2038.426392%2044.056633A48.560825%2048.560825%200%200%200%20557.393814%20802.309278a696.601512%20696.601512%200%200%200%2018.579794-80.371683c6.052509-6.474777%2035.470515-2.533608%2018.157526-36.596564z'%20fill='%23F5F5F6'%20p-id='9987'%3e%3c/path%3e%3cpath%20d='M600.605911%20602.013471l103.174158%2014.075601%2040.819244%205.348729c37.863368%209.993677%2022.94323%2041.241512%2026.46213%2065.170034l-14.075601%20100.922062-49.827629%2078.119588-21.394914%2031.529347-10.134433%2021.394914a84.453608%2084.453608%200%200%200-26.039863%205.348728c-17.594502%2010.415945-34.062955%2022.94323-50.812921%2034.62598v-5.207973h-5.067216l11.823505-50.672165c16.046186-61.932646%2032.936907-123.724536%2047.716289-185.938694%205.348729-22.661718-25.476838-68.266667-51.938969-82.62378zM927.300619%20706.735945c-7.460069%2040.96-15.060893%2081.92-22.520963%20122.88-8.023093%2044.338144-15.90543%2088.817045-24.632302%20137.659381-79.10488-79.386392-98.52921-175.241237-87.127973-281.512027z'%20fill='%23B3DCF8'%20p-id='9988'%3e%3c/path%3e%3cpath%20d='M199.029003%20843.691546l6.474777-20.83189h45.604949c2.11134-39.270928-20.972646-30.262543-38.426392-30.121787-1.548316-29.981031%2018.01677-25.758351%2035.048247-18.579793%2034.062955%2013.231065%2067.422131%2028.151203%20104.722474%2044.4789-5.911753%2066.436838-48.420069%20115.419931-69.53347%20180.871478-38.426392-16.186942-71.926323-29.418007-104.159451-45.182681-4.785704-2.252096-3.5189-16.60921-5.067216-25.476838h33.499931l26.321375-70.378007z'%20fill='%2387BC85'%20p-id='9989'%3e%3c/path%3e%3cpath%20d='M738.265292%20486.030515a232.951203%20232.951203%200%200%200%2032.936907-9.430652c62.777182-28.151203%20116.405223%206.615533%20115.982956%2076.289759%200%2016.468454-0.70378%2033.077663-1.126048%2049.546117l1.126048-0.985292-12.105018-2.674365-21.53567%2016.749966-29.981031%208.304605A86.564948%2086.564948%200%200%201%20731.931271%20564.572371c2.392852-26.462131%204.644948-52.924261%207.037801-79.527148z%20m113.730859%2061.79189l-61.369622-52.501993c-3.941168%2035.752027-6.615533%2059.821306-10.275189%2093.180481z'%20fill='%23F5F5F6'%20p-id='9990'%20data-spm-anchor-id='a313x.search_index.0.i3.dc0f3a810XA6r8'%20class=''%3e%3c/path%3e%3cpath%20d='M198.606735%20548.948454h73.615396c-28.151203%2042.226804-74.178419%2076.852784-59.117526%20137.659381-4.22268%2031.810859%202.252096%2066.859107-30.262543%2092.898969l-6.052509-54.472577-49.123849-3.518901z'%20fill='%23AED4EF'%20p-id='9991'%3e%3c/path%3e%3cpath%20d='M927.300619%20706.735945l-134.281238-21.113402-3.237388%201.266804%206.897045-37.863368%2027.025154-7.74158%2031.247835-8.867629%2029.840275-20.691134%202.392853-10.275189-0.422268%200.985292%2030.262543-36.73732c35.752027%2043.77512%2020.83189%2092.617457%2010.275189%20141.037526zM369.625292%20663.946117l-126.680412-19.705842a171.300069%20171.300069%200%200%201%2016.749965-41.100756c21.817182-29.277251%2046.167973-56.302405%2069.533471-84.453608%203.237388%209.149141%206.756289%2018.157526%209.571409%2027.306666q15.623918%2049.123849%2030.966323%2098.52921z'%20fill='%23F5F5F6'%20p-id='9992'%3e%3c/path%3e%3cpath%20d='M763.179107%20810.473127c5.207973%204.644948%2014.075601%209.008385%2015.060893%2014.075602%202.955876%2037.581856%204.081924%2075.304467%205.911753%20118.516563l-52.924262-14.075601-47.9978%2023.787766-7.600825-34.766735c14.075601-1.970584%2020.550378-7.882337%2010.978969-21.817182%2021.394914%2011.682749%2023.787766-9.993677%2033.359175-19.002062z'%20fill='%23AED4EF'%20p-id='9993'%3e%3c/path%3e%3cpath%20d='M601.168935%20634.105842c26.462131%2014.075601%2057.287698%2059.962062%2051.938969%2082.62378-14.075601%2062.214158-31.670103%20124.006048-47.716289%20185.938694L592.442062%20886.762887c8.023093-35.329759%2015.90543-70.378007%2024.35079-105.989279%2010.134433-42.930584%2017.31299-85.157388-14.075601-123.865292-3.5189-4.785704-0.985292-14.920137-1.548316-22.802474zM328.806048%20518.404399c-23.365498%2028.151203-47.716289%2055.457869-69.533471%2084.453608a171.300069%20171.300069%200%200%200-16.749965%2041.100756l0.844536-0.985292-12.386529%2043.07134h-17.876014C198.043711%20625.660481%20243.507904%20591.175258%20272.222131%20548.948454l44.338144-42.226805z'%20fill='%23484F5E'%20p-id='9994'%3e%3c/path%3e%3cpath%20d='M327.257732%20784.010997l-37.581856-17.453746v-78.964124l48.138557%206.193265z'%20fill='%23D55375'%20p-id='9995'%3e%3c/path%3e%3cpath%20d='M823.704192%20641.284399l-27.025154%207.74158-6.897045%2037.863368h-18.72055c-3.5189-23.928522%2011.401237-55.176357-26.46213-65.170034l-25.195327-40.96%2012.527285-16.186942a86.564948%2086.564948%200%200%200%2091.350653%2059.258282zM369.625292%20663.946117v-19.846598l12.245773-12.949553c8.445361%201.266804%2020.409622%206.897045%2024.773059%203.237388%2020.550378-17.031478%2038.989416-36.455808%2058.132233-55.176357l20.972646%201.548316A198.184467%20198.184467%200%200%201%20380.041237%20675.628866z'%20fill='%23484F5E'%20p-id='9996'%3e%3c/path%3e%3cpath%20d='M199.029003%20843.691546l34.485224%2014.075602-26.321375%2070.378007h-33.499931z'%20fill='%23CAE7AF'%20p-id='9997'%3e%3c/path%3e%3cpath%20d='M230.980619%20686.326323l12.386529-43.07134c2.674364%2031.670103%2031.529347%2056.302405%2022.23945%2091.350653-1.266804%204.785704-2.252096%209.852921-3.659656%2016.468453l-30.966323-6.33402z'%20fill='%23F5F5F6'%20p-id='9998'%3e%3c/path%3e%3cpath%20d='M763.179107%20810.473127l-44.056633%2067.703643-11.964261-12.527285%2050.390653-78.4011z'%20fill='%23484F5E'%20p-id='9999'%3e%3c/path%3e%3cpath%20d='M212.682337%20792.737869c17.453746%200%2040.537732-9.149141%2038.426392%2030.121787H205.50378z'%20fill='%23CDEAB1'%20p-id='10000'%3e%3c/path%3e%3cpath%20d='M598.916838%20957.98543l-5.348728-4.644949h5.067216z'%20fill='%23484F5E'%20p-id='10001'%3e%3c/path%3e%3cpath%20d='M464.494845%20579.210997c-19.142818%2018.72055-37.581856%2038.14488-58.132233%2055.176357-4.363436%203.659656-16.327698-1.970584-24.773059-3.237388l-17.172233-69.111203A165.669828%20165.669828%200%200%201%20464.494845%20579.210997z'%20fill='%23AED4EF'%20p-id='10002'%3e%3c/path%3e%3cpath%20d='M364.41732%20562.038763l17.172233%2069.111203-12.245773%2012.949553q-15.342405-49.123849-30.966323-98.52921c-2.81512-9.149141-6.334021-18.157526-9.571409-27.306666l-12.245773-11.541994%2037.4411-30.966323z'%20fill='%23353947'%20p-id='10003'%3e%3c/path%3e%3cpath%20d='M600.605911%20602.013471v31.670103l-62.214158-79.245636-31.670104%204.926461%2031.388592-50.390653z'%20fill='%23484F5E'%20p-id='10004'%3e%3c/path%3e%3cpath%20d='M453.797388%20517.278351c-10.838213%2021.254158-25.617595%2028.151203-45.745704%2011.541993-16.890722-14.075601-24.632302-31.529347-12.105017-50.249897s30.121787-20.409622%2047.29402-3.378145c-23.506254%200.985292-34.766735%2011.541993-29.136495%2039.411684l39.693196%203.096633z'%20fill='%23AED4EF'%20p-id='10005'%3e%3c/path%3e%3cpath%20d='M731.931271%20564.572371l-12.808797%2015.623918c-12.949553-35.752027-11.119725-68.407423%2019.846598-95.151066-2.11134%2026.602887-4.363436%2053.065017-7.037801%2079.527148z'%20fill='%23353947'%20p-id='10006'%3e%3c/path%3e%3cpath%20d='M506.721649%20559.786667c5.348729%2019.002062-4.363436%2023.083986-20.691134%2020.691134-6.193265-19.846598%200.985292-26.321375%2020.691134-20.691134z'%20fill='%23484F5E'%20p-id='10007'%3e%3c/path%3e%3cpath%20d='M453.797388%20485.749003c15.201649%2010.415945%2014.075601%2020.972646%200%2031.529348v-31.81086zM443.240687%20475.192302l10.556701%2010.556701-10.556701-10.556701z'%20fill='%23AED4EF'%20p-id='10008'%3e%3c/path%3e%3cpath%20d='M442.818419%20663.523849l151.312715%2022.098694c17.31299%2034.062955-12.105017%2030.121787-18.157526%2036.596564A696.601512%20696.601512%200%200%201%20557.393814%20802.309278a48.560825%2048.560825%200%200%201-52.783505%2034.907492c-25.758351-2.674364-32.514639-23.64701-38.426391-44.056633a96.840137%2096.840137%200%200%201-3.237389-31.107079c1.266804-26.321375%200-51.235189-19.565086-71.926323-3.378144-2.955876-0.563024-12.386529-0.563024-26.602886z%20m66.296083%20153.987079c41.523024-26.462131%2042.226804-60.38433%2034.766735-98.52921l-55.317113-10.275189c-0.422268%2038.707904-15.201649%2075.163711%2020.550378%20108.804399zM707.158213%20865.649485l11.964261%2012.527285c-9.571409%209.008385-11.964261%2030.684811-33.359175%2019.002062z'%20fill='%23353947'%20p-id='10009'%3e%3c/path%3e%3cpath%20d='M686.185567%20896.756564c9.571409%2014.075601%202.955876%2019.846598-10.978969%2021.817182zM851.996151%20547.822405l-71.644811%2040.678488c3.659656-33.359175%206.334021-57.428454%2010.275189-93.180481z'%20fill='%23353947'%20p-id='10010'%3e%3c/path%3e%3cpath%20d='M884.792302%20611.725636l-29.840275%2020.691134-1.40756-16.890722%2021.53567-16.749966z'%20fill='%23484F5E'%20p-id='10011'%20data-spm-anchor-id='a313x.search_index.0.i4.dc0f3a810XA6r8'%20class='selected'%3e%3c/path%3e%3cpath%20d='M853.544467%20615.526048l1.40756%2016.890722-31.247835%208.867629v-17.453746zM884.792302%20611.725636l-9.712165-12.949554%2012.105018%202.674365z'%20fill='%23353947'%20p-id='10012'%3e%3c/path%3e%3cpath%20d='M443.522199%20474.91079l10.556701%2010.556701v31.951616l-39.693196-3.096633c-6.193265-27.869691%205.630241-38.426392%2029.136495-39.411684z'%20fill='%23F5F5F6'%20p-id='10013'%3e%3c/path%3e%3cpath%20d='M509.114502%20817.510928c-35.752027-33.640687-20.972646-70.378007-20.550378-108.804399l55.317113%2010.275189c7.882337%2038.14488%206.756289%2072.067079-34.766735%2098.52921z'%20fill='%23E25679'%20p-id='10014'%3e%3c/path%3e%3c/svg%3e";
      const _withScopeId = (n) => (vue.pushScopeId("data-v-f6a83a85"), n = n(), vue.popScopeId(), n);
      const _hoisted_1$5 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "本脚本仅供学习交流,请勿用作任何非法用途。", -1));
      const _hoisted_2$3 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "如果有其他平台需要答题功能,请反馈给作者,会根据需求量酌情增加", -1));
      const _hoisted_3$3 = { class: "aah_plat" };
      const _hoisted_4$3 = { key: 0 };
      const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
        __name: "Home",
        setup(__props) {
          const appStore = useAppStore();
          scriptInfo$1.script.downloadURL ?? "#";
          const debug = vue.ref(true);
          const msg1 = (msg2) => {
            ElementPlus.ElMessage({
              message: msg2,
              type: "success",
              duration: 2e3
            });
          };
          return (_ctx, _cache) => {
            const _component_el_alert = ElAlert;
            const _component_el_divider = ElDivider;
            const _component_el_tag = ElTag;
            const _component_el_button = ElButton;
            const _component_el_text = ElText;
            const _component_el_col = ElCol;
            const _component_el_row = ElRow;
            return vue.openBlock(), vue.createBlock(_component_el_row, null, {
              default: vue.withCtx(() => [
                vue.createVNode(_component_el_col, { span: 24 }, {
                  default: vue.withCtx(() => [
                    vue.createVNode(_component_el_alert, {
                      type: "info",
                      closable: false
                    }, {
                      title: vue.withCtx(() => [
                        _hoisted_1$5,
                        _hoisted_2$3
                      ]),
                      _: 1
                    }),
                    vue.createVNode(_component_el_divider, null, {
                      default: vue.withCtx(() => [
                        vue.createTextVNode("功能列表")
                      ]),
                      _: 1
                    }),
                    vue.createElementVNode("div", _hoisted_3$3, [
                      vue.createVNode(_component_el_tag, null, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("多平台答案检索")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_tag, null, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("AI辅助答题")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_tag, null, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("解除复制限制")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_tag, null, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("更多功能待添加..")
                        ]),
                        _: 1
                      })
                    ]),
                    debug.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, [
                      vue.createVNode(_component_el_button, {
                        type: "primary",
                        plain: "",
                        onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(appStore).setPage("Base"))
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("基础配置")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_button, {
                        type: "primary",
                        plain: "",
                        onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(appStore).setPage("api"))
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("题库配置")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_button, {
                        type: "primary",
                        plain: "",
                        onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(appStore).setPage("ask"))
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("答题页")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_button, {
                        type: "primary",
                        plain: "",
                        onClick: _cache[3] || (_cache[3] = ($event) => vue.unref(appStore).setPage("question"))
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("本地题库")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_button, {
                        type: "primary",
                        plain: "",
                        onClick: _cache[4] || (_cache[4] = ($event) => vue.unref(appStore).setPage("ai"))
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("AI")
                        ]),
                        _: 1
                      })
                    ])) : vue.createCommentVNode("", true),
                    vue.createVNode(_component_el_divider, { onClick: msg1 }, {
                      default: vue.withCtx(() => [
                        vue.createTextVNode("版本信息")
                      ]),
                      _: 1
                    }),
                    vue.createElementVNode("div", null, [
                      vue.createElementVNode("p", null, [
                        vue.createTextVNode("当前版本号: "),
                        vue.createVNode(_component_el_tag, { type: "primary" }, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode(vue.toDisplayString(vue.unref(scriptInfo$1).script.version), 1)
                          ]),
                          _: 1
                        }),
                        vue.createVNode(_component_el_button, {
                          size: "small",
                          type: "primary",
                          onClick: vue.unref(updateCheck1)
                        }, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode("检测更新")
                          ]),
                          _: 1
                        }, 8, ["onClick"])
                      ]),
                      vue.createElementVNode("p", null, [
                        vue.createVNode(_component_el_text, {
                          class: "mx-1",
                          type: "info"
                        }, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode("PS:保持最新版本可以减少BUG的出现哦~")
                          ]),
                          _: 1
                        })
                      ])
                    ])
                  ]),
                  _: 1
                })
              ]),
              _: 1
            });
          };
        }
      });
      const _export_sfc = (sfc, props) => {
        const target = sfc.__vccOpts || sfc;
        for (const [key2, val] of props) {
          target[key2] = val;
        }
        return target;
      };
      const Home = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-f6a83a85"]]);
      const _sfc_main$6 = {};
      function _sfc_render$1(_ctx, _cache) {
        return vue.openBlock(), vue.createElementBlock("h1", null, "这是一个公告");
      }
      const Note = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$1]]);
      const _hoisted_1$4 = { style: { "margin": "10px" } };
      const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
        __name: "Base",
        setup(__props) {
          const appStore = useAppStore();
          vue.watch(appStore.app, (newVal) => {
            appStore.setConfig(newVal);
          });
          vue.watch(appStore.ConfigInput, (newVal) => {
            for (let key2 in newVal) {
              for (let key1 in newVal[key2]) {
                let item = newVal[key2][key1];
                appStore.app[item.name] = item.value;
              }
            }
            appStore.setConfig(appStore.app);
          });
          const ConfigInput2 = appStore.ConfigInput;
          return (_ctx, _cache) => {
            const _component_el_alert = ElAlert;
            const _component_el_col = ElCol;
            const _component_el_switch = ElSwitch;
            const _component_el_input = ElInput;
            const _component_el_input_number = ElInputNumber;
            const _component_el_option = ElOption;
            const _component_el_select = ElSelect;
            const _component_el_checkbox = ElCheckbox;
            const _component_el_checkbox_group = ElCheckboxGroup$1;
            const _component_el_tooltip = ElTooltip;
            const _component_el_row = ElRow;
            return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
              vue.createVNode(_component_el_alert, {
                title: "配置修改后会自动保存,直接刷新页面即可",
                type: "info",
                closable: false,
                "show-icon": ""
              }),
              (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ConfigInput2).base, (item1) => {
                return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
                  vue.createVNode(_component_el_row, {
                    class: "row-bg",
                    justify: "space-between",
                    align: "middle"
                  }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_col, { span: 6 }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode(vue.toDisplayString(item1.label), 1)
                        ]),
                        _: 2
                      }, 1024),
                      vue.createVNode(_component_el_col, {
                        span: 18,
                        style: { "text-align": "right" }
                      }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_tooltip, {
                            class: "grid-content ep-bg-purple-light",
                            effect: "dark",
                            content: item1.desc || "",
                            placement: "top"
                          }, {
                            default: vue.withCtx(() => [
                              item1.type === "switch" ? (vue.openBlock(), vue.createBlock(_component_el_switch, {
                                key: 0,
                                modelValue: item1.value,
                                "onUpdate:modelValue": ($event) => item1.value = $event
                              }, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "input" ? (vue.openBlock(), vue.createBlock(_component_el_input, {
                                key: 1,
                                modelValue: item1.value,
                                "onUpdate:modelValue": ($event) => item1.value = $event
                              }, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "number" ? (vue.openBlock(), vue.createBlock(_component_el_input_number, {
                                key: 2,
                                modelValue: item1.value,
                                "onUpdate:modelValue": ($event) => item1.value = $event
                              }, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "select" ? (vue.openBlock(), vue.createBlock(_component_el_select, {
                                key: 3,
                                modelValue: item1.value,
                                "onUpdate:modelValue": ($event) => item1.value = $event,
                                placeholder: "请选择"
                              }, {
                                default: vue.withCtx(() => [
                                  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item1.options, (item2) => {
                                    return vue.openBlock(), vue.createBlock(_component_el_option, {
                                      key: item2.value,
                                      label: item2.label,
                                      value: item2.value
                                    }, null, 8, ["label", "value"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["modelValue", "onUpdate:modelValue"])) : item1.type === "checkbox" ? (vue.openBlock(), vue.createBlock(_component_el_checkbox_group, {
                                key: 4,
                                modelValue: item1.value,
                                "onUpdate:modelValue": ($event) => item1.value = $event
                              }, {
                                default: vue.withCtx(() => [
                                  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item1.options, (item2) => {
                                    return vue.openBlock(), vue.createBlock(_component_el_checkbox, {
                                      key: item2.value,
                                      label: item2.value,
                                      name: item2.value
                                    }, {
                                      default: vue.withCtx(() => [
                                        vue.createTextVNode(vue.toDisplayString(item2.label), 1)
                                      ]),
                                      _: 2
                                    }, 1032, ["label", "name"]);
                                  }), 128))
                                ]),
                                _: 2
                              }, 1032, ["modelValue", "onUpdate:modelValue"])) : vue.createCommentVNode("", true)
                            ]),
                            _: 2
                          }, 1032, ["content"])
                        ]),
                        _: 2
                      }, 1024)
                    ]),
                    _: 2
                  }, 1024)
                ]);
              }), 256))
            ], 64);
          };
        }
      });
      function makeShadow(el, option) {
        return makeShadowRaw(el, el.childNodes, option);
      }
      function makeShadowRaw(rootEl, childNodes, { mode = "open", delegatesFocus = false } = { mode: "open" }) {
        try {
          const oldroot = rootEl.shadowRoot;
          if (oldroot != null) {
            console.error("[shadow] Attach shadow multiple times", rootEl, childNodes, oldroot);
            return;
          } else {
            const shadow_root = rootEl.attachShadow({ mode, delegatesFocus });
            if (childNodes)
              putDomIntoShadow(shadow_root, childNodes);
            return shadow_root;
          }
        } catch (e) {
          console.error("[shadow] make shadow-root failed", rootEl, childNodes);
          console.error(e);
        }
      }
      function putDomIntoShadow(shadow_root, childNodes) {
        const fragment = document.createDocumentFragment();
        for (const node of childNodes) {
          fragment.appendChild(node);
        }
        shadow_root.appendChild(fragment);
      }
      const virtual_root = document.createDocumentFragment();
      const ShadowStyle = vue.defineComponent({
        props: {
          media: String,
          nonce: String
        },
        setup(props, { slots }) {
          return () => {
            var _a2;
            return vue.h("style", { media: props.media, nonce: props.nonce }, (_a2 = slots.default) == null ? void 0 : _a2.call(slots));
          };
        }
      });
      const ShadowRoot$1 = withType()(vue.defineComponent({
        props: {
          mode: {
            type: String,
            default: "open"
          },
          delegatesFocus: {
            type: Boolean,
            default: false
          },
          abstract: {
            type: Boolean,
            default: false
          },
          tag: {
            type: String,
            default: "div"
          },
          adoptedStyleSheets: {
            type: Array
          }
        },
        emits: ["error"],
        setup(props, { slots, expose, emit }) {
          const abstract = vue.ref(false);
          const el = vue.ref();
          const teleport_el = vue.ref();
          const shadow_root = vue.ref();
          const teleport_target = vue.computed(() => shadow_root.value ?? virtual_root);
          const ex = vue.reactive({
            shadow_root
          });
          expose(ex);
          vue.onBeforeMount(() => {
            abstract.value = props.abstract;
          });
          vue.onMounted(() => {
            var _a2;
            try {
              if (abstract.value) {
                if (teleport_el.value.parentElement.shadowRoot) {
                  shadow_root.value = teleport_el.value.parentElement.shadowRoot;
                } else {
                  shadow_root.value = makeShadowRaw(teleport_el.value.parentElement, void 0, {
                    mode: props.mode,
                    delegatesFocus: props.delegatesFocus
                  });
                }
              } else {
                shadow_root.value = makeShadowRaw(el.value, void 0, { mode: props.mode, delegatesFocus: props.delegatesFocus });
              }
              (_a2 = shadow_root.value) == null ? void 0 : _a2.styleSheets;
            } catch (e) {
              console.error(e);
              emit("error", e);
            }
          });
          vue.watch([shadow_root, () => props.adoptedStyleSheets], ([shadow_root2, adoptedStyleSheets]) => {
            if (!shadow_root2 || !adoptedStyleSheets)
              return;
            try {
              ;
              shadow_root2.adoptedStyleSheets = adoptedStyleSheets;
            } catch (e) {
              console.error(e);
              emit("error", e);
            }
          });
          return () => {
            var _a2;
            const child_part = vue.h(vue.Teleport, { ref: teleport_el, to: teleport_target.value }, [(_a2 = slots.default) == null ? void 0 : _a2.call(slots)]);
            if (abstract.value)
              return child_part;
            return vue.h(props.tag, { ref: el }, child_part);
          };
        },
        install,
        Style: ShadowStyle
      }));
      function withType() {
        return (obj) => obj;
      }
      function install(app) {
        app.component("shadow-root", ShadowRoot$1);
        app.directive("shadow", {
          beforeMount(el) {
            console.warn("[VueShadowDom] Deprecated v-shadow directive, use <shadow-root> component");
            makeShadow(el);
          }
        });
      }
      var shadow = { ShadowRoot: ShadowRoot$1, ShadowStyle, shadow_root: ShadowRoot$1, shadow_style: ShadowStyle, install };
      const _hoisted_1$3 = /* @__PURE__ */ vue.createElementVNode("div", { class: "aah_bomHet50" }, [
        /* @__PURE__ */ vue.createElementVNode("span", { class: "dq" }, [
          /* @__PURE__ */ vue.createElementVNode("i"),
          /* @__PURE__ */ vue.createTextVNode("当前题目")
        ]),
        /* @__PURE__ */ vue.createElementVNode("span", { class: "yp" }, [
          /* @__PURE__ */ vue.createElementVNode("i"),
          /* @__PURE__ */ vue.createTextVNode("已作答")
        ]),
        /* @__PURE__ */ vue.createElementVNode("span", { class: "wp" }, [
          /* @__PURE__ */ vue.createElementVNode("i"),
          /* @__PURE__ */ vue.createTextVNode("无答案")
        ]),
        /* @__PURE__ */ vue.createElementVNode("span", { class: "zp" }, [
          /* @__PURE__ */ vue.createElementVNode("i"),
          /* @__PURE__ */ vue.createTextVNode("未作答")
        ])
      ], -1);
      const _hoisted_2$2 = ["innerHTML"];
      const _hoisted_3$2 = ["innerHTML"];
      const _hoisted_4$2 = { key: 0 };
      const _hoisted_5$2 = { style: { "width": "100%" } };
      const _hoisted_6$2 = ["innerHTML"];
      const _hoisted_7 = ["value"];
      const _hoisted_8 = {
        key: 1,
        style: { "color": "green" }
      };
      const _hoisted_9 = {
        key: 2,
        style: { "color": "red" }
      };
      const _hoisted_10 = { key: 0 };
      const _hoisted_11 = { key: 1 };
      const _hoisted_12 = ["innerHTML"];
      const _hoisted_13 = { key: 0 };
      const _hoisted_14 = ["innerHTML"];
      const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
        __name: "Ask",
        setup(__props) {
          const ask = useAskStore();
          const app = useAppStore();
          const getOptionIndex = (inx) => {
            return String.fromCharCode(65 + inx);
          };
          vue.watch(app.app, (newVal) => {
            app.setConfig(newVal);
          });
          const watchAutoNext = () => {
            Cache.set("autoNext", ask.autoNext);
          };
          const watchSkipFinish = () => {
            Cache.set("skipFinish", ask.skipFinish);
          };
          const watchAutoAnswer = () => {
            Cache.set("autoAnswer", ask.autoAnswer);
          };
          const watchFreeFirst = () => {
            Cache.set("freeFirst", ask.freeFirst);
          };
          const watchRandomAnswer = () => {
            Cache.set("randomAnswer", ask.randomAnswer);
          };
          return (_ctx, _cache) => {
            const _component_el_alert = ElAlert;
            const _component_el_button = ElButton;
            const _component_el_col = ElCol;
            const _component_el_checkbox = ElCheckbox;
            const _component_el_input = ElInput;
            const _component_el_form_item = ElFormItem;
            const _component_el_form = ElForm;
            const _component_el_tag = ElTag;
            const _component_el_divider = ElDivider;
            const _component_el_row = ElRow;
            const _component_el_empty = ElEmpty;
            const _directive_loading = vLoading;
            return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
              vue.createVNode(_component_el_alert, {
                style: { "margin-bottom": "10px" },
                title: vue.unref(ask).tips,
                type: "info",
                closable: false
              }, null, 8, ["title"]),
              vue.unref(ask).current ? (vue.openBlock(), vue.createBlock(_component_el_row, { key: 0 }, {
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_col, { span: 12 }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_button, {
                        onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(ask).start ? vue.unref(ask).pause() : vue.unref(ask).toggleStart()),
                        size: "small",
                        class: "aah_btn",
                        type: "primary",
                        plain: ""
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode(vue.toDisplayString(vue.unref(ask).start ? "暂停答题" : "开始答题"), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.createVNode(_component_el_col, { span: 12 }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_button, {
                        onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(ask).restart()),
                        size: "small",
                        class: "aah_btn",
                        type: "primary",
                        plain: ""
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("重新答题")
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.createVNode(_component_el_col, { span: 24 }, {
                    default: vue.withCtx(() => [
                      _hoisted_1$3
                    ]),
                    _: 1
                  }),
                  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).questionList, (val, inx) => {
                    return vue.openBlock(), vue.createBlock(_component_el_col, { span: 3 }, {
                      default: vue.withCtx(() => [
                        (vue.openBlock(), vue.createBlock(_component_el_button, {
                          class: vue.normalizeClass(inx == vue.unref(ask).questionInx ? "aah_active" : ""),
                          style: { "width": "30px", "margin-bottom": "4px" },
                          key: inx,
                          onClick: ($event) => vue.unref(ask).toQuestion(inx),
                          size: "small",
                          type: val.status == 1 ? "primary" : val.status == 2 ? "danger" : "",
                          plain: ""
                        }, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode(vue.toDisplayString(inx + 1), 1)
                          ]),
                          _: 2
                        }, 1032, ["class", "onClick", "type"]))
                      ]),
                      _: 2
                    }, 1024);
                  }), 256)),
                  vue.createVNode(_component_el_col, { span: 24 }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_form, { "label-width": "auto" }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_checkbox, {
                            onChange: watchSkipFinish,
                            modelValue: vue.unref(ask).skipFinish,
                            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.unref(ask).skipFinish = $event),
                            label: "跳过已作答"
                          }, null, 8, ["modelValue"]),
                          vue.createVNode(_component_el_checkbox, {
                            onChange: watchAutoAnswer,
                            modelValue: vue.unref(ask).autoAnswer,
                            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => vue.unref(ask).autoAnswer = $event),
                            label: "自动答题"
                          }, null, 8, ["modelValue"]),
                          vue.createVNode(_component_el_checkbox, {
                            onChange: watchAutoNext,
                            modelValue: vue.unref(ask).autoNext,
                            "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => vue.unref(ask).autoNext = $event),
                            label: "自动跳转"
                          }, null, 8, ["modelValue"]),
                          vue.createVNode(_component_el_checkbox, {
                            onChange: watchFreeFirst,
                            modelValue: vue.unref(ask).freeFirst,
                            "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.unref(ask).freeFirst = $event),
                            label: "免费题库优先"
                          }, null, 8, ["modelValue"]),
                          vue.createVNode(_component_el_checkbox, {
                            onChange: watchRandomAnswer,
                            modelValue: vue.unref(ask).randomAnswer,
                            "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(ask).randomAnswer = $event),
                            label: "无答案随机答题"
                          }, null, 8, ["modelValue"]),
                          vue.createVNode(_component_el_form_item, { label: "秘钥" }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_input, {
                                class: "aah_password",
                                placeholder: "请输入你购买的秘钥",
                                modelValue: vue.unref(app).app.key,
                                "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(app).app.key = $event),
                                "show-password": ""
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.unref(ask).formMap ? (vue.openBlock(), vue.createBlock(_component_el_col, {
                    key: 0,
                    span: 24
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).formMap, (val, key2) => {
                        return vue.openBlock(), vue.createBlock(_component_el_tag, {
                          key: key2,
                          style: { "margin-right": "10px" }
                        }, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode(vue.toDisplayString(key2) + ":" + vue.toDisplayString(val) + " 次", 1)
                          ]),
                          _: 2
                        }, 1024);
                      }), 128))
                    ]),
                    _: 1
                  })) : vue.createCommentVNode("", true),
                  vue.createVNode(_component_el_divider, null, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_button, {
                        onClick: _cache[8] || (_cache[8] = ($event) => vue.unref(ask).reAnswer(vue.unref(ask).questionInx)),
                        style: { "color": "red", "font-size": "10px" },
                        link: ""
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("重答")
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_divider, { direction: "vertical" }),
                      vue.createVNode(_component_el_button, {
                        onClick: _cache[9] || (_cache[9] = ($event) => vue.unref(ask).aiAnswer(vue.unref(ask).questionInx)),
                        style: { "color": "red", "font-size": "10px" },
                        link: ""
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("AI答题")
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.createVNode(_component_el_col, { span: 24 }, {
                    default: vue.withCtx(() => [
                      vue.createElementVNode("div", {
                        class: "aah_title",
                        innerHTML: "[" + vue.unref(typeChange2)(vue.unref(ask).current.type ?? "") + "]" + vue.unref(ask).current.question
                      }, null, 8, _hoisted_2$2),
                      (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.options, (val, inx) => {
                        return vue.openBlock(), vue.createElementBlock("p", {
                          style: vue.normalizeStyle(vue.unref(ask).current.form && vue.unref(ask).current.form.match && vue.unref(ask).current.form.match.includes(inx) ? "color:green;" : ""),
                          class: "aah_options",
                          innerHTML: getOptionIndex(inx) + ". " + val
                        }, null, 12, _hoisted_3$2);
                      }), 256)),
                      vue.unref(ask).current.type == "24" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4$2, [
                        vue.createVNode(vue.unref(ShadowRoot$1), null, {
                          default: vue.withCtx(() => [
                            vue.createElementVNode("table", _hoisted_5$2, [
                              (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.match, (val, inx) => {
                                return vue.openBlock(), vue.createElementBlock("tr", null, [
                                  vue.createElementVNode("td", { innerHTML: val }, null, 8, _hoisted_6$2),
                                  vue.createElementVNode("td", null, [
                                    vue.createElementVNode("select", null, [
                                      (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.selects[inx], (item) => {
                                        return vue.openBlock(), vue.createElementBlock("option", {
                                          value: item.value
                                        }, vue.toDisplayString(item.text), 9, _hoisted_7);
                                      }), 256))
                                    ])
                                  ])
                                ]);
                              }), 256))
                            ])
                          ]),
                          _: 1
                        })
                      ])) : vue.createCommentVNode("", true),
                      vue.unref(ask).current.form ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_8, " 采用【" + vue.toDisplayString(vue.unref(ask).current.form.form) + "】的答案 ", 1)) : vue.createCommentVNode("", true),
                      vue.unref(ask).current.type == "8" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9, " 当前题型暂不支持,请反馈给作者吧 ")) : vue.createCommentVNode("", true)
                    ]),
                    _: 1
                  }),
                  vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_col, {
                    span: 24,
                    "element-loading-text": "正在搜索中"
                  }, {
                    default: vue.withCtx(() => [
                      (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.answer, (item) => {
                        return vue.openBlock(), vue.createElementBlock("div", null, [
                          vue.createVNode(_component_el_divider, null, {
                            default: vue.withCtx(() => [
                              vue.createTextVNode(vue.toDisplayString(`${item.form}(${item.duration}ms)`), 1)
                            ]),
                            _: 2
                          }, 1024),
                          typeof item.answer === "object" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
                            (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.answer, (ans) => {
                              return vue.openBlock(), vue.createElementBlock("p", null, [
                                vue.createVNode(_component_el_input, {
                                  value: ans,
                                  readonly: "",
                                  style: { "width": "100%" }
                                }, null, 8, ["value"])
                              ]);
                            }), 256))
                          ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_11, [
                            vue.createElementVNode("div", {
                              innerHTML: item.answer ? item.answer : item.msg ?? "暂无答案"
                            }, null, 8, _hoisted_12)
                          ]))
                        ]);
                      }), 256)),
                      vue.unref(ask).current.aiMsg ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
                        vue.createVNode(_component_el_divider, null, {
                          default: vue.withCtx(() => [
                            vue.createTextVNode("AI回答(仅供参考)")
                          ]),
                          _: 1
                        }),
                        vue.createElementVNode("div", {
                          innerHTML: vue.unref(ask).currentAiMd
                        }, null, 8, _hoisted_14)
                      ])) : vue.createCommentVNode("", true)
                    ]),
                    _: 1
                  })), [
                    [_directive_loading, vue.unref(ask).loading]
                  ])
                ]),
                _: 1
              })) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
                key: 1,
                description: "暂无题目数据"
              }))
            ], 64);
          };
        }
      });
      const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
        __name: "Api",
        setup(__props) {
          const apiStore = useApiStore();
          const deleteRow = (index) => {
            apiStore.deleteApi(index);
          };
          const paramVisible = vue.ref(false);
          const addParam = () => {
            if (apiStore.currentParam.name == "") {
              ElementPlus.ElNotification({
                title: "参数效验不通过",
                message: "参数名不能为空",
                type: "error"
              });
              return;
            }
            if (apiStore.currentParam.value == "") {
              ElementPlus.ElNotification({
                title: "参数效验不通过",
                message: "参数值不能为空",
                type: "error"
              });
              return;
            }
            const index = apiStore.currentApi.params.findIndex((item) => item.name == apiStore.currentParam.name);
            if (index != -1) {
              apiStore.currentApi.params[index] = apiStore.currentParam;
              ElementPlus.ElNotification({
                title: "更新成功",
                message: "参数已更新",
                type: "success"
              });
              paramVisible.value = false;
              return;
            }
            apiStore.addParam();
            paramVisible.value = false;
          };
          const addApi = () => {
            if (apiStore.currentApi.name == "") {
              ElementPlus.ElNotification({
                title: "参数效验不通过",
                message: "接口名不能为空",
                type: "error"
              });
              return;
            }
            if (apiStore.currentApi.url == "") {
              ElementPlus.ElNotification({
                title: "参数效验不通过",
                message: "接口地址不能为空",
                type: "error"
              });
              return;
            }
            if (apiStore.currentApi.params.length == 0) {
              ElementPlus.ElNotification({
                title: "参数效验不通过",
                message: "参数不能为空",
                type: "error"
              });
              return;
            }
            const index = apiStore.apiList.findIndex((item) => item.name == apiStore.currentApi.name);
            if (index != -1) {
              apiStore.updateApi(index, apiStore.currentApi);
              ElementPlus.ElNotification({
                title: "更新成功",
                message: "接口已更新",
                type: "success"
              });
            }
            apiStore.addApi();
            apiStore.reset();
          };
          const editApi = (index) => {
            apiStore.editApi(index);
          };
          const editParam = (index) => {
            apiStore.editParam(index);
            paramVisible.value = true;
          };
          const testApi = (index) => {
            apiStore.testApi(index).then((res) => {
            }).catch((err) => {
              ElementPlus.ElNotification({
                title: "请求失败",
                message: err,
                type: "error"
              });
            });
          };
          return (_ctx, _cache) => {
            const _component_el_alert = ElAlert;
            const _component_el_input = ElInput;
            const _component_el_form_item = ElFormItem;
            const _component_el_option = ElOption;
            const _component_el_select = ElSelect;
            const _component_el_button = ElButton;
            const _component_el_form = ElForm;
            const _component_el_dialog = ElDialog;
            const _component_el_table_column = ElTableColumn;
            const _component_el_table = ElTable;
            const _component_el_col = ElCol;
            const _component_el_row = ElRow;
            return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
              vue.createVNode(_component_el_alert, {
                title: "当前功能开发中,若您有急需添加的API可以先反馈给作者",
                type: "error"
              }),
              vue.createVNode(_component_el_dialog, {
                modelValue: paramVisible.value,
                "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => paramVisible.value = $event),
                title: "添加参数",
                style: { "width": "400px" }
              }, {
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_form, {
                    model: vue.unref(apiStore).currentParam,
                    "label-width": "auto"
                  }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_form_item, { label: "参数名" }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_input, {
                            modelValue: vue.unref(apiStore).currentParam.name,
                            "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.unref(apiStore).currentParam.name = $event),
                            autocomplete: "off"
                          }, null, 8, ["modelValue"])
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_form_item, { label: "参数类型" }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_select, {
                            modelValue: vue.unref(apiStore).currentParam.type,
                            "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.unref(apiStore).currentParam.type = $event),
                            placeholder: "请选择"
                          }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_option, {
                                label: "内置参数",
                                value: "sys"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "自定义参数",
                                value: "diy"
                              })
                            ]),
                            _: 1
                          }, 8, ["modelValue"])
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_form_item, { label: "参数值" }, {
                        default: vue.withCtx(() => [
                          vue.unref(apiStore).currentParam.type == "diy" ? (vue.openBlock(), vue.createBlock(_component_el_input, {
                            key: 0,
                            modelValue: vue.unref(apiStore).currentParam.value,
                            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.unref(apiStore).currentParam.value = $event),
                            autocomplete: "off"
                          }, null, 8, ["modelValue"])) : (vue.openBlock(), vue.createBlock(_component_el_select, {
                            key: 1,
                            modelValue: vue.unref(apiStore).currentParam.value,
                            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => vue.unref(apiStore).currentParam.value = $event),
                            placeholder: "请选择"
                          }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_option, {
                                label: "题型(字符串)",
                                value: "$type"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "题型(数字)",
                                value: "$typeid"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "题干(题目)",
                                value: "$question"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "选项",
                                value: "$options"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "时间戳",
                                value: "$timestamp"
                              }),
                              vue.createVNode(_component_el_option, {
                                label: "随机数",
                                value: "$random"
                              })
                            ]),
                            _: 1
                          }, 8, ["modelValue"]))
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_form_item, null, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_button, {
                            onClick: addParam,
                            plain: "",
                            style: { "width": "100%" }
                          }, {
                            default: vue.withCtx(() => [
                              vue.createTextVNode("添加")
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, ["model"])
                ]),
                _: 1
              }, 8, ["modelValue"]),
              vue.createVNode(_component_el_table, {
                data: vue.unref(apiStore).apiList,
                style: { "width": "100%", "margin-bottom": "10px" },
                "empty-text": "暂无数据"
              }, {
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_table_column, {
                    prop: "name",
                    label: "接口名",
                    width: "120"
                  }),
                  vue.createVNode(_component_el_table_column, {
                    prop: "url",
                    label: "接口地址",
                    width: "120"
                  }),
                  vue.createVNode(_component_el_table_column, {
                    prop: "method",
                    label: "请求方式",
                    width: "120"
                  }),
                  vue.createVNode(_component_el_table_column, {
                    fixed: "right",
                    label: "操作",
                    width: "120"
                  }, {
                    default: vue.withCtx((scope) => [
                      vue.createVNode(_component_el_button, {
                        link: "",
                        type: "primary",
                        size: "small",
                        onClick: vue.withModifiers(($event) => deleteRow(scope.$index), ["prevent"])
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode(" 删除 ")
                        ]),
                        _: 2
                      }, 1032, ["onClick"]),
                      vue.createVNode(_component_el_button, {
                        link: "",
                        type: "primary",
                        size: "small",
                        onClick: vue.withModifiers(($event) => editApi(scope.$index), ["prevent"])
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode(" 编辑 ")
                        ]),
                        _: 2
                      }, 1032, ["onClick"]),
                      vue.createVNode(_component_el_button, {
                        link: "",
                        type: "primary",
                        size: "small",
                        onClick: vue.withModifiers(($event) => testApi(scope.$index), ["prevent"])
                      }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode(" 测试 ")
                        ]),
                        _: 2
                      }, 1032, ["onClick"])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["data"]),
              vue.createVNode(_component_el_row, null, {
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_col, { span: 24 }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_form, {
                        model: vue.unref(apiStore).currentApi,
                        "label-width": "80px"
                      }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_form_item, { label: "接口名" }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_input, {
                                modelValue: vue.unref(apiStore).currentApi.name,
                                "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.unref(apiStore).currentApi.name = $event),
                                placeholder: "请输入接口名"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          vue.createVNode(_component_el_form_item, { label: "接口地址" }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_input, {
                                modelValue: vue.unref(apiStore).currentApi.url,
                                "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(apiStore).currentApi.url = $event),
                                placeholder: "请输入接口地址"
                              }, null, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          vue.createVNode(_component_el_form_item, { label: "请求方式" }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_select, {
                                modelValue: vue.unref(apiStore).currentApi.method,
                                "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(apiStore).currentApi.method = $event),
                                placeholder: "请选择"
                              }, {
                                default: vue.withCtx(() => [
                                  vue.createVNode(_component_el_option, {
                                    label: "GET",
                                    value: "GET"
                                  }),
                                  vue.createVNode(_component_el_option, {
                                    label: "POST",
                                    value: "POST"
                                  })
                                ]),
                                _: 1
                              }, 8, ["modelValue"])
                            ]),
                            _: 1
                          }),
                          vue.createVNode(_component_el_form_item, { label: "请求参数" }, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_table, {
                                data: vue.unref(apiStore).currentApi.params,
                                style: { "width": "100%" },
                                "empty-text": "暂无参数"
                              }, {
                                default: vue.withCtx(() => [
                                  vue.createVNode(_component_el_table_column, {
                                    prop: "name",
                                    label: "参数名",
                                    width: "120"
                                  }),
                                  vue.createVNode(_component_el_table_column, {
                                    prop: "value",
                                    label: "参数值",
                                    width: "120"
                                  }),
                                  vue.createVNode(_component_el_table_column, {
                                    fixed: "right",
                                    label: "操作",
                                    width: "120"
                                  }, {
                                    default: vue.withCtx((scope) => [
                                      vue.createVNode(_component_el_button, {
                                        link: "",
                                        type: "primary",
                                        size: "small",
                                        onClick: vue.withModifiers(($event) => vue.unref(apiStore).deleteParam(scope.$index), ["prevent"])
                                      }, {
                                        default: vue.withCtx(() => [
                                          vue.createTextVNode(" 删除 ")
                                        ]),
                                        _: 2
                                      }, 1032, ["onClick"]),
                                      vue.createVNode(_component_el_button, {
                                        link: "",
                                        type: "primary",
                                        size: "small",
                                        onClick: vue.withModifiers(($event) => editParam(scope.$index), ["prevent"])
                                      }, {
                                        default: vue.withCtx(() => [
                                          vue.createTextVNode(" 编辑 ")
                                        ]),
                                        _: 2
                                      }, 1032, ["onClick"])
                                    ]),
                                    _: 1
                                  })
                                ]),
                                _: 1
                              }, 8, ["data"]),
                              vue.createVNode(_component_el_button, {
                                type: "primary",
                                onClick: _cache[8] || (_cache[8] = ($event) => paramVisible.value = true),
                                text: ""
                              }, {
                                default: vue.withCtx(() => [
                                  vue.createTextVNode("添加参数")
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }),
                          vue.createVNode(_component_el_form_item, null, {
                            default: vue.withCtx(() => [
                              vue.createVNode(_component_el_button, {
                                type: "primary",
                                onClick: addApi,
                                plain: ""
                              }, {
                                default: vue.withCtx(() => [
                                  vue.createTextVNode("添加")
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }, 8, ["model"])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ], 64);
          };
        }
      });
      const _sfc_main$2 = {};
      const _hoisted_1$2 = {
        src: "https://chatglm.cn/miniapp/home",
        width: "100%",
        height: "600px",
        frameborder: "0",
        style: { "border": "none", "overflow": "hidden" }
      };
      function _sfc_render(_ctx, _cache) {
        return vue.openBlock(), vue.createElementBlock("iframe", _hoisted_1$2);
      }
      const Ai = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render]]);
      const _hoisted_1$1 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
      const _hoisted_2$1 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
      const _hoisted_3$1 = /* @__PURE__ */ vue.createElementVNode("p", { style: { "color": "red" } }, "且并非所有网站都支持,需要作者适配,若您的平台不支持可以反馈给作者", -1);
      const _hoisted_4$1 = ["innerHTML"];
      const _hoisted_5$1 = ["innerHTML"];
      const _hoisted_6$1 = ["innerHTML"];
      const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
        __name: "Question",
        setup(__props) {
          let showBtn = vue.ref(0);
          window.addEventListener("keydown", (e) => {
            if (e.key === "`") {
              showBtn.value++;
            }
          });
          const ask = useAskStore();
          const questionkey = Cache.match("ques_");
          const clearCache = () => {
            Cache.matchRemove("ques_");
            msg("清除成功", "success");
          };
          const exportCsv = () => {
            const header = ["题型", "题目", "选项", "答案"];
            const data = ask.saveQuestionData.map((item) => [typeChange2(item.type), item.question, item.options.join("###"), item.answer.join("###")]);
            const csv = [header, ...data].map((item) => item.join(",")).join("\n");
            const blob = new Blob([csv], { type: "text/csv" });
            const url = URL.createObjectURL(blob);
            const a2 = document.createElement("a");
            a2.href = url;
            a2.download = "question.csv";
            const title = document.title;
            const random = Math.random().toString(36).slice(-8);
            a2.download = `${title}的试题导出${random}.csv`;
            a2.click();
          };
          const exportCsv1 = () => {
            const header = ["题型", "题目", "选项", "答案"];
            const questionList = Cache.matchGet("ques_") || [];
            console.log(questionList);
            const data = questionList.map((item) => [typeChange2(item.type), item.question, item.options.join("###"), item.answer.join("###")]);
            const csv = [header, ...data].map((item) => item.join(",")).join("\n");
            const blob = new Blob([csv], { type: "text/csv" });
            const url = URL.createObjectURL(blob);
            const a2 = document.createElement("a");
            a2.href = url;
            a2.download = "question.csv";
            a2.click();
          };
          const changeT = (item) => {
            return typeChange2(item.type);
          };
          const answerFormat2 = (item) => {
            if (Array.isArray(item)) {
              return item.join("<br/>");
            } else if (typeof item === "string") {
              return item;
            } else if (typeof item === "object") {
              return JSON.stringify(item);
            } else {
              return item;
            }
          };
          return (_ctx, _cache) => {
            const _component_el_alert = ElAlert;
            const _component_el_statistic = ElStatistic;
            const _component_el_col = ElCol;
            const _component_el_row = ElRow;
            const _component_el_button = ElButton;
            const _component_el_popconfirm = ElPopconfirm;
            const _component_el_table_column = ElTableColumn;
            const _component_el_table = ElTable;
            const _component_el_watermark = ElWatermark;
            return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
              vue.createVNode(_component_el_alert, {
                type: "info",
                closable: false
              }, {
                default: vue.withCtx(() => [
                  vue.createTextVNode(" 本脚本支持将存在答案的题目收录到本地,以供后续答题检索,可减少接口请求次数,以及提高答案正确率"),
                  _hoisted_1$1,
                  vue.createTextVNode(" 在支持重复答题且答完题显示答案的情况下可以无需使用接口搜索答案"),
                  _hoisted_2$1,
                  _hoisted_3$1
                ]),
                _: 1
              }),
              vue.createVNode(_component_el_watermark, { content: ["爱问答助手", "AiAskHelper"] }, {
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_row, null, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_col, { span: 24 }, {
                        default: vue.withCtx(() => [
                          vue.createVNode(_component_el_statistic, {
                            title: "缓存题目数量",
                            value: vue.unref(questionkey).length
                          }, null, 8, ["value"])
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.createVNode(_component_el_popconfirm, {
                    title: "确定要清空本地缓存吗?",
                    "confirm-button-text": "确定",
                    "cancel-button-text": "取消",
                    onConfirm: clearCache,
                    "hide-after": 0
                  }, {
                    reference: vue.withCtx(() => [
                      vue.createVNode(_component_el_button, { type: "danger" }, {
                        default: vue.withCtx(() => [
                          vue.createTextVNode("清除缓存")
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  vue.unref(showBtn) > 10 ? (vue.openBlock(), vue.createBlock(_component_el_button, {
                    key: 0,
                    type: "primary",
                    onClick: exportCsv
                  }, {
                    default: vue.withCtx(() => [
                      vue.createTextVNode("导出当前")
                    ]),
                    _: 1
                  })) : vue.createCommentVNode("", true),
                  vue.unref(showBtn) > 10 ? (vue.openBlock(), vue.createBlock(_component_el_button, {
                    key: 1,
                    type: "primary",
                    onClick: exportCsv1
                  }, {
                    default: vue.withCtx(() => [
                      vue.createTextVNode("导出所有")
                    ]),
                    _: 1
                  })) : vue.createCommentVNode("", true),
                  vue.createVNode(_component_el_table, {
                    data: vue.unref(ask).saveQuestionData,
                    style: { "width": "100%" },
                    "empty-text": "当前页暂无数据"
                  }, {
                    default: vue.withCtx(() => [
                      vue.createVNode(_component_el_table_column, {
                        prop: "type",
                        label: "题型",
                        formatter: changeT
                      }),
                      vue.createVNode(_component_el_table_column, {
                        prop: "question",
                        label: "题目"
                      }, {
                        default: vue.withCtx((scope) => [
                          vue.createElementVNode("div", {
                            innerHTML: scope.row.question
                          }, null, 8, _hoisted_4$1)
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_table_column, {
                        prop: "options",
                        label: "选项"
                      }, {
                        default: vue.withCtx((scope) => [
                          vue.createElementVNode("div", {
                            innerHTML: scope.row.options.join("<br/>")
                          }, null, 8, _hoisted_5$1)
                        ]),
                        _: 1
                      }),
                      vue.createVNode(_component_el_table_column, {
                        prop: "answer",
                        label: "答案"
                      }, {
                        default: vue.withCtx((scope) => [
                          vue.createElementVNode("div", {
                            innerHTML: answerFormat2(scope.row.answer)
                          }, null, 8, _hoisted_6$1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, ["data"])
                ]),
                _: 1
              })
            ], 64);
          };
        }
      });
      const _hoisted_1 = { class: "aah_wrapper" };
      const _hoisted_2 = ["src"];
      const _hoisted_3 = ["id"];
      const _hoisted_4 = {
        key: 0,
        class: "aah_breadcrumb"
      };
      const _hoisted_5 = /* @__PURE__ */ vue.createElementVNode("strong", null, "home", -1);
      const _hoisted_6 = ["src"];
      const _sfc_main = /* @__PURE__ */ vue.defineComponent({
        __name: "App",
        setup(__props) {
          const appStore = useAppStore();
          const askStore = useAskStore();
          _unsafeWindow[key] = { "app": appStore, "ask": askStore };
          document.onkeydown = function(e) {
            if (e.ctrlKey && e.key == "p") {
              appStore.app.showFloat = !appStore.app.showFloat;
            }
          };
          const logs = () => {
            msg("日志组件开发中....");
          };
          updateCheck();
          return (_ctx, _cache) => {
            const _component_el_button = ElButton;
            const _component_el_breadcrumb_item = ElBreadcrumbItem;
            const _component_el_breadcrumb = ElBreadcrumb;
            const _component_el_scrollbar = ElScrollbar;
            const _component_el_dialog = ElDialog;
            return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
              vue.createVNode(_component_el_dialog, {
                modelValue: vue.unref(appStore).app.showFloat,
                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.unref(appStore).app.showFloat = $event),
                title: "爱问答助手",
                draggable: "",
                overflow: "",
                "show-close": true,
                modal: false,
                "close-on-click-modal": false,
                style: vue.normalizeStyle(vue.unref(appStore).page === "ai" ? "width: 70vh;" : "width: 400px;")
              }, {
                header: vue.withCtx(({ close, titleId, titleClass }) => [
                  vue.createElementVNode("img", {
                    src: vue.unref(scriptInfo$1).script.icon,
                    alt: "icon",
                    style: { "width": "20px", "height": "20px", "margin-right": "10px", "vertical-align": "middle" }
                  }, null, 8, _hoisted_2),
                  vue.createElementVNode("span", {
                    id: titleId,
                    class: vue.normalizeClass(titleClass)
                  }, vue.toDisplayString(`${vue.unref(scriptInfo$1).script.name} -
                        ${vue.unref(scriptInfo$1).script.version}`), 11, _hoisted_3),
                  vue.createTextVNode("   "),
                  vue.createVNode(_component_el_button, {
                    onClick: logs,
                    link: ""
                  }, {
                    default: vue.withCtx(() => [
                      vue.createTextVNode("log")
                    ]),
                    _: 1
                  })
                ]),
                default: vue.withCtx(() => [
                  vue.createVNode(_component_el_scrollbar, { "max-height": "55vh" }, {
                    default: vue.withCtx(() => [
                      vue.unref(appStore).page != "home" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
                        vue.createVNode(_component_el_breadcrumb, { separator: "/" }, {
                          default: vue.withCtx(() => [
                            vue.createVNode(_component_el_breadcrumb_item, {
                              onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(appStore).setPage("home"))
                            }, {
                              default: vue.withCtx(() => [
                                _hoisted_5
                              ]),
                              _: 1
                            }),
                            vue.createVNode(_component_el_breadcrumb_item, null, {
                              default: vue.withCtx(() => [
                                vue.createTextVNode(vue.toDisplayString(vue.unref(appStore).page), 1)
                              ]),
                              _: 1
                            })
                          ]),
                          _: 1
                        })
                      ])) : vue.createCommentVNode("", true),
                      vue.unref(appStore).page == "home" ? (vue.openBlock(), vue.createBlock(Home, { key: 1 })) : vue.unref(appStore).page == "note" ? (vue.openBlock(), vue.createBlock(Note, { key: 2 })) : vue.unref(appStore).page == "Base" ? (vue.openBlock(), vue.createBlock(_sfc_main$5, { key: 3 })) : vue.unref(appStore).page == "ask" ? (vue.openBlock(), vue.createBlock(_sfc_main$4, { key: 4 })) : vue.unref(appStore).page == "api" ? (vue.openBlock(), vue.createBlock(_sfc_main$3, { key: 5 })) : vue.unref(appStore).page == "ai" ? (vue.openBlock(), vue.createBlock(Ai, { key: 6 })) : vue.unref(appStore).page == "question" ? (vue.openBlock(), vue.createBlock(_sfc_main$1, { key: 7 })) : vue.createCommentVNode("", true)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, ["modelValue", "style"]),
              vue.withDirectives(vue.createElementVNode("div", {
                class: "minimized-dialog",
                onClick: _cache[4] || (_cache[4] = ($event) => vue.unref(appStore).app.showFloat = true)
              }, [
                vue.createElementVNode("div", {
                  onClick: _cache[3] || (_cache[3] = ($event) => vue.unref(appStore).app.showFloat = true)
                }, [
                  vue.createElementVNode("img", {
                    width: "104vh",
                    src: vue.unref(mini),
                    onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(appStore).app.showFloat = true)
                  }, null, 8, _hoisted_6)
                ])
              ], 512), [
                [vue.vShow, !vue.unref(appStore).app.showFloat]
              ])
            ]);
          };
        }
      });
      const LoadVue = () => {
        const pinia = createPinia();
        const app = vue.createApp(_sfc_main);
        app.use(ElementPlus, {
          namespace: "aah"
        });
        app.use(pinia);
        app.use(shadow);
        app.mount(
          (() => {
            const app2 = document.createElement("div");
            app2.id = "AiAskApp";
            document.body.append(app2);
            return app2;
          })()
        );
      };
      comHook();
      parseRuleHook(rule);
      const run = async () => {
        allowCopy();
        if (!console.log || console.log.toString().length < 13 || console.log.toString().indexOf("native code") === -1) {
          recoverConsole();
        }
        const not_match_url = [/\/work\/doHomeWorkNew/i, /selectWorkQuestionYiPiYue/i, /uooconline.com/i, /edu-edu.com/i];
        if (_unsafeWindow !== _unsafeWindow.top && !not_match_url.some((item) => item.test(location.href))) {
          return;
        }
        LoadVue();
        parseRule(rule);
      };
      let loop = setInterval(() => {
        if (document.readyState === "complete") {
          run();
          clearInterval(loop);
        }
      }, 100);
    }
  });
  require_main_001();

})(Vue, ElementPlus, DOMPurify, $, markdownit, hljs);