-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontent.json
1 lines (1 loc) · 557 KB
/
content.json
1
{"meta":{"title":"九月的生活","subtitle":"无限进步! | blog.sakurasep.site","description":"在这里分享我的生活","author":"上杉九月","url":"https://blog.sakurasep.site","root":"/"},"pages":[{"title":"","date":"2025-01-07T13:36:42.719Z","updated":"2025-01-07T13:36:42.719Z","comments":true,"path":"assets/js/busuanzi.js","permalink":"https://blog.sakurasep.site/assets/js/busuanzi.js","excerpt":"","text":"var bszCaller,bszTag;!function(){var c,d,e,a=!1,b=[];ready=function(c){return a||\"interactive\"===document.readyState||\"complete\"===document.readyState?c.call(document):b.push(function(){return c.call(this)}),this},d=function(){for(var a=0,c=b.length;c>a;a++)b[a].apply(document);b=[]},e=function(){a||(a=!0,d.call(window),document.removeEventListener?document.removeEventListener(\"DOMContentLoaded\",e,!1):document.attachEvent&&(document.detachEvent(\"onreadystatechange\",e),window==window.top&&(clearInterval(c),c=null)))},document.addEventListener?document.addEventListener(\"DOMContentLoaded\",e,!1):document.attachEvent&&(document.attachEvent(\"onreadystatechange\",function(){/loaded|complete/.test(document.readyState)&&e()}),window==window.top&&(c=setInterval(function(){try{a||document.documentElement.doScroll(\"left\")}catch(b){return}e()},5)))}(),bszCaller={fetch:function(a,b){var c=\"BusuanziCallback_\"+Math.floor(1099511627776*Math.random());window[c]=this.evalCall(b),a=a.replace(\"=BusuanziCallback\",\"=\"+c),scriptTag=document.createElement(\"SCRIPT\"),scriptTag.type=\"text/javascript\",scriptTag.defer=!0,scriptTag.src=a,scriptTag.referrerPolicy=\"no-referrer-when-downgrade\",document.getElementsByTagName(\"HEAD\")[0].appendChild(scriptTag)},evalCall:function(a){return function(b){ready(function(){try{a(b),scriptTag.parentElement.removeChild(scriptTag)}catch(c){bszTag.hides()}})}}},bszCaller.fetch(\"//busuanzi.ibruce.info/busuanzi?jsonpCallback=BusuanziCallback\",function(a){bszTag.texts(a),bszTag.shows()}),bszTag={bszs:[\"site_pv\",\"page_pv\",\"site_uv\"],texts:function(a){this.bszs.map(function(b){var c=document.getElementById(\"busuanzi_value_\"+b);c&&(c.innerHTML=a[b])})},hides:function(){this.bszs.map(function(a){var b=document.getElementById(\"busuanzi_container_\"+a);b&&(b.style.display=\"none\")})},shows:function(){this.bszs.map(function(a){var b=document.getElementById(\"busuanzi_container_\"+a);b&&(b.style.display=\"inline\")})}};"},{"title":"关于我","date":"2023-09-11T07:40:09.000Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"page/about/index.html","permalink":"https://blog.sakurasep.site/page/about/index.html","excerpt":"","text":"早发白帝城李白朝辞白帝彩云间,千里江陵一日还。两岸猿声啼不住,轻舟已过万重山。一切都会变好的 21 岁,为梦想奋斗 爱好:ACGN,Coding,创作 喜欢:探索新奇的事物 目前在玩的游戏:各种二次元游戏,云顶之弈 & 金铲铲,各种沙盒类游戏 运动:散步,骑行 目标:人民教师||自由开发者||自媒体 希望拥有的技能:多国语言||美术设计||3D建模||项目开发 目前维护的网站 上杉九月的博客使用 Hexo + Stellar 搭建 我的推荐 图书音乐游戏最近正在看的书 test最近很喜欢的音乐 test最近在玩的有趣游戏 test 关于本站 你好,很高兴你能访问我的博客,从一开始的 next 主题,到 Butterfly、Volantis,最后我选择了这款简洁,阅读体验很棒的 Stellar 主题。在这里我会分享自己开发的项目,有趣的科技相关的内容,以及日常心得记录。很喜欢雷总的一句话“让每个人都能享受科技的乐趣”。我希望我的文章可以帮助到你。"},{"title":"我的朋友们","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"page/friends/index.html","permalink":"https://blog.sakurasep.site/page/friends/index.html","excerpt":"","text":"欢迎来访 无限进步 站点信息友链申请要求如何申请失效的链接"title": "上杉九月的博客","url": "https://blog.sakurasep.site/","avatar": "https://bu.dusays.com/2023/03/13/640dfc9720adc.png","screenshot": "https://bu.dusays.com/2024/03/08/65ead9bd5da28.png","description": "知识本就应该没有门槛,这才是互联网的意义"HTTPS 站点 稳定的自有域名,这样才能说明你会坚持维护下去 能够坚持运营博客,半年内至少更新过 1-2 篇文章 请先将本站加入友链,然后提出申请本站有两种友链展示格式,如果你想要展示你网站的首页缩略图,请填写screenshot选项本站采用的是动态issue申请,请访问 https://github.com/sakurasep/Friends/issuesGithub Issue 按照模板添加友链申请。如果不方便打开Github。请在评论区按照本站信息模板留言,谢谢。暂无 以上内容的最后更新日期:2024年02月20日 朋友们"},{"title":"说说","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"page/memos/index.html","permalink":"https://blog.sakurasep.site/page/memos/index.html","excerpt":"","text":""},{"title":"源码分析","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"wiki/qfnuLibraryBook/code.html","permalink":"https://blog.sakurasep.site/wiki/qfnuLibraryBook/code.html","excerpt":"","text":"后续更新"},{"title":"项目介绍","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"wiki/qfnuLibraryBook/index.html","permalink":"https://blog.sakurasep.site/wiki/qfnuLibraryBook/index.html","excerpt":"","text":"曲Star图书馆预约程序 注意事项 本项目目的是告别卡顿的预约界面,采用更快捷的方式自动预约座位。推荐使用云服务器,甚至路由的 openwrt 也可以运行本程序,实现24小时自动监控,预约成功后推送消息到 Telegram 或者发送到邮箱。希望预约后能够有效利用如此好的学习环境,这么好的环境不是让某些人谈恋爱和打游戏的欢迎提出修改建议,请在 issue 中进行交流本项目仅供交流学习,禁止将本项目用于商业行为 开发目的相比于校外收费的自习室,校内的图书馆光照条件更好,恒温 26°,更安静的环境,丰富的藏书。重要的是免费。对于找工作或者是考研的同学都是一个绝佳的学习环境。 对于如此好的环境,图书馆的预约界面访问逻辑混乱,并且经常出现无座的情况。为了实现自动化预约图书馆,特此编写了此程序,方便热爱学习的同学更方便获取优质的环境,实现自我提升。 贡献者感谢 https://github.com/nakaii-002/Qfnu_CAS_tokennakaii-002/Qfnu_CAS_token 提供的获取身份验证 Auth_Token 的代码 开源许可协议本项目是由 @上杉九月 设计和开发,采用了 @nakaii-002 的部分代码,使用 CC BY-NC 4.0 协议进行授权,拷贝、分享或基于此进行创作时请遵守协议内容: Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)This is a human-readable summary of (and not a substitute for) the license. You are free to:Share — copy and redistribute the material in any medium or formatAdapt — remix, transform, and build upon the materialThe licensor cannot revoke these freedoms as long as you follow the license terms.Under the following terms:Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.NonCommercial — You may not use the material for commercial purposes.No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.Notices:You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material."},{"title":"更新日志","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"wiki/qfnuLibraryBook/update.html","permalink":"https://blog.sakurasep.site/wiki/qfnuLibraryBook/update.html","excerpt":"","text":"2024 年 3 月 8 日添加了自动获取 token 的代码,代码来自于https://github.com/nakaii-002nakaii-002十分感谢他的代码,使得本项目目前已经实现了全自动化重构大部分的代码逻辑,大大优化了代码的执行速度和发生错误的概率,不再保存 json 到本地,直接读取响应的内容并进行处理适配了 aes 加密,今天的版本是最后的开放源代码的版本,后续将会打包加密程序主要功能已经完善,有问题请提 issue2021 年 1 月 8 日新增了进程池,如果此时访问url获取请求较为缓慢,请增加进程数以获取更高的响应概率,但是请不要滥用,无端增加服务器压力,推荐进程在5-10最为合适优化了代码的退出逻辑,基本涵盖了我测试时遇见的场景,是的,做了不少错误处理优化了代码的可读性,到今天为止该项目基本上就告一段落了,还有一点问题,因为我不会写异步请求,所以用了多进程,可能并发性能不如异步,还有是有些对于json文件的读取并不是十分快速,暂时不优化了2021 年 1 月 6 日优化目录结构,将获取自习室的信息与抢座功能分离,采用新的执行逻辑重构大部分代码,增加了可读性,逻辑更加正确 Todo ListFeaturesAuth_Token的自动获取 指定位置预约 位置优选 多进程获取可用位置 Bugs修复aes加密导致程序的崩溃 优化了部分测试出的错误处理 优化代码逻辑"},{"title":"如何使用","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":true,"path":"wiki/qfnuLibraryBook/usage.html","permalink":"https://blog.sakurasep.site/wiki/qfnuLibraryBook/usage.html","excerpt":"","text":"开始前的准备工作测试的环境Python 3.12.1(Python 3.7+)git 2.39.3pip 23.2.1macOS Sonoma 14.3 如果你使用的是 Python 3.12.1 那么在 根目录/py/main 找到 requirements.txt然后运行以下命令即可一键配置依赖环境 macOS 使用 pyenv 管理 Python 环境1. brew 安装 pyenvbrew install pyenv 2. 配置环境变量,根据自己的终端类型将以下内容加入到对应文件.zshrc/.bashrcexport PYENV_ROOT=/usr/local/var/pyenvexport PATH="$PYENV_ROOT/bin:$PATH"export PATH="$PYENV_ROOT/shims:$PATH"if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi 检查是否安装成功pyenv 3. 使用 pyenv 安装 Python 3.12.0安装Python的时候建议对终端进行代理export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890 pyenv命令# 显示可以安装的版本列表pyenv install -l# 安装指定版本的 Pythonpyenv install 3.12.0# 会在当前目录创建 .python-version 文件,并记录设置的 python 环境,每次进入该目录会自动设置成该 python 环境pyenv local 3.12.0# 安装依赖pip install -r requirements.txt 开始使用注意事项 进程数平常只需要1-2即可,只有压力比较大的时候才需要使用更高的进程数,但是也不需要超过3请不要在本机网络情况不好的时候使用,虽然报错不影响正常使用,程序的容错已经很不错了,但是我不想再反馈错误日志的时候看到因为网络问题导致的错误 使用 git clone 将整个项目克隆到本地 使用 cd 命令到 /py/main 使用 python 运行程序 运行模式 优选模式 仅适用于西校区图书馆的三个自习室,个人优选了距离🚾近的和有插座的区域。注意优选模式为了速度无法提前筛选此座位是否已经被预约。 指定模式 请预先根据 json/seat_info 中各个自习室的真实位置(‘name’)获取座位代号(‘id’),请输入对应自习室的对应 id 默认模式 全随机预约,保证预约的时候此位置无人 可用教室(仅对于曲阜校区)西校区图书馆西校区图书馆-三层自习室 西校区图书馆-四层自习室 西校区图书馆-五层自习室 西校区东辅楼西校区东辅楼-二层自习室 西校区东辅楼-三层自习室 东校区图书馆东校区图书馆-三层电子阅览室 东校区图书馆-三层自习室01 东校区图书馆-三层自习室02 东校区图书馆-四层中文现刊室 综合楼综合楼-801自习室 综合楼-803自习室 综合楼-804自习室 综合楼-805自习室 综合楼-806自习室 行政楼行政楼-四层东区自习室 行政楼-四层中区自习室 行政楼-四层西区自习室 电视台楼电视台楼-二层自习室"},{"title":"我的手账","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":false,"path":"page/about/timeline/index.html","permalink":"https://blog.sakurasep.site/page/about/timeline/index.html","excerpt":"","text":"我的说说 近期的 OKR 一、曲 Star 图书馆预约脚本 O1 曲阜师范大学图书馆预约脚本 解决有需求的同学抢不到心仪的座位,抢座时卡顿的问题 已完成 100% KR1 实现指定单个自习室随机抢座 已完成 100% KR2 实现程序的基础 UI 界面 目前暂时没有这个计划。应该是目前我不会写 延期 100% KR3 实现程序的基本功能 获取图书馆信息全随机抢座取消座位 已完成 100% KR4 新功能优化 实现自动获取 token筛选优质座位重新预约上次成功预约的座位 已完成 100% 二、转换脚本 O2 markdown 与 Stellar 标签互转 实现全自动化部署多平台的必备脚本,最终目标是实现一份标准 markdown 文件使用最少的步骤完成多平台部署 已完成 100% KR1 Python 脚本实现对 markdown 常用语法转换成 Stellar 的特色标签 图片标签转换成image标签无序列表转换成radio标签一级标题转换成quot标签引用转换成note标签超链接转换成link标签单行代码转换成copy标签 已完成 100% KR2 Python 脚本实现对 Stellar 的特色标签转换成 markdown 编辑器可视的标签 内容与上面的脚本效果相反,故省略。 已完成 100% KR3 脚本测试与修复 已完成 100% 三、重新设计频道宣传图 O3 重新设计频道宣传图 每篇文章下面的宣传图有些过时,更新一下 已完成 100% KR1 字体更换为得意黑 已完成 100% KR2 更换首推频道的平台 已完成 100% KR3 更换宣传图的背景图 已完成 100% 四、博客维护 O4 博客维护 博客好久没有维护了,彻底的维护一下 正常 73% KR1 阅读体验优化 文章格式修改阅读字体修改为 LXGW Screen 已完成 100% KR2 侧边栏优化 添加 memos 说说添加首页的 welcome 已完成 100% KR3 内容更新 关于页更新友链页更新手账页更新专栏内容更新wiki页更新过期文章重新优化 未完成 20% 五、新专栏文章 - 媒体库 O5 媒体库相关使用指南 针对服务器如何使用和搭建全自动化的媒体库,大概会出几篇教程 正常 0% KR1 文章封面 未完成 0% KR2 文章内容 媒体库的使用媒体库的基本搭建媒体库的进阶玩法 未完成 0%"},{"title":"我的朋友们","date":"2025-01-07T13:36:42.963Z","updated":"2025-01-07T13:36:42.963Z","comments":false,"path":"page/friends/rss/index.html","permalink":"https://blog.sakurasep.site/page/friends/rss/index.html","excerpt":"","text":""},{"title":"","date":"2025-01-07T13:36:42.723Z","updated":"2025-01-07T13:36:42.723Z","comments":true,"path":"assets/js/fcircle.js","permalink":"https://blog.sakurasep.site/assets/js/fcircle.js","excerpt":"","text":"var __defProp = Object.defineProperty, __defNormalProp = (e, t, r) => t in e ? __defProp(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, __publicField = (e, t, r) => (__defNormalProp(e, \"symbol\" != typeof t ? t + \"\" : t, r), r); ! function() { \"use strict\"; var e = document.createElement(\"style\"); function t(e, t) { const r = Object.create(null), l = e.split(\",\"); for (let o = 0; o < l.length; o++) r[l[o]] = !0; return t ? e => !!r[e.toLowerCase()] : e => !!r[e] } function r(e) { if (z(e)) { const t = {}; for (let l = 0; l < e.length; l++) { const o = e[l], n = L(o) ? a(o) : r(o); if (n) for (const e in n) t[e] = n[e] } return t } return L(e) || B(e) ? e : void 0 } e.textContent = \"@charset \\\"UTF-8\\\";#cf-state[data-v-aaf0fcbc]{position:relative;font-size:16px;border-radius:8px;box-shadow:none;max-width:810px;margin:auto;overflow:hidden;display:flex;flex-direction:row;flex-wrap:wrap;padding:8px 0}#cf-change[data-v-aaf0fcbc]{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-khtml-user-select:none;user-select:none}#cf-change .cf-change-now[data-v-aaf0fcbc]{color:var(--lmm-hover);font-weight:800}.cf-state-data[data-v-aaf0fcbc]{width:100%;display:flex}.cf-data-friends[data-v-aaf0fcbc],.cf-data-active[data-v-aaf0fcbc],.cf-data-article[data-v-aaf0fcbc]{height:60px;background:transparent;display:flex;flex-direction:column;width:33%;cursor:pointer}.cf-label[data-v-aaf0fcbc]{font-size:16px;padding:0 3%;align-self:center;text-align:center;width:100%;height:30px}.cf-message[data-v-aaf0fcbc]{align-self:center;text-align:center;padding:0 3%;width:50%;font-size:20px}#panel-btn[data-v-aaf0fcbc]{position:absolute;right:0;bottom:0;background-color:var(--lmm-background)!important}.cf-article[data-v-7eed2f8f]{margin:20px 1%;border-radius:5px;font-weight:bolder;overflow:hidden;transition:all ease-out .3s;position:relative;padding:.5rem 1rem}.cf-article[data-v-7eed2f8f]:hover{transition:transform .3s;-webkit-transform:scale(1.3);transform:scale(1.03)}.cf-article-avatar[data-v-7eed2f8f]{line-height:35px}.cf-img-avatar[data-v-7eed2f8f]{align-self:center;text-align:center;display:inline-block!important;width:22px;height:22px;border-radius:50%;margin:0 0 -4px!important;background:#fff}.cf-article-author[data-v-7eed2f8f]{line-height:35px;font-size:14px;font-weight:400;margin-left:5px;align-self:center;text-align:center;height:40px;cursor:pointer;white-space:nowrap;overflow:hidden}.cf-article-floor[data-v-7eed2f8f]{position:absolute;top:0;right:.5rem;font-style:italic;font-size:3rem;line-height:1.5rem;z-index:1;font-weight:400}.cf-article-title[data-v-7eed2f8f]{font-weight:500;position:relative;z-index:2;width:100%;display:block;letter-spacing:1.5px;font-size:18px;align-self:start;text-align:left;line-height:40px;padding:0;margin-bottom:10px;transition:.3s}.cf-article-time[data-v-7eed2f8f]{font-size:14px;text-align:right;float:right;font-weight:400}.cf-article-time i[data-v-7eed2f8f]:before{margin-right:5px}#cf-more[data-v-7eed2f8f]{width:40%;max-width:810px;height:30px;margin:auto;border-radius:12px;font-weight:bolder;text-align:center;display:flex;flex-direction:column;justify-content:space-around;cursor:pointer;transition:.3s}#cf-more[data-v-7eed2f8f]:hover{width:60%}#cf-more i.fas[data-v-7eed2f8f]:before{content:\\\"\\\\221e\\\"}.fade-enter-active[data-v-b8ec555f],.fade-leave-active[data-v-b8ec555f]{transition:opacity .1s}.fade-enter[data-v-b8ec555f],.fade-leave-to[data-v-b8ec555f]{opacity:0}#cf-overlay[data-v-b8ec555f]{position:fixed;width:100%;height:100%}#cf-overlay[data-v-b8ec555f]{top:0;left:0;background-color:#ffffff6b;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto;pointer-events:all;transition:all .1s ease;z-index:998}.cf-overshow[data-v-b8ec555f]{text-align:center;border-radius:20px;position:fixed;width:320px;left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 12px 40px #00000018;background:var(--lmm-background);transition:all .1s ease;z-index:999}.cf-overshow-head:hover img.cf-img-avatar[data-v-b8ec555f]{transform:rotate(360deg);transition:.8s}.cf-overshow .cf-overshow-head a[data-v-b8ec555f]{color:var(--lmm-hover);display:block;text-align:center;font-weight:700;margin-top:-5px;padding:5px 8px;text-decoration:none}.cf-overshow img.cf-img-avatar[data-v-b8ec555f]{background:#fff;width:80px;height:80px;border-radius:50%;margin:-45px auto 0!important;box-shadow:0 12px 40px #00000017;transform:rotate(-360deg);transition:.8s}.cf-overshow p[data-v-b8ec555f]{margin:.3rem 5px;width:100%;position:relative}.cf-overshow p a.cf-article-title[data-v-b8ec555f]{text-decoration:none;display:block;text-align:left;position:relative;z-index:2;font-size:15px;line-height:25px;margin-bottom:15px;letter-spacing:normal;max-height:50px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cf-overshow p span[data-v-b8ec555f]{position:absolute;bottom:-1rem;right:8px;z-index:1;font-style:italic;font-size:12px}.cf-overshow .cf-overshow-content[data-v-b8ec555f]{padding:2px 3px 7px}.cf-overshow .cf-overshow-content-tail[data-v-b8ec555f]{padding:2px 3px 7px;border-bottom-left-radius:20px;border-bottom-right-radius:20px}.cf-overshow .cf-overshow-content[data-v-b8ec555f]:hover,.cf-overshow .cf-overshow-content-tail[data-v-b8ec555f]:hover{background-color:var(--lmm-background-floorcolor)}.cf-manage-logo[data-v-a29b7a77]{position:absolute;transform:translate(-50%,-50%);top:25%;left:50%}.cf-manage-title[data-v-a29b7a77]{position:absolute;transform:translate(-50%,-50%);top:35%;left:50%;color:#fff;font-size:24px;font-family:PingFangSC-Regular;text-align:center;white-space:nowrap;line-height:33px;user-select:none}.cf-manage-input[data-v-a29b7a77]{position:absolute;transform:translate(-50%,-50%);max-width:50%;left:50%;top:45%}.cf-manage-login-btn[data-v-a29b7a77]{position:absolute;transform:translate(-50%,-50%);max-width:50%;left:50%;top:60%}.el-select-dropdown.is-multiple .el-select-dropdown__item.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(--el-color-primary);-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;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}.el-select-dropdown .el-select-dropdown__option-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(--el-color-primary);-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;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}@media screen and (max-width: 1200px){.settings-item[data-v-314f5703]{flex-direction:column}}.settings-item[data-v-314f5703],.settings-item .item-col[data-v-314f5703]{display:flex}.cf-manage-main-add-btn[data-v-314f5703]{margin-left:30px}.cf-manage-main-add-btn[data-v-1e952276]{margin-left:30px}.cf-manage-tip[data-v-1e952276]{color:#fff}.cf-manage-center-btn[data-v-aac146d1]{margin-top:30px}.ManagePanelMain[data-v-1f004f42]{padding:0 10px}.ManagePanelMain .cf-manage-top[data-v-1f004f42]{display:flex;align-items:center;justify-content:space-between;width:100%}.cf-manage-title[data-v-1f004f42]{overflow-wrap:break-word;color:#fff;font-size:24px;font-family:PingFangSC-Regular;text-align:center;white-space:nowrap;user-select:none}.cf-manage-exit-btn[data-v-1f004f42]{font-size:16px}.cf-manage-tabs-area[data-v-1f004f42]{position:relative;margin:10px 0}[data-v-1f004f42] .el-tabs__nav-next,[data-v-1f004f42] .el-tabs__nav-prev{color:#fff!important}@media screen and (max-width: 1200px){.el-container.cf-manage-pannel[data-v-be4dc161]{width:90%;padding:45px 0 0}}#cf-manage-overlay[data-v-be4dc161]{position:fixed;width:100%;height:100%;top:0;left:0;background-color:#ffffff6b;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto;pointer-events:all;transition:all .1s ease;z-index:998}.cf-manage-pannel[data-v-be4dc161]{text-align:center;background-color:#8c8788;position:fixed;border-radius:10px;width:50%;height:70%;z-index:999;transform:translate(-50%,-50%);left:50%;top:50%;padding:45px}.cf-manage-close-btn[data-v-be4dc161]{position:absolute;max-width:30px;color:#fff;cursor:pointer;right:2%;top:5px}.cf-manage-close-btn[data-v-be4dc161]:hover{color:#49b1f5}.cf-pannel-area[data-v-be4dc161]{width:100%;height:100%;overflow-y:scroll;overflow-x:hidden}[data-v-be4dc161]::-webkit-scrollbar-thumb{background-color:#34dab1d9;background-image:-webkit-linear-gradient(45deg,hsla(0,7%,86%,.4) 25%,transparent 0,transparent 50%,hsla(0,8%,64%,.4) 0,hsla(103,96%,44%,.4) 75%,transparent 0,transparent)!important;border-radius:2em!important}[data-v-be4dc161]::-webkit-scrollbar{width:8px;height:8px}[data-v-be4dc161]::-webkit-scrollbar-track{background-color:#b6b2b4;border-radius:2em}[data-v-be4dc161]::-webkit-scrollbar-corner{background-color:transparent}#cf-change{font-size:14px;display:block;padding:12px 0 4px;width:100%;text-align:center}#cf-container{width:100%;max-width:900px;height:auto;margin:auto}#cf-container a{text-decoration:none}.cf-time-updated,.cf-time-created{display:inline-block;text-align:left;white-space:nowrap}.cf-time-updated i.fas,.cf-time-created i.far{padding-right:8px}#cf-footer{margin:6rem 1% 2rem 0;text-align:right;font-size:13px}.cf-data-lastupdated{font-size:13px;text-align:right;display:block}.cf-article .cf-article-title:hover{letter-spacing:2px;color:var(--lmm-hover)!important}#cf-more i.fas:hover{color:var(--lmm-hover)}#cf-state,#cf-more{background:var(--lmm-background);color:var(--lmm-fontcolor)}#cf-change,.cf-time-updated,.cf-time-created,.cf-article-floor{color:var(--lmm-floorcolor)}.cf-article-author,.cf-article a.cf-article-title,.cf-article:hover .cf-article-floor,.cf-article:hover .cf-time-created,.cf-article:hover .cf-time-updated{color:var(--lmm-fontcolor)}.cf-article{background:var(--lmm-background)}#cf-change span:hover{color:var(--lmm-hover);cursor:pointer}.cf-overshow p a:hover{color:var(--lmm-hover)!important}.cf-overshow p span{color:var(--lmm-floorcolor)}.dark-theme #cf-overlay,.theme-dark #cf-overlay{background-color:#3b3d426b}.dark-theme .cf-overshow,.theme-dark .cf-overshow{background:#292a2d}.dark-theme .cf-overshow p a,.theme-dark .cf-overshow p a{color:var(--lmm-fontcolor)}.dark-theme .cf-overshow .cf-overshow-content,.theme-dark .cf-overshow .cf-overshow-content{background:#eaeaea}.dark-theme #cf-state,.dark-theme #cf-more,.theme-dark #cf-state,.theme-dark #cf-more{background:var(--lmm-dack-background);color:var(--lmm-dark-fontcolor)}.dark-theme #cf-change,.dark-theme .cf-time-updated,.dark-theme .cf-time-created,.dark-theme .cf-article-floor,.theme-dark #cf-change,.theme-dark .cf-time-updated,.theme-dark .cf-time-created,.theme-dark .cf-article-floor{color:var(--lmm-dark-floorcolor)}.dark-theme .cf-article-author,.dark-theme .cf-article a.cf-article-title,.theme-dark .cf-article-author,.theme-dark .cf-article a.cf-article-title{color:var(--lmm-dark-fontcolor)}.dark-theme .cf-article,.theme-dark .cf-article{background:var(--lmm-dack-background)}.dark-theme .cf-article:hover .cf-article-floor,.dark-theme .cf-article:hover .cf-time-created,.dark-theme .cf-article:hover .cf-time-updated,.dark-theme .cf-overshow p span,.theme-dark .cf-article:hover .cf-article-floor,.theme-dark .cf-article:hover .cf-time-created,.theme-dark .cf-article:hover .cf-time-updated,.theme-dark .cf-overshow p span{color:var(--lmm-dark-fontcolor)}@media screen and (max-width: 400px){#cf-state{font-size:14px}.cf-article-time i{display:none}}@media screen and (max-width: 300px){#cf-state,.cf-article-time{display:none}}.el-button:focus,.el-button:hover{color:var(--lmm-hover)!important}.el-button .is-circle{border-radius:50%!important;padding:8px!important}.el-form-item__label{color:#fff!important}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:\\\"Helvetica Neue\\\",Helvetica,\\\"PingFang SC\\\",\\\"Hiragino Sans GB\\\",\\\"Microsoft YaHei\\\",\\\"\\\\5fae\\\\8f6f\\\\96c5\\\\9ed1\\\",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px}:root{color-scheme:light;--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, .04),0px 8px 20px rgba(0, 0, 0, .08);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, .12);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, .12);--el-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);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0, 0, 0, .8);--el-overlay-color-light:rgba(0, 0, 0, .7);--el-overlay-color-lighter:rgba(0, 0, 0, .5);--el-mask-color:rgba(255, 255, 255, .9);--el-mask-color-extra-light:rgba(255, 255, 255, .3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-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}.el-icon.is-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:13px;--el-alert-description-font-size:12px;--el-alert-close-font-size:12px;--el-alert-close-customed-font-size:13px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;width:100%;padding:var(--el-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--el-alert-border-radius-base);position:relative;background-color:var(--el-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--el-transition-duration-fast)}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-success)}.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-info)}.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-warning)}.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color);color:var(--el-color-error)}.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:table-cell;padding:0 8px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:18px;vertical-align:text-top}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:5px 0 0}.el-alert .el-alert__close-btn{font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert .el-alert__close-btn.is-customed{font-style:normal;font-size:var(--el-alert-close-customed-font-size);top:9px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--el-aside-width,300px)}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);list-style:none;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover,.el-autocomplete-suggestion li.highlighted{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid var(--el-color-black)}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:var(--el-text-color-secondary)}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);position:fixed;background-color:var(--el-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--el-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--el-box-shadow-lighter);cursor:pointer;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;position:relative;vertical-align:middle;display:inline-block;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.el-badge__content{background-color:var(--el-badge-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;justify-content:center;align-items:center;font-size:var(--el-badge-font-size);height:var(--el-badge-size);padding:0 var(--el-badge-padding);white-space:nowrap;border:1px solid var(--el-bg-color)}.el-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--el-badge-size)/ 2);transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:\\\"\\\"}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--el-text-color-placeholder)}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;display:flex;align-items:center}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;transition:var(--el-transition-color);color:var(--el-text-color-primary)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:var(--el-text-color-regular);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table;content:\\\"\\\"}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255, 255, 255, .5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-color-info);--el-button-active-color:var(--el-text-color-primary)}.el-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;color:var(--el-button-text-color);text-align:center;box-sizing:border-box;outline:0;transition:.1s;font-weight:var(--el-button-font-weight);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);padding:8px 15px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button:focus,.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:0}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button>span{display:inline-flex;align-items:center}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{position:relative;pointer-events:none}.el-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(--el-mask-color-extra-light)}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px}.el-button.is-text{color:var(--el-button-text-color);border:0 solid transparent;background-color:transparent}.el-button.is-text.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important}.el-button.is-text:not(.is-disabled):focus,.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:focus,.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{border-color:transparent;color:var(--el-button-text-color);background:0 0;padding:2px;height:auto}.el-button.is-link:focus,.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.el-button.is-link:not(.is-disabled):focus,.el-button.is-link:not(.is-disabled):hover{border-color:transparent;background-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color);border-color:transparent;background-color:transparent}.el-button--text{border-color:transparent;background:0 0;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{color:var(--el-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.el-button--text:not(.is-disabled):focus,.el-button--text:not(.is-disabled):hover{color:var(--el-color-primary-light-3);border-color:transparent;background-color:transparent}.el-button--text:not(.is-disabled):active{color:var(--el-color-primary-dark-2);border-color:transparent;background-color:transparent}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size);padding:12px 19px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-calendar{--el-calendar-border:var(--el-table-border, 1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--el-calendar-header-border-bottom)}.el-calendar__title{color:var(--el-text-color);align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:var(--el-text-color-regular);font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);vertical-align:top;transition:background-color var(--el-transition-duration-fast) ease}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:var(--el-calendar-cell-width)}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--el-color-white);opacity:.24;transition:var(--el-transition-duration-fast)}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31, 45, 61, .11);--el-carousel-arrow-hover-background:rgba(31, 45, 61, .23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:var(--el-carousel-arrow-size);width:var(--el-carousel-arrow-size);cursor:pointer;transition:var(--el-transition-duration);border-radius:50%;background-color:var(--el-carousel-arrow-background);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:var(--el-carousel-arrow-font-size);display:inline-flex;justify-content:center;align-items:center}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical) * 2);text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px;color:#000}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{width:var(--el-carousel-indicator-height);height:calc(var(--el-carousel-indicator-width)/ 2)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:var(--el-carousel-indicator-width);height:var(--el-carousel-indicator-height);background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:var(--el-transition-duration)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{transform:translateY(-50%) translate(-10px);opacity:0}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{transform:translateY(-50%) translate(10px);opacity:0}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader-panel{display:flex;border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:var(--el-cascader-menu-text-color);border-right:var(--el-cascader-menu-border)}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;color:var(--el-cascader-color-empty)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;text-align:left;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-checkbox{margin-right:0}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;vertical-align:middle;position:relative;font-size:var(--el-font-size-base);line-height:32px;outline:0}.el-cascader:not(.is-disabled):hover .el-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-cascader .el-input{display:flex;cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis;cursor:pointer}.el-cascader .el-input .el-input__suffix-inner .el-icon{height:calc(100% - 2px)}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{transition:transform var(--el-transition-duration);font-size:14px}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader.is-disabled .el-cascader__label{z-index:calc(var(--el-index-normal) + 1);color:var(--el-disabled-text-color)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color)}.el-cascader__dropdown{font-size:var(--el-cascader-menu-font-size);border-radius:var(--el-cascader-menu-radius)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill);border:var(--el-cascader-menu-border);box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--el-cascader-tag-background)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:var(--el-text-color-placeholder);color:var(--el-color-white)}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--el-fill-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{flex:none;background-color:var(--el-text-color-placeholder);color:var(--el-color-white)}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:var(--el-font-size-base);color:var(--el-cascader-menu-text-color);text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:var(--el-cascader-color-empty)}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 11px;padding:0;color:var(--el-cascader-menu-text-color);border:none;outline:0;box-sizing:border-box;background:0 0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input:-ms-input-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all);font-weight:700}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary)}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:var(--el-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:var(--el-checkbox-button-checked-text-color);background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);border-bottom-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-top-right-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary)}.el-checkbox{color:var(--el-checkbox-text-color);font-weight:var(--el-checkbox-font-weight);font-size:var(--el-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px;height:32px}.el-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--el-checkbox-border-radius)}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:var(--el-checkbox-disabled-icon-color)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:\\\"\\\";position:absolute;display:block;background-color:var(--el-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;width:var(--el-checkbox-input-width);height:var(--el-checkbox-input-height);background-color:var(--el-checkbox-bg-color);z-index:var(--el-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)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{box-sizing:content-box;content:\\\"\\\";border:1px solid var(--el-checkbox-checked-icon-color);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 50ms;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--el-checkbox-font-size)}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{width:14px;height:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{width:12px;height:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{width:2px;height:6px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-0{max-width:0%;flex:0 0 0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{position:relative;left:4.1666666667%}.el-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{position:relative;left:8.3333333333%}.el-col-3{max-width:12.5%;flex:0 0 12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{position:relative;left:16.6666666667%}.el-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{position:relative;left:20.8333333333%}.el-col-6{max-width:25%;flex:0 0 25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{position:relative;left:29.1666666667%}.el-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{position:relative;left:33.3333333333%}.el-col-9{max-width:37.5%;flex:0 0 37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{position:relative;left:41.6666666667%}.el-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{position:relative;left:45.8333333333%}.el-col-12{max-width:50%;flex:0 0 50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{position:relative;left:54.1666666667%}.el-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{position:relative;left:58.3333333333%}.el-col-15{max-width:62.5%;flex:0 0 62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{position:relative;left:66.6666666667%}.el-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{position:relative;left:70.8333333333%}.el-col-18{max-width:75%;flex:0 0 75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{position:relative;left:79.1666666667%}.el-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{position:relative;left:83.3333333333%}.el-col-21{max-width:87.5%;flex:0 0 87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{position:relative;left:91.6666666667%}.el-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{position:relative;left:95.8333333333%}.el-col-24{max-width:100%;flex:0 0 100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.el-col-xs-0,.el-col-xs-0.is-guttered{display:none}.el-col-xs-0{max-width:0%;flex:0 0 0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{position:relative;left:4.1666666667%}.el-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{position:relative;left:8.3333333333%}.el-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{position:relative;left:16.6666666667%}.el-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{position:relative;left:20.8333333333%}.el-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{position:relative;left:29.1666666667%}.el-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{position:relative;left:33.3333333333%}.el-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{position:relative;left:41.6666666667%}.el-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{position:relative;left:45.8333333333%}.el-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{position:relative;left:54.1666666667%}.el-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{position:relative;left:58.3333333333%}.el-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{position:relative;left:66.6666666667%}.el-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{position:relative;left:70.8333333333%}.el-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{position:relative;left:79.1666666667%}.el-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{position:relative;left:83.3333333333%}.el-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{position:relative;left:91.6666666667%}.el-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{position:relative;left:95.8333333333%}.el-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0,.el-col-sm-0.is-guttered{display:none}.el-col-sm-0{max-width:0%;flex:0 0 0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{position:relative;left:4.1666666667%}.el-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{position:relative;left:8.3333333333%}.el-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{position:relative;left:16.6666666667%}.el-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{position:relative;left:20.8333333333%}.el-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{position:relative;left:29.1666666667%}.el-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{position:relative;left:33.3333333333%}.el-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{position:relative;left:41.6666666667%}.el-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{position:relative;left:45.8333333333%}.el-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{position:relative;left:54.1666666667%}.el-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{position:relative;left:58.3333333333%}.el-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{position:relative;left:66.6666666667%}.el-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{position:relative;left:70.8333333333%}.el-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{position:relative;left:79.1666666667%}.el-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{position:relative;left:83.3333333333%}.el-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{position:relative;left:91.6666666667%}.el-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{position:relative;left:95.8333333333%}.el-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0,.el-col-md-0.is-guttered{display:none}.el-col-md-0{max-width:0%;flex:0 0 0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{position:relative;left:4.1666666667%}.el-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{position:relative;left:8.3333333333%}.el-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{position:relative;left:16.6666666667%}.el-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{position:relative;left:20.8333333333%}.el-col-md-6{display:block;max-width:25%;flex:0 0 25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{position:relative;left:29.1666666667%}.el-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{position:relative;left:33.3333333333%}.el-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{position:relative;left:41.6666666667%}.el-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{position:relative;left:45.8333333333%}.el-col-md-12{display:block;max-width:50%;flex:0 0 50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{position:relative;left:54.1666666667%}.el-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{position:relative;left:58.3333333333%}.el-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{position:relative;left:66.6666666667%}.el-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{position:relative;left:70.8333333333%}.el-col-md-18{display:block;max-width:75%;flex:0 0 75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{position:relative;left:79.1666666667%}.el-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{position:relative;left:83.3333333333%}.el-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{position:relative;left:91.6666666667%}.el-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{position:relative;left:95.8333333333%}.el-col-md-24{display:block;max-width:100%;flex:0 0 100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0,.el-col-lg-0.is-guttered{display:none}.el-col-lg-0{max-width:0%;flex:0 0 0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{position:relative;left:4.1666666667%}.el-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{position:relative;left:8.3333333333%}.el-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{position:relative;left:16.6666666667%}.el-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{position:relative;left:20.8333333333%}.el-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{position:relative;left:29.1666666667%}.el-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{position:relative;left:33.3333333333%}.el-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{position:relative;left:41.6666666667%}.el-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{position:relative;left:45.8333333333%}.el-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{position:relative;left:54.1666666667%}.el-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{position:relative;left:58.3333333333%}.el-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{position:relative;left:66.6666666667%}.el-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{position:relative;left:70.8333333333%}.el-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{position:relative;left:79.1666666667%}.el-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{position:relative;left:83.3333333333%}.el-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{position:relative;left:91.6666666667%}.el-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{position:relative;left:95.8333333333%}.el-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0,.el-col-xl-0.is-guttered{display:none}.el-col-xl-0{max-width:0%;flex:0 0 0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{position:relative;left:4.1666666667%}.el-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{position:relative;left:8.3333333333%}.el-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{position:relative;left:16.6666666667%}.el-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{position:relative;left:20.8333333333%}.el-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{position:relative;left:29.1666666667%}.el-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{position:relative;left:33.3333333333%}.el-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{position:relative;left:41.6666666667%}.el-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{position:relative;left:45.8333333333%}.el-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{position:relative;left:54.1666666667%}.el-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{position:relative;left:58.3333333333%}.el-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{position:relative;left:66.6666666667%}.el-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{position:relative;left:70.8333333333%}.el-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{position:relative;left:79.1666666667%}.el-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{position:relative;left:83.3333333333%}.el-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{position:relative;left:91.6666666667%}.el-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{position:relative;left:95.8333333333%}.el-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-top:1px solid var(--el-collapse-border-color);border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);background-color:var(--el-collapse-header-bg-color);color:var(--el-collapse-header-text-color);cursor:pointer;border-bottom:1px solid var(--el-collapse-border-color);font-size:var(--el-collapse-header-font-size);font-weight:500;transition:border-bottom-color var(--el-transition-duration);outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform var(--el-transition-duration);font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:var(--el-collapse-content-bg-color);overflow:hidden;box-sizing:border-box;border-bottom:1px solid var(--el-collapse-border-color)}.el-collapse-item__content{padding-bottom:25px;font-size:var(--el-collapse-content-font-size);color:var(--el-collapse-content-text-color);line-height:1.7692307692}.el-collapse-item:last-child{margin-bottom:-1px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px;float:right}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--el-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{content:\\\"\\\";display:table;clear:both}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-picker{display:inline-block;position:relative;line-height:normal;outline:0}.el-color-picker:hover:not(.is-disabled) .el-color-picker__trigger{border:1px solid var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{height:30px;width:30px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:#ffffffb3}.el-color-picker__trigger{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;height:32px;width:32px;padding:4px;border:1px solid var(--el-border-color);border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.el-color-picker__color-inner{display:inline-flex;justify-content:center;align-items:center;width:100%;height:100%}.el-color-picker .el-color-picker__empty{font-size:12px;color:var(--el-text-color-secondary)}.el-color-picker .el-color-picker__icon{display:inline-flex;justify-content:center;align-items:center;color:#fff;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light)}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td .el-date-table-cell{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td .el-date-table-cell .el-date-table-cell__text{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translate(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{color:#fff;background-color:var(--el-datepicker-active-color)}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date .el-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);opacity:1;cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-date-table td.selected .el-date-table-cell{margin-left:5px;margin-right:5px;background-color:var(--el-datepicker-inrange-bg-color);border-radius:15px}.el-date-table td.selected .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:var(--el-datepicker-header-text-color)}.el-date-table td:focus{outline:0}.el-date-table th{padding:5px;color:var(--el-datepicker-header-text-color);font-weight:400;border-bottom:solid 1px var(--el-border-color-lighter)}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:var(--el-datepicker-active-color)}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:0}.el-month-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed;color:var(--el-text-color-placeholder)}.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{width:48px;height:36px;display:block;line-height:36px;color:var(--el-datepicker-text-color);border-radius:18px;margin:0 auto}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:0}.el-year-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:192px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{font-size:12px;color:var(--el-text-color-secondary);position:absolute;left:0;width:100%;z-index:var(--el-index-normal);text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list:after,.el-time-spinner__list:before{content:\\\"\\\";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:var(--el-text-color-regular)}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;display:inline-block;text-align:left}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{width:var(--el-date-editor-width);height:var(--el-input-height,var(--el-component-size))}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .close-icon,.el-date-editor .clear-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{height:inherit;font-size:14px;color:var(--el-text-color-placeholder);float:left}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:30px;line-height:30px;margin:0;padding:0;width:39%;text-align:center;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:transparent}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{flex:1;display:inline-flex;justify-content:center;align-items:center;height:100%;padding:0 5px;margin:0;font-size:14px;word-break:keep-all;color:var(--el-text-color-primary)}.el-date-editor .el-range__close-icon{font-size:14px;color:var(--el-text-color-placeholder);height:inherit;width:unset;cursor:pointer}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{display:inline-flex;align-items:center;padding:0 10px}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{line-height:40px;font-size:14px}.el-range-editor--large .el-range-input{height:38px;line-height:38px;font-size:14px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{line-height:24px;font-size:12px}.el-range-editor--small .el-range-input{height:22px;line-height:22px;font-size:12px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{color:var(--el-text-color-regular);background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);line-height:30px}.el-picker-panel .el-time-panel{margin:5px 0;border:solid 1px var(--el-datepicker-border-color);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:\\\"\\\";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid var(--el-datepicker-inner-border-color);padding:4px 12px;text-align:right;background-color:var(--el-bg-color-overlay);position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:var(--el-datepicker-text-color);padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{border:1px solid var(--el-fill-color-darker);color:var(--el-text-color-primary);line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:var(--el-datepicker-icon-color);border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;padding-top:6px;background-color:var(--el-bg-color-overlay);overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px var(--el-border-color-lighter)}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:var(--el-text-color-regular)}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{outline:0;color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary)}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid var(--el-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:var(--el-datepicker-icon-color)}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid var(--el-datepicker-border-color)}.el-time-panel{border-radius:2px;position:relative;width:180px;left:0;z-index:var(--el-index-top);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:\\\"\\\";top:50%;position:absolute;margin-top:-16px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%;border-top:1px solid var(--el-border-color-light);border-bottom:1px solid var(--el-border-color-light)}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:var(--el-text-color-primary)}.el-time-panel__btn.confirm{font-weight:800;color:var(--el-timepicker-active-color,var(--el-color-primary))}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;font-size:var(--el-font-size-base);color:var(--el-text-color-primary)}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:23px;font-size:14px}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{font-weight:700;color:var(--el-text-color-regular);background:var(--el-descriptions-item-bordered-label-background)}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{-webkit-animation:v-modal-in var(--el-transition-duration-fast) ease;animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{-webkit-animation:v-modal-out var(--el-transition-duration-fast) ease forwards;animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{to{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color)}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:20px;--el-dialog-border-radius:var(--el-border-radius-small);position:relative;margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:0!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-dialog__header{padding:var(--el-dialog-padding-primary);padding-bottom:10px;margin-right:16px}.el-dialog__headerbtn{position:absolute;top:6px;right:0;padding:0;width:54px;height:54px;background:0 0;border:none;outline:0;cursor:pointer;font-size:var(--el-message-close-size,16px)}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{padding:calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding:var(--el-dialog-padding-primary);padding-top:10px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px calc(var(--el-dialog-padding-primary) + 5px) 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{-webkit-animation:modal-fade-in var(--el-transition-duration);animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{-webkit-animation:dialog-fade-in var(--el-transition-duration);animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{-webkit-animation:modal-fade-out var(--el-transition-duration);animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{-webkit-animation:dialog-fade-out var(--el-transition-duration);animation:dialog-fade-out var(--el-transition-duration)}@-webkit-keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@-webkit-keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@-webkit-keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--el-border-color) var(--el-border-style)}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--el-border-color) var(--el-border-style)}.el-divider__text{position:absolute;background-color:var(--el-bg-color);padding:0 20px;font-weight:500;color:var(--el-text-color-primary);font-size:14px}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color, var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary, 20px)}.el-drawer{position:absolute;box-sizing:border-box;background-color:var(--el-drawer-bg-color);display:flex;flex-direction:column;box-shadow:var(--el-box-shadow-dark);overflow:hidden;transition:all var(--el-transition-duration)}.el-drawer .rtl,.el-drawer .ltr,.el-drawer .ttb,.el-drawer .btt{transform:translate(0)}.el-drawer__sr-focus:focus{outline:0!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{display:inline-flex;border:none;cursor:pointer;font-size:var(--el-font-size-extra-large);color:inherit;background-color:transparent;outline:0}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;padding:var(--el-drawer-padding-primary);overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{opacity:0}.el-drawer-fade-enter-to,.el-drawer-fade-leave-from{opacity:1}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;display:inline-flex;position:relative;color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:0}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{list-style:none;padding:0;margin:0;box-sizing:border-box}.el-dropdown .el-dropdown__caret-button{padding-left:0;padding-right:0;display:inline-flex;justify-content:center;align-items:center;width:32px;border-left:none}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{content:\\\"\\\";position:absolute;display:block;width:1px;top:-1px;bottom:-1px;left:0;background:var(--el-overlay-color-lighter)}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:0}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{position:relative;top:0;left:0;z-index:var(--el-dropdown-menu-index);padding:5px 0;margin:0;background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;list-style:none}.el-dropdown-menu__item{display:flex;align-items:center;white-space:nowrap;list-style:none;line-height:22px;padding:5px 16px;margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);cursor:pointer;outline:0}.el-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{margin:6px 0;border-top:1px solid var(--el-border-color-lighter)}.el-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--el-text-color-disabled)}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{padding:7px 20px;line-height:22px;font-size:14px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{padding:2px 12px;line-height:20px;font-size:12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-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(--el-empty-padding)}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-secondary)}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height)}.el-form{--el-form-label-font-size:var(--el-font-size-base)}.el-form--label-left .el-form-item__label{justify-content:flex-start}.el-form--label-top .el-form-item{display:block}.el-form--label-top .el-form-item .el-form-item__label{display:block;height:auto;text-align:left;margin-bottom:8px;line-height:22px}.el-form--inline .el-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form--large.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:12px;line-height:22px}.el-form--default.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:8px;line-height:22px}.el-form--small.el-form--label-top .el-form-item .el-form-item__label{margin-bottom:4px;line-height:20px}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item__label-wrap{display:flex}.el-form-item__label{display:inline-flex;justify-content:flex-end;align-items:flex-start;flex:0 0 auto;font-size:var(--el-form-label-font-size);color:var(--el-text-color-regular);height:32px;line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.el-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}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{content:\\\"*\\\";color:var(--el-color-danger);margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{content:\\\"*\\\";color:var(--el-color-danger);margin-left:4px}.el-form-item.is-error .el-select-v2__wrapper,.el-form-item.is-error .el-select-v2__wrapper:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:0 0 0 1px transparent inset}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--el-header-height)}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__btn .el-icon{font-size:inherit;cursor:pointer}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{position:static;width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__actions{left:50%;bottom:30px;transform:translate(-50%);width:282px;height:44px;padding:0 23px;background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__prev{top:50%;transform:translateY(-50%);left:40px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__next{top:50%;transform:translateY(-50%);right:40px;text-indent:2px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__close{width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--el-text-color-regular);border-color:#fff}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in var(--el-transition-duration);animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out var(--el-transition-duration);animation:viewer-fade-out var(--el-transition-duration)}@-webkit-keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top;opacity:1}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{position:absolute;top:0;left:0}.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--el-fill-color-light);color:var(--el-text-color-placeholder);vertical-align:middle}.el-image__preview{cursor:pointer}.el-input-number{position:relative;display:inline-flex;width:150px;line-height:30px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.el-input-number__decrease,.el-input-number__increase{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--el-fill-color-light);color:var(--el-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input_wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input_wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;border-left:var(--el-border)}.el-input-number__decrease{left:1px;border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border)}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{width:180px;line-height:38px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{width:40px;font-size:14px}.el-input-number--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{width:120px;line-height:22px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:24px;font-size:12px}.el-input-number--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--el-border-radius-base) 0 0;border-bottom:var(--el-border)}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--el-font-size-base)}.el-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(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);border:none}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:-ms-input-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{border-color:var(--el-color-danger)}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-input{--el-input-height:var(--el-component-size);position:relative;font-size:var(--el-font-size-base);display:inline-flex;width:100%;line-height:var(--el-input-height);box-sizing:border-box;vertical-align:middle}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--el-text-color-disabled)}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);font-size:14px;cursor:pointer}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:var(--el-color-info);font-size:12px}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;display:inline-block;padding-left:8px}.el-input__wrapper{display:inline-flex;flex-grow:1;align-items:center;justify-content:center;padding:1px 11px;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);width:100%;flex-grow:1;-webkit-appearance:none;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);padding:0;outline:0;border:none;background:0 0;box-sizing:border-box}.el-input__inner:focus{outline:0}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner:-ms-input-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__prefix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__prefix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__suffix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--el-transition-duration);margin-left:8px}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color,) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{display:inline-flex;width:100%;align-items:stretch}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:100%;border-radius:var(--el-input-border-radius);padding:0 20px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__wrapper,.el-input-group__append div.el-select:hover .el-input__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__wrapper,.el-input-group__prepend div.el-select:hover .el-input__wrapper{border-color:transparent;background-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__wrapper{z-index:1;box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__wrapper{z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__wrapper{z-index:1;box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder)}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);color:var(--el-link-text-color)}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{content:\\\"\\\";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid var(--el-link-hover-text-color)}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{display:inline-flex;justify-content:center;align-items:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--primary.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--success.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--error.is-underline:hover:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info:after{border-color:var(--el-link-text-color)}.el-link.el-link--info.is-underline:hover:after{border-color:var(--el-link-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:var(--el-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--el-transition-duration)}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/ 2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{top:50%;margin-top:calc((0px - var(--el-loading-spinner-size))/ 2);width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);margin:3px 0;font-size:14px}.el-loading-spinner .circular{display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size);-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@-webkit-keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-rotate{to{transform:rotate(360deg)}}@-webkit-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}}@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}}.el-main{--el-main-padding:20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--el-menu-bg-color);box-sizing:border-box}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:solid 1px var(--el-menu-border-color);border-right:none}.el-menu--horizontal>.el-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:0}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--el-menu-text-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-bg-color-overlay)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);display:flex;align-items:center;height:var(--el-menu-horizontal-sub-item-height);padding:0 10px;color:var(--el-menu-text-color)}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:var(--el-menu-hover-text-color);background-color:var(--el-menu-hover-bg-color)}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;vertical-align:middle;width:var(--el-menu-icon-width);text-align:center}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light)}.el-menu .el-icon{flex-shrink:0}.el-menu-item{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:0}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--el-menu-base-level-padding)}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{display:flex;align-items:center;height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:0}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;margin-right:5px;width:var(--el-menu-icon-width);text-align:center;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{position:absolute;top:50%;right:var(--el-menu-base-level-padding);margin-top:-6px;transition:transform var(--el-transition-duration);font-size:12px;margin-right:0;width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--el-text-color-secondary)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:15px}.el-message-box{display:inline-block;max-width:var(--el-messagebox-width);width:100%;padding-bottom:10px;vertical-align:middle;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);border:1px solid var(--el-border-color-lighter);font-size:var(--el-messagebox-font-size);box-shadow:var(--el-box-shadow-light);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box:focus{outline:0!important}.el-overlay.is-message-box .el-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;padding:16px;overflow:auto}.el-overlay.is-message-box .el-overlay-message-box:after{content:\\\"\\\";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-message-box__header{position:relative;padding:var(--el-messagebox-padding-primary);padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:var(--el-messagebox-font-size);line-height:1;color:var(--el-messagebox-title-color)}.el-message-box__headerbtn{position:absolute;top:var(--el-messagebox-padding-primary);right:var(--el-messagebox-padding-primary);padding:0;border:none;outline:0;background:0 0;font-size:var(--el-message-close-size,16px);cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{padding:10px var(--el-messagebox-padding-primary);color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input div.invalid>input{border-color:var(--el-color-error)}.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status.el-icon{position:absolute}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px;word-break:break-word}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns{justify-content:center}.el-message-box--center .el-message-box__content{padding-left:calc(var(--el-messagebox-padding-primary) + 12px);padding-right:calc(var(--el-messagebox-padding-primary) + 12px);text-align:center}.fade-in-linear-enter-active .el-overlay-message-box{-webkit-animation:msgbox-fade-in var(--el-transition-duration);animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@-webkit-keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:15px 19px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary)}.el-message{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:calc(100% - 32px);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width);border-style:var(--el-border-style);border-color:var(--el-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);background-color:var(--el-message-bg-color);transition:opacity var(--el-transition-duration),transform .4s,top .4s;padding:var(--el-message-padding);display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:31px}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:anywhere}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message__icon{margin-right:10px}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{position:absolute;top:50%;right:19px;transform:translateY(-50%);cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size, 16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular)}.el-notification{display:flex;width:var(--el-notification-width);padding:var(--el-notification-padding);border-radius:var(--el-notification-radius);box-sizing:border-box;border:1px solid var(--el-notification-border-color);position:fixed;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-notification-shadow);transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);overflow-wrap:anywhere;overflow:hidden;z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{font-weight:700;font-size:var(--el-notification-title-font-size);line-height:var(--el-notification-icon-size);color:var(--el-notification-title-color);margin:0}.el-notification__content{font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--el-notification-content-color);text-align:justify}.el-notification__content p{margin:0}.el-notification .el-notification__icon{height:var(--el-notification-icon-size);width:var(--el-notification-icon-size);font-size:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--el-notification-close-color);font-size:var(--el-notification-close-font-size)}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--el-overlay-color-lighter);overflow:auto}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{display:flex;align-items:center;justify-content:space-between;line-height:24px}.el-page-header__left{display:flex;align-items:center;margin-right:40px;position:relative}.el-page-header__back{display:flex;align-items:center;cursor:pointer}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{font-size:16px;margin-right:10px;display:flex;align-items:center}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:var(--el-text-color-primary)}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-item-gap:16px;white-space:nowrap;color:var(--el-pagination-text-color);font-size:var(--el-pagination-font-size);font-weight:400;display:flex;align-items:center}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield}.el-pagination .el-select .el-input{width:128px}.el-pagination button{display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);padding:0 4px;border:none;border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{font-weight:700;color:var(--el-text-color-secondary)}.el-pagination button.is-disabled,.el-pagination button:disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{margin-left:var(--el-pagination-item-gap);font-weight:400;color:var(--el-text-color-regular)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{display:flex;align-items:center;margin-left:var(--el-pagination-item-gap);font-weight:400;color:var(--el-text-color-regular)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{text-align:center;box-sizing:border-box}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{flex:1;display:flex;align-items:center;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 4px;background-color:var(--el-pagination-button-bg-color)}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{color:var(--el-text-color-placeholder);background-color:var(--el-disabled-bg-color)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{color:var(--el-text-color-secondary);background-color:var(--el-fill-color-dark)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);font-size:var(--el-pagination-font-size-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select .el-input{width:100px}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0;padding:0;margin:0;display:flex;align-items:center}.el-pager li{display:flex;justify-content:center;align-items:center;font-size:var(--el-pagination-font-size);min-width:var(--el-pagination-button-width);height:var(--el-pagination-button-height);line-height:var(--el-pagination-button-height);color:var(--el-pagination-button-color);background:var(--el-pagination-bg-color);padding:0 4px;border:none;border-radius:var(--el-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:0}.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{color:var(--el-pagination-hover-color);cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{font-weight:700;color:var(--el-text-color-secondary)}.el-pager li.is-disabled,.el-pager li:disabled{color:var(--el-pagination-button-disabled-color);background-color:var(--el-pagination-button-disabled-bg-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin-top:8px}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);min-width:150px;border-radius:var(--el-popover-border-radius);border:1px solid var(--el-popover-border-color);padding:var(--el-popover-padding);z-index:var(--el-index-popper);color:var(--el-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--el-popover-font-size);box-shadow:var(--el-box-shadow-light);word-break:break-all;box-sizing:border-box}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{position:relative;line-height:1;display:flex;align-items:center}.el-progress__text{font-size:14px;color:var(--el-text-color-regular);margin-left:5px;min-width:50px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{flex-grow:1;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:var(--el-border-color-lighter);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:var(--el-color-primary);text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{transform:translateZ(0);-webkit-animation:indeterminate 3s infinite;animation:indeterminate 3s infinite}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@-webkit-keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));border-left:0;color:var(--el-button-text-color,var(--el-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button__original-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__original-radio:checked+.el-radio-button__inner{color:var(--el-radio-button-checked-text-color,var(--el-color-white));background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary))}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--el-border-radius-base);box-shadow:none}.el-radio-button__original-radio:disabled+.el-radio-button__inner{color:var(--el-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{padding:12px 19px;font-size:var(--el-font-size-base);border-radius:0}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary)}.el-radio{color:var(--el-radio-text-color);font-weight:var(--el-radio-font-weight);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;outline:0;font-size:var(--el-font-size-base);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:32px;height:32px}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{padding:0 15px 0 9px;border-radius:var(--el-border-radius-base);border:var(--el-border);box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--el-border-color-lighter)}.el-radio.is-bordered.el-radio--large{padding:0 19px 0 11px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{padding:0 11px 0 7px;border-radius:var(--el-border-radius-base)}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-flex;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:var(--el-disabled-bg-color)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:var(--el-color-primary);background:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);width:var(--el-radio-input-width);height:var(--el-radio-input-height);background-color:var(--el-radio-input-bg-color);position:relative;cursor:pointer;display:inline-block;box-sizing:border-box}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{width:4px;height:4px;border-radius:var(--el-radio-input-border-radius);background-color:var(--el-color-white);content:\\\"\\\";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio__original:focus-visible+.el-radio__inner{outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--el-radio-input-border-radius)}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{width:14px;height:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{width:12px;height:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary)}.el-rate{display:inline-flex;align-items:center;height:32px}.el-rate:active,.el-rate:focus{outline:0}.el-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--el-rate-void-color);line-height:normal}.el-rate .el-rate__icon{position:relative;display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--el-rate-fill-color)}.el-rate__text{font-size:var(--el-rate-font-size);vertical-align:middle;color:var(--el-rate-text-color)}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate.is-disabled .el-rate__item{cursor:auto;color:var(--el-rate-disabled-void-color)}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--el-result-padding)}.el-result__icon svg{width:var(--el-result-icon-font-size);height:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{margin:0;font-size:var(--el-result-title-font-size);color:var(--el-text-color-primary);line-height:1.3}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{margin:0;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);line-height:1.3}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary)}.el-scrollbar{overflow:hidden;position:relative;height:100%}.el-scrollbar__wrap{overflow:auto;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));transition:var(--el-transition-duration) background-color;opacity:var(--el-scrollbar-opacity,.3)}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled{color:var(--el-text-color-disabled)}.el-select-dropdown__option-item.is-selected:not(.is-multiple).is-disabled:after{background-color:var(--el-text-color-disabled)}.el-select-dropdown__option-item:hover:not(.hover){background-color:transparent}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-disabled.is-selected{color:var(--el-text-color-disabled)}.el-select-dropdown__list{list-style:none;margin:6px 0!important;padding:0!important;box-sizing:border-box}.el-select-dropdown__option-item{font-size:var(--el-select-font-size);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__option-item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__option-item.is-disabled:hover{background-color:var(--el-bg-color)}.el-select-dropdown__option-item.is-selected{background-color:var(--el-fill-color-light);font-weight:700}.el-select-dropdown__option-item.is-selected:not(.is-multiple){color:var(--el-color-primary)}.el-select-dropdown__option-item.hover{background-color:var(--el-fill-color-light)!important}.el-select-dropdown__option-item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon{position:absolute;right:20px;top:0;height:inherit;font-size:12px}.el-select-dropdown.is-multiple .el-select-dropdown__option-item.is-selected .el-icon svg{height:inherit;vertical-align:middle}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:\\\"\\\";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--el-border-color-light)}.el-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--el-border-color-light)}.el-select-group__title{padding-left:20px;font-size:12px;color:var(--el-color-info);line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-v2{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select-v2{display:inline-block;position:relative;vertical-align:middle;font-size:14px}.el-select-v2__wrapper{display:flex;align-items:center;flex-wrap:wrap;position:relative;box-sizing:border-box;cursor:pointer;padding:1px 30px 1px 0;border:1px solid var(--el-border-color);border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-blank);transition:var(--el-transition-duration)}.el-select-v2__wrapper:hover{border-color:var(--el-text-color-placeholder)}.el-select-v2__wrapper.is-filterable{cursor:text}.el-select-v2__wrapper.is-focused{border-color:var(--el-color-primary)}.el-select-v2__wrapper.is-hovering:not(.is-focused){border-color:var(--el-border-color-hover)}.el-select-v2__wrapper.is-disabled{cursor:not-allowed;background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled:hover{border-color:var(--el-select-disabled-border)}.el-select-v2__wrapper.is-disabled.is-focus{border-color:var(--el-input-focus-border-color)}.el-select-v2__wrapper.is-disabled .is-transparent{opacity:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-select-v2__wrapper.is-disabled .el-select-v2__caret,.el-select-v2__wrapper.is-disabled .el-select-v2__combobox-input{cursor:not-allowed}.el-select-v2__wrapper .el-select-v2__input-wrapper{box-sizing:border-box;position:relative;-webkit-margin-start:12px;margin-inline-start:12px;max-width:100%;overflow:hidden}.el-select-v2__wrapper,.el-select-v2__wrapper .el-select-v2__input-wrapper{line-height:32px}.el-select-v2__wrapper .el-select-v2__input-wrapper input{--el-input-inner-height:calc(var(--el-component-size, 32px) - 8px);height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);min-width:4px;width:100%;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:0 0;border:none;margin:2px 0;outline:0;padding:0}.el-select-v2 .el-select-v2__tags-text{display:inline-block;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select-v2__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:14px}.el-select-v2__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select-v2__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select-v2__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select-v2__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select-v2--large .el-select-v2__wrapper .el-select-v2__combobox-input{height:32px}.el-select-v2--large .el-select-v2__caret,.el-select-v2--large .el-select-v2__suffix{height:40px}.el-select-v2--large .el-select-v2__placeholder{font-size:14px;line-height:40px}.el-select-v2--small .el-select-v2__wrapper .el-select-v2__combobox-input{height:16px}.el-select-v2--small .el-select-v2__caret,.el-select-v2--small .el-select-v2__suffix{height:24px}.el-select-v2--small .el-select-v2__placeholder{font-size:12px;line-height:24px}.el-select-v2 .el-select-v2__selection>span{display:inline-block}.el-select-v2:hover .el-select-v2__combobox-input{border-color:var(--el-select-border-color-hover)}.el-select-v2 .el-select__selection-text{text-overflow:ellipsis;display:inline-block;overflow-x:hidden;vertical-align:bottom}.el-select-v2 .el-select-v2__combobox-input{padding-right:35px;display:block;color:var(--el-text-color-regular)}.el-select-v2 .el-select-v2__combobox-input:focus{border-color:var(--el-select-input-focus-border-color)}.el-select-v2__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px}.el-select-v2__input.is-small{height:14px}.el-select-v2__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select-v2__close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__suffix{display:inline-flex;position:absolute;right:12px;height:32px;top:50%;transform:translateY(-50%);color:var(--el-input-icon-color,var(--el-text-color-placeholder))}.el-select-v2__suffix .el-input__icon{height:inherit}.el-select-v2__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:var(--el-transition-duration);transform:rotate(180deg);cursor:pointer}.el-select-v2__caret.is-reverse{transform:rotate(0)}.el-select-v2__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(180deg);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select-v2__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select-v2__caret.el-icon{height:inherit}.el-select-v2__caret.el-icon svg{vertical-align:middle}.el-select-v2__selection{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap}.el-select-v2__input-calculator{left:0;position:absolute;top:0;visibility:hidden;white-space:pre;z-index:999}.el-select-v2__selected-item{line-height:inherit;height:inherit;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-wrap:wrap}.el-select-v2__placeholder{position:absolute;top:50%;transform:translateY(-50%);-webkit-margin-start:12px;margin-inline-start:12px;width:calc(100% - 52px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--el-input-text-color,var(--el-text-color-regular))}.el-select-v2__placeholder.is-transparent{color:var(--el-text-color-placeholder)}.el-select-v2 .el-select-v2__selection .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:var(--el-fill-color)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;color:var(--el-color-white)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select-v2 .el-select-v2__selection .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select-v2.el-select-v2--small .el-select-v2__selection .el-tag{margin:1px 0 1px 6px;height:18px}.el-select-dropdown{z-index:calc(var(--el-index-top) + 1);border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:var(--el-fill-color-light)}.el-select-dropdown.is-multiple .el-select-dropdown__item.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(--el-color-primary);-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;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}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.is-disabled:after{background-color:var(--el-text-color-disabled)}.el-select-dropdown .el-select-dropdown__option-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(--el-color-primary);-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;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}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown .el-select-dropdown__item.is-disabled:hover{background-color:unset}.el-select-dropdown .el-select-dropdown__item.is-disabled.selected{color:var(--el-text-color-disabled)}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--el-text-color-secondary);font-size:var(--el-select-font-size)}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px}.el-select{display:inline-block;position:relative;vertical-align:middle;line-height:32px}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select .el-select-tags-wrapper.has-prefix{margin-left:6px}.el-select--large{line-height:40px}.el-select--large .el-select-tags-wrapper.has-prefix{margin-left:8px}.el-select--small{line-height:24px}.el-select--small .el-select-tags-wrapper.has-prefix{margin-left:4px}.el-select .el-select__tags>span{display:inline-block}.el-select:hover:not(.el-select--disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-select-border-color-hover) inset}.el-select .el-select__tags-text{display:inline-block;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select .el-input__wrapper{cursor:pointer}.el-select .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select .el-input__inner{cursor:pointer}.el-select .el-input{display:flex}.el-select .el-input .el-select__caret{color:var(--el-select-input-color);font-size:var(--el-select-input-font-size);transition:transform var(--el-transition-duration);transform:rotate(0);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(-180deg)}.el-select .el-input .el-select__caret.is-show-close{font-size:var(--el-select-font-size);text-align:center;transform:rotate(0);border-radius:var(--el-border-radius-circle);color:var(--el-select-input-color);transition:var(--el-transition-color)}.el-select .el-input .el-select__caret.is-show-close:hover{color:var(--el-select-close-hover-color)}.el-select .el-input .el-select__caret.el-icon{position:relative;height:inherit;z-index:2}.el-select .el-input.is-disabled .el-input__wrapper{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select .el-input.is-disabled .el-input__inner,.el-select .el-input.is-disabled .el-select__caret{cursor:not-allowed}.el-select .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-select-input-focus-border-color) inset!important}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:var(--el-select-multiple-input-color);font-size:var(--el-select-font-size);-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-small{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:var(--el-index-top);right:25px;color:var(--el-select-input-color);line-height:18px;font-size:var(--el-select-input-font-size)}.el-select__close:hover{color:var(--el-select-close-hover-color)}.el-select__tags{position:absolute;line-height:normal;top:50%;transform:translateY(-50%);white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap;cursor:pointer}.el-select__tags .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 6px 2px 0}.el-select__tags .el-tag:last-child{margin-right:0}.el-select__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;top:0;color:#fff}.el-select__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select__tags .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select__tags .el-tag--info{background-color:var(--el-fill-color)}.el-select__collapse-tags{white-space:normal;z-index:var(--el-index-normal);display:flex;align-items:center;flex-wrap:wrap;cursor:pointer}.el-select__collapse-tags .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 6px 2px 0}.el-select__collapse-tags .el-tag:last-child{margin-right:0}.el-select__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);right:-7px;top:0;color:#fff}.el-select__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-select__collapse-tags .el-tag .el-icon-close:before{display:block;transform:translateY(.5px)}.el-select__collapse-tags .el-tag--info{background-color:var(--el-fill-color)}.el-select__collapse-tag{line-height:inherit;height:inherit;display:flex}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);display:inline-block;height:16px;border-radius:var(--el-border-radius-base);width:100%}.el-skeleton__circle{border-radius:50%;width:var(--el-skeleton-circle-size);height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size)}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:var(--el-font-size-small)}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:var(--el-skeleton-color)}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px}.el-slider{width:100%;height:32px;display:flex;align-items:center}.el-slider__runway{flex:1;height:var(--el-slider-height);background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);position:relative;cursor:pointer}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover,.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover,.el-slider__runway.is-disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{height:var(--el-slider-height);background-color:var(--el-slider-main-bg-color);border-top-left-radius:var(--el-slider-border-radius);border-bottom-left-radius:var(--el-slider-border-radius);position:absolute}.el-slider__button-wrapper{height:var(--el-slider-button-wrapper-size);width:var(--el-slider-button-wrapper-size);position:absolute;z-index:1;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal;outline:0}.el-slider__button-wrapper:after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{display:inline-block;width:var(--el-slider-button-size);height:var(--el-slider-button-size);vertical-align:middle;border:solid 2px var(--el-slider-main-bg-color);background-color:var(--el-color-white);border-radius:50%;box-sizing:border-box;transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:var(--el-slider-height);width:var(--el-slider-height);border-radius:var(--el-border-radius-circle);background-color:var(--el-slider-stop-bg-color);transform:translate(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translate(-50%);font-size:14px;color:var(--el-color-info);margin-top:15px;white-space:pre}.el-slider.is-vertical{position:relative;display:inline-flex;width:auto;height:100%;flex:0}.el-slider.is-vertical .el-slider__runway{width:var(--el-slider-height);height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:var(--el-slider-height);height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:var(--el-slider-button-wrapper-offset);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{to{transform:rotate(360deg)}}@keyframes rotate{to{transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:var(--el-text-color-primary);border-color:var(--el-text-color-primary)}.el-step__head.is-wait{color:var(--el-text-color-placeholder);border-color:var(--el-text-color-placeholder)}.el-step__head.is-success{color:var(--el-color-success);border-color:var(--el-color-success)}.el-step__head.is-error{color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-step__head.is-finish{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:var(--el-bg-color);transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:var(--el-text-color-placeholder)}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:var(--el-text-color-primary)}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:\\\"\\\";display:inline-block;position:absolute;height:15px;width:1px;background:var(--el-text-color-placeholder)}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:var(--el-fill-color-light)}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color)}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:32px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:var(--el-transition-duration-fast);height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--el-text-color-primary)}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{display:inline-flex;position:relative;align-items:center;min-width:40px;height:20px;border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));outline:0;border-radius:10px;box-sizing:border-box;background:var(--el-switch-off-color);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{width:100%;transition:all var(--el-transition-duration);height:16px;display:flex;justify-content:center;align-items:center;overflow:hidden;padding:0 4px 0 18px}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{font-size:12px;color:var(--el-color-white);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-switch__core .el-switch__action{position:absolute;left:1px;border-radius:var(--el-border-radius-circle);transition:all var(--el-transition-duration);width:16px;height:16px;background-color:var(--el-color-white);display:flex;justify-content:center;align-items:center;color:var(--el-switch-off-color)}.el-switch.is-checked .el-switch__core{border-color:var(--el-switch-border-color,var(--el-switch-on-color));background-color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__action{left:calc(100% - 17px);color:var(--el-switch-on-color)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;line-height:24px;height:40px}.el-switch--large .el-switch__label{height:24px;font-size:14px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{min-width:50px;height:24px;border-radius:12px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{width:20px;height:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;line-height:16px;height:24px}.el-switch--small .el-switch__label{height:16px;font-size:12px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{min-width:30px;height:16px;border-radius:8px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{width:12px;height:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px var(--el-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--el-font-size-base)}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, .15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, .15)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;width:100%;max-width:100%;background-color:var(--el-table-bg-color);font-size:14px;color:var(--el-table-text-color)}.el-table__inner-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.el-table__inner-wrapper:before{left:0;bottom:0;width:100%;height:1px}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{position:-webkit-sticky;position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:var(--el-text-color-secondary)}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table__expand-icon{position:relative;cursor:pointer;color:var(--el-text-color-regular);font-size:12px;transition:transform var(--el-transition-duration-fast) ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table thead{color:var(--el-table-header-text-color);font-weight:500}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-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:1}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding:0 12px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:14px}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{display:inline-block;content:\\\"\\\";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table__footer-wrapper{border-top:var(--el-table-border)}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{content:\\\"\\\";position:absolute;background-color:var(--el-table-border-color);z-index:3}.el-table--border .el-table__inner-wrapper:after{left:0;top:0;width:100%;height:1px}.el-table--border:before{top:-1px;left:0;width:1px;height:100%}.el-table--border:after{top:-1px;right:0;width:1px;height:100%}.el-table--border .el-table__inner-wrapper{border-right:none;border-bottom:none}.el-table--border .el-table__footer-wrapper{position:relative;flex-shrink:0}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{position:-webkit-sticky!important;position:sticky!important;z-index:2;background:var(--el-bg-color)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-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}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{right:-10px;box-shadow:none}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{position:-webkit-sticky!important;position:sticky!important;z-index:2;background:#fff;right:0}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{display:inline-flex;align-items:center;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{overflow:hidden;position:relative;flex:1}.el-table__body-wrapper .el-scrollbar__bar{z-index:2}.el-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}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--el-table-border);z-index:10}.el-table__column-filter-trigger{display:inline-block;cursor:pointer}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-bottom-patch{left:0;height:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table__border-right-patch{top:0;height:100%;width:1px;z-index:3;position:absolute;background-color:var(--el-table-border-color)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-fill-color-blank);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0, 0, 0, .15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0, 0, 0, .15)}.el-table-v2{font-size:14px}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);left:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);left:0;box-shadow:2px 0 4px #0000000f}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--el-bg-color);right:0;box-shadow:-2px 0 4px #0000000f}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{-webkit-padding-end:var(--el-table-scrollbar-size);padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{position:relative;overflow:hidden}.el-table-v2__footer{position:absolute;left:0;right:0;bottom:0;overflow:hidden}.el-table-v2__empty{position:absolute;left:0}.el-table-v2__overlay{position:absolute;left:0;right:0;top:0;bottom:0;z-index:9999}.el-table-v2__header-row{display:flex;border-bottom:var(--el-table-border)}.el-table-v2__header-cell{display:flex;align-items:center;padding:0 8px;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);font-weight:700}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{transition:opacity,display var(--el-transition-duration);opacity:.6;display:none}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{border-bottom:var(--el-table-border);display:flex;align-items:center;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{height:100%;overflow:hidden;display:flex;align-items:center;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{margin:0 4px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{overflow:hidden;align-items:stretch}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{word-break:break-all}.el-tabs{--el-tabs-header-height:40px}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--el-color-primary);z-index:1;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);list-style:none}.el-tabs__new-tab{display:flex;align-items:center;justify-content:center;float:right;border:1px solid var(--el-border-color);height:20px;width:20px;line-height:20px;margin:10px 0 10px 10px;border-radius:3px;text-align:center;font-size:12px;color:var(--el-text-color-primary);cursor:pointer;transition:all .15s}.el-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:\\\"\\\";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--el-border-color-light);z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:var(--el-text-color-secondary);width:20px;text-align:center}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform var(--el-transition-duration);float:left;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:var(--el-tabs-header-height);box-sizing:border-box;line-height:var(--el-tabs-header-height);display:inline-block;list-style:none;font-size:var(--el-font-size-base);font-weight:500;color:var(--el-text-color-primary);position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--el-color-primary) inset;border-radius:3px}.el-tabs__item .is-icon-close{border-radius:50%;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);margin-left:5px}.el-tabs__item .is-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item .is-icon-close svg{margin-top:1px}.el-tabs__item.is-active{color:var(--el-color-primary)}.el-tabs__item:hover{color:var(--el-color-primary);cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);border:1px solid transparent;margin-top:-1px;color:var(--el-text-color-secondary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:var(--el-color-primary);background-color:var(--el-bg-color-overlay);border-right-color:var(--el-border-color);border-left-color:var(--el-border-color)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid var(--el-border-color-light);border-bottom:none;border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--el-border-color-light);border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--el-border-color-light);border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter var(--el-transition-duration);animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave var(--el-transition-duration);animation:slideInRight-leave var(--el-transition-duration)}.slideInLeft-enter{-webkit-animation:slideInLeft-enter var(--el-transition-duration);animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave var(--el-transition-duration);animation:slideInLeft-leave var(--el-transition-duration)}@-webkit-keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@-webkit-keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(100%);opacity:0}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@-webkit-keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(-100%);opacity:0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px}.el-tag{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary);--el-tag-text-color:var(--el-color-primary);background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);color:var(--el-tag-text-color);display:inline-flex;justify-content:center;align-items:center;height:24px;padding:0 9px;font-size:var(--el-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--el-tag-border-radius);box-sizing:border-box;white-space:nowrap;--el-icon-size:14px}.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color)}.el-tag .el-tag__close:hover{color:var(--el-color-white);background-color:var(--el-tag-hover-color)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3);--el-tag-text-color:var(--el-color-white)}.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning,.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info{--el-tag-text-color:var(--el-color-white)}.el-tag--plain{--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary);--el-tag-bg-color:var(--el-fill-color-blank)}.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{padding:0 11px;height:32px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{padding:0 7px;height:20px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);font-weight:700;cursor:pointer}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid var(--el-timeline-node-color)}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{position:absolute;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:var(--el-timeline-node-size-normal);height:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{left:-2px;width:var(--el-timeline-node-size-large);height:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);line-height:1;font-size:var(--el-font-size-small)}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light)}.el-timeline{margin:0;font-size:var(--el-font-size-base);list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{display:flex;align-items:center}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);background-color:var(--el-color-white);padding:var(--el-tooltip-v2-padding);border:1px solid var(--el-border-color)}.el-tooltip-v2__arrow{position:absolute;color:var(--el-color-white);width:var(--el-tooltip-v2-arrow-width);height:var(--el-tooltip-v2-arrow-height);pointer-events:none;left:var(--el-tooltip-v2-arrow-x);top:var(--el-tooltip-v2-arrow-y)}.el-tooltip-v2__arrow:before{content:\\\"\\\";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__arrow:after{content:\\\"\\\";width:0;height:0;border:var(--el-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);border-bottom:0;top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);border-left:0;right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;background-color:var(--el-color-black);color:var(--el-color-white);border-color:transparent}.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px}.el-transfer{font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{overflow:hidden;background:var(--el-bg-color-overlay);display:inline-block;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width);max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:var(--el-transfer-panel-body-height);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:var(--el-transfer-panel-body-height);overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:22px;line-height:var(--el-transfer-item-height)}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;width:auto}.el-transfer-panel__filter .el-input__inner{height:var(--el-transfer-filter-height);width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:calc(var(--el-transfer-filter-height)/ 2)}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{display:flex;align-items:center;height:var(--el-transfer-panel-header-height);background:var(--el-transfer-panel-header-bg-color);margin:0;padding-left:15px;border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black)}.el-transfer-panel .el-transfer-panel__header .el-checkbox{position:relative;display:flex;width:100%;align-items:center}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:var(--el-text-color-primary);font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0);color:var(--el-text-color-secondary);font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:var(--el-transfer-panel-footer-height);background:var(--el-bg-color-overlay);margin:0;padding:0;border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius)}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:var(--el-text-color-regular)}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding:6px 15px 0;color:var(--el-text-color-secondary);text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-tree{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree{position:relative;cursor:default;background:var(--el-fill-color-blank);color:var(--el-tree-text-color);font-size:var(--el-font-size-base)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--el-text-color-secondary);font-size:var(--el-font-size-base)}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:var(--el-color-primary)}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px;box-sizing:content-box}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:var(--el-tree-expand-icon-color);font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{margin-right:8px;font-size:var(--el-font-size-base);color:var(--el-tree-expand-icon-color)}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__item{flex:1;background:0 0!important;padding-left:0;height:20px;line-height:20px}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px}.el-upload{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:var(--el-text-color-regular);margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{--el-upload-picture-card-size:148px;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;width:var(--el-upload-picture-card-size);height:var(--el-upload-picture-card-size);cursor:pointer;vertical-align:top;display:inline-flex;justify-content:center;align-items:center}.el-upload--picture-card i{font-size:28px;color:var(--el-text-color-secondary)}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon--upload{font-size:67px;color:var(--el-text-color-placeholder);margin-bottom:16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px);background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary)}.el-upload-list{margin:10px 0 0;padding:0;list-style:none;position:relative}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:var(--el-text-color-regular);margin-bottom:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{display:none;position:absolute;right:5px;top:50%;cursor:pointer;opacity:.75;color:var(--el-text-color-regular);transition:opacity var(--el-transition-duration);transform:translateY(-50%)}.el-upload-list__item .el-icon--close:hover{opacity:1;color:var(--el-color-primary)}.el-upload-list__item .el-icon--close-tip{display:none;position:absolute;top:1px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:var(--el-color-primary);font-style:normal}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;justify-content:center;flex-direction:column;width:calc(100% - 30px);margin-left:4px}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list.is-disabled .el-upload-list__item-status-label,.el-upload-list.is-disabled .el-upload-list__item:hover{display:block}.el-upload-list__item-name{color:var(--el-text-color-regular);display:inline-flex;text-align:center;align-items:center;padding:0 4px;transition:color var(--el-transition-duration);font-size:var(--el-font-size-base)}.el-upload-list__item-name .el-icon{margin-right:6px;color:var(--el-text-color-secondary)}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none;height:100%;justify-content:center;align-items:center;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:var(--el-text-color-regular);display:none}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;width:var(--el-upload-list-picture-card-size);height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;padding:0;display:inline-flex}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.el-upload-list--picture-card .el-upload-list__item-status-label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;display:inline-flex;justify-content:center;align-items:center;color:#fff;opacity:0;font-size:20px;background-color:var(--el-overlay-color-lighter);transition:opacity var(--el-transition-duration)}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:1rem}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px;display:flex;align-items:center}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{opacity:0;display:block}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{display:inline-flex;justify-content:center;align-items:center;width:70px;height:70px;-o-object-fit:contain;object-fit:contain;position:relative;z-index:1;background-color:var(--el-color-white)}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;content:\\\"\\\";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{right:-15px;top:-6px;width:40px;height:24px;background:var(--el-color-success);text-align:center;transform:rotate(45deg)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:var(--el-overlay-color-light);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:var(--el-transition-md-fade);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:var(--el-text-color-primary)}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper:hover .el-virtual-scrollbar,.el-vl__wrapper.always-on .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius, 4px)}.el-popper{position:absolute;border-radius:var(--el-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.el-popper.is-dark{color:var(--el-bg-color);background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark .el-popper__arrow:before{border:1px solid var(--el-text-color-primary);background:var(--el-text-color-primary);right:0}.el-popper.is-light{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light .el-popper__arrow:before{border:1px solid var(--el-border-color-light);background:var(--el-bg-color-overlay);right:0}.el-popper.is-pure{padding:0}.el-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.el-popper__arrow:before{position:absolute;width:10px;height:10px;z-index:-1;content:\\\" \\\";transform:rotate(45deg);background:var(--el-text-color-primary);box-sizing:border-box}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-top-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-left-color:transparent!important;border-bottom-color:transparent!important}.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-select-dropdown__item{font-size:var(--el-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--el-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.selected{color:var(--el-color-primary);font-weight:700}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{font-weight:var(--el-statistic-title-font-weight);font-size:var(--el-statistic-title-font-size);color:var(--el-statistic-title-color);line-height:20px;margin-bottom:4px}.el-statistic__content{font-weight:var(--el-statistic-content-font-weight);font-size:var(--el-statistic-content-font-size);color:var(--el-statistic-content-color)}.el-statistic__value{display:inline-block}.el-statistic__prefix{margin-right:4px;display:inline-block}.el-statistic__suffix{margin-left:4px;display:inline-block}#page:has(#hexo-circle-of-friends-root){backdrop-filter:none!important;transform:none!important;transition:none!important}:root{--lmm-hover: #fe5186;--lmm-background: #27292c;--lmm-floorcolor: #a9a9b3;--lmm-dark-fontcolor: #a9a9b3;--lmm-dack-background: #252627;--lmm-dark-floorcolor: #454545;--lmm-background-floorcolor: #dedede}[data-theme=light]{--lmm-fontcolor: #363636;--lmm-background: #f7f9fe;--lmm-floorcolor: #a9a9b3}[data-theme=dark]{--lmm-fontcolor: #a9a9b3;--lmm-background: #252627;--lmm-floorcolor: #454545}\\n\", document.head.appendChild(e); const l = /;(?![^(]*\\))/g, o = /:([^]+)/, n = /\\/\\*.*?\\*\\//gs; function a(e) { const t = {}; return e.replace(n, \"\") .split(l) .forEach((e => { if (e) { const r = e.split(o); r.length > 1 && (t[r[0].trim()] = r[1].trim()) } })), t } function i(e) { let t = \"\"; if (L(e)) t = e; else if (z(e)) for (let r = 0; r < e.length; r++) { const l = i(e[r]); l && (t += l + \" \") } else if (B(e)) for (const r in e) e[r] && (t += r + \" \"); return t.trim() } const s = t(\"itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly\"); function c(e) { return !!e || \"\" === e } function u(e, t) { if (e === t) return !0; let r = M(e), l = M(t); if (r || l) return !(!r || !l) && e.getTime() === t.getTime(); if (r = E(e), l = E(t), r || l) return e === t; if (r = z(e), l = z(t), r || l) return !(!r || !l) && function(e, t) { if (e.length !== t.length) return !1; let r = !0; for (let l = 0; r && l < e.length; l++) r = u(e[l], t[l]); return r }(e, t); if (r = B(e), l = B(t), r || l) { if (!r || !l) return !1; if (Object.keys(e) .length !== Object.keys(t) .length) return !1; for (const r in e) { const l = e.hasOwnProperty(r), o = t.hasOwnProperty(r); if (l && !o || !l && o || !u(e[r], t[r])) return !1 } } return String(e) === String(t) } const d = e => L(e) ? e : null == e ? \"\" : z(e) || B(e) && (e.toString === V || !S(e.toString)) ? JSON.stringify(e, p, 2) : String(e), p = (e, t) => t && t.__v_isRef ? p(e, t.value) : C(t) ? { [`Map(${t.size})`]: [...t.entries()].reduce(((e, [t, r]) => (e[`${t} =>`] = r, e)), {}) } : A(t) ? { [`Set(${t.size})`]: [...t.values()] } : !B(t) || z(t) || T(t) ? t : String(t), f = {}, h = [], v = () => {}, g = () => !1, b = /^on[^a-z]/, m = e => b.test(e), _ = e => e.startsWith(\"onUpdate:\"), x = Object.assign, w = (e, t) => { const r = e.indexOf(t); r > -1 && e.splice(r, 1) }, y = Object.prototype.hasOwnProperty, k = (e, t) => y.call(e, t), z = Array.isArray, C = e => \"[object Map]\" === O(e), A = e => \"[object Set]\" === O(e), M = e => \"[object Date]\" === O(e), S = e => \"function\" == typeof e, L = e => \"string\" == typeof e, E = e => \"symbol\" == typeof e, B = e => null !== e && \"object\" == typeof e, H = e => B(e) && S(e.then) && S(e[\"catch\"]), V = Object.prototype.toString, O = e => V.call(e), I = e => O(e) .slice(8, -1), T = e => \"[object Object]\" === O(e), j = e => L(e) && \"NaN\" !== e && \"-\" !== e[0] && \"\" + parseInt(e, 10) === e, R = t(\",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"), F = e => { const t = Object.create(null); return r => t[r] || (t[r] = e(r)) }, P = /-(\\w)/g, D = F((e => e.replace(P, ((e, t) => t ? t.toUpperCase() : \"\")))), N = /\\B([A-Z])/g, q = F((e => e.replace(N, \"-$1\") .toLowerCase())), U = F((e => e.charAt(0) .toUpperCase() + e.slice(1))), K = F((e => e ? `on${U(e)}` : \"\")), W = (e, t) => !Object.is(e, t), Y = (e, t) => { for (let r = 0; r < e.length; r++) e[r](t) }, Q = (e, t, r) => { Object.defineProperty(e, t, { configurable: !0, enumerable: !1, value: r }) }, $ = e => { const t = parseFloat(e); return isNaN(t) ? e : t }, G = e => { const t = L(e) ? Number(e) : NaN; return isNaN(t) ? e : t }; let Z; const J = () => Z || (Z = \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : {}); let X; class EffectScope { constructor(e = !1) { this.detached = e, this._active = !0, this.effects = [], this.cleanups = [], this.parent = X, !e && X && (this.index = (X.scopes || (X.scopes = [])) .push(this) - 1) } get active() { return this._active } run(e) { if (this._active) { const t = X; try { return X = this, e() } finally { X = t } } } on() { X = this } off() { X = this.parent } stop(e) { if (this._active) { let t, r; for (t = 0, r = this.effects.length; t < r; t++) this.effects[t].stop(); for (t = 0, r = this.cleanups.length; t < r; t++) this.cleanups[t](); if (this.scopes) for (t = 0, r = this.scopes.length; t < r; t++) this.scopes[t].stop(!0); if (!this.detached && this.parent && !e) { const e = this.parent.scopes.pop(); e && e !== this && (this.parent.scopes[this.index] = e, e.index = this.index) } this.parent = void 0, this._active = !1 } } } function ee(e) { return new EffectScope(e) } function te() { return X } function re(e) { X && X.cleanups.push(e) } const le = e => { const t = new Set(e); return t.w = 0, t.n = 0, t }, oe = e => (e.w & se) > 0, ne = e => (e.n & se) > 0, ae = new WeakMap; let ie = 0, se = 1; const ce = 30; let ue; const de = Symbol(\"\"), pe = Symbol(\"\"); class ReactiveEffect { constructor(e, t = null, r) { this.fn = e, this.scheduler = t, this.active = !0, this.deps = [], this.parent = void 0, function(e, t = X) { t && t.active && t.effects.push(e) }(this, r) } run() { if (!this.active) return this.fn(); let e = ue, t = he; for (; e;) { if (e === this) return; e = e.parent } try { return this.parent = ue, ue = this, he = !0, se = 1 < ++ie, ie e, je = e => Reflect.getPrototypeOf(e); function Re(e, t, r = !1, l = !1) { const o = vt(e = e.__v_raw), n = vt(t); r || (t !== n && me(o, 0, t), me(o, 0, n)); const { has: a } = je(o), i = l ? Te : r ? mt : bt; return a.call(o, t) ? i(e.get(t)) : a.call(o, n) ? i(e.get(n)) : void(e !== o && e.get(t)) } function Fe(e, t = !1) { const r = this.__v_raw, l = vt(r), o = vt(e); return t || (e !== o && me(l, 0, e), me(l, 0, o)), e === o ? r.has(e) : r.has(e) || r.has(o) } function Pe(e, t = !1) { return e = e.__v_raw, !t && me(vt(e), 0, de), Reflect.get(e, \"size\", e) } function De(e) { e = vt(e); const t = vt(this); return je(t) .has.call(t, e) || (t.add(e), xe(t, \"add\", e, e)), this } function Ne(e, t) { t = vt(t); const r = vt(this), { has: l, get: o } = je(r); let n = l.call(r, e); n || (e = vt(e), n = l.call(r, e)); const a = o.call(r, e); return r.set(e, t), n ? W(t, a) && xe(r, \"set\", e, t) : xe(r, \"add\", e, t), this } function qe(e) { const t = vt(this), { has: r, get: l } = je(t); let o = r.call(t, e); o || (e = vt(e), o = r.call(t, e)), l && l.call(t, e); const n = t[\"delete\"](e); return o && xe(t, \"delete\", e, void 0), n } function Ue() { const e = vt(this), t = 0 !== e.size, r = e.clear(); return t && xe(e, \"clear\", void 0, void 0), r } function Ke(e, t) { return function(r, l) { const o = this, n = o.__v_raw, a = vt(n), i = t ? Te : e ? mt : bt; return !e && me(a, 0, de), n.forEach(((e, t) => r.call(l, i(e), i(t), o))) } } function We(e, t, r) { return function(...l) { const o = this.__v_raw, n = vt(o), a = C(n), i = \"entries\" === e || e === Symbol.iterator && a, s = \"keys\" === e && a, c = o[e](...l), u = r ? Te : t ? mt : bt; return !t && me(n, 0, s ? pe : de), { next() { const { value: e, done: t } = c.next(); return t ? { value: e, done: t } : { value: i ? [u(e[0]), u(e[1])] : u(e), done: t } }, [Symbol.iterator]() { return this } } } } function Ye(e) { return function(...t) { return \"delete\" !== e && this } } function Qe() { const e = { get(e) { return Re(this, e) }, get size() { return Pe(this) }, has: Fe, add: De, set: Ne, \"delete\": qe, clear: Ue, forEach: Ke(!1, !1) }, t = { get(e) { return Re(this, e, !1, !0) }, get size() { return Pe(this) }, has: Fe, add: De, set: Ne, \"delete\": qe, clear: Ue, forEach: Ke(!1, !0) }, r = { get(e) { return Re(this, e, !0) }, get size() { return Pe(this, !0) }, has(e) { return Fe.call(this, e, !0) }, add: Ye(\"add\"), set: Ye(\"set\"), \"delete\": Ye(\"delete\"), clear: Ye(\"clear\"), forEach: Ke(!0, !1) }, l = { get(e) { return Re(this, e, !0, !0) }, get size() { return Pe(this, !0) }, has(e) { return Fe.call(this, e, !0) }, add: Ye(\"add\"), set: Ye(\"set\"), \"delete\": Ye(\"delete\"), clear: Ye(\"clear\"), forEach: Ke(!0, !0) }; return [\"keys\", \"values\", \"entries\", Symbol.iterator].forEach((o => { e[o] = We(o, !1, !1), r[o] = We(o, !0, !1), t[o] = We(o, !1, !0), l[o] = We(o, !0, !0) })), [e, r, t, l] } const [$e, Ge, Ze, Je] = Qe(); function Xe(e, t) { const r = t ? e ? Je : Ze : e ? Ge : $e; return (t, l, o) => \"__v_isReactive\" === l ? !e : \"__v_isReadonly\" === l ? e : \"__v_raw\" === l ? t : Reflect.get(k(r, l) && l in t ? r : t, l, o) } const et = { get: Xe(!1, !1) }, tt = { get: Xe(!1, !0) }, rt = { get: Xe(!0, !1) }, lt = new WeakMap, ot = new WeakMap, nt = new WeakMap, at = new WeakMap; function it(e) { return pt(e) ? e : ut(e, !1, Ve, et, lt) } function st(e) { return ut(e, !1, Ie, tt, ot) } function ct(e) { return ut(e, !0, Oe, rt, nt) } function ut(e, t, r, l, o) { if (!B(e)) return e; if (e.__v_raw && (!t || !e.__v_isReactive)) return e; const n = o.get(e); if (n) return n; const a = (i = e) .__v_skip || !Object.isExtensible(i) ? 0 : function(e) { switch (e) { case \"Object\": case \"Array\": return 1; case \"Map\": case \"Set\": case \"WeakMap\": case \"WeakSet\": return 2; default: return 0 } }(I(i)); var i; if (0 === a) return e; const s = new Proxy(e, 2 === a ? l : r); return o.set(e, s), s } function dt(e) { return pt(e) ? dt(e.__v_raw) : !(!e || !e.__v_isReactive) } function pt(e) { return !(!e || !e.__v_isReadonly) } function ft(e) { return !(!e || !e.__v_isShallow) } function ht(e) { return dt(e) || pt(e) } function vt(e) { const t = e && e.__v_raw; return t ? vt(t) : e } function gt(e) { return Q(e, \"__v_skip\", !0), e } const bt = e => B(e) ? it(e) : e, mt = e => B(e) ? ct(e) : e; function _t(e) { he && ue && _e((e = vt(e)) .dep || (e.dep = le())) } function xt(e, t) { const r = (e = vt(e)) .dep; r && we(r) } function wt(e) { return !(!e || !0 !== e.__v_isRef) } function yt(e) { return zt(e, !1) } function kt(e) { return zt(e, !0) } function zt(e, t) { return wt(e) ? e : new RefImpl(e, t) } class RefImpl { constructor(e, t) { this.__v_isShallow = t, this.dep = void 0, this.__v_isRef = !0, this._rawValue = t ? e : vt(e), this._value = t ? e : bt(e) } get value() { return _t(this), this._value } set value(e) { const t = this.__v_isShallow || ft(e) || pt(e); e = t ? e : vt(e), W(e, this._rawValue) && (this._rawValue = e, this._value = t ? e : bt(e), xt(this)) } } function Ct(e) { xt(e) } function At(e) { return wt(e) ? e.value : e } const Mt = { get: (e, t, r) => At(Reflect.get(e, t, r)), set: (e, t, r, l) => { const o = e[t]; return wt(o) && !wt(r) ? (o.value = r, !0) : Reflect.set(e, t, r, l) } }; function St(e) { return dt(e) ? e : new Proxy(e, Mt) } function Lt(e) { const t = z(e) ? new Array(e.length) : {}; for (const r in e) t[r] = Et(e, r); return t } class ObjectRefImpl { constructor(e, t, r) { this._object = e, this._key = t, this._defaultValue = r, this.__v_isRef = !0 } get value() { const e = this._object[this._key]; return void 0 === e ? this._defaultValue : e } set value(e) { this._object[this._key] = e } get dep() { return e = vt(this._object), t = this._key, null === (r = ae.get(e)) || void 0 === r ? void 0 : r.get(t); var e, t, r } } function Et(e, t, r) { const l = e[t]; return wt(l) ? l : new ObjectRefImpl(e, t, r) } var Bt; class ComputedRefImpl { constructor(e, t, r, l) { this._setter = t, this.dep = void 0, this.__v_isRef = !0, this[Bt] = !1, this._dirty = !0, this.effect = new ReactiveEffect(e, (() => { this._dirty || (this._dirty = !0, xt(this)) })), this.effect.computed = this, this.effect.active = this._cacheable = !l, this.__v_isReadonly = r } get value() { const e = vt(this); return _t(e), !e._dirty && e._cacheable || (e._dirty = !1, e._value = e.effect.run()), e._value } set value(e) { this._setter(e) } } function Ht(e, t, r = !1) { let l, o; const n = S(e); n ? (l = e, o = v) : (l = e.get, o = e.set); return new ComputedRefImpl(l, o, n || !o, r) } function Vt(e, t, r, l) { let o; try { o = l ? e(...l) : e() } catch (n) { It(n, t, r) } return o } function Ot(e, t, r, l) { if (S(e)) { const o = Vt(e, t, r, l); return o && H(o) && o[\"catch\"]((e => { It(e, t, r) })), o } const o = []; for (let n = 0; n < e.length; n++) o.push(Ot(e[n], t, r, l)); return o } function It(e, t, r, l = !0) { t && t.vnode; if (t) { let l = t.parent; const o = t.proxy, n = r; for (; l;) { const t = l.ec; if (t) for (let r = 0; r < t.length; r++) if (!1 === t[r](e, o, n)) return; l = l.parent } const a = t.appContext.config.errorHandler; if (a) return void Vt(a, null, 10, [e, o, n]) } } Bt = \"__v_isReadonly\"; let Tt = !1, jt = !1; const Rt = []; let Ft = 0; const Pt = []; let Dt = null, Nt = 0; const qt = Promise.resolve(); let Ut = null; function Kt(e) { const t = Ut || qt; return e ? t.then(this ? e.bind(this) : e) : t } function Wt(e) { Rt.length && Rt.includes(e, Tt && e.allowRecurse ? Ft + 1 : Ft) || (null == e.id ? Rt.push(e) : Rt.splice(function(e) { let t = Ft + 1, r = Rt.length; for (; t < r;) { const l = t + r >>> 1; Gt(Rt[l]) < e ? t = l + 1 : r = l } return t }(e.id), 0, e), Yt()) } function Yt() { Tt || jt || (jt = !0, Ut = qt.then(Jt)) } function Qt(e, t = (Tt ? Ft + 1 : 0)) { for (; t < Rt.length; t++) { const e = Rt[t]; e && e.pre && (Rt.splice(t, 1), t--, e()) } } function $t(e) { if (Pt.length) { const e = [...new Set(Pt)]; if (Pt.length = 0, Dt) return void Dt.push(...e); for (Dt = e, Dt.sort(((e, t) => Gt(e) - Gt(t))), Nt = 0; Nt < Dt.length; Nt++) Dt[Nt](); Dt = null, Nt = 0 } } const Gt = e => null == e.id ? Infinity : e.id, Zt = (e, t) => { const r = Gt(e) - Gt(t); if (0 === r) { if (e.pre && !t.pre) return -1; if (t.pre && !e.pre) return 1 } return r }; function Jt(e) { jt = !1, Tt = !0, Rt.sort(Zt); try { for (Ft = 0; Ft < Rt.length; Ft++) { const e = Rt[Ft]; e && !1 !== e.active && Vt(e, null, 14) } } finally { Ft = 0, Rt.length = 0, $t(), Tt = !1, Ut = null, (Rt.length || Pt.length) && Jt() } } function Xt(e, t, ...r) { if (e.isUnmounted) return; const l = e.vnode.props || f; let o = r; const n = t.startsWith(\"update:\"), a = n && t.slice(7); if (a && a in l) { const e = `${\"modelValue\"===a?\"model\":a}Modifiers`, { number: t, trim: n } = l[e] || f; n && (o = r.map((e => L(e) ? e.trim() : e))), t && (o = r.map($)) } let i, s = l[i = K(t)] || l[i = K(D(t))]; !s && n && (s = l[i = K(q(t))]), s && Ot(s, e, 6, o); const c = l[i + \"Once\"]; if (c) { if (e.emitted) { if (e.emitted[i]) return } else e.emitted = {}; e.emitted[i] = !0, Ot(c, e, 6, o) } } function er(e, t, r = !1) { const l = t.emitsCache, o = l.get(e); if (void 0 !== o) return o; const n = e.emits; let a = {}, i = !1; if (!S(e)) { const l = e => { const r = er(e, t, !0); r && (i = !0, x(a, r)) }; !r && t.mixins.length && t.mixins.forEach(l), e[\"extends\"] && l(e[\"extends\"]), e.mixins && e.mixins.forEach(l) } return n || i ? (z(n) ? n.forEach((e => a[e] = null)) : x(a, n), B(e) && l.set(e, a), a) : (B(e) && l.set(e, null), null) } function tr(e, t) { return !(!e || !m(t)) && (t = t.slice(2) .replace(/Once$/, \"\"), k(e, t[0].toLowerCase() + t.slice(1)) || k(e, q(t)) || k(e, t)) } let rr = null, lr = null; function or(e) { const t = rr; return rr = e, lr = e && e.type.__scopeId || null, t } function nr(e) { lr = e } function ar() { lr = null } function ir(e, t = rr, r) { if (!t) return e; if (e._n) return e; const l = (...r) => { l._d && io(-1); const o = or(t); let n; try { n = e(...r) } finally { or(o), l._d && io(1) } return n }; return l._n = !0, l._c = !0, l._d = !0, l } function sr(e) { const { type: t, vnode: r, proxy: l, withProxy: o, props: n, propsOptions: [a], slots: i, attrs: s, emit: c, render: u, renderCache: d, data: p, setupState: f, ctx: h, inheritAttrs: v } = e; let g, b; const m = or(e); try { if (4 & r.shapeFlag) { const e = o || l; g = ko(u.call(e, e, d, n, f, p, h)), b = s } else { const e = t; 0, g = ko(e.length > 1 ? e(n, { attrs: s, slots: i, emit: c }) : e(n, null)), b = t.props ? s : cr(s) } } catch (w) { lo.length = 0, It(w, e, 1), g = mo(to) } let x = g; if (b && !1 !== v) { const e = Object.keys(b), { shapeFlag: t } = x; e.length && 7 & t && (a && e.some(_) && (b = ur(b, a)), x = _o(x, b)) } return r.dirs && (x = _o(x), x.dirs = x.dirs ? x.dirs.concat(r.dirs) : r.dirs), r.transition && (x.transition = r.transition), g = x, or(m), g } const cr = e => { let t; for (const r in e)(\"class\" === r || \"style\" === r || m(r)) && ((t || (t = {}))[r] = e[r]); return t }, ur = (e, t) => { const r = {}; for (const l in e) _(l) && l.slice(9) in t || (r[l] = e[l]); return r }; function dr(e, t, r) { const l = Object.keys(t); if (l.length !== Object.keys(e) .length) return !0; for (let o = 0; o < l.length; o++) { const n = l[o]; if (t[n] !== e[n] && !tr(r, n)) return !0 } return !1 } const pr = e => e.__isSuspense; function fr(e, t) { if (Eo) { let r = Eo.provides; const l = Eo.parent && Eo.parent.provides; l === r && (r = Eo.provides = Object.create(l)), r[e] = t } else; } function hr(e, t, r = !1) { const l = Eo || rr; if (l) { const o = null == l.parent ? l.vnode.appContext && l.vnode.appContext.provides : l.parent.provides; if (o && e in o) return o[e]; if (arguments.length > 1) return r && S(t) ? t.call(l.proxy) : t } } function vr(e, t) { return mr(e, null, t) } const gr = {}; function br(e, t, r) { return mr(e, t, r) } function mr(e, t, { immediate: r, deep: l, flush: o, onTrack: n, onTrigger: a } = f) { const i = te() === (null == Eo ? void 0 : Eo.scope) ? Eo : null; let s, c, u = !1, d = !1; if (wt(e) ? (s = () => e.value, u = ft(e)) : dt(e) ? (s = () => e, l = !0) : z(e) ? (d = !0, u = e.some((e => dt(e) || ft(e))), s = () => e.map((e => wt(e) ? e.value : dt(e) ? wr(e) : S(e) ? Vt(e, i, 2) : void 0))) : s = S(e) ? t ? () => Vt(e, i, 2) : () => { if (!i || !i.isUnmounted) return c && c(), Ot(e, i, 3, [h]) } : v, t && l) { const e = s; s = () => wr(e()) } let p, h = e => { c = _.onStop = () => { Vt(e, i, 4) } }; if (To) { if (h = v, t ? r && Ot(t, i, 3, [s(), d ? [] : void 0, h]) : s(), \"sync\" !== o) return v; { const e = Wo(); p = e.__watcherHandles || (e.__watcherHandles = []) } } let g = d ? new Array(e.length) .fill(gr) : gr; const b = () => { if (_.active) if (t) { const e = _.run(); (l || u || (d ? e.some(((e, t) => W(e, g[t]))) : W(e, g))) && (c && c(), Ot(t, i, 3, [e, g === gr ? void 0 : d && g[0] === gr ? [] : g, h]), g = e) } else _.run() }; let m; b.allowRecurse = !!t, \"sync\" === o ? m = b : \"post\" === o ? m = () => Nl(b, i && i.suspense) : (b.pre = !0, i && (b.id = i.uid), m = () => Wt(b)); const _ = new ReactiveEffect(s, m); t ? r ? b() : g = _.run() : \"post\" === o ? Nl(_.run.bind(_), i && i.suspense) : _.run(); const x = () => { _.stop(), i && i.scope && w(i.scope.effects, _) }; return p && p.push(x), x } function _r(e, t, r) { const l = this.proxy, o = L(e) ? e.includes(\".\") ? xr(l, e) : () => l[e] : e.bind(l, l); let n; S(t) ? n = t : (n = t.handler, r = t); const a = Eo; Ho(this); const i = mr(o, n.bind(l), r); return a ? Ho(a) : Vo(), i } function xr(e, t) { const r = t.split(\".\"); return () => { let t = e; for (let e = 0; e < r.length && t; e++) t = t[r[e]]; return t } } function wr(e, t) { if (!B(e) || e.__v_skip) return e; if ((t = t || new Set) .has(e)) return e; if (t.add(e), wt(e)) wr(e.value, t); else if (z(e)) for (let r = 0; r < e.length; r++) wr(e[r], t); else if (A(e) || C(e)) e.forEach((e => { wr(e, t) })); else if (T(e)) for (const r in e) wr(e[r], t); return e } function yr() { const e = { isMounted: !1, isLeaving: !1, isUnmounting: !1, leavingVNodes: new Map }; return Dr((() => { e.isMounted = !0 })), Ur((() => { e.isUnmounting = !0 })), e } const kr = [Function, Array], zr = { name: \"BaseTransition\", props: { mode: String, appear: Boolean, persisted: Boolean, onBeforeEnter: kr, onEnter: kr, onAfterEnter: kr, onEnterCancelled: kr, onBeforeLeave: kr, onLeave: kr, onAfterLeave: kr, onLeaveCancelled: kr, onBeforeAppear: kr, onAppear: kr, onAfterAppear: kr, onAppearCancelled: kr }, setup(e, { slots: t }) { const r = Bo(), l = yr(); let o; return () => { const n = t[\"default\"] && Er(t[\"default\"](), !0); if (!n || !n.length) return; let a = n[0]; if (n.length > 1) for (const e of n) if (e.type !== to) { a = e; break } const i = vt(e), { mode: s } = i; if (l.isLeaving) return Mr(a); const c = Sr(a); if (!c) return Mr(a); const u = Ar(c, i, l, r); Lr(c, u); const d = r.subTree, p = d && Sr(d); let f = !1; const { getTransitionKey: h } = c.type; if (h) { const e = h(); void 0 === o ? o = e : e !== o && (o = e, f = !0) } if (p && p.type !== to && (!fo(c, p) || f)) { const e = Ar(p, i, l, r); if (Lr(p, e), \"out-in\" === s) return l.isLeaving = !0, e.afterLeave = () => { l.isLeaving = !1, !1 !== r.update.active && r.update() }, Mr(a); \"in-out\" === s && c.type !== to && (e.delayLeave = (e, t, r) => { Cr(l, p)[String(p.key)] = p, e._leaveCb = () => { t(), e._leaveCb = void 0, delete u.delayedLeave }, u.delayedLeave = r }) } return a } } }; function Cr(e, t) { const { leavingVNodes: r } = e; let l = r.get(t.type); return l || (l = Object.create(null), r.set(t.type, l)), l } function Ar(e, t, r, l) { const { appear: o, mode: n, persisted: a = !1, onBeforeEnter: i, onEnter: s, onAfterEnter: c, onEnterCancelled: u, onBeforeLeave: d, onLeave: p, onAfterLeave: f, onLeaveCancelled: h, onBeforeAppear: v, onAppear: g, onAfterAppear: b, onAppearCancelled: m } = t, _ = String(e.key), x = Cr(r, e), w = (e, t) => { e && Ot(e, l, 9, t) }, y = (e, t) => { const r = t[1]; w(e, t), z(e) ? e.every((e => e.length { n || (n = !0, l(), w(r ? h : f, [t]), t._leaveCb = void 0, x[o] === e && delete x[o]) }; x[o] = e, p ? y(p, [t, a]) : a() }, clone: e => Ar(e, t, r, l) }; return k } function Mr(e) { if (Vr(e)) return (e = _o(e)) .children = null, e } function Sr(e) { return Vr(e) ? e.children ? e.children[0] : void 0 : e } function Lr(e, t) { 6 & e.shapeFlag && e.component ? Lr(e.component.subTree, t) : 128 & e.shapeFlag ? (e.ssContent.transition = t.clone(e.ssContent), e.ssFallback.transition = t.clone(e.ssFallback)) : e.transition = t } function Er(e, t = !1, r) { let l = [], o = 0; for (let n = 0; n < e.length; n++) { let a = e[n]; const i = null == r ? a.key : String(r) + String(null != a.key ? a.key : n); a.type === Xl ? (128 & a.patchFlag && o++, l = l.concat(Er(a.children, t, i))) : (t || a.type !== to) && l.push(null != i ? _o(a, { key: i }) : a) } if (o > 1) for (let n = 0; n < l.length; n++) l[n].patchFlag = -2; return l } function Br(e) { return S(e) ? { setup: e, name: e.name } : e } const Hr = e => !!e.type.__asyncLoader, Vr = e => e.type.__isKeepAlive; function Or(e, t) { Tr(e, \"a\", t) } function Ir(e, t) { Tr(e, \"da\", t) } function Tr(e, t, r = Eo) { const l = e.__wdc || (e.__wdc = () => { let t = r; for (; t;) { if (t.isDeactivated) return; t = t.parent } return e() }); if (Rr(t, l, r), r) { let e = r.parent; for (; e && e.parent;) Vr(e.parent.vnode) && jr(l, t, r, e), e = e.parent } } function jr(e, t, r, l) { const o = Rr(t, e, l, !0); Kr((() => { w(l[t], o) }), r) } function Rr(e, t, r = Eo, l = !1) { if (r) { const o = r[e] || (r[e] = []), n = t.__weh || (t.__weh = (...l) => { if (r.isUnmounted) return; ge(), Ho(r); const o = Ot(t, r, e, l); return Vo(), be(), o }); return l ? o.unshift(n) : o.push(n), n } } const Fr = e => (t, r = Eo) => (!To || \"sp\" === e) && Rr(e, ((...e) => t(...e)), r), Pr = Fr(\"bm\"), Dr = Fr(\"m\"), Nr = Fr(\"bu\"), qr = Fr(\"u\"), Ur = Fr(\"bum\"), Kr = Fr(\"um\"), Wr = Fr(\"sp\"), Yr = Fr(\"rtg\"), Qr = Fr(\"rtc\"); function $r(e, t = Eo) { Rr(\"ec\", e, t) } function Gr(e, t) { const r = rr; if (null === r) return e; const l = Po(r) || r.proxy, o = e.dirs || (e.dirs = []); for (let n = 0; n < t.length; n++) { let [e, r, a, i = f] = t[n]; e && (S(e) && (e = { mounted: e, updated: e }), e.deep && wr(r), o.push({ dir: e, instance: l, value: r, oldValue: void 0, arg: a, modifiers: i })) } return e } function Zr(e, t, r, l) { const o = e.dirs, n = t && t.dirs; for (let a = 0; a < o.length; a++) { const i = o[a]; n && (i.oldValue = n[a].value); let s = i.dir[l]; s && (ge(), Ot(s, r, 8, [e.el, i, e, t]), be()) } } const Jr = \"components\", Xr = \"directives\"; function el(e, t) { return ll(Jr, e, !0, t) || e } const tl = Symbol(); function rl(e) { return L(e) ? ll(Jr, e, !1) || e : e || tl } function ll(e, t, r = !0, l = !1) { const o = rr || Eo; if (o) { const r = o.type; if (e === Jr) { const e = function(e, t = !0) { return S(e) ? e.displayName || e.name : e.name || t && e.__name }(r, !1); if (e && (e === t || e === D(t) || e === U(D(t)))) return r } const n = ol(o[e] || r[e], t) || ol(o.appContext[e], t); return !n && l ? r : n } } function ol(e, t) { return e && (e[t] || e[D(t)] || e[U(D(t))]) } function nl(e, t, r, l) { let o; const n = r && r[l]; if (z(e) || L(e)) { o = new Array(e.length); for (let r = 0, l = e.length; r < l; r++) o[r] = t(e[r], r, void 0, n && n[r]) } else if (\"number\" == typeof e) { o = new Array(e); for (let r = 0; r < e; r++) o[r] = t(r + 1, r, void 0, n && n[r]) } else if (B(e)) if (e[Symbol.iterator]) o = Array.from(e, ((e, r) => t(e, r, void 0, n && n[r]))); else { const r = Object.keys(e); o = new Array(r.length); for (let l = 0, a = r.length; l < a; l++) { const a = r[l]; o[l] = t(e[a], a, l, n && n[l]) } } else o = []; return r && (r[l] = o), o } function al(e, t) { for (let r = 0; r < t.length; r++) { const l = t[r]; if (z(l)) for (let t = 0; t < l.length; t++) e[l[t].name] = l[t].fn; else l && (e[l.name] = l.key ? (...e) => { const t = l.fn(...e); return t && (t.key = l.key), t } : l.fn) } return e } function il(e, t, r = {}, l, o) { if (rr.isCE || rr.parent && Hr(rr.parent) && rr.parent.isCE) return \"default\" !== t && (r.name = t), mo(\"slot\", r, l && l()); let n = e[t]; n && n._c && (n._d = !1), no(); const a = n && sl(n(r)), i = uo(Xl, { key: r.key || a && a.key || `_${t}` }, a || (l ? l() : []), a && 1 === e._ ? 64 : -2); return !o && i.scopeId && (i.slotScopeIds = [i.scopeId + \"-s\"]), n && n._c && (n._d = !0), i } function sl(e) { return e.some((e => !po(e) || e.type !== to && !(e.type === Xl && !sl(e.children)))) ? e : null } const cl = e => e ? Oo(e) ? Po(e) || e.proxy : cl(e.parent) : null, ul = x(Object.create(null), { $: e => e, $el: e => e.vnode.el, $data: e => e.data, $props: e => e.props, $attrs: e => e.attrs, $slots: e => e.slots, $refs: e => e.refs, $parent: e => cl(e.parent), $root: e => cl(e.root), $emit: e => e.emit, $options: e => bl(e), $forceUpdate: e => e.f || (e.f = () => Wt(e.update)), $nextTick: e => e.n || (e.n = Kt.bind(e.proxy)), $watch: e => _r.bind(e) }), dl = (e, t) => e !== f && !e.__isScriptSetup && k(e, t), pl = { get({ _: e }, t) { const { ctx: r, setupState: l, data: o, props: n, accessCache: a, type: i, appContext: s } = e; let c; if (\"$\" !== t[0]) { const i = a[t]; if (void 0 !== i) switch (i) { case 1: return l[t]; case 2: return o[t]; case 4: return r[t]; case 3: return n[t] } else { if (dl(l, t)) return a[t] = 1, l[t]; if (o !== f && k(o, t)) return a[t] = 2, o[t]; if ((c = e.propsOptions[0]) && k(c, t)) return a[t] = 3, n[t]; if (r !== f && k(r, t)) return a[t] = 4, r[t]; fl && (a[t] = 0) } } const u = ul[t]; let d, p; return u ? (\"$attrs\" === t && me(e, 0, t), u(e)) : (d = i.__cssModules) && (d = d[t]) ? d : r !== f && k(r, t) ? (a[t] = 4, r[t]) : (p = s.config.globalProperties, k(p, t) ? p[t] : void 0) }, set({ _: e }, t, r) { const { data: l, setupState: o, ctx: n } = e; return dl(o, t) ? (o[t] = r, !0) : l !== f && k(l, t) ? (l[t] = r, !0) : !k(e.props, t) && ((\"$\" !== t[0] || !(t.slice(1) in e)) && (n[t] = r, !0)) }, has({ _: { data: e, setupState: t, accessCache: r, ctx: l, appContext: o, propsOptions: n } }, a) { let i; return !!r[a] || e !== f && k(e, a) || dl(t, a) || (i = n[0]) && k(i, a) || k(l, a) || k(ul, a) || k(o.config.globalProperties, a) }, defineProperty(e, t, r) { return null != r.get ? e._.accessCache[t] = 0 : k(r, \"value\") && this.set(e, t, r.value, null), Reflect.defineProperty(e, t, r) } }; let fl = !0; function hl(e) { const t = bl(e), r = e.proxy, l = e.ctx; fl = !1, t.beforeCreate && vl(t.beforeCreate, e, \"bc\"); const { data: o, computed: n, methods: a, watch: i, provide: s, inject: c, created: u, beforeMount: d, mounted: p, beforeUpdate: f, updated: h, activated: g, deactivated: b, beforeDestroy: m, beforeUnmount: _, destroyed: x, unmounted: w, render: y, renderTracked: k, renderTriggered: C, errorCaptured: A, serverPrefetch: M, expose: L, inheritAttrs: E, components: H, directives: V, filters: O } = t; if (c && function(e, t, r = v, l = !1) { z(e) && (e = wl(e)); for (const o in e) { const r = e[o]; let n; n = B(r) ? \"default\" in r ? hr(r.from || o, r[\"default\"], !0) : hr(r.from || o) : hr(r), wt(n) && l ? Object.defineProperty(t, o, { enumerable: !0, configurable: !0, get: () => n.value, set: e => n.value = e }) : t[o] = n } }(c, l, null, e.appContext.config.unwrapInjectedRef), a) for (const v in a) { const e = a[v]; S(e) && (l[v] = e.bind(r)) } if (o) { const t = o.call(r, r); B(t) && (e.data = it(t)) } if (fl = !0, n) for (const z in n) { const e = n[z], t = S(e) ? e.bind(r, r) : S(e.get) ? e.get.bind(r, r) : v, o = !S(e) && S(e.set) ? e.set.bind(r) : v, a = Do({ get: t, set: o }); Object.defineProperty(l, z, { enumerable: !0, configurable: !0, get: () => a.value, set: e => a.value = e }) } if (i) for (const v in i) gl(i[v], l, r, v); if (s) { const e = S(s) ? s.call(r) : s; Reflect.ownKeys(e) .forEach((t => { fr(t, e[t]) })) } function I(e, t) { z(t) ? t.forEach((t => e(t.bind(r)))) : t && e(t.bind(r)) } if (u && vl(u, e, \"c\"), I(Pr, d), I(Dr, p), I(Nr, f), I(qr, h), I(Or, g), I(Ir, b), I($r, A), I(Qr, k), I(Yr, C), I(Ur, _), I(Kr, w), I(Wr, M), z(L)) if (L.length) { const t = e.exposed || (e.exposed = {}); L.forEach((e => { Object.defineProperty(t, e, { get: () => r[e], set: t => r[e] = t }) })) } else e.exposed || (e.exposed = {}); y && e.render === v && (e.render = y), null != E && (e.inheritAttrs = E), H && (e.components = H), V && (e.directives = V) } function vl(e, t, r) { Ot(z(e) ? e.map((e => e.bind(t.proxy))) : e.bind(t.proxy), t, r) } function gl(e, t, r, l) { const o = l.includes(\".\") ? xr(r, l) : () => r[l]; if (L(e)) { const r = t[e]; S(r) && br(o, r) } else if (S(e)) br(o, e.bind(r)); else if (B(e)) if (z(e)) e.forEach((e => gl(e, t, r, l))); else { const l = S(e.handler) ? e.handler.bind(r) : t[e.handler]; S(l) && br(o, l, e) } } function bl(e) { const t = e.type, { mixins: r, \"extends\": l } = t, { mixins: o, optionsCache: n, config: { optionMergeStrategies: a } } = e.appContext, i = n.get(t); let s; return i ? s = i : o.length || r || l ? (s = {}, o.length && o.forEach((e => ml(s, e, a, !0))), ml(s, t, a)) : s = t, B(t) && n.set(t, s), s } function ml(e, t, r, l = !1) { const { mixins: o, \"extends\": n } = t; n && ml(e, n, r, !0), o && o.forEach((t => ml(e, t, r, !0))); for (const a in t) if (l && \"expose\" === a); else { const l = _l[a] || r && r[a]; e[a] = l ? l(e[a], t[a]) : t[a] } return e } const _l = { data: xl, props: kl, emits: kl, methods: kl, computed: kl, beforeCreate: yl, created: yl, beforeMount: yl, mounted: yl, beforeUpdate: yl, updated: yl, beforeDestroy: yl, beforeUnmount: yl, destroyed: yl, unmounted: yl, activated: yl, deactivated: yl, errorCaptured: yl, serverPrefetch: yl, components: kl, directives: kl, watch: function(e, t) { if (!e) return t; if (!t) return e; const r = x(Object.create(null), e); for (const l in t) r[l] = yl(e[l], t[l]); return r }, provide: xl, inject: function(e, t) { return kl(wl(e), wl(t)) } }; function xl(e, t) { return t ? e ? function() { return x(S(e) ? e.call(this, this) : e, S(t) ? t.call(this, this) : t) } : t : e } function wl(e) { if (z(e)) { const t = {}; for (let r = 0; r < e.length; r++) t[e[r]] = e[r]; return t } return e } function yl(e, t) { return e ? [...new Set([].concat(e, t))] : t } function kl(e, t) { return e ? x(x(Object.create(null), e), t) : t } function zl(e, t, r, l) { const [o, n] = e.propsOptions; let a, i = !1; if (t) for (let s in t) { if (R(s)) continue; const c = t[s]; let u; o && k(o, u = D(s)) ? n && n.includes(u) ? (a || (a = {}))[u] = c : r[u] = c : tr(e.emitsOptions, s) || s in l && c === l[s] || (l[s] = c, i = !0) } if (n) { const t = vt(r), l = a || f; for (let a = 0; a < n.length; a++) { const i = n[a]; r[i] = Cl(o, t, i, l[i], e, !k(l, i)) } } return i } function Cl(e, t, r, l, o, n) { const a = e[r]; if (null != a) { const e = k(a, \"default\"); if (e && void 0 === l) { const e = a[\"default\"]; if (a.type !== Function && S(e)) { const { propsDefaults: n } = o; r in n ? l = n[r] : (Ho(o), l = n[r] = e.call(null, t), Vo()) } else l = e } a[0] && (n && !e ? l = !1 : !a[1] || \"\" !== l && l !== q(r) || (l = !0)) } return l } function Al(e, t, r = !1) { const l = t.propsCache, o = l.get(e); if (o) return o; const n = e.props, a = {}, i = []; let s = !1; if (!S(e)) { const l = e => { s = !0; const [r, l] = Al(e, t, !0); x(a, r), l && i.push(...l) }; !r && t.mixins.length && t.mixins.forEach(l), e[\"extends\"] && l(e[\"extends\"]), e.mixins && e.mixins.forEach(l) } if (!n && !s) return B(e) && l.set(e, h), h; if (z(n)) for (let u = 0; u < n.length; u++) { const e = D(n[u]); Ml(e) && (a[e] = f) } else if (n) for (const u in n) { const e = D(u); if (Ml(e)) { const t = n[u], r = a[e] = z(t) || S(t) ? { type: t } : Object.assign({}, t); if (r) { const t = El(Boolean, r.type), l = El(String, r.type); r[0] = t > -1, r[1] = l < 0 || t < l, (t > -1 || k(r, \"default\")) && i.push(e) } } } const c = [a, i]; return B(e) && l.set(e, c), c } function Ml(e) { return \"$\" !== e[0] } function Sl(e) { const t = e && e.toString() .match(/^\\s*(function|class) (\\w+)/); return t ? t[2] : null === e ? \"null\" : \"\" } function Ll(e, t) { return Sl(e) === Sl(t) } function El(e, t) { return z(t) ? t.findIndex((t => Ll(t, e))) : S(t) && Ll(t, e) ? 0 : -1 } const Bl = e => \"_\" === e[0] || \"$stable\" === e, Hl = e => z(e) ? e.map(ko) : [ko(e)], Vl = (e, t, r) => { if (t._n) return t; const l = ir(((...e) => Hl(t(...e))), r); return l._c = !1, l }, Ol = (e, t, r) => { const l = e._ctx; for (const o in e) { if (Bl(o)) continue; const r = e[o]; if (S(r)) t[o] = Vl(0, r, l); else if (null != r) { const e = Hl(r); t[o] = () => e } } }, Il = (e, t) => { const r = Hl(t); e.slots[\"default\"] = () => r }, Tl = (e, t) => { if (32 & e.vnode.shapeFlag) { const r = t._; r ? (e.slots = vt(t), Q(t, \"_\", r)) : Ol(t, e.slots = {}) } else e.slots = {}, t && Il(e, t); Q(e.slots, ho, 1) }, jl = (e, t, r) => { const { vnode: l, slots: o } = e; let n = !0, a = f; if (32 & l.shapeFlag) { const e = t._; e ? r && 1 === e ? n = !1 : (x(o, t), r || 1 !== e || delete o._) : (n = !t.$stable, Ol(t, o)), a = t } else t && (Il(e, t), a = { \"default\": 1 }); if (n) for (const i in o) Bl(i) || i in a || delete o[i] }; function Rl() { return { app: null, config: { isNativeTag: g, performance: !1, globalProperties: {}, optionMergeStrategies: {}, errorHandler: void 0, warnHandler: void 0, compilerOptions: {} }, mixins: [], components: {}, directives: {}, provides: Object.create(null), optionsCache: new WeakMap, propsCache: new WeakMap, emitsCache: new WeakMap } } let Fl = 0; function Pl(e, t) { return function(r, l = null) { S(r) || (r = Object.assign({}, r)), null == l || B(l) || (l = null); const o = Rl(), n = new Set; let a = !1; const i = o.app = { _uid: Fl++, _component: r, _props: l, _container: null, _context: o, _instance: null, version: Yo, get config() { return o.config }, set config(e) {}, use: (e, ...t) => (n.has(e) || (e && S(e.install) ? (n.add(e), e.install(i, ...t)) : S(e) && (n.add(e), e(i, ...t))), i), mixin: e => (o.mixins.includes(e) || o.mixins.push(e), i), component: (e, t) => t ? (o.components[e] = t, i) : o.components[e], directive: (e, t) => t ? (o.directives[e] = t, i) : o.directives[e], mount(n, s, c) { if (!a) { const u = mo(r, l); return u.appContext = o, s && t ? t(u, n) : e(u, n, c), a = !0, i._container = n, n.__vue_app__ = i, Po(u.component) || u.component.proxy } }, unmount() { a && (e(null, i._container), delete i._container.__vue_app__) }, provide: (e, t) => (o.provides[e] = t, i) }; return i } } function Dl(e, t, r, l, o = !1) { if (z(e)) return void e.forEach(((e, n) => Dl(e, t && (z(t) ? t[n] : t), r, l, o))); if (Hr(l) && !o) return; const n = 4 & l.shapeFlag ? Po(l.component) || l.component.proxy : l.el, a = o ? null : n, { i: i, r: s } = e, c = t && t.r, u = i.refs === f ? i.refs = {} : i.refs, d = i.setupState; if (null != c && c !== s && (L(c) ? (u[c] = null, k(d, c) && (d[c] = null)) : wt(c) && (c.value = null)), S(s)) Vt(s, i, 12, [a, u]); else { const t = L(s), l = wt(s); if (t || l) { const i = () => { if (e.f) { const r = t ? k(d, s) ? d[s] : u[s] : s.value; o ? z(r) && w(r, n) : z(r) ? r.includes(n) || r.push(n) : t ? (u[s] = [n], k(d, s) && (d[s] = u[s])) : (s.value = [n], e.k && (u[e.k] = s.value)) } else t ? (u[s] = a, k(d, s) && (d[s] = a)) : l && (s.value = a, e.k && (u[e.k] = a)) }; a ? (i.id = -1, Nl(i, r)) : i() } } } const Nl = function(e, t) { var r; t && t.pendingBranch ? z(e) ? t.effects.push(...e) : t.effects.push(e) : (z(r = e) ? Pt.push(...r) : Dt && Dt.includes(r, r.allowRecurse ? Nt + 1 : Nt) || Pt.push(r), Yt()) }; function ql(e) { return function(e, t) { J() .__VUE__ = !0; const { insert: r, remove: l, patchProp: o, createElement: n, createText: a, createComment: i, setText: s, setElementText: c, parentNode: u, nextSibling: d, setScopeId: p = v, insertStaticContent: g } = e, b = (e, t, r, l = null, o = null, n = null, a = !1, i = null, s = !!t.dynamicChildren) => { if (e === t) return; e && !fo(e, t) && (l = X(e), K(e, o, n, !0), e = null), -2 === t.patchFlag && (s = !1, t.dynamicChildren = null); const { type: c, ref: u, shapeFlag: d } = t; switch (c) { case eo: m(e, t, r, l); break; case to: _(e, t, r, l); break; case ro: null == e && x(t, r, l, a); break; case Xl: B(e, t, r, l, o, n, a, i, s); break; default: 1 & d ? z(e, t, r, l, o, n, a, i, s) : 6 & d ? V(e, t, r, l, o, n, a, i, s) : (64 & d || 128 & d) && c.process(e, t, r, l, o, n, a, i, s, te) } null != u && o && Dl(u, e && e.ref, n, t || e, !t) }, m = (e, t, l, o) => { if (null == e) r(t.el = a(t.children), l, o); else { const r = t.el = e.el; t.children !== e.children && s(r, t.children) } }, _ = (e, t, l, o) => { null == e ? r(t.el = i(t.children || \"\"), l, o) : t.el = e.el }, x = (e, t, r, l) => { [e.el, e.anchor] = g(e.children, t, r, l, e.el, e.anchor) }, w = ({ el: e, anchor: t }, l, o) => { let n; for (; e && e !== t;) n = d(e), r(e, l, o), e = n; r(t, l, o) }, y = ({ el: e, anchor: t }) => { let r; for (; e && e !== t;) r = d(e), l(e), e = r; l(t) }, z = (e, t, r, l, o, n, a, i, s) => { a = a || \"svg\" === t.type, null == e ? C(t, r, l, o, n, a, i, s) : S(e, t, o, n, a, i, s) }, C = (e, t, l, a, i, s, u, d) => { let p, f; const { type: h, props: v, shapeFlag: g, transition: b, dirs: m } = e; if (p = e.el = n(e.type, s, v && v.is, v), 8 & g ? c(p, e.children) : 16 & g && M(e.children, p, null, a, i, s && \"foreignObject\" !== h, u, d), m && Zr(e, null, a, \"created\"), A(p, e, e.scopeId, u, a), v) { for (const t in v) \"value\" === t || R(t) || o(p, t, null, v[t], s, e.children, a, i, Z); \"value\" in v && o(p, \"value\", null, v.value), (f = v.onVnodeBeforeMount) && Mo(f, a, e) } m && Zr(e, null, a, \"beforeMount\"); const _ = (!i || i && !i.pendingBranch) && b && !b.persisted; _ && b.beforeEnter(p), r(p, t, l), ((f = v && v.onVnodeMounted) || _ || m) && Nl((() => { f && Mo(f, a, e), _ && b.enter(p), m && Zr(e, null, a, \"mounted\") }), i) }, A = (e, t, r, l, o) => { if (r && p(e, r), l) for (let n = 0; n < l.length; n++) p(e, l[n]); if (o) { if (t === o.subTree) { const t = o.vnode; A(e, t, t.scopeId, t.slotScopeIds, o.parent) } } }, M = (e, t, r, l, o, n, a, i, s = 0) => { for (let c = s; c < e.length; c++) { const s = e[c] = i ? zo(e[c]) : ko(e[c]); b(null, s, t, r, l, o, n, a, i) } }, S = (e, t, r, l, n, a, i) => { const s = t.el = e.el; let { patchFlag: u, dynamicChildren: d, dirs: p } = t; u |= 16 & e.patchFlag; const h = e.props || f, v = t.props || f; let g; r && Ul(r, !1), (g = v.onVnodeBeforeUpdate) && Mo(g, r, t, e), p && Zr(t, e, r, \"beforeUpdate\"), r && Ul(r, !0); const b = n && \"foreignObject\" !== t.type; if (d ? L(e.dynamicChildren, d, s, r, l, b, a) : i || F(e, t, s, null, r, l, b, a, !1), u > 0) { if (16 & u) E(s, t, h, v, r, l, n); else if (2 & u && h[\"class\"] !== v[\"class\"] && o(s, \"class\", null, v[\"class\"], n), 4 & u && o(s, \"style\", h.style, v.style, n), 8 & u) { const a = t.dynamicProps; for (let t = 0; t < a.length; t++) { const i = a[t], c = h[i], u = v[i]; u === c && \"value\" !== i || o(s, i, c, u, n, e.children, r, l, Z) } } 1 & u && e.children !== t.children && c(s, t.children) } else i || null != d || E(s, t, h, v, r, l, n); ((g = v.onVnodeUpdated) || p) && Nl((() => { g && Mo(g, r, t, e), p && Zr(t, e, r, \"updated\") }), l) }, L = (e, t, r, l, o, n, a) => { for (let i = 0; i < t.length; i++) { const s = e[i], c = t[i], d = s.el && (s.type === Xl || !fo(s, c) || 70 & s.shapeFlag) ? u(s.el) : r; b(s, c, d, null, l, o, n, a, !0) } }, E = (e, t, r, l, n, a, i) => { if (r !== l) { if (r !== f) for (const s in r) R(s) || s in l || o(e, s, r[s], null, i, t.children, n, a, Z); for (const s in l) { if (R(s)) continue; const c = l[s], u = r[s]; c !== u && \"value\" !== s && o(e, s, u, c, i, t.children, n, a, Z) } \"value\" in l && o(e, \"value\", r.value, l.value) } }, B = (e, t, l, o, n, i, s, c, u) => { const d = t.el = e ? e.el : a(\"\"), p = t.anchor = e ? e.anchor : a(\"\"); let { patchFlag: f, dynamicChildren: h, slotScopeIds: v } = t; v && (c = c ? c.concat(v) : v), null == e ? (r(d, l, o), r(p, l, o), M(t.children, l, p, n, i, s, c, u)) : f > 0 && 64 & f && h && e.dynamicChildren ? (L(e.dynamicChildren, h, l, n, i, s, c), (null != t.key || n && t === n.subTree) && Kl(e, t, !0)) : F(e, t, l, p, n, i, s, c, u) }, V = (e, t, r, l, o, n, a, i, s) => { t.slotScopeIds = i, null == e ? 512 & t.shapeFlag ? o.ctx.activate(t, r, l, a, s) : O(t, r, l, o, n, a, s) : I(e, t, s) }, O = (e, t, r, l, o, n, a) => { const i = e.component = function(e, t, r) { const l = e.type, o = (t ? t.appContext : e.appContext) || So, n = { uid: Lo++, vnode: e, type: l, parent: t, appContext: o, root: null, next: null, subTree: null, effect: null, update: null, scope: new EffectScope(!0), render: null, proxy: null, exposed: null, exposeProxy: null, withProxy: null, provides: t ? t.provides : Object.create(o.provides), accessCache: null, renderCache: [], components: null, directives: null, propsOptions: Al(l, o), emitsOptions: er(l, o), emit: null, emitted: null, propsDefaults: f, inheritAttrs: l.inheritAttrs, ctx: f, data: f, props: f, attrs: f, slots: f, refs: f, setupState: f, setupContext: null, suspense: r, suspenseId: r ? r.pendingId : 0, asyncDep: null, asyncResolved: !1, isMounted: !1, isUnmounted: !1, isDeactivated: !1, bc: null, c: null, bm: null, m: null, bu: null, u: null, um: null, bum: null, da: null, a: null, rtg: null, rtc: null, ec: null, sp: null }; n.ctx = { _: n }, n.root = t ? t.root : n, n.emit = Xt.bind(null, n), e.ce && e.ce(n); return n }(e, l, o); if (Vr(e) && (i.ctx.renderer = te), function(e, t = !1) { To = t; const { props: r, children: l } = e.vnode, o = Oo(e); (function(e, t, r, l = !1) { const o = {}, n = {}; Q(n, ho, 1), e.propsDefaults = Object.create(null), zl(e, t, o, n); for (const a in e.propsOptions[0]) a in o || (o[a] = void 0); r ? e.props = l ? o : st(o) : e.type.props ? e.props = o : e.props = n, e.attrs = n })(e, r, o, t), Tl(e, l); const n = o ? function(e, t) { const r = e.type; e.accessCache = Object.create(null), e.proxy = gt(new Proxy(e.ctx, pl)); const { setup: l } = r; if (l) { const r = e.setupContext = l.length > 1 ? Fo(e) : null; Ho(e), ge(); const o = Vt(l, e, 0, [e.props, r]); if (be(), Vo(), H(o)) { if (o.then(Vo, Vo), t) return o.then((r => { jo(e, r, t) }))[\"catch\"]((t => { It(t, e, 0) })); e.asyncDep = o } else jo(e, o, t) } else Ro(e, t) }(e, t) : void 0; To = !1 }(i), i.asyncDep) { if (o && o.registerDep(i, T), !e.el) { const e = i.subTree = mo(to); _(null, e, t, r) } } else T(i, e, t, r, o, n, a) }, I = (e, t, r) => { const l = t.component = e.component; if (function(e, t, r) { const { props: l, children: o, component: n } = e, { props: a, children: i, patchFlag: s } = t, c = n.emitsOptions; if (t.dirs || t.transition) return !0; if (!(r && s >= 0)) return !(!o && !i || i && i.$stable) || l !== a && (l ? !a || dr(l, a, c) : !!a); if (1024 & s) return !0; if (16 & s) return l ? dr(l, a, c) : !!a; if (8 & s) { const e = t.dynamicProps; for (let t = 0; t < e.length; t++) { const r = e[t]; if (a[r] !== l[r] && !tr(c, r)) return !0 } } return !1 }(e, t, r)) { if (l.asyncDep && !l.asyncResolved) return void j(l, t, r); l.next = t, function(e) { const t = Rt.indexOf(e); t > Ft && Rt.splice(t, 1) }(l.update), l.update() } else t.el = e.el, l.vnode = t }, T = (e, t, r, l, o, n, a) => { const i = () => { if (e.isMounted) { let t, { next: r, bu: l, u: i, parent: s, vnode: c } = e, d = r; Ul(e, !1), r ? (r.el = c.el, j(e, r, a)) : r = c, l && Y(l), (t = r.props && r.props.onVnodeBeforeUpdate) && Mo(t, s, r, c), Ul(e, !0); const p = sr(e), f = e.subTree; e.subTree = p, b(f, p, u(f.el), X(f), e, o, n), r.el = p.el, null === d && function({ vnode: e, parent: t }, r) { for (; t && t.subTree === e;)(e = t.vnode) .el = r, t = t.parent }(e, p.el), i && Nl(i, o), (t = r.props && r.props.onVnodeUpdated) && Nl((() => Mo(t, s, r, c)), o) } else { let a; const { el: i, props: s } = t, { bm: c, m: u, parent: d } = e, p = Hr(t); if (Ul(e, !1), c && Y(c), !p && (a = s && s.onVnodeBeforeMount) && Mo(a, d, t), Ul(e, !0), i && le) { const r = () => { e.subTree = sr(e), le(i, e.subTree, e, o, null) }; p ? t.type.__asyncLoader() .then((() => !e.isUnmounted && r())) : r() } else { const a = e.subTree = sr(e); b(null, a, r, l, e, o, n), t.el = a.el } if (u && Nl(u, o), !p && (a = s && s.onVnodeMounted)) { const e = t; Nl((() => Mo(a, d, e)), o) }(256 & t.shapeFlag || d && Hr(d.vnode) && 256 & d.vnode.shapeFlag) && e.a && Nl(e.a, o), e.isMounted = !0, t = r = l = null } }, s = e.effect = new ReactiveEffect(i, (() => Wt(c)), e.scope), c = e.update = () => s.run(); c.id = e.uid, Ul(e, !0), c() }, j = (e, t, r) => { t.component = e; const l = e.vnode.props; e.vnode = t, e.next = null, function(e, t, r, l) { const { props: o, attrs: n, vnode: { patchFlag: a } } = e, i = vt(o), [s] = e.propsOptions; let c = !1; if (!(l || a > 0) || 16 & a) { let l; zl(e, t, o, n) && (c = !0); for (const n in i) t && (k(t, n) || (l = q(n)) !== n && k(t, l)) || (s ? !r || void 0 === r[n] && void 0 === r[l] || (o[n] = Cl(s, i, n, void 0, e, !0)) : delete o[n]); if (n !== i) for (const e in n) t && k(t, e) || (delete n[e], c = !0) } else if (8 & a) { const r = e.vnode.dynamicProps; for (let l = 0; l < r.length; l++) { let a = r[l]; if (tr(e.emitsOptions, a)) continue; const u = t[a]; if (s) if (k(n, a)) u !== n[a] && (n[a] = u, c = !0); else { const t = D(a); o[t] = Cl(s, i, t, u, e, !1) } else u !== n[a] && (n[a] = u, c = !0) } } c && xe(e, \"set\", \"$attrs\") }(e, t.props, l, r), jl(e, t.children, r), ge(), Qt(), be() }, F = (e, t, r, l, o, n, a, i, s = !1) => { const u = e && e.children, d = e ? e.shapeFlag : 0, p = t.children, { patchFlag: f, shapeFlag: h } = t; if (f > 0) { if (128 & f) return void N(u, p, r, l, o, n, a, i, s); if (256 & f) return void P(u, p, r, l, o, n, a, i, s) } 8 & h ? (16 & d && Z(u, o, n), p !== u && c(r, p)) : 16 & d ? 16 & h ? N(u, p, r, l, o, n, a, i, s) : Z(u, o, n, !0) : (8 & d && c(r, \"\"), 16 & h && M(p, r, l, o, n, a, i, s)) }, P = (e, t, r, l, o, n, a, i, s) => { t = t || h; const c = (e = e || h) .length, u = t.length, d = Math.min(c, u); let p; for (p = 0; p < d; p++) { const l = t[p] = s ? zo(t[p]) : ko(t[p]); b(e[p], l, r, null, o, n, a, i, s) } c > u ? Z(e, o, n, !0, !1, d) : M(t, r, l, o, n, a, i, s, d) }, N = (e, t, r, l, o, n, a, i, s) => { let c = 0; const u = t.length; let d = e.length - 1, p = u - 1; for (; c t(r, a); l ? l(e.el, a, o) : o() } else a() }, $ = (e, t) => { let r; for (; e !== t;) r = d(e), l(e), e = r; l(t) }, G = (e, t, r) => { const { bum: l, scope: o, update: n, subTree: a, um: i } = e; l && Y(l), o.stop(), n && (n.active = !1, K(a, e, t, r)), i && Nl(i, t), Nl((() => { e.isUnmounted = !0 }), t), t && t.pendingBranch && !t.isUnmounted && e.asyncDep && !e.asyncResolved && e.suspenseId === t.pendingId && (t.deps--, 0 === t.deps && t.resolve()) }, Z = (e, t, r, l = !1, o = !1, n = 0) => { for (let a = n; a < e.length; a++) K(e[a], t, r, l, o) }, X = e => 6 & e.shapeFlag ? X(e.component.subTree) : 128 & e.shapeFlag ? e.suspense.next() : d(e.anchor || e.el), ee = (e, t, r) => { null == e ? t._vnode && K(t._vnode, null, null, !0) : b(t._vnode || null, e, t, null, null, null, r), Qt(), $t(), t._vnode = e }, te = { p: b, um: K, m: U, r: W, mt: O, mc: M, pc: F, pbc: L, n: X, o: e }; let re, le; t && ([re, le] = t(te)); return { render: ee, hydrate: re, createApp: Pl(ee, re) } }(e) } function Ul({ effect: e, update: t }, r) { e.allowRecurse = t.allowRecurse = r } function Kl(e, t, r = !1) { const l = e.children, o = t.children; if (z(l) && z(o)) for (let n = 0; n < l.length; n++) { const e = l[n]; let t = o[n]; 1 & t.shapeFlag && !t.dynamicChildren && ((t.patchFlag e.__isTeleport, Yl = e => e && (e.disabled || \"\" === e.disabled), Ql = e => \"undefined\" != typeof SVGElement && e instanceof SVGElement, $l = (e, t) => { const r = e && e.to; if (L(r)) { if (t) { return t(r) } return null } return r }; function Gl(e, t, r, { o: { insert: l }, m: o }, n = 2) { 0 === n && l(e.targetAnchor, t, r); const { el: a, anchor: i, shapeFlag: s, children: c, props: u } = e, d = 2 === n; if (d && l(a, t, r), (!d || Yl(u)) && 16 & s) for (let p = 0; p < c.length; p++) o(c[p], t, r, 2); d && l(i, t, r) } const Zl = { __isTeleport: !0, process(e, t, r, l, o, n, a, i, s, c) { const { mc: u, pc: d, pbc: p, o: { insert: f, querySelector: h, createText: v, createComment: g } } = c, b = Yl(t.props); let { shapeFlag: m, children: _, dynamicChildren: x } = t; if (null == e) { const e = t.el = v(\"\"), c = t.anchor = v(\"\"); f(e, r, l), f(c, r, l); const d = t.target = $l(t.props, h), p = t.targetAnchor = v(\"\"); d && (f(p, d), a = a || Ql(d)); const g = (e, t) => { 16 & m && u(_, e, t, o, n, a, i, s) }; b ? g(r, c) : d && g(d, p) } else { t.el = e.el; const l = t.anchor = e.anchor, u = t.target = e.target, f = t.targetAnchor = e.targetAnchor, v = Yl(e.props), g = v ? r : u, m = v ? l : f; if (a = a || Ql(u), x ? (p(e.dynamicChildren, x, g, o, n, a, i), Kl(e, t, !0)) : s || d(e, t, g, m, o, n, a, i, !1), b) v || Gl(t, r, l, c, 1); else if ((t.props && t.props.to) !== (e.props && e.props.to)) { const e = t.target = $l(t.props, h); e && Gl(t, e, null, c, 0) } else v && Gl(t, u, f, c, 1) } Jl(t) }, remove(e, t, r, l, { um: o, o: { remove: n } }, a) { const { shapeFlag: i, children: s, anchor: c, targetAnchor: u, target: d, props: p } = e; if (d && n(u), (a || !Yl(p)) && (n(c), 16 & i)) for (let f = 0; f < s.length; f++) { const e = s[f]; o(e, t, r, !0, !!e.dynamicChildren) } }, move: Gl, hydrate: function(e, t, r, l, o, n, { o: { nextSibling: a, parentNode: i, querySelector: s } }, c) { const u = t.target = $l(t.props, s); if (u) { const s = u._lpa || u.firstChild; if (16 & t.shapeFlag) if (Yl(t.props)) t.anchor = c(a(e), t, i(e), r, l, o, n), t.targetAnchor = s; else { t.anchor = a(e); let i = s; for (; i;) if (i = a(i), i && 8 === i.nodeType && \"teleport anchor\" === i.data) { t.targetAnchor = i, u._lpa = t.targetAnchor && a(t.targetAnchor); break } c(s, t, u, r, l, o, n) } Jl(t) } return t.anchor && a(t.anchor) } }; function Jl(e) { const t = e.ctx; if (t && t.ut) { let r = e.children[0].el; for (; r !== e.targetAnchor;) 1 === r.nodeType && r.setAttribute(\"data-v-owner\", t.uid), r = r.nextSibling; t.ut() } } const Xl = Symbol(void 0), eo = Symbol(void 0), to = Symbol(void 0), ro = Symbol(void 0), lo = []; let oo = null; function no(e = !1) { lo.push(oo = e ? null : []) } let ao = 1; function io(e) { ao += e } function so(e) { return e.dynamicChildren = ao > 0 ? oo || h : null, lo.pop(), oo = lo[lo.length - 1] || null, ao > 0 && oo && oo.push(e), e } function co(e, t, r, l, o, n) { return so(bo(e, t, r, l, o, n, !0)) } function uo(e, t, r, l, o) { return so(mo(e, t, r, l, o, !0)) } function po(e) { return !!e && !0 === e.__v_isVNode } function fo(e, t) { return e.type === t.type && e.key === t.key } const ho = \"__vInternal\", vo = ({ key: e }) => null != e ? e : null, go = ({ ref: e, ref_key: t, ref_for: r }) => null != e ? L(e) || wt(e) || S(e) ? { i: rr, r: e, k: t, f: !!r } : e : null; function bo(e, t = null, r = null, l = 0, o = null, n = (e === Xl ? 0 : 1), a = !1, i = !1) { const s = { __v_isVNode: !0, __v_skip: !0, type: e, props: t, key: t && vo(t), ref: t && go(t), scopeId: lr, slotScopeIds: null, children: r, component: null, suspense: null, ssContent: null, ssFallback: null, dirs: null, transition: null, el: null, anchor: null, target: null, targetAnchor: null, staticCount: 0, shapeFlag: n, patchFlag: l, dynamicProps: o, dynamicChildren: null, appContext: null, ctx: rr }; return i ? (Co(s, r), 128 & n && e.normalize(s)) : r && (s.shapeFlag |= L(r) ? 8 : 16), ao > 0 && !a && oo && (s.patchFlag > 0 || 6 & n) && 32 !== s.patchFlag && oo.push(s), s } const mo = function(e, t = null, l = null, o = 0, n = null, a = !1) { e && e !== tl || (e = to); if (po(e)) { const r = _o(e, t, !0); return l && Co(r, l), ao > 0 && !a && oo && (6 & r.shapeFlag ? oo[oo.indexOf(e)] = r : oo.push(r)), r.patchFlag |= -2, r } s = e, S(s) && \"__vccOpts\" in s && (e = e.__vccOpts); var s; if (t) { t = function(e) { return e ? ht(e) || ho in e ? x({}, e) : e : null }(t); let { \"class\": e, style: l } = t; e && !L(e) && (t[\"class\"] = i(e)), B(l) && (ht(l) && !z(l) && (l = x({}, l)), t.style = r(l)) } const c = L(e) ? 1 : pr(e) ? 128 : Wl(e) ? 64 : B(e) ? 4 : S(e) ? 2 : 0; return bo(e, t, l, o, n, c, a, !0) }; function _o(e, t, r = !1) { const { props: l, ref: o, patchFlag: n, children: a } = e, i = t ? Ao(l || {}, t) : l; return { __v_isVNode: !0, __v_skip: !0, type: e.type, props: i, key: i && vo(i), ref: t && t.ref ? r && o ? z(o) ? o.concat(go(t)) : [o, go(t)] : go(t) : o, scopeId: e.scopeId, slotScopeIds: e.slotScopeIds, children: a, target: e.target, targetAnchor: e.targetAnchor, staticCount: e.staticCount, shapeFlag: e.shapeFlag, patchFlag: t && e.type !== Xl ? -1 === n ? 16 : 16 | n : n, dynamicProps: e.dynamicProps, dynamicChildren: e.dynamicChildren, appContext: e.appContext, dirs: e.dirs, transition: e.transition, component: e.component, suspense: e.suspense, ssContent: e.ssContent && _o(e.ssContent), ssFallback: e.ssFallback && _o(e.ssFallback), el: e.el, anchor: e.anchor, ctx: e.ctx, ce: e.ce } } function xo(e = \" \", t = 0) { return mo(eo, null, e, t) } function wo(e, t) { const r = mo(ro, null, e); return r.staticCount = t, r } function yo(e = \"\", t = !1) { return t ? (no(), uo(to, null, e)) : mo(to, null, e) } function ko(e) { return null == e || \"boolean\" == typeof e ? mo(to) : z(e) ? mo(Xl, null, e.slice()) : \"object\" == typeof e ? zo(e) : mo(eo, null, String(e)) } function zo(e) { return null === e.el && -1 !== e.patchFlag || e.memo ? e : _o(e) } function Co(e, t) { let r = 0; const { shapeFlag: l } = e; if (null == t) t = null; else if (z(t)) r = 16; else if (\"object\" == typeof t) { if (65 & l) { const r = t[\"default\"]; return void(r && (r._c && (r._d = !1), Co(e, r()), r._c && (r._d = !0))) } { r = 32; const l = t._; l || ho in t ? 3 === l && rr && (1 === rr.slots._ ? t._ = 1 : (t._ = 2, e.patchFlag |= 1024)) : t._ctx = rr } } else S(t) ? (t = { \"default\": t, _ctx: rr }, r = 32) : (t = String(t), 64 & l ? (r = 16, t = [xo(t)]) : r = 8); e.children = t, e.shapeFlag |= r } function Ao(...e) { const t = {}; for (let l = 0; l < e.length; l++) { const o = e[l]; for (const e in o) if (\"class\" === e) t[\"class\"] !== o[\"class\"] && (t[\"class\"] = i([t[\"class\"], o[\"class\"]])); else if (\"style\" === e) t.style = r([t.style, o.style]); else if (m(e)) { const r = t[e], l = o[e]; !l || r === l || z(r) && r.includes(l) || (t[e] = r ? [].concat(r, l) : l) } else \"\" !== e && (t[e] = o[e]) } return t } function Mo(e, t, r, l = null) { Ot(e, t, 7, [r, l]) } const So = Rl(); let Lo = 0; let Eo = null; const Bo = () => Eo || rr, Ho = e => { Eo = e, e.scope.on() }, Vo = () => { Eo && Eo.scope.off(), Eo = null }; function Oo(e) { return 4 & e.vnode.shapeFlag } let Io, To = !1; function jo(e, t, r) { S(t) ? e.type.__ssrInlineRender ? e.ssrRender = t : e.render = t : B(t) && (e.setupState = St(t)), Ro(e, r) } function Ro(e, t, r) { const l = e.type; if (!e.render) { if (!t && Io && !l.render) { const t = l.template || bl(e) .template; if (t) { const { isCustomElement: r, compilerOptions: o } = e.appContext.config, { delimiters: n, compilerOptions: a } = l, i = x(x({ isCustomElement: r, delimiters: n }, o), a); l.render = Io(t, i) } } e.render = l.render || v } Ho(e), ge(), hl(e), be(), Vo() } function Fo(e) { const t = t => { e.exposed = t || {} }; let r; return { get attrs() { return r || (r = function(e) { return new Proxy(e.attrs, { get: (t, r) => (me(e, 0, \"$attrs\"), t[r]) }) }(e)) }, slots: e.slots, emit: e.emit, expose: t } } function Po(e) { if (e.exposed) return e.exposeProxy || (e.exposeProxy = new Proxy(St(gt(e.exposed)), { get: (t, r) => r in t ? t[r] : r in ul ? ul[r](e) : void 0, has: (e, t) => t in e || t in ul })) } const Do = (e, t) => Ht(e, 0, To); function No() { return qo() .slots } function qo() { const e = Bo(); return e.setupContext || (e.setupContext = Fo(e)) } function Uo(e, t, r) { const l = arguments.length; return 2 === l ? B(t) && !z(t) ? po(t) ? mo(e, null, [t]) : mo(e, t) : mo(e, null, t) : (l > 3 ? r = Array.prototype.slice.call(arguments, 2) : 3 === l && po(r) && (r = [r]), mo(e, t, r)) } const Ko = Symbol(\"\"), Wo = () => hr(Ko), Yo = \"3.2.47\", Qo = \"undefined\" != typeof document ? document : null, $o = Qo && Qo.createElement(\"template\"), Go = { insert: (e, t, r) => { t.insertBefore(e, r || null) }, remove: e => { const t = e.parentNode; t && t.removeChild(e) }, createElement: (e, t, r, l) => { const o = t ? Qo.createElementNS(\"http://www.w3.org/2000/svg\", e) : Qo.createElement(e, r ? { is: r } : void 0); return \"select\" === e && l && null != l.multiple && o.setAttribute(\"multiple\", l.multiple), o }, createText: e => Qo.createTextNode(e), createComment: e => Qo.createComment(e), setText: (e, t) => { e.nodeValue = t }, setElementText: (e, t) => { e.textContent = t }, parentNode: e => e.parentNode, nextSibling: e => e.nextSibling, querySelector: e => Qo.querySelector(e), setScopeId(e, t) { e.setAttribute(t, \"\") }, insertStaticContent(e, t, r, l, o, n) { const a = r ? r.previousSibling : t.lastChild; if (o && (o === n || o.nextSibling)) for (; t.insertBefore(o.cloneNode(!0), r), o !== n && (o = o.nextSibling);); else { $o.innerHTML = l ? `${e}` : e; const o = $o.content; if (l) { const e = o.firstChild; for (; e.firstChild;) o.appendChild(e.firstChild); o.removeChild(e) } t.insertBefore(o, r) } return [a ? a.nextSibling : t.firstChild, r ? r.previousSibling : t.lastChild] } }; const Zo = /\\s*!important$/; function Jo(e, t, r) { if (z(r)) r.forEach((r => Jo(e, t, r))); else if (null == r && (r = \"\"), t.startsWith(\"--\")) e.setProperty(t, r); else { const l = function(e, t) { const r = en[t]; if (r) return r; let l = D(t); if (\"filter\" !== l && l in e) return en[t] = l; l = U(l); for (let o = 0; o < Xo.length; o++) { const r = Xo[o] + l; if (r in e) return en[t] = r } return t }(e, t); Zo.test(r) ? e.setProperty(q(l), r.replace(Zo, \"\"), \"important\") : e[l] = r } } const Xo = [\"Webkit\", \"Moz\", \"ms\"], en = {}; const tn = \"http://www.w3.org/1999/xlink\"; function rn(e, t, r, l) { e.addEventListener(t, r, l) } function ln(e, t, r, l, o = null) { const n = e._vei || (e._vei = {}), a = n[t]; if (l && a) a.value = l; else { const [r, i] = function(e) { let t; if (on.test(e)) { let r; for (t = {}; r = e.match(on);) e = e.slice(0, e.length - r[0].length), t[r[0].toLowerCase()] = !0 } const r = \":\" === e[2] ? e.slice(3) : q(e.slice(2)); return [r, t] }(t); if (l) { const a = n[t] = function(e, t) { const r = e => { if (e._vts) { if (e._vts { r.call(e), e._stopped = !0 }, t.map((e => t => !t._stopped && e && e(t))) } return t }(e, r.value), t, 5, [e]) }; return r.value = e, r.attached = sn(), r }(l, o); rn(e, r, a, i) } else a && (! function(e, t, r, l) { e.removeEventListener(t, r, l) }(e, r, a, i), n[t] = void 0) } } const on = /(?:Once|Passive|Capture)$/; let nn = 0; const an = Promise.resolve(), sn = () => nn || (an.then((() => nn = 0)), nn = Date.now()); const cn = /^on[a-z]/; const un = \"transition\", dn = \"animation\", pn = (e, { slots: t }) => Uo(zr, bn(e), t); pn.displayName = \"Transition\"; const fn = { name: String, type: String, css: { type: Boolean, \"default\": !0 }, duration: [String, Number, Object], enterFromClass: String, enterActiveClass: String, enterToClass: String, appearFromClass: String, appearActiveClass: String, appearToClass: String, leaveFromClass: String, leaveActiveClass: String, leaveToClass: String }, hn = pn.props = x({}, zr.props, fn), vn = (e, t = []) => { z(e) ? e.forEach((e => e(...t))) : e && e(...t) }, gn = e => !!e && (z(e) ? e.some((e => e.length > 1)) : e.length > 1); function bn(e) { const t = {}; for (const x in e) x in fn || (t[x] = e[x]); if (!1 === e.css) return t; const { name: r = \"v\", type: l, duration: o, enterFromClass: n = `${r}-enter-from`, enterActiveClass: a = `${r}-enter-active`, enterToClass: i = `${r}-enter-to`, appearFromClass: s = n, appearActiveClass: c = a, appearToClass: u = i, leaveFromClass: d = `${r}-leave-from`, leaveActiveClass: p = `${r}-leave-active`, leaveToClass: f = `${r}-leave-to` } = e, h = function(e) { if (null == e) return null; if (B(e)) return [mn(e.enter), mn(e.leave)]; { const t = mn(e); return [t, t] } }(o), v = h && h[0], g = h && h[1], { onBeforeEnter: b, onEnter: m, onEnterCancelled: _, onLeave: w, onLeaveCancelled: y, onBeforeAppear: k = b, onAppear: z = m, onAppearCancelled: C = _ } = t, A = (e, t, r) => { xn(e, t ? u : i), xn(e, t ? c : a), r && r() }, M = (e, t) => { e._isLeaving = !1, xn(e, d), xn(e, f), xn(e, p), t && t() }, S = e => (t, r) => { const o = e ? z : m, a = () => A(t, e, r); vn(o, [t, a]), wn((() => { xn(t, e ? s : n), _n(t, e ? u : i), gn(o) || kn(t, l, v, a) })) }; return x(t, { onBeforeEnter(e) { vn(b, [e]), _n(e, n), _n(e, a) }, onBeforeAppear(e) { vn(k, [e]), _n(e, s), _n(e, c) }, onEnter: S(!1), onAppear: S(!0), onLeave(e, t) { e._isLeaving = !0; const r = () => M(e, t); _n(e, d), Mn(), _n(e, p), wn((() => { e._isLeaving && (xn(e, d), _n(e, f), gn(w) || kn(e, l, g, r)) })), vn(w, [e, r]) }, onEnterCancelled(e) { A(e, !1), vn(_, [e]) }, onAppearCancelled(e) { A(e, !0), vn(C, [e]) }, onLeaveCancelled(e) { M(e), vn(y, [e]) } }) } function mn(e) { return G(e) } function _n(e, t) { t.split(/\\s+/) .forEach((t => t && e.classList.add(t))), (e._vtc || (e._vtc = new Set)) .add(t) } function xn(e, t) { t.split(/\\s+/) .forEach((t => t && e.classList.remove(t))); const { _vtc: r } = e; r && (r[\"delete\"](t), r.size || (e._vtc = void 0)) } function wn(e) { requestAnimationFrame((() => { requestAnimationFrame(e) })) } let yn = 0; function kn(e, t, r, l) { const o = e._endId = ++yn, n = () => { o === e._endId && l() }; if (r) return setTimeout(n, r); const { type: a, timeout: i, propCount: s } = zn(e, t); if (!a) return l(); const c = a + \"end\"; let u = 0; const d = () => { e.removeEventListener(c, p), n() }, p = t => { t.target === e && ++u >= s && d() }; setTimeout((() => { u < s && d() }), i + 1), e.addEventListener(c, p) } function zn(e, t) { const r = window.getComputedStyle(e), l = e => (r[e] || \"\") .split(\", \"), o = l(`${un}Delay`), n = l(`${un}Duration`), a = Cn(o, n), i = l(`${dn}Delay`), s = l(`${dn}Duration`), c = Cn(i, s); let u = null, d = 0, p = 0; t === un ? a > 0 && (u = un, d = a, p = n.length) : t === dn ? c > 0 && (u = dn, d = c, p = s.length) : (d = Math.max(a, c), u = d > 0 ? a > c ? un : dn : null, p = u ? u === un ? n.length : s.length : 0); return { type: u, timeout: d, propCount: p, hasTransform: u === un && /\\b(transform|all)(,|$)/.test(l(`${un}Property`) .toString()) } } function Cn(e, t) { for (; e.length < t.length;) e = e.concat(e); return Math.max(...t.map(((t, r) => An(t) + An(e[r])))) } function An(e) { return 1e3 * Number(e.slice(0, -1) .replace(\",\", \".\")) } function Mn() { return document.body.offsetHeight } const Sn = new WeakMap, Ln = new WeakMap, En = { name: \"TransitionGroup\", props: x({}, hn, { tag: String, moveClass: String }), setup(e, { slots: t }) { const r = Bo(), l = yr(); let o, n; return qr((() => { if (!o.length) return; const t = e.moveClass || `${e.name||\"v\"}-move`; if (! function(e, t, r) { const l = e.cloneNode(); e._vtc && e._vtc.forEach((e => { e.split(/\\s+/) .forEach((e => e && l.classList.remove(e))) })); r.split(/\\s+/) .forEach((e => e && l.classList.add(e))), l.style.display = \"none\"; const o = 1 === t.nodeType ? t : t.parentNode; o.appendChild(l); const { hasTransform: n } = zn(l); return o.removeChild(l), n }(o[0].el, r.vnode.el, t)) return; o.forEach(Hn), o.forEach(Vn); const l = o.filter(On); Mn(), l.forEach((e => { const r = e.el, l = r.style; _n(r, t), l.transform = l.webkitTransform = l.transitionDuration = \"\"; const o = r._moveCb = e => { e && e.target !== r || e && !/transform$/.test(e.propertyName) || (r.removeEventListener(\"transitionend\", o), r._moveCb = null, xn(r, t)) }; r.addEventListener(\"transitionend\", o) })) })), () => { const a = vt(e), i = bn(a); let s = a.tag || Xl; o = n, n = t[\"default\"] ? Er(t[\"default\"]()) : []; for (let e = 0; e < n.length; e++) { const t = n[e]; null != t.key && Lr(t, Ar(t, i, l, r)) } if (o) for (let e = 0; e < o.length; e++) { const t = o[e]; Lr(t, Ar(t, i, l, r)), Sn.set(t, t.el.getBoundingClientRect()) } return mo(s, null, n) } } }, Bn = En; function Hn(e) { const t = e.el; t._moveCb && t._moveCb(), t._enterCb && t._enterCb() } function Vn(e) { Ln.set(e, e.el.getBoundingClientRect()) } function On(e) { const t = Sn.get(e), r = Ln.get(e), l = t.left - r.left, o = t.top - r.top; if (l || o) { const t = e.el.style; return t.transform = t.webkitTransform = `translate(${l}px,${o}px)`, t.transitionDuration = \"0s\", e } } const In = e => { const t = e.props[\"onUpdate:modelValue\"] || !1; return z(t) ? e => Y(t, e) : t }; function Tn(e) { e.target.composing = !0 } function jn(e) { const t = e.target; t.composing && (t.composing = !1, t.dispatchEvent(new Event(\"input\"))) } const Rn = { created(e, { modifiers: { lazy: t, trim: r, number: l } }, o) { e._assign = In(o); const n = l || o.props && \"number\" === o.props.type; rn(e, t ? \"change\" : \"input\", (t => { if (t.target.composing) return; let l = e.value; r && (l = l.trim()), n && (l = $(l)), e._assign(l) })), r && rn(e, \"change\", (() => { e.value = e.value.trim() })), t || (rn(e, \"compositionstart\", Tn), rn(e, \"compositionend\", jn), rn(e, \"change\", jn)) }, mounted(e, { value: t }) { e.value = null == t ? \"\" : t }, beforeUpdate(e, { value: t, modifiers: { lazy: r, trim: l, number: o } }, n) { if (e._assign = In(n), e.composing) return; if (document.activeElement === e && \"range\" !== e.type) { if (r) return; if (l && e.value.trim() === t) return; if ((o || \"number\" === e.type) && $(e.value) === t) return } const a = null == t ? \"\" : t; e.value !== a && (e.value = a) } }, Fn = { created(e, { value: t }, r) { e.checked = u(t, r.props.value), e._assign = In(r), rn(e, \"change\", (() => { e._assign(function(e) { return \"_value\" in e ? e._value : e.value }(e)) })) }, beforeUpdate(e, { value: t, oldValue: r }, l) { e._assign = In(l), t !== r && (e.checked = u(t, l.props.value)) } }; const Pn = [\"ctrl\", \"shift\", \"alt\", \"meta\"], Dn = { stop: e => e.stopPropagation(), prevent: e => e.preventDefault(), self: e => e.target !== e.currentTarget, ctrl: e => !e.ctrlKey, shift: e => !e.shiftKey, alt: e => !e.altKey, meta: e => !e.metaKey, left: e => \"button\" in e && 0 !== e.button, middle: e => \"button\" in e && 1 !== e.button, right: e => \"button\" in e && 2 !== e.button, exact: (e, t) => Pn.some((r => e[`${r}Key`] && !t.includes(r))) }, Nn = (e, t) => (r, ...l) => { for (let e = 0; e < t.length; e++) { const l = Dn[t[e]]; if (l && l(r, t)) return } return e(r, ...l) }, qn = { esc: \"escape\", space: \" \", up: \"arrow-up\", left: \"arrow-left\", right: \"arrow-right\", down: \"arrow-down\", \"delete\": \"backspace\" }, Un = (e, t) => r => { if (!(\"key\" in r)) return; const l = q(r.key); return t.some((e => e === l || qn[e] === l)) ? e(r) : void 0 }, Kn = { beforeMount(e, { value: t }, { transition: r }) { e._vod = \"none\" === e.style.display ? \"\" : e.style.display, r && t ? r.beforeEnter(e) : Wn(e, t) }, mounted(e, { value: t }, { transition: r }) { r && t && r.enter(e) }, updated(e, { value: t, oldValue: r }, { transition: l }) { !t != !r && (l ? t ? (l.beforeEnter(e), Wn(e, !0), l.enter(e)) : l.leave(e, (() => { Wn(e, !1) })) : Wn(e, t)) }, beforeUnmount(e, { value: t }) { Wn(e, t) } }; function Wn(e, t) { e.style.display = t ? e._vod : \"none\" } const Yn = x({ patchProp: (e, t, r, l, o = !1, n, a, i, u) => { \"class\" === t ? function(e, t, r) { const l = e._vtc; l && (t = (t ? [t, ...l] : [...l]) .join(\" \")), null == t ? e.removeAttribute(\"class\") : r ? e.setAttribute(\"class\", t) : e.className = t }(e, l, o) : \"style\" === t ? function(e, t, r) { const l = e.style, o = L(r); if (r && !o) { if (t && !L(t)) for (const e in t) null == r[e] && Jo(l, e, \"\"); for (const e in r) Jo(l, e, r[e]) } else { const n = l.display; o ? t !== r && (l.cssText = r) : t && e.removeAttribute(\"style\"), \"_vod\" in e && (l.display = n) } }(e, r, l) : m(t) ? _(t) || ln(e, t, 0, l, a) : (\".\" === t[0] ? (t = t.slice(1), 1) : \"^\" === t[0] ? (t = t.slice(1), 0) : function(e, t, r, l) { if (l) return \"innerHTML\" === t || \"textContent\" === t || !!(t in e && cn.test(t) && S(r)); if (\"spellcheck\" === t || \"draggable\" === t || \"translate\" === t) return !1; if (\"form\" === t) return !1; if (\"list\" === t && \"INPUT\" === e.tagName) return !1; if (\"type\" === t && \"TEXTAREA\" === e.tagName) return !1; if (cn.test(t) && L(r)) return !1; return t in e }(e, t, l, o)) ? function(e, t, r, l, o, n, a) { if (\"innerHTML\" === t || \"textContent\" === t) return l && a(l, o, n), void(e[t] = null == r ? \"\" : r); if (\"value\" === t && \"PROGRESS\" !== e.tagName && !e.tagName.includes(\"-\")) { e._value = r; const l = null == r ? \"\" : r; return e.value === l && \"OPTION\" !== e.tagName || (e.value = l), void(null == r && e.removeAttribute(t)) } let i = !1; if (\"\" === r || null == r) { const l = typeof e[t]; \"boolean\" === l ? r = c(r) : null == r && \"string\" === l ? (r = \"\", i = !0) : \"number\" === l && (r = 0, i = !0) } try { e[t] = r } catch (s) {} i && e.removeAttribute(t) }(e, t, l, n, a, i, u) : (\"true-value\" === t ? e._trueValue = l : \"false-value\" === t && (e._falseValue = l), function(e, t, r, l, o) { if (l && t.startsWith(\"xlink:\")) null == r ? e.removeAttributeNS(tn, t.slice(6, t.length)) : e.setAttributeNS(tn, t, r); else { const l = s(t); null == r || l && !c(r) ? e.removeAttribute(t) : e.setAttribute(t, l ? \"\" : r) } }(e, t, l, o)) } }, Go); let Qn; function $n() { return Qn || (Qn = ql(Yn)) } const Gn = (...e) => { $n() .render(...e) }; var Zn = !1; /*! * pinia v2.0.30 * (c) 2023 Eduardo San Martin Morote * @license MIT */ let Jn; const Xn = e => Jn = e, ea = Symbol(); function ta(e) { return e && \"object\" == typeof e && \"[object Object]\" === Object.prototype.toString.call(e) && \"function\" != typeof e.toJSON } var ra, la; (la = ra || (ra = {})) .direct = \"direct\", la.patchObject = \"patch object\", la.patchFunction = \"patch function\"; const oa = () => {}; function na(e, t, r, l = oa) { e.push(t); const o = () => { const r = e.indexOf(t); r > -1 && (e.splice(r, 1), l()) }; return !r && te() && re(o), o } function aa(e, ...t) { e.slice() .forEach((e => { e(...t) })) } function ia(e, t) { e instanceof Map && t instanceof Map && t.forEach(((t, r) => e.set(r, t))), e instanceof Set && t instanceof Set && t.forEach(e.add, e); for (const r in t) { if (!t.hasOwnProperty(r)) continue; const l = t[r], o = e[r]; ta(o) && ta(l) && e.hasOwnProperty(r) && !wt(l) && !dt(l) ? e[r] = ia(o, l) : e[r] = l } return e } const sa = Symbol(); const { assign: ca } = Object; function ua(e, t, r = {}, l, o, n) { let a; const i = ca({ actions: {} }, r), s = { deep: !0 }; let c, u, d, p = gt([]), f = gt([]); const h = l.state.value[e]; let v; function g(t) { let r; c = u = !1, \"function\" == typeof t ? (t(l.state.value[e]), r = { type: ra.patchFunction, storeId: e, events: d }) : (ia(l.state.value[e], t), r = { type: ra.patchObject, payload: t, storeId: e, events: d }); const o = v = Symbol(); Kt() .then((() => { v === o && (c = !0) })), u = !0, aa(p, r, l.state.value[e]) } n || h || (l.state.value[e] = {}), yt({}); const b = oa; function m(t, r) { return function() { Xn(l); const o = Array.from(arguments), n = [], a = []; let i; aa(f, { args: o, name: t, store: _, after: function(e) { n.push(e) }, onError: function(e) { a.push(e) } }); try { i = r.apply(this && this.$id === e ? this : _, o) } catch (s) { throw aa(a, s), s } return i instanceof Promise ? i.then((e => (aa(n, e), e)))[\"catch\"]((e => (aa(a, e), Promise.reject(e)))) : (aa(n, i), i) } } const _ = it({ _p: l, $id: e, $onAction: na.bind(null, f), $patch: g, $reset: b, $subscribe(t, r = {}) { const o = na(p, t, r.detached, (() => n())), n = a.run((() => br((() => l.state.value[e]), (l => { (\"sync\" === r.flush ? u : c) && t({ storeId: e, type: ra.direct, events: d }, l) }), ca({}, s, r)))); return o }, $dispose: function() { a.stop(), p = [], f = [], l._s[\"delete\"](e) } }); l._s.set(e, _); const x = l._e.run((() => (a = ee(), a.run((() => t()))))); for (const k in x) { const t = x[k]; if (wt(t) && (!wt(y = t) || !y.effect) || dt(t)) n || (!h || ta(w = t) && w.hasOwnProperty(sa) || (wt(t) ? t.value = h[k] : ia(t, h[k])), l.state.value[e][k] = t); else if (\"function\" == typeof t) { const e = m(k, t); x[k] = e, i.actions[k] = t } } var w, y; return ca(_, x), ca(vt(_), x), Object.defineProperty(_, \"$state\", { get: () => l.state.value[e], set: e => { g((t => { ca(t, e) })) } }), l._p.forEach((e => { ca(_, a.run((() => e({ store: _, app: l._a, pinia: l, options: i })))) })), h && n && r.hydrate && r.hydrate(_.$state, h), c = !0, u = !0, _ } function da(e, t, r) { let l, o; const n = \"function\" == typeof t; function a(e, r) { const a = Bo(); (e = e || a && hr(ea, null)) && Xn(e), (e = Jn) ._s.has(l) || (n ? ua(l, t, o, e) : function(e, t, r, l) { const { state: o, actions: n, getters: a } = t, i = r.state.value[e]; let s; s = ua(e, (function() { i || (r.state.value[e] = o ? o() : {}); const t = Lt(r.state.value[e]); return ca(t, n, Object.keys(a || {}) .reduce(((t, l) => (t[l] = gt(Do((() => { Xn(r); const t = r._s.get(e); return a[l].call(t, t) }))), t)), {})) }), t, r, 0, !0), s.$reset = function() { const e = o ? o() : {}; this.$patch((t => { ca(t, e) })) } }(l, o, e)); return e._s.get(l) } return \"string\" == typeof e ? (l = e, o = n ? r : t) : (o = e, l = e.id), a.$id = l, a } function pa(e) { { e = vt(e); const t = {}; for (const r in e) { const l = e[r]; (wt(l) || dt(l)) && (t[r] = Et(e, r)) } return t } } const fa = \"object\" == typeof global && global && global.Object === Object && global; var ha = \"object\" == typeof self && self && self.Object === Object && self; const va = fa || ha || Function(\"return this\")(); const ga = va.Symbol; var ba = Object.prototype, ma = ba.hasOwnProperty, _a = ba.toString, xa = ga ? ga.toStringTag : void 0; var wa = Object.prototype.toString; var ya = \"[object Null]\", ka = \"[object Undefined]\", za = ga ? ga.toStringTag : void 0; function Ca(e) { return null == e ? void 0 === e ? ka : ya : za && za in Object(e) ? function(e) { var t = ma.call(e, xa), r = e[xa]; try { e[xa] = void 0; var l = !0 } catch (n) {} var o = _a.call(e); return l && (t ? e[xa] = r : delete e[xa]), o }(e) : function(e) { return wa.call(e) }(e) } function Aa(e) { return null != e && \"object\" == typeof e } var Ma = \"[object Symbol]\"; function Sa(e) { return \"symbol\" == typeof e || Aa(e) && Ca(e) == Ma } const La = Array.isArray; var Ea = 1 / 0, Ba = ga ? ga.prototype : void 0, Ha = Ba ? Ba.toString : void 0; function Va(e) { if (\"string\" == typeof e) return e; if (La(e)) return function(e, t) { for (var r = -1, l = null == e ? 0 : e.length, o = Array(l); ++r < l;) o[r] = t(e[r], r, e); return o }(e, Va) + \"\"; if (Sa(e)) return Ha ? Ha.call(e) : \"\"; var t = e + \"\"; return \"0\" == t && 1 / e == -Ea ? \"-0\" : t } var Oa = /\\s/; var Ia = /^\\s+/; function Ta(e) { return e ? e.slice(0, function(e) { for (var t = e.length; t-- && Oa.test(e.charAt(t));); return t }(e) + 1) .replace(Ia, \"\") : e } function ja(e) { var t = typeof e; return null != e && (\"object\" == t || \"function\" == t) } var Ra = NaN, Fa = /^[-+]0x[0-9a-f]+$/i, Pa = /^0b[01]+$/i, Da = /^0o[0-7]+$/i, Na = parseInt; function qa(e) { if (\"number\" == typeof e) return e; if (Sa(e)) return Ra; if (ja(e)) { var t = \"function\" == typeof e.valueOf ? e.valueOf() : e; e = ja(t) ? t + \"\" : t } if (\"string\" != typeof e) return 0 === e ? e : +e; e = Ta(e); var r = Pa.test(e); return r || Da.test(e) ? Na(e.slice(2), r ? 2 : 8) : Fa.test(e) ? Ra : +e } var Ua = \"[object AsyncFunction]\", Ka = \"[object Function]\", Wa = \"[object GeneratorFunction]\", Ya = \"[object Proxy]\"; function Qa(e) { if (!ja(e)) return !1; var t = Ca(e); return t == Ka || t == Wa || t == Ua || t == Ya } const $a = va[\"__core-js_shared__\"]; var Ga, Za = (Ga = /[^.]+$/.exec($a && $a.keys && $a.keys.IE_PROTO || \"\")) ? \"Symbol(src)_1.\" + Ga : \"\"; var Ja = Function.prototype.toString; function Xa(e) { if (null != e) { try { return Ja.call(e) } catch (t) {} try { return e + \"\" } catch (t) {} } return \"\" } var ei = /^\\[object .+?Constructor\\]$/, ti = Function.prototype, ri = Object.prototype, li = ti.toString, oi = ri.hasOwnProperty, ni = RegExp(\"^\" + li.call(oi) .replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\") .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"); function ai(e) { return !(!ja(e) || (t = e, Za && Za in t)) && (Qa(e) ? ni : ei) .test(Xa(e)); var t } function ii(e, t) { var r = function(e, t) { return null == e ? void 0 : e[t] }(e, t); return ai(r) ? r : void 0 } const si = ii(va, \"WeakMap\"); var ci = Object.create, ui = function() { function e() {} return function(t) { if (!ja(t)) return {}; if (ci) return ci(t); e.prototype = t; var r = new e; return e.prototype = void 0, r } }(); const di = ui; var pi = function() { try { var e = ii(Object, \"defineProperty\"); return e({}, \"\", {}), e } catch (t) {} }(); const fi = pi; var hi = 9007199254740991, vi = /^(?:0|[1-9]\\d*)$/; function gi(e, t) { var r = typeof e; return !!(t = null == t ? hi : t) && (\"number\" == r || \"symbol\" != r && vi.test(e)) && e > -1 && e % 1 == 0 && e < t } function bi(e, t, r) { \"__proto__\" == t && fi ? fi(e, t, { configurable: !0, enumerable: !0, value: r, writable: !0 }) : e[t] = r } function mi(e, t) { return e === t || e != e && t != t } var _i = Object.prototype.hasOwnProperty; function xi(e, t, r) { var l = e[t]; _i.call(e, t) && mi(l, r) && (void 0 !== r || t in e) || bi(e, t, r) } function wi(e, t, r, l) { var o = !r; r || (r = {}); for (var n = -1, a = t.length; ++n < a;) { var i = t[n], s = l ? l(r[i], e[i], i, r, e) : void 0; void 0 === s && (s = e[i]), o ? bi(r, i, s) : xi(r, i, s) } return r } var yi = 9007199254740991; function ki(e) { return \"number\" == typeof e && e > -1 && e % 1 == 0 && e"}],"posts":[{"title":"EmbyBot使用指南","slug":"AIO服务器/EmbyBot使用指南","date":"2024-10-22T06:29:10.000Z","updated":"2024-10-22T06:29:10.000Z","comments":true,"path":"posts/emby_bot/","permalink":"https://blog.sakurasep.site/posts/emby_bot/","excerpt":"","text":"使用教程1. 添加 TGBothttps://t.me/sakurasep_emby_bot九月的 EmbyBot 点击频道入口或者群组入口加入交流群 此时机器人的聊天框就变成可输入的,输入/start开始使用 2. 使用指南2.1 账号注册 媒体库仅为内部交流使用,暂时不开放注册,内测时使用注册码注册,请联系群主获取注册码,然后点击使用注册码。 输入 test 123456 也就是说明你的媒体库登录账号为 test,这里的安全码并非媒体库密码,而是你账号绑定后的操作密码,用于进行高危操作时验证身份 提示注册成功会显示账号密码等信息,请记住安全码! 可以在用户功能-重置密码中修改媒体库账号的密码 2.2 求片中心求片提示目前还没有做到全自动化求片,下载完成群主会收到消息然后手动入库。等 115 网盘做活动的时候就能搞全自动入库了 点击求片,输入想要看的片名就可以自动下载了。根据描述输入你想看的资源,回复编号开始下载。 此时如果显示添加下载队列成功,表明已经开始下载。 点击查看下载进度即可查看求片进度。 2.3 媒体库搜索在媒体库交流群组中@机器人即可唤出搜索面板。 点击收藏即可将该资源加入媒体库账号的收藏夹。 3. 连接媒体库详细介绍请看我另一篇文章 https://blog.sakurasep.site/posts/How-To-Use-MediaServer/媒体库使用指南 https://cloud.sakurasep.top/s/rJhv安卓平台推荐使用 Yamby 密码:1023 https://cloud.sakurasep.top/s/Pvu4Windows 平台推荐 Emby for Windows 密码:1023 iOS 平台推荐使用 Vidhub,Infuse macOS 平台推荐使用 Vidhub,Infuse,Fileball","categories":[{"name":"媒体库","slug":"媒体库","permalink":"https://blog.sakurasep.site/categories/%E5%AA%92%E4%BD%93%E5%BA%93/"}],"tags":[{"name":"Emby","slug":"Emby","permalink":"https://blog.sakurasep.site/tags/Emby/"},{"name":"动漫","slug":"动漫","permalink":"https://blog.sakurasep.site/tags/%E5%8A%A8%E6%BC%AB/"},{"name":"TGBot","slug":"TGBot","permalink":"https://blog.sakurasep.site/tags/TGBot/"}]},{"title":"动漫年鉴 - BDRip","slug":"AIO服务器/新番时光机","date":"2024-10-05T05:30:24.000Z","updated":"2024-10-05T05:30:24.000Z","comments":true,"path":"posts/anime-collect-bdrip/","permalink":"https://blog.sakurasep.site/posts/anime-collect-bdrip/","excerpt":"","text":"对于入坑作是 Re0 时代的二次元,很多老番只是听过它们的大名,但是却一直没机会去观看,正巧最近整理媒体库,打算根据泛式的新番时光机来补番。同时,我的朋友与同学也提供了不少有趣的动漫,这些内容将分为不同板块存在 Onedrive 中,后续有资金后会购入硬盘存在本地。 Tips:资源来自 U2 等 PT 站点,故不开放注册,本媒体库仅用于朋友同学之间交流使用 新番时光机 - 泛式2010 年 10 月新番缘之空爆漫王 S01爆漫王 S02爆漫王 S03 2011 年 1 月新番无限斯特拉托斯 动漫年鉴 - NotionNotion 笔记 此 Notion 笔记模板是由哔哩哔哩up主 Azuki咔咔 所制作。 总表是使用的年份进行记录 表格记录了已经收录的动漫,可以查看压制组等具体的内容","categories":[{"name":"媒体库","slug":"媒体库","permalink":"https://blog.sakurasep.site/categories/%E5%AA%92%E4%BD%93%E5%BA%93/"}],"tags":[{"name":"Emby","slug":"Emby","permalink":"https://blog.sakurasep.site/tags/Emby/"},{"name":"动漫","slug":"动漫","permalink":"https://blog.sakurasep.site/tags/%E5%8A%A8%E6%BC%AB/"},{"name":"BDRip","slug":"BDRip","permalink":"https://blog.sakurasep.site/tags/BDRip/"}]},{"title":"Unraid中如何使得容器获取IPV6地址","slug":"AIO服务器/Unraid中如何使得容器获取IPV6地址","date":"2024-07-20T11:30:06.000Z","updated":"2024-07-20T11:30:06.000Z","comments":true,"path":"posts/Unraid-IPV6/","permalink":"https://blog.sakurasep.site/posts/Unraid-IPV6/","excerpt":"","text":"前言对于我们现在很多地区的运营商来说,公网 IPV4 是极其难去申请的,就算可以申请到,也会让你加不少钱改套餐,对于普通用户来说有些划不来。IPV6 是连通公网的一个不错的方法,只需要给当地运营商的运维打个电话,把光猫拨号改为桥接,再从路由器中拨号并打开 IPV6 功能,此时便可以轻松将你的设备开放给公网。 对于开放在公网的设备来说,IPV6 的复杂程度以及动态变更的特点,让公网的设备面对暴露的风险时还是有一定的防御能力,但是我仍然不推荐将所有端口都开放到公网,以免出现安全问题。 一、路由器的设置不同的路由器的设置内容略有不同,这里我是 TP-LINK 的主路由,所以暂时先给出该型号路由器配置的详细图文教程。 只要记住一点,Unraid 目前可以通过 DHCPv6 或者 SLAAC 获取到 IPV6 地址,但是 Unraid 的 Docker 服务并不可以直接使用 DHCPv6 所分配的 IPV6 地址,而且 Android 设备貌似也不能使用 DHCPv6,所以最好还是使用 SLAAC 进行分配。 TP-LINK 路由器1.1 关闭 IPV6 桥接模式首先需要关闭 IPV6 桥接模式,如果你的 TP-LINK 路由器为二级路由,那就开启桥接模式。 1.2 路由拨号与获取前缀授权在确定光猫端设置为桥接之后,在路由器进行拨号。 这里复用 IPV4 的拨号链路,因为如果这里仍然拨号就会产生冲突。 前缀授权前缀授权也就是本地路由向 ISP 运营商的 DHCP 获取一个 IPV6 地址的前缀,然后本地就可以继续根据这一个 IPV6 地址继续分配给其他设备或创建子网 1.3 设置 SLAAC 分配 IPV6 地址给其他设备设置一下 LAN 口相关设置,首先选择 WAN 口的前缀授权接口,下一步选择 SLAAC 对其他设备授权 IPV6 地址。 二、Unraid 的设置我这里使用的是 Unraid 6.11.5,Unraid 不同版本在某些设置可能存在差异,如有问题请在评论区提出。 Unraid 网络设置在修改网络设置前,需要关闭 Docker 服务以及虚拟机服务。 设置 Docker 应用的网络类型Unraid 提供的 Docker 网络模式主要有以下几种: bridge: 默认的网络模式。容器连接到一个虚拟的桥接网络,可以通过桥接网络相互通信。 容器通过NAT共享主机的IP地址。 host: 容器与主机共享网络命名空间,使用主机的IP地址和端口。 容器的端口直接暴露在主机上,没有NAT。 none: 容器没有网络连接,仅有回环接口(lo)。 适用于不需要网络的应用或自定义网络配置。 custom: 自定义网络模式,允许用户创建和配置自己的桥接或macvlan网络。 可以通过Unraid的网络设置界面进行配置,适用于需要特定网络设置的应用。 custom 模式(推荐) 等待容器启动完成,我们打开控制台,输入命令ifconfig查看容器是否成功获取了 IPV6 地址。如下图所示,eth0 网卡已经成功获取了公网 IPV6 地址。 host 模式 我这里因为 AutoBangumi 没法连接 custom 模式下的 qBittorrent,所以只能使用 host 模式,一般来说不建议使用 host 模式直接暴露 Unraid 的 IPV6 地址,毕竟在 qBittorrent 中是可以直接看到 IPV6 地址的。 等待容器启动完成,我们打开控制台,输入命令ifconfig查看容器是否成功获取了 IPV6 地址。如下图所示,br0 网卡已经成功获取了公网 IPV6 地址。 应用的具体设置qBittorrent在 qBittorrent 的设置-高级中修改网络接口为控制台中查询到的 Unraid 的网卡。具体的网络接口可以从 Unraid 的网络设置-路由表中看到。 此外,qBittorrent 绑定到的 IP 地址选择所有地址,只要你的 NAT 类型不是太差,IPV4 还是可以连接到的,只是上传的连通性会变得很差。 后记目前我个人不太经常使用 IPV6,毕竟在外面的话,除了流量是 IPV6,其他地方的网络很多是没有开启 IPV6 的,所以在外面访问家里的服务我使用的是 Tailscale,感觉还是挺不错的,基本能跑满。 这篇文章算是我自己使用 Unraid 中遇到的问题,然后随手写的解决方案,后续也会继续写一些有趣的文章。","categories":[{"name":"Unraid","slug":"Unraid","permalink":"https://blog.sakurasep.site/categories/Unraid/"}],"tags":[{"name":"Unraid","slug":"Unraid","permalink":"https://blog.sakurasep.site/tags/Unraid/"}]},{"title":"云服务器的简单使用指南","slug":"云服务器使用指南/云服务器的简单使用指南","date":"2024-07-19T03:19:51.000Z","updated":"2024-08-23T00:10:34.000Z","comments":true,"path":"posts/ZeroLinux/","permalink":"https://blog.sakurasep.site/posts/ZeroLinux/","excerpt":"","text":"一、选购服务器关于在本地使用虚拟机创建Linux服务器和使用云服务器,两者的区别在于你的应用方向。本地的服务器通常有着较高的性能,可以挂载更多的服务,承接更高的性能需求。对于云服务器,更多的价值在于公网 IP,对于我们个人来说,面向互联网的服务多数资源消耗较少,因此花钱买到公网 IP 更符合我对个人使用云服务器的看法。 国内有不少的云服务厂商,他们的价格和服务器配置差距挺大,作为一个初次使用云服务的用户,很多厂商都可以白嫖到试用机会。建议在确定好要购买长期使用之前,先试用一下,感受一下网页控制台是否足够方便,是否符合自己的使用习惯。 当你选定一家云服务商后,这里建议域名注册,备案等等服务也都在同一家云服务商进行购买。例如我个人的服务器,CDN,对象存储服务都是使用的腾讯云,这样使用起来更方便,不用切换其他云服务的控制台。 最后注意一下,一定要关注各家云服务厂商的优惠活动,建议首选知名的云服务商,以便保证后续服务。 以下是我的服务器运行情况 二、安装基本环境整篇文章都将使用华为云的 2H2G 服务器进行测试演示,一年只需要 36 元,感觉十分合适,如果活动还在是很推荐入手的。 1. 安装 SSH 工具SSH 工具有很多,这里我在 macOS 上经常使用的是FinalShell,个人感觉还是很方便的,界面也很清晰。 https://www.hostbuf.com/t/988.htmlFinalShell SSH工具 当然在 windows 端我更推荐使用MobaXterm,GitHub 上有位大佬精心做了汉化。 https://github.com/RipplePiam/MobaXterm-Chinese-SimplifiedFinalShell SSH工具 三、服务器基本配置1. 镜像选择与重置密码镜像的选择其实差别并不是很大,Ubuntu 和 Debian 二选一就可以了。 建议在装完系统后手动重置一下密码,并牢记此密码。 2. 配置SSH工具在 Finalshell 中配置 SSH 连接,在主机处填入云服务器的公网 IP,用户名默认为 root。 连接成功如下所示,可以看到 Finalshell 能够显示服务器基本的负载信息,并且可以在软件底部实现上传操作。 四、 安装面板4.1 常见面板介绍相比于使用终端进行操作,对于小白来说,使用面板更加方便。 目前有两个比较流行的面板,宝塔和 1Panel,宝塔稳定性更强,但是界面含有不少的付费要素,且必须绑定宝塔账号。1Panel的界面干净整洁,在去年的使用中出现了几个小 bug,稳定性相较于宝塔逊色一点。本篇文章将会使用 1Panel 进行演示。 宝塔面板 1Panel 在宝塔和 1Panel 之外还有一些其他的面板,朋友们也可以尝试一下。 耗子面板 4.2 一键安装面板在终端输入以下命令安装 1Panel 面板。 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh 设置面板的安装目录,这里保持默认即可。 由于国内连接 Docker 服务不够稳定,后续在线安装 Docker 服务可能会出现错误提示,请不要在意,整体的下载速度较慢。 Docker 安装完成后,安装程序会让你选择访问面板的端口,这里建议更换默认端口为一个你容易记住的端口。 设置完成端口后,需要设置一个安全入口,同样设置一个你能够记住的字符串。 后续需要配置面板管理的用户名和密码,请尽量保证密码的复杂,不要使用简单密码。 当安装程序结束后,你将可以看到外网访问地址,此时请在云服务商的安全组策略中放行刚刚设置的面板端口。这里以华为云为例,在策略组的入方向规则中放行端口。 此时访问http://ip地址:端口/安全入口字符串就可以进入面板。 五、 Docker 相关配置5.1 Docker 镜像加速配置目前国内不少 Docker 的镜像站都不再提供服务,这里我提供一些正常运营的 Docker 镜像站。 5.1.1 使用终端设置镜像源在终端使用命令行,设置镜像源。 sudo tee /etc/docker/daemon.json <<EOF{ "registry-mirrors": ["加速镜像1"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker 5.1.2 在面板中修改镜像源在 1Panel 面板的容器 - 配置中添加镜像加速地址。 可以直接使用的镜像站 以下是可以直接使用的镜像源,如果其中有源失效,请及时告知博主。 如果你有比较可靠的镜像源,也请在评论区留言,感谢! ## 1Panelhttps://docker.1panel.live## DaoCloud/public-image-mirrorhttps://docker.m.daocloud.io## 耗子面板公益加速https://hub.rat.dev/## dockerhub.icuhttps://dockerhub.icu## docker.awsl9527.cnhttps://docker.awsl9527.cn## AtomHubhttps://atomhub.openatom.cn 需要特定条件才能使用的镜像站 仅支持阿里云相关云产品使用,每一个账号有独立的镜像地址,如果购买的云服务商为阿里云,那就可以使用阿里云提供的 Docker 镜像加速。 https://cr.console.aliyun.com/cn-hangzhou/instances容器镜像服务 5.1.3 测试拉取镜像在容器 - 镜像 - 拉取镜像中测试拉取linuxserver/qbittorrent镜像。 由于镜像站不会镜像 DockerHub 全部的镜像,有些冷门镜像无法拉取很正常。 六、ShellClash 代理配置由于例如 GitHub,DockerHub 等服务在国内的服务器上难以访问,还是建议各位在服务器上安装一个简易的 Clash,方便克隆 Github 仓库以及拉取 Docker 镜像。 6.1 安装 ShellClash在终端执行以下命令 export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && bash /tmp/install.sh && source /etc/profile &> /dev/null 选择公测版 - 在/usr/share目录安装 - 确定,一键安装 ShellClash 6.2 配置 ShellClash在终端输入 clash 进入管理界面,首先选择Linux设备代理本机流量 然后开启公网访问dashboard面板,以便管理 clash 的配置文件 设置面板访问密钥,并开启自动任务 选择在线生成配置文件,并在之后的提示中导入订阅链接。 此时就可以愉快的访问 Github 与 Docker Hub了。 为了方便管理,这里建议安装 dashboard 面板 此时在安全组放行 9999 端口,即可访问后台管理面板公网IP:9999/ui 6.3 测试以及注意事项可以看到,当你配置镜像加速的时候,如果可以从镜像站拉取到镜像,会优先从镜像站下载。 如果到了实在没有镜像站可用的时候,或者镜像站并没有对应的镜像,便可以通过代理下载。 注意,当不需要使用代理的时候,请及时关闭代理,同时建议关闭 shellclash 的开机自启,以免影响服务器其他服务正常的运行。","categories":[{"name":"技术分享","slug":"技术分享","permalink":"https://blog.sakurasep.site/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"零基础","slug":"零基础","permalink":"https://blog.sakurasep.site/tags/%E9%9B%B6%E5%9F%BA%E7%A1%80/"},{"name":"Linux","slug":"Linux","permalink":"https://blog.sakurasep.site/tags/Linux/"}]},{"title":"基于UA3F的校园网防检测指南","slug":"零基础教程/基于UA3F的校园网防检测指南","date":"2024-07-12T07:14:23.000Z","updated":"2024-07-12T07:14:23.000Z","comments":true,"path":"posts/UA3F/","permalink":"https://blog.sakurasep.site/posts/UA3F/","excerpt":"","text":"前言作为QFNU曾在北公寓住宿过的学生,当转入校内宿舍楼居住的时候马上体会到了网络带来的不便,之前网线入户带来的便捷取而代之的是移动加私企垄断的局面。 之前有竞争的时候,移动 10 元 100 兆宽带或是联通 300 兆宽带都能满足不同的需要,对于宿舍 6-8 人的需求,100 兆在非下载资源的时间段是绰绰有余的,对于学生来说资费也很合适,毕竟出了宿舍开热点用流量还是更加方便。 对于新校区将校园网普及到宿舍,这本身是一件好事,可是被无良公司当成了赚钱的工具。当初承诺的每一个人单设备独享 100 兆带宽,可是一到晚上速度就会降到 20 兆到 30 兆的速度。让我们计算一下,一个宿舍楼的出口带宽是 80Gbps,一个宿舍楼有11层楼,一层楼差不多30个宿舍,一个宿舍6个人,11 x 30 x 6=1980,按照 2000 人来算,如果所有人都办理校园网外加全部都下载资源跑满下行,每个设备都应该有 40 兆的带宽。 其次是所谓的安全问题,校园网采用的是锐捷的系统,能够清楚地知道哪一个 IP 访问了什么内容,这样来进行管理时没有问题的。然而防共享检测将每个账号的使用设备控制在 2 个,电脑加手机,多的平板就不能上网了。校园网之前说可以提供设备的 mac 地址来扩展设备数量,但是直到现在都没有实行,纯纯的画大饼。就算放开共享,现在已经实现了 ap 入户,每一个宿舍都有一个独立的 ap,后台仍然可以精准定位异常访问,精准到某个宿舍,难道很难吗。共享检测做的这么严密,其实不过是垄断之后想要狠狠地赚钱罢了。 好了,作为毕业的老东西,哥们终于可以分享如何绕过校园网的检测,实现宿舍上网自由。 注意事项,本教程适用于锐捷web 认证,其他认证请加 TG 群 @crack_campus_network 讨论 以下是锐捷 web 认证网页端,如果确定是此类型的校园网认证,可以尝试本教程内容 一、准备工作一台支持 openwrt 的设备 一个校园网账号 一个较为稳定的机场 二、UA3F + Clash 在 openwrt 的安装对于 QFNU 的共享检测机制,是检测 UA 和腾讯系流量,因此传统的 UA2F 会遇到经常性的封禁问题,一旦连接路由的设备出现了访问腾讯系应用,就可能触发延迟封禁(不会秒封,猜测是有阈值),由于 UA2F 不能与 Clash 等代理共存,所以 UA2F 不能很好的处理锐捷针对腾讯流量的检测。但是好在,UA3F 诞生了。 UA3F 作为一个 SOCK5 服务,可以直接与 Clash 进行交流,我们让 Clash 接管设备的所有流量,根据规则将 http 协议的链接走 UA3F 进行 UA 的修改,然后将其他特殊的流量走代理加密,剩余不需要处理的流量直连即可。 1. 挑选合适的设备UA3F 支持常见的架构设备,只要你的设备支持 openwrt,内存大于 256 兆,基本就可以使用。这里我个人推荐购买一台 RAX3000M(20231027版本),WIFI6,免拆刷机,512 兆内存,闲鱼购买价格在 100 左右是超值的价格。闲鱼购买时可以选择让卖家刷好 openwrt 后发出,便可以直接跳转到安装教程。 其他的路由器在确定内存满足要求后,便可以去恩山无线论坛查看是否有 openwrt 的刷机包,以及刷机是否方便。 如果你有自己的小型服务器,而且这个服务器还有两个 wan 口,那么你可以在服务器装虚拟机,然后随便外接一个路由实现无线功能。 2. 安装 UA3F2.1 使用 SSH 工具连接到设备 确保此时你只有一台设备连接到路由器,以免触发校园网的封禁。 2.2 更新软件包以及安装依赖在控制台输入以下指令 opkg updateopkg install curl libcurl luci-compat 2.3 安装 UA3F输入以下指令安装 UA3F,当出现 Install UA3F success说明安装完成 export url='https://blog.sunbk201.site/cdn' && sh -c "$(curl -kfsSl $url/install.sh)"service ua3f reload 此时就可以在 openwrt 侧边栏的服务 - UA3F中找到 luci 界面进行管理 3. shellclash 的安装3.1 安装稳定版 shellclash相比于 openclash,这里更推荐 shellclash,因为占用小,性能较好。 同样在控制台输入以下指令 export url='https://fastly.jsdelivr.net/gh/juewuy/ShellCrash@master' && wget -q --no-check-certificate -O /tmp/install.sh $url/install.sh && sh /tmp/install.sh && source /etc/profile &> /dev/null 请选择 稳定版 以及 在/etc目录下安装 3.2 导入修改后的配置文件此时你需要修改 UA3F 作者提供的配置文件 https://cdn.jsdelivr.net/gh/SunBK201/UA3F@master/clash/ua3f-global-enhance.yamlUA3F 增强版配置文件 修改完配置文件后,可以将文件上传到我的网盘获取直链,同时我的网盘也支持在线编辑 https://cloud.sakurasep.top上杉九月的网盘 注册完成后点击网站右下角的加号选择文件上传,上传后双击文件进行在线编辑,最后右键文件获取外链 在 shellclash 的控制台,选择 导入配置文件 - 在线获取完整配置文件 3.3 安装本地面板安装本地面板方便管理配置 3.4 关闭只代理常用端口最后一定要关闭 只代理常用端口 3.5 访问管理界面此时点击 CN 策略组的测速按钮,测得 ua3f 是可以连通的,说明配置是正确的。 然后多连几个设备,打开腾讯系应用,在管理界面的连接页面看一下是否触发了规则,走的是机场代理。 三、注意事项目前我在使用的时候,发现 bilibili 手机端默认使用 http 协议播放视频,这会导致看 bilibili 的视频走代理,请在手机端的设置-播放设置-其他播放设置中开始使用 https 播放。 如果有其他问题欢迎在评论区交流反馈,感谢! 后记前几天看科技宅小明测北京高校的网速,才感觉那句老话说的好,一流大学抓学术、二流大学抓技术、三流大学抓纪律。校园网全覆盖自然是好的,比如说在新的图书馆,有 WIFI 看课啥的都很爽。但是宿舍这地方还搞一堆限制,完全就是搞人心态。现在山东宽带费用不贵吧,千兆宽带一年也就 300 左右,校园网在宿舍可真赚了不少钱。之前和校园网代理还在微信聊过,还说自己也难,没人办理,成本收不回来。哥们你猜为啥没人办,又贵又垃圾,能用流量就流量,能开热点开热点,自然不会加办你这烂的稀碎的校园网。","categories":[{"name":"零基础教程","slug":"零基础教程","permalink":"https://blog.sakurasep.site/categories/%E9%9B%B6%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/"}],"tags":[{"name":"UA3F","slug":"UA3F","permalink":"https://blog.sakurasep.site/tags/UA3F/"},{"name":"校园网","slug":"校园网","permalink":"https://blog.sakurasep.site/tags/%E6%A0%A1%E5%9B%AD%E7%BD%91/"},{"name":"Clash","slug":"Clash","permalink":"https://blog.sakurasep.site/tags/Clash/"},{"name":"Openwrt","slug":"Openwrt","permalink":"https://blog.sakurasep.site/tags/Openwrt/"}]},{"title":"使用第三方 Cron 定时执行 Github Action","slug":"实用工具/使用第三方cron定时执行Github_Action","date":"2024-03-23T01:25:41.000Z","updated":"2024-03-23T01:25:41.000Z","comments":true,"path":"posts/cron-github-action/","permalink":"https://blog.sakurasep.site/posts/cron-github-action/","excerpt":"","text":"为什么不使用 Github Action 自带的 scheduleGithub官方对与 schedule 的定义 Scheduled events(预定事件) The Schedule event allows you to trigger a workflow at a scheduled time.(该Schedule事件允许您在预定时间触发工作流。)Note: The Schedule event can be delayed during periods of high loads of GitHub Actions workflow runs. High load times include the start of every hour. To decrease the chance of delay, schedule your workflow to run at a different time of the hour. 注意:Schedule在 GitHub 操作工作流运行的高负载期间,事件可能会延迟。高负载时间包括每小时开始。为了减少延迟的可能性,请安排您的工作流在不同的时间运行。 从官方的定义可以看出,schedule 是到了设置的时间把你的任务加入一个待执行队列,如果这时队列出现了拥堵的情况,最糟糕的可能是超过定时时间 1-2 小时还没有执行。也就是说对于执行时间比较敏感的任务,建议使用第三方 cron 平台。 如何使用 cron-job 实现精确的定时任务repository_dispatch 是 GitHub Actions 中的一个事件类型,它允许您通过使用 GitHub API 手动触发存储库中的工作流程运行。所以我们可以使用 cron-job 定时调用 Github 的 API,实现精准的定时执行。 1. 更改action文件的触发条件添加repository_dispatch on: workflow_dispatch: repository_dispatch: types: [schedule-run] 2. 获取 Personal access tokens在个人 Github 的 Settings/Developer Settings 创建 token 选择创建经典的 token 选择 token 权限为 repo 此时就获得了你的 token,保存好。 3. 配置 cron-jobhttps://cron-job.org/en/cron-job 官网 注册完成后进入控制台,可以在右上角设置中文 需要填写改为下图内容,需要定时执行哪一个工作流就把对应内容粘贴到网址中 https://api.github.com/repos/需要填写/dispatches 然后在进阶选项中添加标头和请求内容 标头键为 Authorization 值为 token 刚才获取的token 请求体为 { "ref": "main"} 此时保存后进行测试,显示 204 即为成功,此时你对应的 Github Action 便就执行成功了","categories":[{"name":"实用工具","slug":"实用工具","permalink":"https://blog.sakurasep.site/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/"}],"tags":[{"name":"cron","slug":"cron","permalink":"https://blog.sakurasep.site/tags/cron/"},{"name":"Github","slug":"Github","permalink":"https://blog.sakurasep.site/tags/Github/"}]},{"title":"Java的集合框架","slug":"编程学习笔记/Java的集合框架","date":"2024-03-20T07:10:42.000Z","updated":"2024-03-20T07:10:42.000Z","comments":true,"path":"posts/Java_Collection/","permalink":"https://blog.sakurasep.site/posts/Java_Collection/","excerpt":"","text":"集合框架基本概念 Collection 集合框架中用于存储一个个元素的容器,List 和 Set 是它的子类 List: 存储有序的,可重复的数据 ArrayList(主要实现类)、LinkedList、Vector Set: 存储无序的,不可重复的数据 HashSet(主要实现类)、LinkedHashSet、TreeSet Map 集合框架中用于存储 key 到 value 的键值映射的容器 Map:存储一对一对的数据 HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties Collections 用于操作集合框架的一个工具类 Collection 常用方法定义两个集合 Collection collection = new ArrayList();Collection collection1 = new ArrayList();collection.add("test");collection.add("测试");Person person = new Person(10, "xiaohua");collection.add(person);collection1.addAll(collection);collection1.add("123"); add、addAll 前者用于添加对象元素,后者用于添加一整个集合比较常见 System.out.println(collection);System.out.println(collection1); clear、isEmpty、size 清除集合内的元素,用于查看集合是否为空,查看集合元素数量 collection1.clear();System.out.println(collection1.isEmpty());System.out.println(collection1.size()); contains、containsAll 前者是判断集合中是否含有某个对象,后者是判断一个集合是否包含另一个集合 // 没有重写 equals 方法 对于对象的比较相当于 ==// 注意,String 已经默认重写了 equalsSystem.out.println(collection);System.out.println(collection1);System.out.println(collection.contains(person)); // trueSystem.out.println(collection.contains(new Person(10, "xiaohua")));// falseSystem.out.println(collection.contains("test")); // true// 集合之间的包含关系System.out.println(collection.containsAll(collection1)); // falseSystem.out.println(collection1.containsAll(collection)); // true remove、removeAll、retainAll 删除指定元素,删除两个集合的交集,只保留两个集合的交集 System.out.println(collection);System.out.println(collection1);collection1.removeAll(collection);System.out.println(collection1);System.out.println("******************");collection1.add("test");collection1.add("1234");System.out.println(collection);System.out.println(collection1);collection1.retainAll(collection);System.out.println(collection1); toArray&& asList 把集合转换成数组 @Testpublic void test4() { Collection collection = new ArrayList(); collection.add("test"); collection.add("测试"); collection.add(new Person(10, "xiaohua")); // 其他方法 Object[] arr = collection.toArray(); System.out.println(Arrays.toString(arr)); System.out.println(arr[0]); System.out.println(arr[1]);} Arrays中的asList 可以将数组转换成集合 public void test6() { String[] strings = new String[]{"a", "b", "c"}; Collection collection = Arrays.asList(strings); System.out.println(collection);} Iterator迭代器 迭代器是用来遍历元素的 next、hasNext获取集合中下一个元素,hasNext 能够判断是否有下一个元素 next 两个作用,第一个是指针下移,第二个是获取当前的元素 @Testpublic void test1() { Collection collection = new ArrayList(); collection.add("test"); collection.add("测试"); Person person = new Person(10, "xiaohua"); collection.add(person); // 获取迭代器对象 System.out.println(collection); Iterator iterator = collection.iterator();// for (int i = 0; i < collection.size(); i++) {// System.out.println(iterator.next());// } // hasNext while (iterator.hasNext()) { System.out.println(iterator.next()); }} 对于遍历元素还有一种方式,就是增强的 for 循环 使用增强 for 循环的时候,修改 for 循环中的临时变量,将不会修改原有的数据。因为增强 for 循环是将原有的数据赋值给临时变量。 // 增强 for 循环for (Object obj : collection) { System.out.println(obj);} List 常用方法和 Collection 相同,大体上的方法作用是相同的。这里仅介绍 List 作为有序的集合,相比于 Collection 的不同。 List 不同类的区别 ArrayList:List 主要实现类,线程不安全,效率高,底层使用 Object[] 数组储存 LinkedList:底层使用双向链表的方式进行储存,适用于频繁插入删除的操作 Vector:List 的古老实现类,线程安全,效率低,底层使用 Object[] 数组储存 List 的特殊方法add(index,element) add 方法相对于 Collection 多了索引,所以可以在指定位置插入元素。同样,addAll也有这样的特性。 @Testpublic void test1() { List list = new ArrayList(); list.add("test"); list.add(123); Person person = new Person(10, "xiaohu"); list.add(person); System.out.println(list); // add 插入指定索引的元素 list.add(2, "321"); System.out.println(list); // addAll 插入指定索引的集合 List list1 = new ArrayList(); list1.add("test"); list1.add("test"); list1.add("test"); list1.addAll(1, list); System.out.println(list1);} remove(index)remove 方法删除的是索引位置的元素,如果要删除数据,用Integer的 valueof 赋值成一个对象即可 // remove 元素删除的指定索引的元素list1.remove(0);list1.remove(0);System.out.println(list1);// 使用Integer创建对象来删除指定元素list1.remove(Integer.valueOf(123));System.out.println(list1); set,get方法 因为 List 有序,所以说对于某一个位置的元素获取变的更加容易 // get,set 方法list.set(0, person);System.out.println(list.get(0)); indexOf,lastIndexOf,subList第一个是获取指定元素的首次出现的位置,第二个是获取指定元素的最后出现的位置,subList 是获取从 start 到 end 的所有元素 @Testpublic void test2() { List list = new ArrayList(); for (int i = 0; i < 10; i ++){ list.add(i); list.add(i+1); } System.out.println(list); System.out.println(list.indexOf(1)); System.out.println(list.lastIndexOf(1)); System.out.println(list.subList(0, 10));} List 综合测试综合测试一 public class StudentTest { public static void main(String[] args) { List student = new ArrayList(); Scanner scanner = new Scanner(System.in); int flag = 1; while (flag == 1) { System.out.println("请输入学生的姓名:"); String name = scanner.next(); System.out.println("请输入学生的年龄:"); int age = scanner.nextInt(); student.add(new Student(name, age)); System.out.println("输入 1 继续录入,输入 0 停止录入"); flag = scanner.nextInt(); } for (Object obj : student) { Student stu = (Student) obj; System.out.println(stu.toString()); } scanner.close(); }} 综合测试二 对于这个题,list 中存的是 char 字符类型,有两种解决方法。 第一种,存入 list 中的时候在后边加一个 "" list.add((char)number + ""); 第二种,在比较的时候对 char 使用 String 的 valueOf 方法进行赋值 String c = String.valueOf(iterator.next());String c = String.valueOf(obj); 完整代码 public class StringTest { public static void main(String[] args) { ArrayList list = new ArrayList(); for (int i = 0; i < 30; i++) { int max = 122 - 97 + 1; int number = (int) (Math.random() * max + 97); list.add((char)number + ""); } System.out.println(list); int aCount = listTest1(list, "a"); int bCount = listTest1(list, "b"); int cCount = listTest1(list, "c"); int xCount = listTest1(list, "x"); System.out.printf("%d %d %d %d\\n", aCount, bCount, cCount, xCount); } // 迭代器 public static int listTest2(Collection list, String s) { int count = 0; Iterator iterator = list.iterator(); while (iterator.hasNext()) { String c = String.valueOf(iterator.next()); if(c.equals(s)){ count++; } } return count; } // 增强 for 循环 public static int listTest1(Collection list, String s) { int count = 0; for (Object obj : list) { String c = String.valueOf(obj); if (c.equals(s)) { count++; } } return count; }} Set 常用方法Set 声明的方法与 Collection 中声明的 15 个抽象方法相同 对于 Set 来说,我们更重要的是研究他的两个特性。 Set 的常见实现类 HashSet:主要实现类,底层使用 HashMap,也就是使用了数组,单向链表,红黑树结构进行存储 LinkedSet:HashSet 的子类,相比与父类,它在不同的元素之间增加了指针,实现了顺序遍历 TreeSet:底层使用红黑树存储, 可以根据添加的元素对指定的属性大小进行遍历。 Set 的无序性这里的无序性并不是随机性,对与 Set 来说,它保存是数据的方法是 HashMap,也就是对于将要保存的元素,计算它的哈希值,哈希值即为这个元素的保存位置,所以当添加完元素后,你输入的数据将不会按照顺序保存,而是根据自己的计算结果保存到不同位置,这就是 Set 的无序性。 按照 1-> 5 的顺序进行输入,经过哈希算法计算后排列的位置如下图所示 LinkedSet 相当于增加了一个指针,让 1 指向 2,2 指向 3,以此类推,最后遍历的时候便可以根据指针进行遍历。 Set 的不可重复性比较的标准是首先判断 HashCode 得到的哈希值是否相同,如果相等则进行 euqals。只有两者都相同,则认为元素是相同的。 演示代码 HashSet这里可能会有疑问,不是说 Set 中不存在重复的元素,难道对自定义的实体类不生效吗。 我们从Set 存入数据的过程看到,Set 首先要对元素进行哈希计算,这里我们 new 的两个 Person 对象,他们的实体类中没有重写 HashCode 方法,因此调用的是 Object 的方法,该方法并不会把这两个赋值相同的对象计算得到相同的哈希值,所以 Set 会把两个元素看做不同的元素。 为了避免这种问题,我们需要重写实体类中的 HashCode。 测试代码 @Testpublic void test2() { Set set = new HashSet(); set.add("test"); set.add(123); set.add(new Person(10,"xiaohua")); set.add(new Person(10,"xiaohua")); System.out.println(set);} 重写HashCode @Overridepublic int hashCode() { int result = age; result = 31 * result + (name != null ? name.hashCode() : 0); return result;} 此时的运行结果 演示代码 LinkedSetLinkedSet 的优势就是能按照输入顺序输出 @Testpublic void test1() { // LinkedHashSet 实现了记录添加元素的顺序,方便进行遍历 Set set = new LinkedHashSet(); Person person = new Person(10,"xiaohua"); set.add("test"); set.add(123); set.add(person); System.out.println(set); Iterator iterator = set.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }} 演示代码 TreeSet对于 TreeSet 来说,最主要的用处是对插入元素的排序。例如对字符串进行排序 @Testpublic void test3() { Set set = new TreeSet(); set.add("BB"); set.add("AA"); set.add("GG"); set.add("ZZ"); set.add("YY"); // 同一个 TreeSet 中不能添加不同类型的元素,以下添加 123 就会出错 set.add(123); System.out.println(set);} 运行结果 对于 TreeSet 添加自定义的实体类,进行排序的时候如何进行的判断,实际上是使用了自然排序和自定义排序,compareTo 和 compare 的返回值 以下代码中我重写了 User 中 compareTo 的方法,使得元素按照年龄排序,由于 TreeSet 采用的是红黑树的数据结构,存入的数据不能重复,所以说在按照年龄进行排序的时候,还需要别的元素进行辅助排序。 @Testpublic void test4() { Set set = new TreeSet(); Person p1 = new Person(10,"xiaohua"); Person p2 = new Person(12,"xiaohua1"); Person p3 = new Person(12,"xiaohua2"); Person p4 = new Person(13,"xiaohua3"); Person p5 = new Person(14,"xiaohua4"); set.add(p1); set.add(p2); set.add(p3); set.add(p4); set.add(p5); for (Object o : set) { System.out.println(o); }} 重写的compareTo 方法 @Overridepublic int compareTo(Object o) { if (this == o) { return 0; } if (o instanceof Person) { Person p = (Person) o; int number = this.age - p.age; if (number != 0){ return number; } else { return this.name.compareTo(p.name); } } throw new RuntimeException("类型不匹配");} 输出结果 对于不方便修改实体类中的比较方法的情况,可以直接给 TreeSet 一个 Comparator 方法 @Testpublic void test4() { Comparator comparator = new Comparator() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Person && o2 instanceof Person) { Person p1 = (Person) o1; Person p2 = (Person) o2; int value = p1.getName().compareTo(p2.getName()); if (value != 0) { return value; } else { return p1.getAge() - p2.getAge(); } } throw new RuntimeException("数据类型不匹配"); } }; Set set = new TreeSet(comparator); Person p1 = new Person(10,"A1"); Person p2 = new Person(13,"A1"); Person p3 = new Person(10,"B"); Person p4 = new Person(13,"C"); Person p5 = new Person(13,"D"); set.add(p1); set.add(p2); set.add(p3); set.add(p4); set.add(p5); for (Object o : set) { System.out.println(o); }} Set 综合测试综合测试一 @Testpublic void test5() { List list = new ArrayList(); list.add(11); list.add(11); list.add(11); list.add(11); list.add(22); list.add(22); list.add(22); list.add(22); list.add(33); list.add(33); list.add(33); list.add(33); System.out.println(list); System.out.println(duplicateList(list));}public static List duplicateList(List list){ Set set = new LinkedHashSet(list); List new_list = new ArrayList(set); return new_list;} 综合测试二 @Testpublic void test7() { Set set = new HashSet(); while (set.size() < 10) { int randomNumber = (int)(Math.random() * 20) + 1; set.add(randomNumber); } System.out.println(set);} Map 常用方法Map 不同类的区别java.util.Map:存储一对一对的数据,也就是 key-value 键值对 HashMap: 主要实现类,线程不安全的,效率高的。可以添加 null 的 key 与 value。底层使用数组,单向链表,红黑树的数据结构。 LinkedMap:HashMap 的子类,添加了一对双向链表,记录添加的元素的先后顺序。 TreeMap: 底层使用红黑树的数据结构,可以根据添加的 key 元素指定的属性大小进行遍历。 Hashtable: 古老实现类,线程安全的,效率低的。不可以添加 null 的 key 和 value。底层使用数组,单向链表的数据结构。 Properties: 演示代码 HashMap在 HashMap 中,key 是不能够相同的,并且是无序的。而 value 是可以相同的,但由于 value 是 key 的映射,key 是无序的,value 也是无序的。 HashMap 中所有的 key 构成了一个 Set 集合,key 所在的类,需要重写 equals 和 HashCode 方法。 HashMap 中所有的 value 构成了一个Collection 集合,value 所在的类,需要重写 equals 方法。 增删改查put、putAll、remove、put、get @Testpublic void test() { // 增 Map map = new HashMap(); Person p1 = new Person(10,"xiaoming"); map.put("AA", 123); map.put("BB", 13); map.put("CC", 23); map.put(p1, 55); System.out.println(map); Map map1 = new HashMap(); map1.putAll(map); System.out.println(map1);} @Testpublic void test2() { // 删 && 改 && 查 Map map = new HashMap(); Person p1 = new Person(10,"xiaoming"); map.put("AA", 123); map.put("BB", 13); map.put("CC", 23); map.put(p1, 55); Object value = map.remove("BB"); System.out.println(value); map.put("CC", 15); // value System.out.println(map.get("CC")); System.out.println(map);} 长度 遍历size、keySet、values、entrySet @Testpublic void test3() { Map map = new HashMap(); Person p1 = new Person(10, "xiaoming"); map.put("AA", 123); map.put("BB", 13); map.put("CC", 23); map.put(p1, 55); System.out.println(map.size()); // keySet 遍历 key Set keySet = map.keySet(); for (Object o :keySet) { System.out.println(o); } // values 遍历 value Collection values = map.values(); for (Object o : values) { System.out.println(o); } // entrySet 遍历 entry 键值对 Set entrySet = map.entrySet(); for (Object o :entrySet) { System.out.println(o); }} 演示代码 TreeMap对于 TreeMap 来说,和 TreeSet 一样,重要的是自然排序和定制排序的写法。 自然排序,根据实体类中的compareTo 方法 @Testpublic void test2() { // 自然排序 Map map = new TreeMap(); Person p1 = new Person(10, "zeus"); Person p2 = new Person(14, "faker"); Person p3 = new Person(12, "jerry"); Person p4 = new Person(12, "tom"); map.put(p1, 12); map.put(p2, 63); map.put(p3, 42); map.put(p4, 31); Set entry = map.entrySet(); for (Object o : entry) { System.out.println(o); }} 定制排序,TreeMap同样可以传入一个 comparator,在这里 comparator 中我们可以自定义按照类的什么属性进行排序 @Testpublic void test1() { Comparator comparator = new Comparator() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Person && o2 instanceof Person) { Person p1 = (Person) o1; Person p2 = (Person) o2; int value = p1.getName().compareTo(p2.getName()); if (value != 0) { return value; } else { return p1.getAge() - p2.getAge(); } } throw new RuntimeException("数据类型不匹配"); } }; Map map = new TreeMap(comparator); Person p1 = new Person(10, "zeus"); Person p2 = new Person(14, "faker"); Person p3 = new Person(12, "jerry"); Person p4 = new Person(12, "tom"); map.put(p1, 12); map.put(p2, 63); map.put(p3, 42); map.put(p4, 31); Set entry = map.entrySet(); for (Object o : entry) { System.out.println(o); }} 演示代码 PropertiesProperties 多用于在文件的 IO 流中,使用 Properties 读取配置文件可以有效的提高代码的可维护性。 @Testpublic void test1() throws IOException { File file = new File("config.properties"); System.out.println(file.getAbsolutePath()); FileInputStream fileInputStream = new FileInputStream(file); Properties properties = new Properties(); properties.load(fileInputStream); System.out.println(properties.get("name")); System.out.println(properties.get("password")); fileInputStream.close();} Collections 工具类排序操作// 排序操作@Testpublic void test1() { List list = Arrays.asList(1,42,32,43,45,3,4,53,23,31,45,98); System.out.println(list); // reverse 反转 list 中元素的顺序 Collections.reverse(list); System.out.println(list); // shuffle 对 list 中的元素进行随机排序 Collections.shuffle(list); System.out.println(list); // sort 对 list 中的元素进行自然排序 Collections.sort(list); System.out.println(list); Comparator comparator = new Comparator() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Integer && o2 instanceof Integer) { Integer i1 = (Integer) o1; Integer i2 = (Integer) o2; return -(i1.intValue() - i2.intValue()); } throw new RuntimeException("类型不匹配"); } }; // sort 对 list 中的元素进行定制排序 Collections.sort(list, comparator); System.out.println(list);} 查找操作// 查找操作@Testpublic void test2() { List list = Arrays.asList(1, 42, 1, 43, 45, 1, 4, 53, 23, 31, 45, 98); System.out.println(list); // max 获取 list 中的最大值 Object max = Collections.max(list); System.out.println(max); Comparator comparator = new Comparator() { @Override public int compare(Object o1, Object o2) { if (o1 instanceof Integer && o2 instanceof Integer) { Integer i1 = (Integer) o1; Integer i2 = (Integer) o2; return -(i1.intValue() - i2.intValue()); } throw new RuntimeException("类型不匹配"); } }; // max 同样可以接受一个 comparator,因为它获取的逻辑是排序后的最右边的数据,如果 comparator 传入的是倒序,最大值反而是最小值 Object max1 = Collections.max(list, comparator); System.out.println(max1); // frequency 返回 list 中指定元素出现的个数 int number = Collections.frequency(list, 1); System.out.println(number);} 复制,替换操作@Testpublic void test3() { List list = Arrays.asList(1, 42, 1, 43, 45, 1, 4, 53, 23, 31, 45, 98); System.out.println(list); // copy 将一个 list 赋值到一个新的 list,但是新的 list 的 size 必须大于等于旧的 list List new_list = Arrays.asList(new Object[list.size()]); Collections.copy(new_list, list); System.out.println(new_list);} unmodifiableList生成一个只读格式的 list @Testpublic void test4() { List list = Arrays.asList(1, 42, 1, 43, 45, 1, 4, 53, 23, 31, 45, 98); System.out.println(list); List new_list = Collections.unmodifiableList(list); // unmodifiableList 将 list 转换成一个新的只读的 list new_list.add(12); }","categories":[{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"集合框架","slug":"集合框架","permalink":"https://blog.sakurasep.site/tags/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/"}]},{"title":"算法通关村第一关-链表白银挑战笔记","slug":"鱼皮的算法训练营/鱼皮的算法训练营_Day01_白银","date":"2024-03-20T06:30:46.000Z","updated":"2024-03-20T06:32:12.000Z","comments":true,"path":"posts/Yupi-01-Second/","permalink":"https://blog.sakurasep.site/posts/Yupi-01-Second/","excerpt":"","text":"题目练习 JZ52 两个链表的第一个公共结点描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 数据范围: $n \\leq 1000$ 要求:$O(1)$,时间复杂度 $O(1)$ 例如,输入{1,2,3},{4,5},{6,7}时,两个无环的单向链表的结构如下图所示: 可以看到它们的第一个公共结点的结点值为6,所以返回结点值为6的结点。 输入描述输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。 后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCommonNode里面,用户得到的输入只有pHead1和pHead2。 返回值描述返回传入的pHead1和pHead2的第一个公共结点,后台会打印以该节点为头节点的链表。 样例输入: {1,2,3},{4,5},{6,7}输出: {6,7}输入: {1},{2,3},{}输出: {} https://blog.sakurasep.site/assets/user/about_me.jpg欢迎关注我的其他平台","categories":[{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"鱼皮的算法通关村","slug":"鱼皮的算法通关村","permalink":"https://blog.sakurasep.site/tags/%E9%B1%BC%E7%9A%AE%E7%9A%84%E7%AE%97%E6%B3%95%E9%80%9A%E5%85%B3%E6%9D%91/"}]},{"title":"算法通关村第一关-链表青铜挑战笔记","slug":"鱼皮的算法训练营/鱼皮的算法训练营_Day01_青铜","date":"2024-03-19T08:30:46.000Z","updated":"2024-03-18T16:00:00.000Z","comments":true,"path":"posts/Yupi-01-First/","permalink":"https://blog.sakurasep.site/posts/Yupi-01-First/","excerpt":"","text":"重要说明图片与实际代码无关,这里引用的图片有很大一部分是把头结点当做链表的第一个元素,我写的示例代码不将头结点视为第一个元素 链表的概念简单来说就是说从头结点出发,每一个结点都有一个指向后继结点的 next 指针,表中最后一个元素的 next 指向 null 链表的构造结构这里我们使用 Java 来创建单链表的基本结构,这里是 Leetcode 常用的构建方法 public class ListNode { public int val; public ListNode next; ListNode(int x) { val = x; next = null; } ListNode node = new ListNode(1);} 对于简化的构造方法,你应该使用以下的代码对结点进行修改赋值 node.next = new_node;node.val = number; 为了练习 Java 的面向对象特性,这里我不用简化的构造方法。 public class ListNode { // 链表数据 private int data; // 链表指针 private ListNode next; public ListNode(int data) { this.data = data; } public int getData() { return data; } public void setData(int data) { this.data = data; } public ListNode getNext() { return next; } public void setNext(ListNode next) { this.next = next; }} 而这种方式的修改赋值就是调用 get 和 set 办法 node.setNext(new_node);node.setNext(new_node.getNext());node.setData(number);node.getData(); 链表的增删改查 - 增任何数据结构都避免不了的最基础的操作,首先来看最基础的构建链表。 对于单链表来说,构建链表有两种方式,一种是头插法,一种是尾插法。 头插法头插法简单说来就是逆序插入,每次插入将新节点的 next 指向头结点的 next,然后将头结点的 next 指向新结点。 示例代码 // 头插法插入新结点public ListNode headInsert(ListNode head, ListNode node) { node.setNext(head.getNext()); head.setNext(node); return head;} 尾插法尾插法简单来说就是顺序插入,每次插入都将此时的“头结点”的 next 改成新结点 node,然后将新结点 node 座位链表尾部,next 改为 null。和头插法不一样的是,尾插法每次返回的结点并不是头结点,所以在构建链表的时候记得保存头结点的信息。 // 尾插法插入新结点public ListNode tailInsert(ListNode head, ListNode node) { head.setNext(node); node.setNext(null); return node;} 构建链表这段代码展示了在测试类中初始化链表的全过程,这里我用 L 结点保存尾插时头结点的信息,后续会用到。 public static void main(String[] args) { ListNodeTest test = new ListNodeTest(); // 初始化头结点 ListNode head = new ListNode(-1); head.setNext(null); // 复制头结点 ListNode L = head; // 构建链表 test.initList(head, 5); } // 构建新链表 public ListNode initList(ListNode head, int number) { for (int i = 0; i < number; i++) { ListNode new_node = new ListNode(i); // 头插法 head = headInsert(head, new_node); // 尾插法 head = tailInsert(head, new_node); } return head; } 综合练习// 具体位置插入结点public ListNode insertNode(ListNode head, ListNode node, int position) { // 头结点为空,意味着链表为空,故此时返回要插入的结点 if (head == null) { return node; } // 检查插入的位置是否越界, 返回头结点等待下次插入 int length = getListLength(head); if (position > length + 2 || position < 1) { System.out.println("位置参数越界"); return head; } // 遍历找到前驱节点,使用头插法插入新结点 ListNode P = head; for (int i = 0 ; i < position; i++) { P = P.getNext(); } headInsert(P, node); return head;} 运行结果 链表的增删改查 - 查先来看看链表的查询,对于单链表来说,一定是从头结点逐个向后访问,因此,头结点是一定不可以丢掉的。 我们写一个遍历函数,同时输出链表长度 // 获取链表长度public int getListLength(ListNode head) { int length = 0; ListNode node = head; while(node != null) { length++; System.out.printf("%d ", node.getData()); node = node.getNext(); } return length;} 这里可以看出,传入遍历函数的结点不同,因为头插法返回的都是头结点,此时的 head 可以说是没变,直接传入。而对于尾插法来说,我这里的处理是用了一个 L 结点存储头结点信息,所以传入遍历函数的是 L 结点。 // 头插法获取链表可以直接传入返回的 head,因为头插法每次返回的都是头结点// 尾插法获取链表需要传入之前复制的头结点信息,因为尾插法每次返回的是结点System.out.println("链表长度为: " + (test.getListLength(head) - 1));System.out.println("链表长度为: " + (test.getListLength(L) - 1)); 链表的增删改查 - 删对于删除来说还是挺好办的,处理以下特殊位置,其他位置遍历到前驱结点,然后将前驱结点的 next 直接设置为删除结点的后置结点。 表头这种情况只需要 head = head.getNext(); 表尾和其他遍历到删除结点的前驱就可以进行操作了 // 删除目标结点public ListNode deleteNode(ListNode head, int position) { // 头结点为空,意味着链表为空,无法删除 if (head == null) { return null; } // 检查插入的位置是否越界, 返回头结点等待下次插入 int length = getListLength(head); if (position > length + 1 || position < 1) { System.out.println("位置参数越界"); return head; } // 表头元素删除 if (position == 1) { head.setNext(head.getNext().getNext()); } // 表尾和其他位置 ListNode P = head; for (int i = 0; i < position - 1; i++) { P = P.getNext(); } P.setNext(P.getNext().getNext()); return head;} 运行结果 链表的增删改查 - 改改也是水到渠成,同样的操作,只不过这次直接遍历到需要修改的结点即可 // 修改目标结点public ListNode changeNode(ListNode head, int data, int position) { // 头结点为空,意味着链表为空,无法删除 if (head == null) { return null; } // 检查插入的位置是否越界, 返回头结点等待下次插入 int length = getListLength(head); if (position > length + 1 || position < 1) { System.out.println("位置参数越界"); return head; } // 遍历后修改 ListNode P = head; for (int i = 0; i < position; i++) { P = P.getNext(); } P.setData(data); return head;} 运行结果","categories":[{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"鱼皮的算法通关村","slug":"鱼皮的算法通关村","permalink":"https://blog.sakurasep.site/tags/%E9%B1%BC%E7%9A%AE%E7%9A%84%E7%AE%97%E6%B3%95%E9%80%9A%E5%85%B3%E6%9D%91/"}]},{"title":"Java的面向对象","slug":"编程学习笔记/Java的面向对象","date":"2024-03-12T07:47:58.000Z","updated":"2024-03-19T06:47:00.000Z","comments":true,"path":"posts/Java_OOP/","permalink":"https://blog.sakurasep.site/posts/Java_OOP/","excerpt":"","text":"多态多态的基本使用实体类package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class Person { String name; int age; public void eat(){ System.out.println("人吃饭"); } public void walk(){ System.out.println("人走路"); }}package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class Man extends Person{ boolean isSomking; public void eat(){ System.out.println("男人吃肉"); } public void walk(){ System.out.println("男人走路"); } public void play(){ System.out.println("男人打游戏"); }}package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class Woman extends Person{ boolean isBeauty; public void eat(){ System.out.println("女人吃甜点"); } public void walk(){ System.out.println("女人走路"); } public void watch(){ System.out.println("女人看剧"); }} package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.eat(); person.walk(); Man man = new Man(); man.eat(); man.walk(); Woman woman = new Woman(); woman.eat(); woman.walk(); System.out.println("*********多态性********"); Person person1 = new Man(); person1.eat(); person1.walk(); Person person2 = new Woman(); person2.eat(); person2.walk(); }} 测试方法package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.eat(); person.walk(); Man man = new Man(); man.eat(); man.walk(); Woman woman = new Woman(); woman.eat(); woman.walk(); System.out.println("*********多态性********"); Person person1 = new Man(); person1.eat(); person1.walk(); Person person2 = new Woman(); person2.eat(); person2.walk(); }} 输出结果 多态的实际使用测试方法源码当不存在多态性的时候 package Person;/** * @author sakurasep * * @date 2024/3/13 **/public class AccountTest { public static void main(String[] args) { AccountTest test = new AccountTest(); test.console(new Account()); System.out.println("-------------"); test.console(new CheckAccount()); System.out.println("-------------"); test.console(new SaveAccount()); } public void console(Account account){ account.saveMoney(100); account.getMoney(40); } public void console(CheckAccount account){ account.saveMoney(100); account.getMoney(40); } public void console(SaveAccount account){ account.saveMoney(100); account.getMoney(40); }}class Account { String username; String password; int money; // 余额 // 存钱 public void saveMoney(int money) { this.money = money; System.out.printf("普通账户余额为: %d\\n", this.money); } // 取钱 public void getMoney(int money) { if(money <= this.money) { this.money -= money; System.out.printf("普通账户余额为: %d\\n", this.money); } else { System.out.println("普通账户余额不足"); } }}class CheckAccount extends Account { int quota = 500; // 额度 public void saveMoney(int money) { this.money = money + quota; System.out.printf("信用卡账户余额为: %d\\n", this.money); } // 取钱 public void getMoney(int money) { if(this.money >= money) { this.money -= money; System.out.printf("信用卡余额为: %d\\n", this.money); } else { System.out.println("信用卡余额不足"); } }}class SaveAccount extends Account { float money; float rate = 0.2F; // 利率 float interest; // 利息 public void saveMoney(int money) { interest = money * rate; this.money = money + interest; System.out.printf("储蓄卡预期余额为: %f\\n", this.money); } public void getMoney(int money) { if(this.money - interest > money) { this.money -= money; System.out.printf("储蓄卡余额为: %f\\n", this.money); } else { System.out.println("储蓄卡余额不足"); } }} 正常情况下,如果没有 Java 的多态性,那么对于不同对象的方法调用,就需要如下这样写多个同名方法,赋予不同对象的形参 public void console(Account account){ account.saveMoney(100); account.getMoney(40);}public void console(CheckAccount account){ account.saveMoney(100); account.getMoney(40);}public void console(SaveAccount account){ account.saveMoney(100); account.getMoney(40);} 而因为 Java 的多态性,这里的方法便可以省略重复调用,在实际的项目中,多态很有用,符合开闭原则。对于增加新的子类,方法都不需要进行改变,只定义一个父类即可。 public void console(Account account){ account.saveMoney(100); account.getMoney(40);} 输出结果 Java 向下转型测试方法虽然创建的子类的对象,也加载了子类的特有的方法和属性,但是因为我们声明的是父类的引用,所以没有办法直接调用子类特有的属性和方法。 注意,在向下转型的时候可能会出现类型转换异常,即你要转换的类型并不是你声明的类型 所以在进行向下转型之前,为了程序的健壮性,最好使用 instanceof 进行判断 public class AccountTest { public static void main(String[] args) { AccountTest test = new AccountTest(); test.console(new CheckAccount()); test.console(new SaveAccount()); } public void console(Account account){ account.saveMoney(100); account.getMoney(40); // 避免出现类型转换异常 if (account instanceof CheckAccount){ CheckAccount check_account = (CheckAccount)account; check_account.getQuota(); } if (account instanceof SaveAccount){ SaveAccount save_account = (SaveAccount)account; save_account.getInterest(); save_account.getRate(); } }} 输出结果 多态案例练习题目 关系图 实体类package Geometric;/** * @author sakurasep * * @date 2024/3/19 **/public class GeometricObject { protected String color; protected double weight; protected GeometricObject(String color, double weight) { this.color = color; this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } public double findArea(){ return 0; }}package Geometric;/** * @author sakurasep * * @date 2024/3/19 **/public class Circle extends GeometricObject { private double radius; public Circle(String color, double weight, double radius) { super(color, weight); this.radius = radius; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } @Override public double findArea(){ return 3.14 * radius * radius; }}package Geometric;/** * @author sakurasep * * @date 2024/3/19 **/public class MyRectangle extends GeometricObject{ private double width; private double height; public MyRectangle(String color, double weight, double width, double height) { super(color, weight); this.width = width; this.height = height; } public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getHeight() { return height; } public void setHeight(double height) { this.height = height; } @Override public double findArea() { return width * height; }} 测试方法package Geometric;import Person.Man;/** * @author sakurasep * * @date 2024/3/19 **/public class GeometricTest { public static void main(String[] args) { GeometricTest test = new GeometricTest(); Circle c1 = new Circle("red", 1.0, 4); Circle c2 = new Circle("bule", 1.0, 4); MyRectangle m1 = new MyRectangle("red", 1.0, 4, 4); test.displayGeometricObject(c1); test.displayGeometricObject(c2); test.displayGeometricObject(m1); boolean isEquals = test.equalsArea(c1, c2); if (isEquals){ System.out.println("面积相等"); } else { System.out.println("面积不等"); } } public boolean equalsArea(GeometricObject object1, GeometricObject object2){ return object1.findArea() == object2.findArea(); } public void displayGeometricObject(GeometricObject object){ System.out.println("几何图形的面积为: " + object.findArea()); }} 输出结果 重写对象方法重写 Object 类的 equals() 方法对于 String,File ,包装类等已经重写了 Object 的 equals 方法。我们自己用的时候,通常也可以重写 equals 方法实现对象的应用。 当然 IDEA 自带重写 equals 方法 实体类class User { private int age; private String name; public User() { } public User(int age, String name) { this.age = age; this.name = name; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof User) { User user = (User) obj; return this.age == user.age && this.name.equals(user.name); } return false; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (age != user.age) return false; return Objects.equals(name, user.name); }} 测试方法public class UserTest { public static void main(String[] args) { User u1 = new User(10, "lihua"); User u2 = new User(10, "xiaoli"); User u3 = new User(10,"lihua"); System.out.println(u1.equals(u2)); System.out.println(u1.equals(u3)); }} 输出结果 重写 toString() 方法和 equals 一样,String,File 等也已经预先重写了 toString 方法,对于自定义类,我们同样可以进行重写 @Overridepublic String toString() { return "Use r" + "name: " + name + " age: " + age;} 当然,IDEA 也可以自动生成对象的 toString 方法 @Overridepublic String toString() { return "User{" + "age=" + age + ", name='" + name + '\\'' + '}';} 关键字 Static","categories":[{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}]},{"title":"SpringBoot学习笔记","slug":"编程学习笔记/SpringBoot","date":"2024-03-12T07:47:58.000Z","updated":"2024-03-12T07:47:58.000Z","comments":true,"path":"posts/SpringBoot_01/","permalink":"https://blog.sakurasep.site/posts/SpringBoot_01/","excerpt":"","text":"Spring Boot 入门 需求一使用 Spring Boot 开发 Web 应用,浏览器发起/hello请求,返回字符串”hello wordld” 步骤 创建 Maven 工程 导入spring-boot-stater-web 起步依赖 编写 Controller 提供启动类 实现创建项目 添加依赖 创建 Controller 包,HelloController 类 package com.sakurasep.springboot.controller;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author sakurasep * * @date 2024/3/12 **/@RestControllerpublic class HelloController { @RequestMapping("/hello") public String hello() { return "hello world"; }} 运行启动类 测试结果 需求二认识配置文件 - application.yml 相比于 properties 更推荐 yml server: port: 9090 servlet: context-path: /start 使用 @Value 注解获取配置文件键名 email: user: sakurasep@qq.com auth: true @Value("{email.user}")public String user;@Value("{email.auth}")public boolean auth 使用 @ConfigurationProperties 注解获取配置文件 @ConfigurationProperties(prefix = "email")public class User { public String user; public boolean auth;} 需求三使用 Spring 整合 mybatis,实现web 访问 /findByid?id=1 将从数据库读取 id 为1的数据 编写 application.yml 配置文件 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: 123456 url: jdbc:mysql://localhost:3306/tlias 在 pom.xml 添加 mybatis 和 mysql 驱动依赖(添加完成后使用 Maven 构建一下) <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.0</version></dependency><dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId></dependency> 在 pojo 层下面创建 User 实体类 pojo层的用途在Spring Boot项目中,通常会创建一个名为pojo(Plain Old Java Object)的软件包。POJO是指普通的Java对象,它们是没有任何特殊限制的简单Java对象,用于表示应用程序中的数据实体或值对象。这些对象通常只包含私有字段和公共访问器方法,没有特定的框架或库的依赖。 package com.sakurasep.springboot.pojo;/** * @author sakurasep * * @date 2024/3/12 **/public class User { private Integer id; private String username; private String password; private String name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } private Integer gender;} 在 mapper 层下创建 UserMapper 接口,用于 Mybatis 实现对数据库的操作 mapper层的用途在Spring Boot项目中,mapper包通常用于存放数据访问对象(DAO)的接口或类。这些接口或类通常用于定义与数据持久化相关的操作,如数据库的CRUD(创建、读取、更新、删除)操作。 package com.sakurasep.springboot.mapper;import com.sakurasep.springboot.pojo.User;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;/** * @author sakurasep * * @date 2024/3/12 **/@Mapperpublic interface UserMapper { @Select("select * from emp where id = #{id}") public User findByid(Integer id);} 在 service 层 创建 UserService 接口 以及 具体的业务逻辑代码 UserServiceImpl 类 Service层的用途在Spring Boot项目中,Service层通常是业务逻辑层,用于处理应用程序的业务逻辑。Service层在MVC(模型-视图-控制器)架构中位于控制器层和持久化层之间,它负责处理业务逻辑、协调不同的持久化操作,并提供一组服务供控制器层调用。 impl包的用途在一个典型的Spring Boot项目中,Service层下通常会有一个名为impl(implementation的缩写)的包,它是Service层的具体实现。这个包中包含了实际执行业务逻辑的类。 package com.sakurasep.springboot.service;import com.sakurasep.springboot.pojo.User;/** * @author sakurasep * * @date 2024/3/12 **/public interface UserService { public User findByid(Integer id);} package com.sakurasep.springboot.service.impl;import com.sakurasep.springboot.mapper.UserMapper;import com.sakurasep.springboot.pojo.User;import com.sakurasep.springboot.service.UserService;import org.apache.ibatis.annotations.Select;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/** * @author sakurasep * * @date 2024/3/12 **/@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; public User findByid(Integer id){ return userMapper.findByid(id); }} 在 Controller 层 编写 UserController 类 Controller层的用途Controller是Spring Boot项目中的一个组成部分,负责处理客户端请求并将结果返回给客户端。它充当了应用程序的入口点,并与用户交互,通常用于接收HTTP请求、调用Service层处理业务逻辑,并将处理结果返回给客户端。 package com.sakurasep.springboot.controller;import com.sakurasep.springboot.mapper.UserMapper;import com.sakurasep.springboot.pojo.User;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author sakurasep * * @date 2024/3/12 **/@RestControllerpublic class UserController { @Autowired private UserMapper userMapper; @RequestMapping("/findByid") public User findByid(Integer id){ return userMapper.findByid(id); }} 测试结果","categories":[{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}],"tags":[{"name":"SpringBoot","slug":"SpringBoot","permalink":"https://blog.sakurasep.site/tags/SpringBoot/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"}]},{"title":"SpringBoot后端工程搭建","slug":"前后端分离的Blog/SpringBoot后端工程搭建","date":"2024-03-12T02:19:06.000Z","updated":"2024-03-11T16:00:00.000Z","comments":true,"path":"posts/Xiaoha_Blog_02/","permalink":"https://blog.sakurasep.site/posts/Xiaoha_Blog_02/","excerpt":"","text":"SpringBoot后端工程搭建 搭建 Spring Boot 多模块工程(通过 Spring Initializr)什么是多模块项目多模块项目是项目构建中的概念。拿 Maven 来说,多模块项目(Multi-Module Project)是其一个重要特性,它允许我们在一个项目中管理多个子模块。 在一个 Maven 多模块项目中,每个模块都是一个独立的项目,拥有自己的 POM 文件(Project Object Model,项目对象模型)。这些模块可以互相依赖,也可以被其他项目依赖。但是,所有的模块都会被统一管理,它们共享同一套构建系统和依赖管理。 为什么要使用多模块项目主要有以下几个原因: 代码组织:在大型项目中,我们经常需要把代码分成多个模块,以便更好地组织代码。每个模块可以聚焦于一个特定的功能或领域,这样可以提高代码的可读性和可维护性。 依赖管理:Maven 多模块项目可以帮助我们更好地管理项目的依赖。在父项目的 POM 文件中,我们可以定义所有模块共享的依赖,这样可以避免重复的依赖定义,也方便我们管理和升级依赖。 构建和部署:Maven 多模块项目的另一个优点是它可以统一管理项目的构建和部署。我们只需要在父项目中执行 Maven 命令,就可以对所有模块进行构建和部署。这大大简化了开发者的工作。 IDEA 搭建 Spring Boot 多模块工程骨架构建父项目 - weblog没有找到JDK8?服务器url替换成aliyun,否则无法使用jdk8 项目初始化目录,删除无用的文件 创建 web 访问模块这是项目的入口,maven 打包的打包插件在这里存放,同时,博客的前端相关内容也统一存放在这里。 勾选依赖 Lombok 和 Spring Web 创建后台管理模块该模块负责统一放置和管理后台相关的功能 依赖仅用 Lombok,后续再增加新的模块 创建通用模块该模块存放一些通用的功能,比如接口的日志切面,全局异常管理 pom 文件解析weblog在父项目的 pom.xml 文件中对项目进行统一管理 对项目的版本号进行统一管理 项目版本号,主要是涉及项目自身的开发版本,JDK 版本,项目编码 Maven 相关内容,依赖的是 JDK 版本 项目依赖包的版本号 <!-- 版本号统一管理 --> <properties> <!-- 项目版本号 --> <revision>0.0.1-SNAPSHOT</revision> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Maven 相关 --> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <!-- 依赖包版本 --> <lombok.version>1.18.28</lombok.version> <guava.version>31.1-jre</guava.version> <commons-lang3.version>3.12.0</commons-lang3.version> <jackson.version>2.15.2</jackson.version> </properties> 项目相关依赖的管理 子模块的名称以及版本号 常用依赖工具的名称以及版本号 <!-- 统一依赖管理 --> <dependencyManagement> <dependencies> <dependency> <groupId>com.sakurasep</groupId> <artifactId>weblog-admin</artifactId> <version>${revision}</version> </dependency> <dependency> <groupId>com.sakurasep</groupId> <artifactId>weblog-common</artifactId> <version>${revision}</version> </dependency> <!-- 常用工具库 --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <!-- Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> </dependencies> </dependencyManagement> 项目的构建设置这里添加了spring-boot-maven-plugin <build> <!-- 统一插件管理 --> <pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </pluginManagement></build> weblog-web<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 指定父项目为 weblog-springboot --> <parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-springboot</artifactId> <version>${revision}</version> </parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-web</artifactId> <name>weblog-web</name> <description>weblog-web (入口项目,负责博客前台展示相关功能,打包也放在这个模块负责)</description> <dependencies> <dependency> <groupId>com.sakurasep</groupId> <artifactId>weblog-common</artifactId> </dependency> <dependency> <groupId>com.sakurasep</groupId> <artifactId>weblog-admin</artifactId> </dependency> <!-- Web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 免写冗余的 Java 样板式代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project> weblog-admin<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 指定父项目为 weblog-springboot --> <parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-springboot</artifactId> <version>${revision}</version> </parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-admin</artifactId> <name>weblog-admin</name> <description>weblog-admin (负责管理后台相关功能)</description> <dependencies> <dependency> <groupId>com.sakurasep</groupId> <artifactId>weblog-common</artifactId> </dependency> <!-- 免写冗余的 Java 样板式代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies></project> weblog-common<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-springboot</artifactId> <version>${revision}</version> </parent> <groupId>com.sakurasep</groupId> <artifactId>weblog-common</artifactId> <name>weblog-common</name> <description>weblog-module-common (此模块用于存放一些通用的功能)</description> <dependencies> <!-- 免写冗余的 Java 样板式代码 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- 单元测试 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- AOP 切面 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> </dependencies></project> 测试项目执行 mvn clean 执行 mvn package 运行该 Spring Boot 项目,在 weblog-web 找到 WeblogWebApplication 启动类 运行在 8080 端口 Spring Boot 多环境配置多环境配置文件在 weblog-web 添加多环境配置文件 application.yml 用于默认配置 application-dev.yml 用于开发环境 application-test.yml 用于测试环境 application-prod.yml 用于生产环境 相比于 properties 格式的配置文件,yaml 格式的显然可阅读性更好 在默认配置文件中激活 dev 环境 启动项目测试,出现以下标注语句表示激活成功 配置 LombokLombok 的优点 简化 Getter 和 Setter 方法: 在传统的 Java 开发中,你经常需要为每个类的属性手动编写 Getter 和 Setter 方法,但是有了 Lombok,你只需要在属性上加上@Getter和@Setter注解,Lombok 就会为你自动生成这些方法。 自动生成构造函数: 通过`@NoArgsConstructor %}、 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.28</version> <scope>provided</scope></dependency> 自定义 logback 配置logback的优点 性能:Logback 在性能上超越了许多其他的日志实现,尤其是在高并发环境下。 灵活性:Logback 提供了高度灵活的日志配置方式,支持从 XML、Groovy 以及编程式的方式进行配置。 功能丰富:除了基本的日志功能,Logback 还提供了如日志归档、日志级别动态修改、事件监听等高级功能。 与 SLF4J 集成:SLF4J 是一个日志门面(facade),使得应用程序可以在运行时更换日志实现。Logback 作为 SLF4J 的一个原生实现,可以无缝地与其集成。 与 Spring Boot 的自动配置集成:Spring Boot 提供了对 Logback 的自动配置,这意味着开发者无需手动配置 Logback,只需提供一个简单的配置文件即可。 添加logback添加依赖spring boot 默认使用 logback 为默认的日志系统,只需要添加 spring-boot-starter-web 依赖就会自动包含 logback 相关依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency> 配置 logback在 weblog-web 的配置文件夹中添加 logback-weblog.xml <?xml version="1.0" encoding="UTF-8"?><configuration > <jmxConfigurator/> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <!-- 应用名称 --> <property scope="context" name="appName" value="weblog" /> <!-- 自定义日志输出路径,以及日志名称前缀 --> <property name="LOG_FILE" value="/app/weblog/logs/${appName}.%d{yyyy-MM-dd}"/> <property name="FILE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/> <!--<property name="CONSOLE_LOG_PATTERN" value="${FILE_LOG_PATTERN}"/>--> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 日志文件输出的文件名 --> <FileNamePattern>${LOG_FILE}-%i.log</FileNamePattern> <!-- 日志文件保留天数 --> <MaxHistory>30</MaxHistory> <!-- 日志文件最大的大小 --> <TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </TimeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!-- 格式化输出:%d 表示日期,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度 %errorMessage:日志消息,%n 是换行符--> <pattern>${FILE_LOG_PATTERN}</pattern> </encoder> </appender> <!-- dev 环境(仅输出到控制台) --> <springProfile name="dev"> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <root level="info"> <appender-ref ref="CONSOLE" /> </root> </springProfile> <!-- prod 环境(仅输出到文件中) --> <springProfile name="prod"> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <root level="INFO"> <appender-ref ref="FILE" /> </root> </springProfile></configuration> 在生产环境的 application-prod.yml 中添加 log 输出 在单元测试包下的测试类中加入以下代码 package com.sakurasep.weblogweb;import lombok.extern.slf4j.Slf4j;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest@Slf4jclass WeblogWebApplicationTests { @Test void contextLoads() { } @Test void testLog() { log.info("这是一行 Info 级别日志"); log.warn("这是一行 Warn 级别日志"); log.error("这是一行 Error 级别日志"); // 占位符 String author = "上杉九月"; log.info("这是一行带有占位符日志,作者:{}", author); }} 运行该测试方法 激活生产环境看是否输出到文件 修改 logback-weblog.xml 中的输出路径 测试输出 测试输出结束记得将路径改回原本的路径,并重新改成dev 环境 自定义注解,实现 API 请求日志切面什么是自定义注解 (Custom Annotations)?Java 注解是从 Java 5 开始引入的,它为我们提供了一种元编程的方法,允许我们在不改变代码逻辑的情况下为代码添加元数据。这些元数据可以在编译时或运行时通过反射被访问。 自定义注解就是用户定义的,用于为代码提供元数据的注解。例如,本小节中自定义的@ApiOperationLog注解,它用来表示一个方法在执行时需要被记录日志。 什么是 AOP (面向切面编程)?AOP(Aspect-Oriented Programming,面向切面编程)是一个编程范式,它提供了一种能力,让开发者能够模块化跨多个对象的横切关注点(例如日志、事务管理、安全等)。 主要概念包括: 切点 (Pointcuts): 定义在哪里应用切面(即在哪里插入横切关注点的代码)。 通知 (Advices): 定义在特定切点上要执行的代码。常见的通知类型有:前置通知、后置通知、环绕通知等。 切面 (Aspects): 切面将切点和通知结合起来,定义了在何处和何时应用特定的逻辑。 例如,使用AOP,我们可以为所有使用@ApiOperationLog注解的方法自动添加日志逻辑,而不需要在每个方法中手动添加。 添加依赖在父项目的 pom.xml 添加配置 <!-- 版本号统一管理 --><properties> <jackson.version>2.15.2</jackson.version></properties><!-- 统一依赖管理 --> <dependencyManagement> <dependencies> <!-- Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> </dependencies> </dependencyManagement> 因为日志切面属于前后端通用的功能,所以在 weblog-common 中也要引用依赖 <!-- AOP 切面 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency><!-- Jackson --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId></dependency> 实现自定义注解在 weblog-common 新建一个 aspect 包 package com.sakurasep.weblogcommon.aspect;import java.lang.annotation.*;//这个元注解用于指定注解的保留策略,即注解在何时生效。RetentionPolicy.RUNTIME 表示该注解将在运行时保留,这意味着它可以通过反射在运行时被访问和解析。@Retention(RetentionPolicy.RUNTIME)//这个元注解用于指定注解的目标元素,即可以在哪些地方使用这个注解。ElementType.METHOD 表示该注解只能用于方法上。这意味着您只能在方法上使用这个特定的注解。@Target({ElementType.METHOD})//这个元注解用于指定被注解的元素是否会出现在生成的Java文档中。如果一个注解使用了 @Documented,那么在生成文档时,被注解的元素及其注解信息会被包含在文档中。这可以帮助文档生成工具(如 JavaDoc)在生成文档时展示关于注解的信息。@Documentedpublic @interface ApiOperationLog { /** * API 功能描述 * * @return */ String description() default "";} 创建 JSON 工具类在 weblog-common 模块下创建 utils 包,统一放置工具类,新建 JsonUtil 工具类 package com.sakurasep.weblogcommon.utils;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import lombok.extern.slf4j.Slf4j;/** * @author sakurasep * * @date 2024/1/7 * json 工具类 用于将传入的对象打印成 json 字符串 **/@Slf4jpublic class JsonUtil { private static final ObjectMapper INSTANCE = new ObjectMapper(); public static String toJsonString(Object obj) { try { return INSTANCE.writeValueAsString(obj); } catch (JsonProcessingException e) { return obj.toString(); } }} 定义日志切面类在 aspect 包中新建切面类 ApiOperationLogAspect package com.sakurasep.weblogcommon.aspect;import com.sakurasep.weblogcommon.utils.JsonUtil;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Pointcut;import org.aspectj.lang.reflect.MethodSignature;import org.slf4j.MDC;import org.springframework.stereotype.Component;import java.lang.reflect.Method;import java.util.Arrays;import java.util.UUID;import java.util.function.Function;import java.util.stream.Collectors;/** * @author sakurasep * * @date 2024/1/7 **/@Aspect@Component@Slf4jpublic class ApiOperationLogAspect { /** 以自定义 @ApiOperationLog 注解为切点,凡是添加 @ApiOperationLog 的方法,都会执行环绕中的代码 */ @Pointcut("@annotation(com.sakurasep.weblogcommon.aspect.ApiOperationLog)") public void apiOperationLog() {} /** * 环绕 * @param joinPoint * @return * @throws Throwable */ @Around("apiOperationLog()") public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { try { // 请求开始时间 long startTime = System.currentTimeMillis(); // MDC MDC.put("traceId", UUID.randomUUID().toString()); // 获取被请求的类和方法 String className = joinPoint.getTarget().getClass().getSimpleName(); String methodName = joinPoint.getSignature().getName(); // 请求入参 Object[] args = joinPoint.getArgs(); // 入参转 JSON 字符串 String argsJsonStr = Arrays.stream(args).map(toJsonStr()).collect(Collectors.joining(", ")); // 功能描述信息 String description = getApiOperationLogDescription(joinPoint); // 打印请求相关参数 log.info("====== 请求开始: [{}], 入参: {}, 请求类: {}, 请求方法: {} =================================== ", description, argsJsonStr, className, methodName); // 执行切点方法 Object result = joinPoint.proceed(); // 执行耗时 long executionTime = System.currentTimeMillis() - startTime; // 打印出参等相关信息 log.info("====== 请求结束: [{}], 耗时: {}ms, 出参: {} =================================== ", description, executionTime, JsonUtil.toJsonString(result)); return result; } finally { MDC.clear(); } } /** * 获取注解的描述信息 * @param joinPoint * @return */ private String getApiOperationLogDescription(ProceedingJoinPoint joinPoint) { // 1. 从 ProceedingJoinPoint 获取 MethodSignature MethodSignature signature = (MethodSignature) joinPoint.getSignature(); // 2. 使用 MethodSignature 获取当前被注解的 Method Method method = signature.getMethod(); // 3. 从 Method 中提取 LogExecution 注解 ApiOperationLog apiOperationLog = method.getAnnotation(ApiOperationLog.class); // 4. 从 LogExecution 注解中获取 description 属性 return apiOperationLog.description(); } /** * 转 JSON 字符串 * @return */ private Function<Object, String> toJsonStr() { return arg -> JsonUtil.toJsonString(arg); }} 添加包扫描在启动类中添加 @ComponentScan,扫描 com.sakurasep 包下的所有类 package com.sakurasep.weblogweb;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan;@SpringBootApplication@ComponentScan({"com.sakurasep.*"})public class WeblogWebApplication { public static void main(String[] args) { SpringApplication.run(WeblogWebApplication.class, args); }} 新增测试接口在 weblog-web 模块中 新建接口创建 controller 包用于存放统一接口,创建 model 包用于放置 pojo 对象 创建 User 类 package com.sakurasep.weblogweb.model;import lombok.Data;/** * @author sakurasep * * @date 2024/3/12 **/@Datapublic class User { private String username; private Integer sex;} 创建 TestController 类,路径为 /test package com.sakurasep.weblogweb.controller;import com.sakurasep.weblogcommon.aspect.ApiOperationLog;import com.sakurasep.weblogweb.model.User;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;/** * @author sakurasep * * @date 2024/3/12 **/@RestController@Slf4jpublic class TestController { // 路径映射到/test @PostMapping("/test") // 注解 @ApiOperationLog(description = "测试接口") public User test(@RequestBody User user){ return user; }} 测试 Test 接口使用 postman 以 json 的格式请求 /test 请求参数 出参 控制台输出日志","categories":[{"name":"项目开发日记","slug":"项目开发日记","permalink":"https://blog.sakurasep.site/categories/%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0/"}],"tags":[{"name":"SpringBoot","slug":"SpringBoot","permalink":"https://blog.sakurasep.site/tags/SpringBoot/"},{"name":"后端","slug":"后端","permalink":"https://blog.sakurasep.site/tags/%E5%90%8E%E7%AB%AF/"},{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"Maven","slug":"Maven","permalink":"https://blog.sakurasep.site/tags/Maven/"}]},{"title":"准备本地开发环境","slug":"前后端分离的Blog/准备本地开发环境","date":"2024-03-12T02:19:06.000Z","updated":"2024-03-11T16:00:00.000Z","comments":true,"path":"posts/Xiaoha_Blog_01/","permalink":"https://blog.sakurasep.site/posts/Xiaoha_Blog_01/","excerpt":"","text":"准备本地开发环境 环境准备基础环境系统: macOS Sonoma 14.3包管理器: homebrew 4.2.2 后端开发IDE: IDEA 2023.1.3数据库可视化: Navicat 16java管理程序: JenvJDK: openjdk1.8mysql: 5.7Maven: 3.9.6 前端开发IDE: VsCodeNodejs: 16","categories":[{"name":"项目开发日记","slug":"项目开发日记","permalink":"https://blog.sakurasep.site/categories/%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0/"}],"tags":[{"name":"SpringBoot","slug":"SpringBoot","permalink":"https://blog.sakurasep.site/tags/SpringBoot/"},{"name":"后端","slug":"后端","permalink":"https://blog.sakurasep.site/tags/%E5%90%8E%E7%AB%AF/"},{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"Maven","slug":"Maven","permalink":"https://blog.sakurasep.site/tags/Maven/"}]},{"title":"适用于 Stellar 的标签转换脚本","slug":"实用工具/适用于Stellar的标签转换脚本","date":"2024-03-07T06:53:47.000Z","updated":"2024-03-06T16:00:00.000Z","comments":true,"path":"posts/md-to-stellar/","permalink":"https://blog.sakurasep.site/posts/md-to-stellar/","excerpt":"","text":"一、图片标签测试 1.1 image ⇄ 图片超链接 1.2 galley 标签内不进行修改@test 二、一级标题测试 2.1 quot ⇄ 一级标题一级标题转换成quot 二级标题不转换三级标题不转换四级标题不转换五级标题不转换六级标题不转换三、无序列表测试 3.1 radio ⇄ 无序列表无序列表1 无序列表2 无序列表3 无序列表4 无序列表5 四、引用标签测试 4.1 note ⇄ 引用引用标签转换成为note 引用标签转换成为note 五、超链接测试 5.1 link ⇄ 超链接https://blog.sakurasep.site上杉九月的博客 六、单行代码测试 6.1 copy ⇄ 单行代码 6.2 代码块不转换#include<iostream>using namespace std;int main(){ cout << "Hello world";}return 0;","categories":[{"name":"零基础教程","slug":"零基础教程","permalink":"https://blog.sakurasep.site/categories/%E9%9B%B6%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/"}],"tags":[{"name":"python","slug":"python","permalink":"https://blog.sakurasep.site/tags/python/"},{"name":"markdown","slug":"markdown","permalink":"https://blog.sakurasep.site/tags/markdown/"},{"name":"stellar","slug":"stellar","permalink":"https://blog.sakurasep.site/tags/stellar/"},{"name":"标准化","slug":"标准化","permalink":"https://blog.sakurasep.site/tags/%E6%A0%87%E5%87%86%E5%8C%96/"}]},{"title":"媒体库使用指南","slug":"AIO服务器/媒体库使用指南","date":"2024-02-21T08:02:42.000Z","updated":"2024-03-18T12:05:37.000Z","comments":true,"path":"posts/How-To-Use-MediaServer/","permalink":"https://blog.sakurasep.site/posts/How-To-Use-MediaServer/","excerpt":"","text":"一、媒体库介绍目前在服务器上同时运行着两个媒体库,一个是我自行搭建的,使用 NASTools 和 AutoBangumi 进行媒体管理和追番自动化的本地库(以后简称本地库)。 1. 本地库1.1 本地库的优点可以通过微信或者 Telegram 进行交互,一键下载入库你想看的影片 使用 AIO 服务器的核显进行解码,理论上支持所有硬件的播放 在外观看如果流量不足可以使用转码功能,将高码率的视频转成较低码率以降低流量消耗(因为有些 4K 电影原盘的码率可能平均 30Mb/s ,也就是正常的 5G 网速才能够跑满) 支持实时更新蜜柑计划上的新番,基本做到制作组发布后几个小时内获取到新番 支持Infuse,iOS & Apple TV & macOS 设备推荐使用 Infuse,价格便宜,效果更好 1.2 本地库的缺点外网上传带宽取决于我家里宽带的上传带宽,目前是 50Mbps,无法实现多人流畅观看 4K 电影原盘,后续我会将部分影片上传到阿里云盘,以获取直链加速外网播放速度 资源较少,目前收录的内容见媒体库收录存档,后续会逐渐增加存量,明年会将硬盘阵列升级到 8x8TB 的机械硬盘阵列,目前存储空间为 14TB 2. 网络库一个是网上最全,更新相对及时的小雅媒体库,它的环境是通过阿里云盘转存小雅保存好的文件,然后导入小雅刮削好的元数据,实现资源以媒体库的形式展示出来(以下简称网络库)。 2.1 网络库的优点全网最全的影视资源,基本没有你想不到的 访问速度取决于阿里云盘的下载速度,我是阿里云盘的会员,理论上能跑满 500Mbps 的宽带 更新速度尚可,小雅媒体库算是一个公益,持续,稳定的媒体库了 2.2 网络库的缺点Infuse 请不要使用小雅媒体库,因为会出现奇奇怪怪的 bug 小雅提供的 Emby 容器我个人并没有配置转码,在某些设备(例如直接使用网页)上可能无法播放 新番没有实时更新,目前最新的是 2023 年冬季动漫,还没有更新 2024 年春季动漫 有些 bug 我是修不了的,因为同步文件和数据不是由我管理,需要等待脚本更新 二、媒体库的使用1. 如何观看媒体库中的影片十分不推荐使用网页端,因为网页端无法调用本机进行解码,会导致观看所有资源都会通过服务器进行转码,大大消耗了服务器的资源。 0318客户端资源仅用于学习交流,所有资源来自于以下Telegram频道。你可以通过源 TG 频道下载,也可以通过我提供的网盘下载 https://t.me/EmbyNoisyXEmby学习小秘 1.1 Windows 用户Windows 的使用很方便,下载开心版的客户端即可 https://cloud.sakurasep.top/s/jRfMWindows开心版 安装结束后有一个配置和卸载工具,可以执行命令针对客户端进行修改,Windows 的玩法是最多的 安装完成打开客户端,输入服务器地址以及账号密码,即可进行观看 1.2 macOS 用户使用 Electron 版(次优)https://cloud.sakurasep.top/s/k5h6macOS Electron Emby 使用 Emby 官方客户端 (不推荐)注意事项使用脚本破解很容易失效,为了 Emby 这官方客户端的效果花 30 一个月买订阅又不值得。故不推荐使用,破解成功的话千万不要升级,因为很难说升级后脚本还能不能适配 在 App Store 下载 Emby 在终端输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/psychopasss/ss_rule/main/macOS/EmbyUnlock.sh)" 脚本输出 输入服务器地址进入首页,正常播放 如果弹出付费订阅验证,请关闭代理以及重新运行脚本 使用第三方客户端 Infuse (付费优选)小雅Emby 不要添加到Infuse!!! Infuse 的扫库会使得 小雅请求阿里云盘的 token 过量,从而失效 相比于付费给 Emby,Infuse 的会员价格更适合,并且是全平台,你的 iPad iPhone macOS AppleTV 都只需要购买一次订阅就可以全平台享受,价格也不贵,月费 13 元(之前 7 元),年费 88,总之还是挺实惠的。 我一直在用 Infuse 就是因为 Infuse 界面确实好看,等之后买了 AppleTV 也能顺畅使用。 从 App Store 下载 Infuse 打开后在文件-新增文件来源 添加服务器 在 其他 Emby... 这里添加服务器地址,选择媒体库模式 添加后等待 Infuse 扫库刮削媒体信息,刮削完成在首页变便会显示内容 使用 VidHub(不推荐)注意,该播放器最近被发现禁止播放无版权内容,作为一个本地播放器使用联网权限来限制保存的视频,严重影响对该软件的信任,所以请不要使用这款软件 VidHub连接到媒体服务器貌似不会扫库,是直接获取源服务器的信息,所以说小雅应该是可用的 VidHub 是一款免费的国产播放器,最近才听说,试着用了用还是挺不错的,后续更新对更多片源格式的支持后应该会能和 Infuse 刚一刚。 在 App Store 下载 VidHub VidHub 也支持两种添加方式 第一种是针对你没有媒体库管理软件,使用 bt 下载电影或是云盘转存电影,此时可以使用文件源 第二种是针对有媒体库的用户,这里我们就选择第二种方式 连接成功后点击已连接的服务器 剧集界面 1.3 Android 用户目前安卓上有两个版本,一个是常规版,一个是 MIUI 特供版,两者在界面上没有什么区别,特供版改成了小米视频的包名,用于启动视频工具箱里的补帧功能 MIUI特供版该版本是为了支持MIUI 12.xx / 骁龙8xx平台专属的动态画面补偿(视频补帧)功能而做修改,并添加了开心整合包内容,详细修改见频道记录。 https://cloud.sakurasep.top/s/l5i5Android 普通版 https://cloud.sakurasep.top/s/l5i5MIUI特供版 1.4 IOS 用户注意因为官方版的 Emby 破解过于麻烦,需要使用到圈 X,圈 X 还是挺贵的,有这钱还不如去买 Infuse 使用 Infuse从 App Store 下载 Infuse 如果你在 macOS 已经配置过了,iPad 端会云同步你的连接信息 如果没有配置,点击主页的设置,和 macOS 端一样的配置方法 软件首页& 媒体信息页 使用 VidHub从 App Store 下载 VidHub 同样的,VidHub 也有云端同步功能,他的配置方法和 macOS 仍然保持相同 效果展示软件首页和媒体信息页 1.5 Android TV 用户手里没有,大概介绍一下安装流程。 下载电视版本的 Emby 客户端 一般来说将安装包拷贝到 U盘,然后进入电视中安装(有些电视不允许安装第三方应用,这样的话需要打开 adb 调试,然后在同一个局域网内进行 adb 安装,这个我们以后再说) 打开应用,输入服务器地址和账号密码进行观看 https://cloud.sakurasep.top/s/nRtqAndroid TV 通用版 1.6 Apple TV 用户手里没有,大概介绍一下安装流程。 登录外区 Apple ID 账号,一般来说美区就可以,下载 Infuse 或者 VidHub 输入服务器地址和账号密码进行观看 2. 如何搜索你想看的内容因为我使用了 Nastool 作为媒体库管理工具,所以在这里实现了两种交互方式,企业微信和 Telegram。企业微信供内部交流使用,开放给大家的是 Telegram 群组 添加 Telegram 群组 和 Telegram BotBot @sakurasep_nastool_bot https://t.me/+IgxEydBNUuZiNzM1Channel 注意事项Bot 是用于发送消息与媒体管理服务进行交互的,Channel 是接受消息通知的。 获取 ID 并 添加权限如果想使用交互请加我的 TG 进行私聊,发给我你的 ID,以下是 ID 获取方法 获取 ID 的 bot @getidsbot 添加后输入 /start 开始 使用方法找到刚才添加的媒体管理 bot 直接发送你想看的片名,注意,近期上映的院线影片在下线前不会搜到。 点击链接可以查看影片详细的信息,确认无误后发送序号自动开始下载入库,根据下载的大小和做种人数,基本热门的都能在几个小时内完成下载。 入库成功 此时 Emby 服务器中便有了水浒传 三、动漫归档计划相比于非动漫来说,我认为小雅媒体库做的已经很好了,唯独对于动漫这方面来说小雅内容并不是特别优质。 目前的进度 1. 20242024 春季新番 2. 20232023 冬季未完结 2023 冬季完结 目前我想的是把以往年份的有趣的动漫都归档到本地以及云盘中,我个人有阿里云盘12T,Onedrive E5 开发者账号,也就是 25个子账户,每个账户 5T Onedrive 现在的想法是本地和阿里云盘存一份热门动漫,在Onedrive 中尽量存储能获取的所有内容。 如果你能够提供容灾的云盘空间或是有时间对媒体库进行整理下载,欢迎在 TG 联系我。 四、媒体库更新日志因为时间原因,更新图片大概一个月一次,请查看下面的索引 - 动画电影 - 哪吒闹海 (1979) [TMDB:74037] [IMDB:tt0354770] - 风之谷 (1984) [TMDB:81] [IMDB:tt0087544] - 天空之城 (1986) [TMDB:10515] [IMDB:tt0092067] - 萤火虫之墓 (1988) [TMDB:12477] [IMDB:tt0095327] - 龙猫 (1988) [TMDB:8392] [IMDB:tt0096283] - 魔女宅急便 (1989) [TMDB:16859] [IMDB:tt0097814] - 狮子王 (1994) [TMDB:8587] [IMDB:tt0110357] - 侧耳倾听 (1995) [TMDB:37797] [IMDB:tt0113824] - 幽灵公主 (1997) [TMDB:128] [IMDB:tt0119698] - 未麻的部屋 (1998) [TMDB:10494] [IMDB:tt0156887] - 千与千寻 (2001) [TMDB:129] [IMDB:tt0245429] - 怪兽电力公司 (2001) [TMDB:585] [IMDB:tt0198781] - 冰川时代 (2002) [TMDB:425] [IMDB:tt0268380] - 东京教父 (2003) [TMDB:13398] [IMDB:tt0388473] - 哈尔的移动城堡 (2004) [TMDB:4935] [IMDB:tt0347149] - 穿越时空的少女 (2006) [TMDB:14069] [IMDB:tt0808506] - 红辣椒 (2006) [TMDB:4977] [IMDB:tt0851578] - 崖上的波妞 (2008) [TMDB:12429] [IMDB:tt0876563] - 机器人总动员 (2008) [TMDB:10681] [IMDB:tt0910970] - 玛丽和马克思 (2009) [TMDB:24238] [IMDB:tt0978762] - 飞屋环游记 (2009) [TMDB:14160] [IMDB:tt1049413] - 你看起来好像很好吃 (2010) [TMDB:89825] [IMDB:tt1734113] - 借东西的小人阿莉埃蒂 (2010) [TMDB:51739] [IMDB:tt1568921] - 玩具总动员3 (2010) [TMDB:10193] [IMDB:tt0435761] - 神偷奶爸 (2010) [TMDB:20352] [IMDB:tt1323594] - 驯龙高手 (2010) [TMDB:10191] [IMDB:tt0892769] - 萤火之森 (2011) [TMDB:92321] [IMDB:tt2061702] - 大闹天宫 (2012) [TMDB:145954] [IMDB:tt11941418] - 疯狂原始人 (2013) [TMDB:49519] [IMDB:tt0481499] - 超能陆战队 (2014) [TMDB:177572] [IMDB:tt2245084] - 头脑特工队 (2015) [TMDB:150540] [IMDB:tt2096673] - 你的名字。 (2016) [TMDB:372058] [IMDB:tt5311514] - 疯狂动物城 (2016) [TMDB:269149] [IMDB:tt2948356]- 华语电影 - 英雄本色 (1986) [TMDB:11471] [IMDB:tt0092263] - 倩女幽魂 (1987) [TMDB:30421] [IMDB:tt0093978] - 阿飞正传 (1990) [TMDB:18311] [IMDB:tt0101258] - 牯岭街少年杀人事件 (1991) [TMDB:15804] [IMDB:tt0101985] - 纵横四海 (1991) [TMDB:47423] [IMDB:tt0101020] - 新龙门客栈 (1992) [TMDB:40213] [IMDB:tt0105859] - 唐伯虎点秋香 (1993) [TMDB:37703] [IMDB:tt0108289] - 喜宴 (1993) [TMDB:9261] [IMDB:tt0107156] - 射雕英雄传之东成西就 (1993) [TMDB:55157] [IMDB:tt0108074] - 霸王别姬 (1993) [TMDB:10997] [IMDB:tt0106332] - 青蛇 (1993) [TMDB:39915] [IMDB:tt0106559] - 九品芝麻官 (1994) [TMDB:55156] [IMDB:tt0110201] - 活着 (1994) [TMDB:31439] [IMDB:tt0110081] - 背靠背,脸对脸 (1994) [TMDB:295279] [IMDB:tt0109235] - 重庆森林 (1994) [TMDB:11104] [IMDB:tt0109424] - 阳光灿烂的日子 (1994) [TMDB:161285] [IMDB:tt0111786] - 饮食男女 (1994) [TMDB:10451] [IMDB:tt0111797] - 大话西游之月光宝盒 (1995) [TMDB:13345] [IMDB:tt0112778] - 大话西游之月光宝盒 (1995) [TMDB:13345] [IMDB:tt0112778] - 甜蜜蜜 (1996) [TMDB:37185] [IMDB:tt0117905] - 春光乍泄 (1997) [TMDB:18329] [IMDB:tt0118845] - 一一 (2000) [TMDB:25538] [IMDB:tt0244316] - 花样年华 (2000) [TMDB:843] [IMDB:tt0118694] - 鬼子来了 (2001) [TMDB:25838] [IMDB:tt0245929] - 无间道 (2002) [TMDB:10775] [IMDB:tt0338564] - 无间道2 (2003) [TMDB:11647] [IMDB:tt0369060] - 功夫 (2004) [TMDB:9470] [IMDB:tt0373074] - 可可西里 (2004) [TMDB:16074] [IMDB:tt0386651] - 疯狂的石头 (2006) [TMDB:45380] [IMDB:tt0843270] - 色·戒 (2007) [TMDB:4588] [IMDB:tt0808357] - 东邪西毒:终极版 (2009) [TMDB:1241825] - 岁月神偷 (2010) [TMDB:39693] [IMDB:tt1602572] - 让子弹飞 (2010) [TMDB:51533] [IMDB:tt1533117] - 心迷宫 (2014) [TMDB:292362] [IMDB:tt4078856] - 驴得水 (2016) [TMDB:421742] [IMDB:tt6167014] - 大佛普拉斯 (2017) [TMDB:475149] [IMDB:tt7010412] - 我不是药神 (2018) [TMDB:532753] [IMDB:tt7362036] - 飞驰人生 (2019) [TMDB:575219] [IMDB:tt9597190] - 三大队 (2023) [TMDB:1109586] [IMDB:tt28212677] - 年会不能停! (2023) [TMDB:1173076] [IMDB:tt27922369]- 国产剧 - 唐人街探案2 (1) [TMDB:247773] [IMDB:tt22475188] - 射雕英雄传 (1983) [TMDB:104] [IMDB:tt0274839] - 红楼梦 (1987) [TMDB:7191] [IMDB:tt1162595] - 三国演义 (1994) [TMDB:72645] [IMDB:tt0108914] - 水浒传 (1998) [TMDB:78132] [IMDB:tt1388431] - 狂飙 (2023) [TMDB:210757] [IMDB:tt26235088] - 猎冰 (2024) [TMDB:233958]- 外语电影 - 城市之光 (1931) [TMDB:901] [IMDB:tt0021749] - 摩登时代 (1936) [TMDB:3082] [IMDB:tt0027977] - 乱世佳人 (1939) [TMDB:770] [IMDB:tt0031381] - 魂断蓝桥 (1940) [TMDB:43824] [IMDB:tt0033238] - 罗生门 (1950) [TMDB:548] [IMDB:tt0042876] - 雨中曲 (1952) [TMDB:872] [IMDB:tt0045152] - 罗马假日 (1953) [TMDB:804] [IMDB:tt0046250] - 七武士 (1954) [TMDB:346] [IMDB:tt0047478] - 十二怒汉 (1957) [TMDB:389] [IMDB:tt0050083] - 控方证人 (1957) [TMDB:37257] [IMDB:tt0051201] - 惊魂记 (1960) [TMDB:539] [IMDB:tt0054215] - 虎口脱险 (1966) [TMDB:8290] [IMDB:tt0060474] - 2001太空漫游 (1968) [TMDB:62] [IMDB:tt0062622] - 教父 (1972) [TMDB:238] [IMDB:tt0068646] - 飞越疯人院 (1975) [TMDB:510] [IMDB:tt0073486] - 美国往事 (1984) [TMDB:311] [IMDB:tt0087843] - 忠犬八公物语 (1987) [TMDB:31743] [IMDB:tt0093132] - 末代皇帝 (1987) [TMDB:746] [IMDB:tt0093389] - 天堂电影院 (1988) [TMDB:11216] [IMDB:tt0095765] - 雨人 (1988) [TMDB:380] [IMDB:tt0095953] - 死亡诗社 (1989) [TMDB:207] [IMDB:tt0097165] - 沉默的羔羊 (1991) [TMDB:274] [IMDB:tt0102926] - 终结者2:审判日 (1991) [TMDB:280] [IMDB:tt0103064] - 闻香识女人 (1992) [TMDB:9475] [IMDB:tt0105323] - 完美的世界 (1993) [TMDB:9559] [IMDB:tt0107808] - 辛德勒的名单 (1993) [TMDB:424] [IMDB:tt0108052] - 低俗小说 (1994) [TMDB:680] [IMDB:tt0110912] - 燃情岁月 (1994) [TMDB:4476] [IMDB:tt0110322] - 肖申克的救赎 (1994) [TMDB:278] [IMDB:tt0111161] - 这个杀手不太冷 (1994) [TMDB:101] [IMDB:tt0110413] - 阿甘正传 (1994) [TMDB:13] [IMDB:tt0109830] - 七宗罪 (1995) [TMDB:807] [IMDB:tt0114369] - 勇敢的心 (1995) [TMDB:197] [IMDB:tt0112573] - 情书 (1995) [TMDB:47002] [IMDB:tt0113703] - 爱在黎明破晓前 (1995) [TMDB:76] [IMDB:tt0112471] - 猜火车 (1996) [TMDB:627] [IMDB:tt0117951] - 千钧一发 (1997) [TMDB:782] [IMDB:tt0119177] - 小鞋子 (1997) [TMDB:21334] [IMDB:tt0118849] - 心灵捕手 (1997) [TMDB:489] [IMDB:tt0119217] - 泰坦尼克号 (1997) [TMDB:597] [IMDB:tt0120338] - 美丽人生 (1997) [TMDB:637] [IMDB:tt0118799] - 拯救大兵瑞恩 (1998) [TMDB:857] [IMDB:tt0120815] - 搏击俱乐部 (1999) [TMDB:550] [IMDB:tt0137523] - 第六感 (1999) [TMDB:745] [IMDB:tt0167404] - 绿里奇迹 (1999) [TMDB:497] [IMDB:tt0120689] - 菊次郎的夏天 (1999) [TMDB:4291] [IMDB:tt0199683] - 黑客帝国 (1999) [TMDB:603] [IMDB:tt0133093] - 西西里的美丽传说 (2000) [TMDB:10867] [IMDB:tt0213847] - 记忆碎片 (2000) [TMDB:77] [IMDB:tt0209144] - 人工智能 (2001) [TMDB:644] [IMDB:tt0212720] - 哈利·波特与魔法石 (2001) [TMDB:671] [IMDB:tt0241527] - 天使爱美丽 (2001) [TMDB:194] [IMDB:tt0211915] - 我是山姆 (2001) [TMDB:10950] [IMDB:tt0277027] - 指环王1:护戒使者 (2001) [TMDB:120] [IMDB:tt0120737] - 美丽心灵 (2001) [TMDB:453] [IMDB:tt0268978] - 上帝之城 (2002) [TMDB:598] [IMDB:tt0317248] - 哈利·波特与密室 (2002) [TMDB:672] [IMDB:tt0295297] - 指环王2:双塔奇兵 (2002) [TMDB:121] [IMDB:tt0167261] - 猫鼠游戏 (2002) [TMDB:640] [IMDB:tt0264464] - 谍影重重 (2002) [TMDB:2501] [IMDB:tt0258463] - 钢琴家 (2002) [TMDB:423] [IMDB:tt0253474] - 加勒比海盗1:黑珍珠号的诅咒 (2003) [TMDB:22] [IMDB:tt0325980] - 大鱼 (2003) [TMDB:587] [IMDB:tt0319061] - 指环王3:王者无敌 (2003) [TMDB:122] [IMDB:tt0167260] - 杀人回忆 (2003) [TMDB:11423] [IMDB:tt0353969] - 真爱至上 (2003) [TMDB:508] [IMDB:tt0314331] - 致命ID (2003) [TMDB:2832] [IMDB:tt0309698] - 黑客帝国2:重装上阵 (2003) [TMDB:604] [IMDB:tt0234215] - 黑客帝国3:矩阵革命 (2003) [TMDB:605] [IMDB:tt0242653] - 卢旺达饭店 (2004) [TMDB:205] [IMDB:tt0395169] - 哈利·波特与阿兹卡班的囚徒 (2004) [TMDB:673] [IMDB:tt0304141] - 幸福终点站 (2004) [TMDB:594] [IMDB:tt0362227] - 恋恋笔记本 (2004) [TMDB:11036] [IMDB:tt0332280] - 放牛班的春天 (2004) [TMDB:5528] [IMDB:tt0372824] - 无人知晓 (2004) [TMDB:2517] [IMDB:tt0408664] - 爱在日落黄昏时 (2004) [TMDB:80] [IMDB:tt0381681] - 电锯惊魂 (2004) [TMDB:176] [IMDB:tt0387564] - 蝴蝶效应 (2004) [TMDB:1954] [IMDB:tt0289879] - 谍影重重2 (2004) [TMDB:2502] [IMDB:tt0372183] - 傲慢与偏见 (2005) [TMDB:4348] [IMDB:tt0414387] - 哈利·波特与火焰杯 (2005) [TMDB:674] [IMDB:tt0330373] - 战争之王 (2005) [TMDB:1830] [IMDB:tt0399295] - 断背山 (2005) [TMDB:142] [IMDB:tt0388795] - 当幸福来敲门 (2006) [TMDB:1402] [IMDB:tt0454921] - 窃听风暴 (2006) [TMDB:582] [IMDB:tt0405094] - 致命魔术 (2006) [TMDB:1124] [IMDB:tt0482571] - 血钻 (2006) [TMDB:1372] [IMDB:tt0450259] - 香水 (2006) [TMDB:1427] [IMDB:tt0396171] - 地球上的星星 (2007) [TMDB:7508] [IMDB:tt0986264] - 谍影重重3 (2007) [TMDB:2503] [IMDB:tt0440963] - 遗愿清单 (2007) [TMDB:7350] [IMDB:tt0825232] - 入殓师 (2008) [TMDB:16804] [IMDB:tt1069238] - 朗读者 (2008) [TMDB:8055] [IMDB:tt0976051] - 本杰明·巴顿奇事 (2008) [TMDB:4922] [IMDB:tt0421715] - 步履不停 (2008) [TMDB:25050] [IMDB:tt1087578] - 浪潮 (2008) [TMDB:7735] [IMDB:tt1063669] - 穿条纹睡衣的男孩 (2008) [TMDB:14574] [IMDB:tt0914798] - 蝙蝠侠:黑暗骑士 (2008) [TMDB:155] [IMDB:tt0468569] - 贫民窟的百万富翁 (2008) [TMDB:12405] [IMDB:tt1010048] - 三傻大闹宝莱坞 (2009) [TMDB:20453] [IMDB:tt1187043] - 恐怖游轮 (2009) [TMDB:26466] [IMDB:tt1187064] - 无耻混蛋 (2009) [TMDB:16869] [IMDB:tt0361748] - 阿凡达 (2009) [TMDB:19995] [IMDB:tt0499549] - 告白 (2010) [TMDB:54186] [IMDB:tt1590089] - 怦然心动 (2010) [TMDB:43949] [IMDB:tt0817177] - 盗梦空间 (2010) [TMDB:27205] [IMDB:tt1375666] - 禁闭岛 (2010) [TMDB:11324] [IMDB:tt1130884] - 黑天鹅 (2010) [TMDB:44214] [IMDB:tt0947798] - 哈利·波特与死亡圣器(下) (2011) [TMDB:12445] [IMDB:tt1201607] - 我爱你 (2011) [TMDB:72575] [IMDB:tt1862020] - 源代码 (2011) [TMDB:45612] [IMDB:tt0945513] - 熔炉 (2011) [TMDB:81481] [IMDB:tt2070649] - 触不可及 (2011) [TMDB:77338] [IMDB:tt1675434] - 超脱 (2011) [TMDB:74308] [IMDB:tt1683526] - 3 (2012) [TMDB:79660] [IMDB:tt2123129] - 少年派的奇幻漂流 (2012) [TMDB:87827] [IMDB:tt0454876] - 蝙蝠侠:黑暗骑士崛起 (2012) [TMDB:49026] [IMDB:tt1345836] - 被解救的姜戈 (2012) [TMDB:68718] [IMDB:tt1853728] - 七号房的礼物 (2013) [TMDB:158445] [IMDB:tt2659414] - 彗星来的那一夜 (2013) [TMDB:220289] [IMDB:tt2866360] - 恐怖直播 (2013) [TMDB:209764] [IMDB:tt2990738] - 新世界 (2013) [TMDB:165213] [IMDB:tt2625030] - 时空恋旅人 (2013) [TMDB:122906] [IMDB:tt2194499] - 爱在午夜降临前 (2013) [TMDB:132344] [IMDB:tt2209418] - 素媛 (2013) [TMDB:255709] [IMDB:tt3153634] - 辩护人 (2013) [TMDB:242452] [IMDB:tt3404140] - 达拉斯买家俱乐部 (2013) [TMDB:152532] [IMDB:tt0790636] - 2 (2014) [TMDB:480682] [IMDB:tt3529830] - 小森林:夏秋篇 (2014) [TMDB:294682] [IMDB:tt3474600] - 布达佩斯大饭店 (2014) [TMDB:120467] [IMDB:tt2278388] - 星际穿越 (2014) [TMDB:157336] [IMDB:tt0816692] - 模仿游戏 (2014) [TMDB:205596] [IMDB:tt2084970] - 消失的爱人 (2014) [TMDB:210577] [IMDB:tt2267998] - 荒蛮故事 (2014) [TMDB:265195] [IMDB:tt3011894] - 一个叫欧维的男人决定去死 (2015) [TMDB:348678] [IMDB:tt4080728] - 小森林:冬春篇 (2015) [TMDB:336026] [IMDB:tt3474602] - 小萝莉的猴神大叔 (2015) [TMDB:348892] [IMDB:tt3863552] - 房间 (2015) [TMDB:264644] [IMDB:tt3170832] - 海蒂和爷爷 (2015) [TMDB:365045] [IMDB:tt3700392] - 海街日记 (2015) [TMDB:315846] [IMDB:tt3756788] - 火星救援 (2015) [TMDB:286217] [IMDB:tt3659388] - 疯狂的麦克斯4:狂暴之路 (2015) [TMDB:76341] [IMDB:tt1392190] - 聚焦 (2015) [TMDB:314365] [IMDB:tt1895587] - 完美陌生人 (2016) [TMDB:381341] [IMDB:tt4901306] - 摔跤吧!爸爸 (2016) [TMDB:360814] [IMDB:tt5074352] - 海边的曼彻斯特 (2016) [TMDB:334541] [IMDB:tt4034228] - 血战钢锯岭 (2016) [TMDB:324786] [IMDB:tt2119532] - 釜山行 (2016) [TMDB:396535] [IMDB:tt5700672] - 三块广告牌 (2017) [TMDB:359940] [IMDB:tt5027774] - 奇迹男孩 (2017) [TMDB:406997] [IMDB:tt2543472] - 看不见的客人 (2017) [TMDB:411088] [IMDB:tt4857264] - 请以你的名字呼唤我 (2017) [TMDB:398818] [IMDB:tt5726616] - 何以为家 (2018) [TMDB:517814] [IMDB:tt8267604] - 头号玩家 (2018) [TMDB:333339] [IMDB:tt1677720] - 小偷家族 (2018) [TMDB:505192] [IMDB:tt8075192] - 绿皮书 (2018) [TMDB:490132] [IMDB:tt6966692] - 阳光姐妹淘 (2018) [TMDB:517065] [IMDB:tt7493818] - 小丑 (2019) [TMDB:475557] [IMDB:tt7286456]- 新番 - 小不点 (1983) [TMDB:17400] [IMDB:tt0320055] - 青之驱魔师 (2011) [TMDB:38464] [IMDB:tt1799631] - 王者天下 (2012) [TMDB:46437] [IMDB:tt2404499] - 暗芝居 (2013) [TMDB:56559] [IMDB:tt3111906] - 欢迎来到实力至上主义的教室 (2017) [TMDB:72517] [IMDB:tt7263328] - 足球小将 (2018) [TMDB:77240] [IMDB:tt7784442] - 卡片战斗先导者overDress (2021) [TMDB:106301] [IMDB:tt13872472] - 弱势角色友崎君 (2021) [TMDB:99083] [IMDB:tt13103028] - 我被逐出队伍后过上慢生活 (2021) [TMDB:113256] [IMDB:tt13483212] - 月光下的异世界之旅 (2021) [TMDB:111819] [IMDB:tt13311344] - 新 福星小子 (2022) [TMDB:154524] [IMDB:tt16764368] - 不死不幸 (2023) [TMDB:209077] [IMDB:tt21927720] - 奇异贤伴 黑色天使 (2023) [TMDB:210181] [IMDB:tt24240038] - 广阔天空!光之美少女 (2023) [TMDB:213883] [IMDB:tt23862502] - 我心里危险的东西 (2023) [TMDB:207250] [IMDB:tt21423786] - 烈焰先锋:救国的橘衣消防员 (2023) [TMDB:223780] [IMDB:tt29201691] - 爱犬指令 (2023) [TMDB:229613] - 物理魔法使-马修- (2023) [TMDB:204832] [IMDB:tt21209804] - 狩火之王 (2023) [TMDB:156688] [IMDB:tt21912036] - 狩龙人拉格纳 (2023) [TMDB:195459] [IMDB:tt28685470] - 至高之牌 (2023) [TMDB:194665] [IMDB:tt25275610] - 药屋少女的呢喃 (2023) [TMDB:220542] [IMDB:tt26743760] - 葬送的芙莉莲 (2023) [TMDB:209867] [IMDB:tt22248376] - 逃走中 THE GREAT MISSION (2023) [TMDB:217388] - 香格里拉边境 (2023) [TMDB:205050] [IMDB:tt28776190] - Wonderful 光之美少女! (2024) [TMDB:243216] [IMDB:tt30608459] - 为了在异世界也能抚摸毛茸茸而努力。 (2024) [TMDB:205672] [IMDB:tt30689225] - 事与愿违的不死冒险者 (2024) [TMDB:197848] [IMDB:tt30177477] - 休假日的坏人先生 (2024) [TMDB:222784] [IMDB:tt29467317] - 佐佐木与文鸟小哔 (2024) [TMDB:206630] [IMDB:tt27524116] - 公主殿下“拷问”的时间到了 (2024) [TMDB:229443] [IMDB:tt30643998] - 到了30岁还是处男,似乎会变成魔法师 (2024) [TMDB:237045] [IMDB:tt28369144] - 勇气爆发BangBravern (2024) [TMDB:238846] [IMDB:tt30975941] - 北海道辣妹贼拉可爱 (2024) [TMDB:213181] [IMDB:tt23029874] - 反派大小姐等级99~我是隐藏BOSS但不是魔王~ (2024) [TMDB:222930] [IMDB:tt30495119] - 外科医生爱丽丝 (2024) [TMDB:221310] [IMDB:tt28247170] - 婚戒物语 (2024) [TMDB:218493] [IMDB:tt30488398] - 异世界温泉开拓记 (2024) [TMDB:241021] [IMDB:tt30644058] - 异修罗 (2024) [TMDB:220286] [IMDB:tt26713948] - 愚蠢天使与恶魔共舞 (2024) [TMDB:231357] [IMDB:tt30495098] - 憧憬成为魔法少女 (2024) [TMDB:236338] [IMDB:tt29605390] - 我独自升级 (2024) [TMDB:127532] [IMDB:tt21209876] - 战国妖狐 (2024) [TMDB:234995] [IMDB:tt30325850] - 指尖相触,恋恋不舍 (2024) [TMDB:230059] [IMDB:tt30024091] - 挣扎吧,亚当 (2024) [TMDB:241002] - 无人能敌 (2024) [TMDB:226905] [IMDB:tt28454318] - 明治击剑-1874- (2024) [TMDB:99787] [IMDB:tt30495035] - 最弱的驯养师开启的捡垃圾的旅途 (2024) [TMDB:214310] [IMDB:tt30644010] - 最强肉盾的迷宫攻略~拥有稀少技能体力9999的肉盾,被勇者队伍辞退了~ (2024) [TMDB:236532] [IMDB:tt30643971] - 月刊妄想科学 (2024) [TMDB:236142] [IMDB:tt30494894] - 治愈魔法的错误使用方法 (2024) [TMDB:131365] [IMDB:tt15237152] - 百千家的妖怪王子 (2024) [TMDB:230823] [IMDB:tt30691068] - 碰之道 (2024) [TMDB:234176] [IMDB:tt31309480] - 秒杀外挂太强了,异世界的家伙们根本就不是对手。 (2024) [TMDB:236144] [IMDB:tt30146725] - 轮回七次的恶役千金在前敌国享受随心所欲的新婚生活 (2024) [TMDB:232926] [IMDB:tt28685624] - 迷宫饭 (2024) [TMDB:207784] [IMDB:tt21621494] - 金属口红 (2024) [TMDB:222787] [IMDB:tt29510641] - 零食八江 (2024) [TMDB:236930] [IMDB:tt29474142] - 魔女与野兽 (2024) [TMDB:208445] [IMDB:tt30089363] - 魔都精兵的奴隶 (2024) [TMDB:139060] [IMDB:tt16156736]- 演唱会 - 音乐之声 (1965) [TMDB:15121] [IMDB:tt0059742] - 海上钢琴师 (1998) [TMDB:10376] [IMDB:tt0120731] - 千年女优:轨迹 (2001) [TMDB:968100] - 被嫌弃的松子的一生 (2006) [TMDB:31512] [IMDB:tt0768120] - 海豚湾 (2009) [TMDB:23128] [IMDB:tt1313104] - 海洋 (2010) [TMDB:36970] [IMDB:tt0765128] - 再次出发之纽约遇见你 (2013) [TMDB:198277] [IMDB:tt1980929] - 爆裂鼓手 (2014) [TMDB:244786] [IMDB:tt2582802] - 爱乐之城 (2016) [TMDB:313369] [IMDB:tt3783958] - 二十二 (2017) [TMDB:473267] [IMDB:tt3843282] - 寻梦环游记 (2017) [TMDB:354912] [IMDB:tt2380307] - 波西米亚狂想曲 (2018) [TMDB:424694] [IMDB:tt1727824] 1. 国产剧 2. 日韩剧暂无 3. 外语电影 4. 华语电影 5. 动画电影 6. 演唱会","categories":[{"name":"技术分享","slug":"技术分享","permalink":"https://blog.sakurasep.site/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"Emby","slug":"Emby","permalink":"https://blog.sakurasep.site/tags/Emby/"},{"name":"Telegram","slug":"Telegram","permalink":"https://blog.sakurasep.site/tags/Telegram/"},{"name":"媒体库","slug":"媒体库","permalink":"https://blog.sakurasep.site/tags/%E5%AA%92%E4%BD%93%E5%BA%93/"},{"name":"Infuse","slug":"Infuse","permalink":"https://blog.sakurasep.site/tags/Infuse/"}]},{"title":"TeamSpeak使用指南","slug":"零基础教程/TeamSpeak使用指南","date":"2023-12-22T16:30:03.000Z","updated":"2023-12-22T16:00:00.000Z","comments":true,"path":"posts/TeamSpeak/","permalink":"https://blog.sakurasep.site/posts/TeamSpeak/","excerpt":"","text":"一、为什么我们不再使用KOOKKOOK(原开黑啦),这款软件从开始发行就是抄袭国外的社群交流软件Discord,当他起初发行的时候,有高清的屏幕分享,良好的语音通话质量,还有很不错的AI降噪. 此外开黑啦在起初也是没有任何广告和会员特效. 但是随着免费高质量所积累的用户逐渐扩大,开黑啦担心侵权问题,随即改名KOOK,从此有了会员,语音质量和服务器助力包挂钩,添加了各种花里胡哨的特效,此外它的核心功能AI降噪也变成了每日120分钟体验. 可以说,KOOK将大多数国产软件先引流后狠狠收费的丑恶嘴脸表现到了极致. 虽然目前市面上还有很多语音软件,如vk老头的语音,黑盒语音,但是我们无法保证这些软件是否会走向KOOK的老路.因此,免费的TeamSpeak成为了我们的首选,它是各大电竞赛事的首选语音交流软件,如CSGO的Major等赛事.它的免费版支持最高7.71KiB/s的音质,此外他的回声消除等功能有效的防止背景嘈杂的声音,它的频道也支持文字交流,相信这样一款专业简洁的语音交流软件可以成为我们今后开黑的神器! 二、如何使用TeamSpeak1. 下载与安装首先,请不要在百度中搜索下载,因为你大概率会进入TeamSpeak中文网,这是盗版网站,和Steam游戏管家是一个道理 https://teamspeak.com/zh-CN/TeamSpeak官方网站 从这里下载客户端即可. 点击下载后来到这个界面,选择TS3 Client,因为目前TS5的汉化还没有做好,TS3有完美汉化 然后就是正常进行安装,中途会问你时候安装overwolf,这个是TeamSpeak的插件,用于在游戏内显示当前频道是谁在讲话 2. 加入我的服务器根据下图所示填入服务器的名字,密码在群里,昵称改成你想显示的昵称,然后就可以连接了! 3. 如何配置TeamSpeak这是TeamSpeak的简洁UI 点开偏好设置,最重要的是以下两个设置,首先让我们来看音频输出设置 然后是音频输入设置,注意这里根据你实际情况调整消除背景噪音的强度以及语音识别的阈值 三、如何搭建一个TeamSpeak服务器如果是仅仅搭建一个稳定可靠的语音服务器,那使用Linux + Docker是最为稳妥的方案 1. 通过Docker安装(Linux)零基础教程面向的是普通用户,所以这里建议使用1Panel面板对Linux系统进行简单的可视化管理 四、结语相信到这里你就了解如何使用以及搭建属于你和你朋友自己的语音服务器,希望我的文章能帮助到你,下一篇文章再见!欢迎在评论区和大家交流你对TeamSpeak还有哪些有趣的玩法!","categories":[{"name":"技术分享","slug":"技术分享","permalink":"https://blog.sakurasep.site/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"}],"tags":[{"name":"零基础","slug":"零基础","permalink":"https://blog.sakurasep.site/tags/%E9%9B%B6%E5%9F%BA%E7%A1%80/"},{"name":"游戏","slug":"游戏","permalink":"https://blog.sakurasep.site/tags/%E6%B8%B8%E6%88%8F/"}]}],"categories":[{"name":"媒体库","slug":"媒体库","permalink":"https://blog.sakurasep.site/categories/%E5%AA%92%E4%BD%93%E5%BA%93/"},{"name":"Unraid","slug":"Unraid","permalink":"https://blog.sakurasep.site/categories/Unraid/"},{"name":"技术分享","slug":"技术分享","permalink":"https://blog.sakurasep.site/categories/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/"},{"name":"零基础教程","slug":"零基础教程","permalink":"https://blog.sakurasep.site/categories/%E9%9B%B6%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/"},{"name":"实用工具","slug":"实用工具","permalink":"https://blog.sakurasep.site/categories/%E5%AE%9E%E7%94%A8%E5%B7%A5%E5%85%B7/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/categories/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"项目开发日记","slug":"项目开发日记","permalink":"https://blog.sakurasep.site/categories/%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E6%97%A5%E8%AE%B0/"}],"tags":[{"name":"Emby","slug":"Emby","permalink":"https://blog.sakurasep.site/tags/Emby/"},{"name":"动漫","slug":"动漫","permalink":"https://blog.sakurasep.site/tags/%E5%8A%A8%E6%BC%AB/"},{"name":"TGBot","slug":"TGBot","permalink":"https://blog.sakurasep.site/tags/TGBot/"},{"name":"BDRip","slug":"BDRip","permalink":"https://blog.sakurasep.site/tags/BDRip/"},{"name":"Unraid","slug":"Unraid","permalink":"https://blog.sakurasep.site/tags/Unraid/"},{"name":"零基础","slug":"零基础","permalink":"https://blog.sakurasep.site/tags/%E9%9B%B6%E5%9F%BA%E7%A1%80/"},{"name":"Linux","slug":"Linux","permalink":"https://blog.sakurasep.site/tags/Linux/"},{"name":"UA3F","slug":"UA3F","permalink":"https://blog.sakurasep.site/tags/UA3F/"},{"name":"校园网","slug":"校园网","permalink":"https://blog.sakurasep.site/tags/%E6%A0%A1%E5%9B%AD%E7%BD%91/"},{"name":"Clash","slug":"Clash","permalink":"https://blog.sakurasep.site/tags/Clash/"},{"name":"Openwrt","slug":"Openwrt","permalink":"https://blog.sakurasep.site/tags/Openwrt/"},{"name":"cron","slug":"cron","permalink":"https://blog.sakurasep.site/tags/cron/"},{"name":"Github","slug":"Github","permalink":"https://blog.sakurasep.site/tags/Github/"},{"name":"Java","slug":"Java","permalink":"https://blog.sakurasep.site/tags/Java/"},{"name":"学习笔记","slug":"学习笔记","permalink":"https://blog.sakurasep.site/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"},{"name":"集合框架","slug":"集合框架","permalink":"https://blog.sakurasep.site/tags/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/"},{"name":"鱼皮的算法通关村","slug":"鱼皮的算法通关村","permalink":"https://blog.sakurasep.site/tags/%E9%B1%BC%E7%9A%AE%E7%9A%84%E7%AE%97%E6%B3%95%E9%80%9A%E5%85%B3%E6%9D%91/"},{"name":"SpringBoot","slug":"SpringBoot","permalink":"https://blog.sakurasep.site/tags/SpringBoot/"},{"name":"后端","slug":"后端","permalink":"https://blog.sakurasep.site/tags/%E5%90%8E%E7%AB%AF/"},{"name":"Maven","slug":"Maven","permalink":"https://blog.sakurasep.site/tags/Maven/"},{"name":"python","slug":"python","permalink":"https://blog.sakurasep.site/tags/python/"},{"name":"markdown","slug":"markdown","permalink":"https://blog.sakurasep.site/tags/markdown/"},{"name":"stellar","slug":"stellar","permalink":"https://blog.sakurasep.site/tags/stellar/"},{"name":"标准化","slug":"标准化","permalink":"https://blog.sakurasep.site/tags/%E6%A0%87%E5%87%86%E5%8C%96/"},{"name":"Telegram","slug":"Telegram","permalink":"https://blog.sakurasep.site/tags/Telegram/"},{"name":"媒体库","slug":"媒体库","permalink":"https://blog.sakurasep.site/tags/%E5%AA%92%E4%BD%93%E5%BA%93/"},{"name":"Infuse","slug":"Infuse","permalink":"https://blog.sakurasep.site/tags/Infuse/"},{"name":"游戏","slug":"游戏","permalink":"https://blog.sakurasep.site/tags/%E6%B8%B8%E6%88%8F/"}]}