From 121348e0114306d987631ff09cd71bb12b038daf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=81=E7=BD=91=E5=AE=BF=E7=A7=91=E6=8A=80?= Date: Wed, 24 Apr 2024 16:36:46 +0800 Subject: [PATCH] Initial commit --- .editorconfig | 14 + .env | 2 + .env.development | 10 + .env.production | 6 + .eslintignore | 4 + .eslintrc.js | 78 + .gitignore | 25 + .prettierignore | 9 + components.d.ts | 2 + index.html | 67 + package-lock.json | 12001 ++++++++++++++++ package.json | 79 + postcss.config.js | 3 + prettier.config.js | 19 + public/assets/logo.svg | 15 + public/favicon.ico | Bin 0 -> 4286 bytes public/json/china-provinces.geo.json | 1 + public/json/industry-data.json | 1 + public/json/regions-data.json | 1 + public/logo.svg | 1 + public/tinymce/langs/zh_CN.js | 462 + public/tinymce/langs/zh_TW.js | 419 + public/tinymce/skins/content/dark/content.css | 72 + .../skins/content/dark/content.min.css | 7 + .../tinymce/skins/content/default/content.css | 66 + .../skins/content/default/content.min.css | 7 + .../skins/content/document/content.css | 72 + .../skins/content/document/content.min.css | 7 + .../tinymce/skins/content/writer/content.css | 68 + .../skins/content/writer/content.min.css | 7 + .../tinymce/skins/ui/oxide-dark/content.css | 714 + .../skins/ui/oxide-dark/content.inline.css | 726 + .../ui/oxide-dark/content.inline.min.css | 7 + .../skins/ui/oxide-dark/content.min.css | 7 + .../skins/ui/oxide-dark/content.mobile.css | 29 + .../ui/oxide-dark/content.mobile.min.css | 7 + .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes public/tinymce/skins/ui/oxide-dark/skin.css | 3047 ++++ .../tinymce/skins/ui/oxide-dark/skin.min.css | 7 + .../skins/ui/oxide-dark/skin.mobile.css | 673 + .../skins/ui/oxide-dark/skin.mobile.min.css | 7 + .../skins/ui/oxide-dark/skin.shadowdom.css | 37 + .../ui/oxide-dark/skin.shadowdom.min.css | 7 + public/tinymce/skins/ui/oxide/content.css | 732 + .../tinymce/skins/ui/oxide/content.inline.css | 726 + .../skins/ui/oxide/content.inline.min.css | 7 + public/tinymce/skins/ui/oxide/content.min.css | 7 + .../tinymce/skins/ui/oxide/content.mobile.css | 29 + .../skins/ui/oxide/content.mobile.min.css | 7 + .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes public/tinymce/skins/ui/oxide/skin.css | 3047 ++++ public/tinymce/skins/ui/oxide/skin.min.css | 7 + public/tinymce/skins/ui/oxide/skin.mobile.css | 673 + .../skins/ui/oxide/skin.mobile.min.css | 7 + .../tinymce/skins/ui/oxide/skin.shadowdom.css | 37 + .../skins/ui/oxide/skin.shadowdom.min.css | 7 + public/ws-logo.svg | 15 + src/App.vue | 43 + src/api/apps/bc/agent/index.ts | 106 + src/api/apps/bc/agent/model/index.ts | 23 + src/api/apps/bc/balance-log/index.ts | 104 + src/api/apps/bc/balance-log/model/index.ts | 33 + src/api/apps/bc/equipment/index.ts | 143 + src/api/apps/bc/equipment/model/index.ts | 31 + src/api/apps/bc/export/index.ts | 107 + src/api/apps/bc/export/model/index.ts | 41 + src/api/apps/bc/food/index.ts | 106 + src/api/apps/bc/food/model/index.ts | 21 + src/api/apps/bc/goods/category/index.ts | 114 + src/api/apps/bc/goods/category/model/index.ts | 51 + src/api/apps/bc/goods/comment/index.ts | 91 + src/api/apps/bc/goods/comment/model/index.ts | 30 + src/api/apps/bc/goods/index.ts | 113 + src/api/apps/bc/goods/model/index.ts | 53 + src/api/apps/bc/goods/service/index.ts | 91 + src/api/apps/bc/goods/service/model/index.ts | 29 + src/api/apps/bc/order/goods/index.ts | 113 + src/api/apps/bc/order/goods/model/index.ts | 45 + src/api/apps/bc/order/index.ts | 126 + src/api/apps/bc/order/model/index.ts | 95 + src/api/apps/bc/order/refund/index.ts | 126 + src/api/apps/bc/order/refund/model/index.ts | 38 + src/api/apps/bc/plan/index.ts | 106 + src/api/apps/bc/plan/model/index.ts | 28 + src/api/apps/bc/recharge/export/index.ts | 109 + .../apps/bc/recharge/export/model/index.ts | 31 + src/api/apps/bc/recharge/order/index.ts | 134 + src/api/apps/bc/recharge/order/model/index.ts | 33 + src/api/apps/bc/temporary/index.ts | 109 + src/api/apps/bc/temporary/model/index.ts | 25 + src/api/apps/statistics/index.ts | 46 + src/api/apps/statistics/model/index.ts | 15 + src/api/booking/category/index.ts | 106 + src/api/booking/category/model/index.ts | 57 + src/api/booking/lesson/index.ts | 106 + src/api/booking/lesson/model/index.ts | 43 + src/api/booking/teacher/index.ts | 106 + src/api/booking/teacher/model/index.ts | 35 + src/api/cms/ad/index.ts | 140 + src/api/cms/ad/model/index.ts | 31 + src/api/cms/article/index.ts | 143 + src/api/cms/article/model/index.ts | 74 + src/api/cms/category/index.ts | 126 + src/api/cms/category/model/index.ts | 78 + src/api/cms/design/index.ts | 143 + src/api/cms/design/model/index.ts | 50 + src/api/cms/docs-book/index.ts | 143 + src/api/cms/docs-book/model/index.ts | 31 + src/api/cms/docs-content/index.ts | 146 + src/api/cms/docs-content/model/index.ts | 36 + src/api/cms/docs/index.ts | 143 + src/api/cms/docs/model/index.ts | 64 + src/api/cms/domain/index.ts | 153 + src/api/cms/domain/model/index.ts | 31 + src/api/cms/form-record/index.ts | 126 + src/api/cms/form-record/model/index.ts | 28 + src/api/cms/form/index.ts | 143 + src/api/cms/form/model/index.ts | 33 + src/api/cms/navigation/index.ts | 143 + src/api/cms/navigation/model/index.ts | 41 + src/api/cms/website/field/index.ts | 129 + src/api/cms/website/field/model/index.ts | 25 + src/api/cms/website/index.ts | 169 + src/api/cms/website/model/index.ts | 57 + src/api/dashboard/analysis/index.ts | 56 + src/api/dashboard/analysis/model/index.ts | 46 + src/api/dashboard/appstore/index.ts | 114 + src/api/dashboard/appstore/model/index.ts | 95 + src/api/dashboard/monitor/index.ts | 44 + src/api/dashboard/monitor/model/index.ts | 21 + src/api/index.ts | 47 + src/api/json.ts | 91 + src/api/layout/index.ts | 161 + src/api/layout/model/index.ts | 74 + src/api/login/index.ts | 73 + src/api/login/model/index.ts | 47 + src/api/login/wx-official/index.ts | 24 + src/api/login/wx-official/model/index.ts | 47 + src/api/oa/app/field/index.ts | 126 + src/api/oa/app/field/model/index.ts | 24 + src/api/oa/app/index.ts | 177 + src/api/oa/app/model/index.ts | 163 + src/api/oa/app/renew/index.ts | 126 + src/api/oa/app/renew/model/index.ts | 40 + src/api/oa/app/url/index.ts | 106 + src/api/oa/app/url/model/index.ts | 26 + src/api/oa/app/user/index.ts | 126 + src/api/oa/app/user/model/index.ts | 37 + src/api/oa/apply/index.ts | 18 + src/api/oa/apply/model/index.ts | 43 + src/api/oa/assets/index.ts | 134 + src/api/oa/assets/model/index.ts | 89 + src/api/oa/assets/user/index.ts | 129 + src/api/oa/assets/user/model/index.ts | 35 + src/api/oa/chatgpt/index.ts | 31 + src/api/oa/chatgpt/model/index.ts | 17 + src/api/oa/company/field/index.ts | 130 + src/api/oa/company/field/model/index.ts | 24 + src/api/oa/company/index.ts | 148 + src/api/oa/company/model/index.ts | 92 + src/api/oa/company/user/index.ts | 129 + src/api/oa/company/user/model/index.ts | 37 + src/api/oa/customer/index.ts | 140 + src/api/oa/customer/model/index.ts | 67 + src/api/oa/link/index.ts | 113 + src/api/oa/link/model/index.ts | 29 + src/api/oa/notice/index.ts | 111 + src/api/oa/notice/model/index.ts | 40 + src/api/oa/order/index.ts | 120 + src/api/oa/order/model/index.ts | 44 + src/api/oa/product/index.ts | 120 + src/api/oa/product/model/index.ts | 61 + src/api/oa/product/tabs/index.ts | 129 + src/api/oa/product/tabs/model/index.ts | 24 + src/api/oa/project/index.ts | 106 + src/api/oa/project/model/index.ts | 56 + src/api/oa/task-count/index.ts | 120 + src/api/oa/task-count/model/index.ts | 32 + src/api/oa/task-record/index.ts | 120 + src/api/oa/task-record/model/index.ts | 35 + src/api/oa/task-user/index.ts | 120 + src/api/oa/task-user/model/index.ts | 27 + src/api/oa/task/index.ts | 154 + src/api/oa/task/model/index.ts | 111 + src/api/oa/task/model/progress.ts | 9 + src/api/oa/task/model/task.ts | 8 + src/api/oa/tennat/index.ts | 155 + src/api/oa/tennat/model/index.ts | 39 + src/api/passport/login/index.ts | 98 + src/api/passport/login/model/index.ts | 42 + src/api/shop/brand/index.ts | 106 + src/api/shop/brand/model/index.ts | 31 + src/api/shop/goods/index.ts | 106 + src/api/shop/goods/model/index.ts | 84 + src/api/shop/goodsAttr/index.ts | 106 + src/api/shop/goodsAttr/model/index.ts | 29 + src/api/shop/goodsAttrResult/index.ts | 106 + src/api/shop/goodsAttrResult/model/index.ts | 27 + src/api/shop/goodsAttrValue/index.ts | 106 + src/api/shop/goodsAttrValue/model/index.ts | 59 + src/api/shop/goodsCategory/index.ts | 106 + src/api/shop/goodsCategory/model/index.ts | 63 + src/api/shop/goodsComment/index.ts | 106 + src/api/shop/goodsComment/model/index.ts | 61 + src/api/shop/goodsCoupon/index.ts | 106 + src/api/shop/goodsCoupon/model/index.ts | 35 + src/api/shop/goodsDescription/index.ts | 106 + src/api/shop/goodsDescription/model/index.ts | 25 + src/api/shop/goodsLog/index.ts | 106 + src/api/shop/goodsLog/model/index.ts | 53 + src/api/shop/goodsRelation/index.ts | 106 + src/api/shop/goodsRelation/model/index.ts | 31 + src/api/shop/goodsRule/index.ts | 106 + src/api/shop/goodsRule/model/index.ts | 23 + src/api/shop/goodsSku/index.ts | 106 + src/api/shop/goodsSku/model/index.ts | 47 + src/api/shop/goodsSpec/index.ts | 106 + src/api/shop/goodsSpec/model/index.ts | 30 + src/api/shop/goodsSpecRel/index.ts | 106 + src/api/shop/goodsSpecRel/model/index.ts | 25 + src/api/shop/merchant/index.ts | 106 + src/api/shop/merchant/model/index.ts | 66 + src/api/shop/merchantAccount/index.ts | 106 + src/api/shop/merchantAccount/model/index.ts | 39 + src/api/shop/merchantApply/index.ts | 106 + src/api/shop/merchantApply/model/index.ts | 51 + src/api/shop/merchantType/index.ts | 106 + src/api/shop/merchantType/model/index.ts | 29 + src/api/shop/order/index.ts | 106 + src/api/shop/order/model/index.ts | 79 + src/api/shop/spec/index.ts | 106 + src/api/shop/spec/model/index.ts | 33 + src/api/shop/specValue/index.ts | 106 + src/api/shop/specValue/model/index.ts | 31 + src/api/system/access-key/index.ts | 59 + src/api/system/access-key/model/index.ts | 20 + src/api/system/appstore/index.ts | 11 + src/api/system/appstore/model/index.ts | 13 + src/api/system/cache/index.ts | 76 + src/api/system/cache/model/index.ts | 18 + src/api/system/chat/index.ts | 157 + src/api/system/chat/model/index.ts | 48 + src/api/system/company/index.ts | 148 + src/api/system/company/model/index.ts | 89 + src/api/system/dict-data/index.ts | 87 + src/api/system/dict-data/model/index.ts | 45 + src/api/system/dict/index.ts | 61 + src/api/system/dict/model/index.ts | 29 + src/api/system/dictionary-data/index.ts | 87 + src/api/system/dictionary-data/model/index.ts | 33 + src/api/system/dictionary/index.ts | 61 + src/api/system/dictionary/model/index.ts | 29 + src/api/system/environment/index.ts | 125 + src/api/system/environment/model/index.ts | 25 + src/api/system/file/index.ts | 215 + src/api/system/file/model/index.ts | 52 + src/api/system/login-record/index.ts | 32 + src/api/system/login-record/model/index.ts | 38 + src/api/system/menu/index.ts | 127 + src/api/system/menu/model/index.ts | 67 + src/api/system/modules/index.ts | 118 + src/api/system/modules/model/index.ts | 22 + src/api/system/operation-record/index.ts | 32 + .../system/operation-record/model/index.ts | 56 + src/api/system/organization/index.ts | 73 + src/api/system/organization/model/index.ts | 42 + src/api/system/plug/index.ts | 125 + src/api/system/plug/model/index.ts | 67 + src/api/system/role/index.ts | 119 + src/api/system/role/model/index.ts | 27 + src/api/system/setting/index.ts | 126 + src/api/system/setting/model/index.ts | 127 + src/api/system/tennat/index.ts | 178 + src/api/system/tennat/model/index.ts | 43 + src/api/system/user-file/index.ts | 89 + src/api/system/user-file/model/index.ts | 39 + src/api/system/user-group/index.ts | 120 + src/api/system/user-group/model/index.ts | 23 + src/api/system/user/index.ts | 236 + src/api/system/user/model/count.ts | 15 + src/api/system/user/model/index.ts | 113 + src/api/system/version/index.ts | 119 + src/api/system/version/model/index.ts | 26 + src/api/system/white-domain/index.ts | 146 + src/api/system/white-domain/model/index.ts | 27 + src/api/tabs.ts | 12 + src/api/user/balance-log/index.ts | 104 + src/api/user/balance-log/model/index.ts | 31 + src/api/user/feedback/index.ts | 103 + src/api/user/feedback/model/index.ts | 29 + src/api/user/grade/index.ts | 114 + src/api/user/grade/model/index.ts | 28 + src/api/user/index.ts | 14 + src/api/user/model/index.ts | 53 + src/api/user/recharge/export/index.ts | 108 + src/api/user/recharge/export/model/index.ts | 31 + src/api/user/recharge/order/index.ts | 133 + src/api/user/recharge/order/model/index.ts | 33 + src/api/user/referee/index.ts | 102 + src/api/user/referee/model/index.ts | 24 + src/assets/bg-2.jpeg | Bin 0 -> 406999 bytes src/assets/bg-login.jpg | Bin 0 -> 66953 bytes src/assets/icon/app1.png | Bin 0 -> 1986 bytes src/assets/icon/book.png | Bin 0 -> 3134 bytes src/assets/icon/forum.png | Bin 0 -> 2979 bytes src/assets/icon/gitea.png | Bin 0 -> 2699 bytes src/assets/icon/openai-avatar.jpeg | Bin 0 -> 17990 bytes src/assets/icon/other.png | Bin 0 -> 4744 bytes src/assets/icon/pc.png | Bin 0 -> 1253 bytes src/assets/icon/question.png | Bin 0 -> 3976 bytes src/assets/icon/weixin.png | Bin 0 -> 4424 bytes src/assets/img/app-ui.png | Bin 0 -> 19578 bytes src/assets/img/circular.png | Bin 0 -> 2374 bytes src/assets/img/default-avatar.png | Bin 0 -> 2672 bytes src/assets/img/phone-top-black.png | Bin 0 -> 4420 bytes src/assets/img/phone-top-white.png | Bin 0 -> 4108 bytes src/assets/img/phone-ui.png | Bin 0 -> 18758 bytes src/assets/logo.svg | 15 + src/components/ByteMdEditor/index.vue | 109 + src/components/ByteMdViewer/index.vue | 93 + src/components/DesignBanner/index.vue | 173 + src/components/DesignHeader/index.vue | 48 + src/components/DesignTools/index.bak.vue | 256 + src/components/DesignTools/index.vue | 171 + src/components/DictRadio/index.vue | 58 + src/components/DictSelect/index.vue | 53 + src/components/DictSelectMultiple/index.vue | 65 + src/components/FormSelect/index.vue | 61 + src/components/IndustrySelect/index.vue | 127 + src/components/IndustrySelect/load-data.ts | 25 + src/components/IndustrySelect/types/index.ts | 15 + src/components/RadioGroup/index.vue | 45 + src/components/RedirectLayout/index.ts | 21 + src/components/RegionsSelect/index.vue | 127 + src/components/RegionsSelect/load-data.ts | 25 + src/components/RegionsSelect/types/index.ts | 15 + src/components/RouterLayout/index.vue | 26 + .../SelectApp/components/select-data.vue | 166 + src/components/SelectApp/index.vue | 63 + .../SelectArticle/components/select-data.vue | 143 + src/components/SelectArticle/index.vue | 59 + .../components/select-data.vue | 143 + .../SelectArticleCategory/index.vue | 59 + .../SelectCompany/components/select-data.vue | 158 + src/components/SelectCompany/index.vue | 61 + .../SelectDesign/components/select-data.vue | 139 + src/components/SelectDesign/index.vue | 59 + .../SelectDict/components/select-data.vue | 142 + src/components/SelectDict/index.vue | 63 + .../SelectDocsBook/components/select-data.vue | 152 + src/components/SelectDocsBook/index.vue | 59 + .../components/file-record-edit.vue | 179 + .../SelectFile/components/select-data.vue | 339 + src/components/SelectFile/index.vue | 131 + .../SelectForm/components/select-data.vue | 143 + src/components/SelectForm/index.vue | 59 + src/components/SelectGoodsCategory/index.vue | 127 + .../SelectGoodsCategory/load-data.ts | 25 + .../SelectGoodsCategory/types/index.ts | 15 + .../SelectGrade/components/select-data.vue | 137 + src/components/SelectGrade/index.vue | 59 + .../SelectGroup/components/select-data.vue | 137 + src/components/SelectGroup/index.vue | 59 + .../SelectMerchant/components/select-data.vue | 157 + src/components/SelectMerchant/index.vue | 61 + src/components/SelectMerchantType/index.vue | 72 + .../SelectModules/components/select-data.vue | 139 + src/components/SelectModules/index.vue | 61 + .../components/select-data.vue | 224 + .../components/select-organization.vue | 123 + src/components/SelectOrganization/index.vue | 59 + .../SelectRole/components/select-data.vue | 150 + src/components/SelectRole/index.vue | 62 + src/components/SelectSpec/index.vue | 58 + src/components/SelectSpecValue/index.vue | 81 + .../SelectStaff/components/select-data.vue | 144 + .../SelectStaff/components/select-user.vue | 138 + src/components/SelectStaff/index.vue | 65 + .../SelectTenant/components/select-data.vue | 139 + src/components/SelectTenant/index.vue | 61 + .../SelectUser/components/select-data.vue | 143 + .../SelectUser/components/select-user.vue | 138 + src/components/SelectUser/index.vue | 61 + src/components/Simulator/index.vue | 310 + src/components/Tag/index.vue | 25 + src/components/TinymceEditor/index.vue | 242 + src/components/TinymceEditor/util.ts | 248 + src/components/UploadCert/index.vue | 87 + src/components/UploadFile/index.vue | 142 + src/components/User/index.vue | 65 + src/components/UserChoose/choose-search.vue | 37 + src/components/UserChoose/index.vue | 146 + src/components/UserChoose/types/index.ts | 9 + src/components/UserSelect/index.vue | 144 + src/components/UserSelect/types/index.ts | 9 + src/components/UserSelect/user-search.vue | 37 + src/config/menu.ts | 121 + src/config/setting.ts | 76 + src/i18n/index.ts | 20 + src/i18n/lang/en/index.ts | 14 + src/i18n/lang/en/layout.ts | 77 + src/i18n/lang/en/list.ts | 17 + src/i18n/lang/en/login.ts | 11 + src/i18n/lang/en/route.ts | 96 + src/i18n/lang/zh_CN/index.ts | 14 + src/i18n/lang/zh_CN/layout.ts | 78 + src/i18n/lang/zh_CN/list.ts | 17 + src/i18n/lang/zh_CN/login.ts | 11 + src/i18n/lang/zh_CN/route.ts | 97 + src/i18n/lang/zh_TW/index.ts | 14 + src/i18n/lang/zh_TW/layout.ts | 77 + src/i18n/lang/zh_TW/list.ts | 17 + src/i18n/lang/zh_TW/login.ts | 11 + src/i18n/lang/zh_TW/route.ts | 97 + src/i18n/use-locale.ts | 38 + src/layout/components/header-notice.vue | 231 + src/layout/components/header-tools-bak.vue | 158 + src/layout/components/header-tools.vue | 325 + src/layout/components/header-wechat.vue | 33 + src/layout/components/i18n-icon.vue | 52 + src/layout/components/menu-title.vue | 17 + src/layout/components/page-footer.vue | 14 + src/layout/components/password-modal.vue | 146 + src/layout/components/setting-drawer.vue | 745 + src/layout/index.vue | 345 + src/layout/menu-icons.ts | 152 + src/main.ts | 16 + src/router/index.ts | 67 + src/router/routes.ts | 93 + src/shims-vue.d.ts | 6 + src/store/index.ts | 6 + src/store/modules/chat.ts | 134 + src/store/modules/params.ts | 40 + src/store/modules/tenant.ts | 85 + src/store/modules/theme.ts | 707 + src/store/modules/user.ts | 128 + src/styles/as-needed.less | 6 + src/styles/component.less | 2 + src/styles/global-import.less | 4 + src/styles/index.less | 36 + src/styles/transition/fade.less | 10 + src/styles/transition/index.less | 4 + src/styles/transition/slide.less | 31 + src/styles/transition/zoom.less | 31 + src/utils/common.ts | 322 + src/utils/document-title-util.ts | 71 + src/utils/domain.ts | 98 + src/utils/editor.ts | 47 + src/utils/on-size-change.ts | 18 + src/utils/oss.js | 43 + src/utils/page-tab-util.ts | 254 + src/utils/permission.ts | 119 + src/utils/plug-uitl.ts | 52 + src/utils/request.ts | 91 + src/utils/token-util.ts | 71 + src/utils/use-echarts.ts | 76 + src/utils/use-form-data.ts | 29 + src/utils/use-search.ts | 27 + .../components/merchantAccountEdit.vue | 249 + .../booking/account/components/search.vue | 42 + src/views/booking/account/index.vue | 230 + .../category/components/category-edit.vue | 300 + src/views/booking/category/index.vue | 406 + src/views/booking/category/preview/index.vue | 124 + src/views/booking/goods/add/index.vue | 1012 ++ .../booking/goods/components/goodsEdit.vue | 361 + src/views/booking/goods/components/search.vue | 42 + src/views/booking/goods/index.vue | 267 + .../school/components/merchantEdit.vue | 474 + .../booking/school/components/search.vue | 42 + src/views/booking/school/index.vue | 259 + .../components/merchantTypeEdit.vue | 197 + .../booking/schoolType/components/search.vue | 42 + src/views/booking/schoolType/index.vue | 239 + .../booking/student/components/org-select.vue | 39 + .../student/components/role-select.vue | 71 + .../booking/student/components/sex-select.vue | 45 + .../booking/student/components/user-edit.vue | 313 + .../student/components/user-import.vue | 88 + .../booking/student/components/user-info.vue | 143 + .../student/components/user-search.vue | 111 + src/views/booking/student/details/index.vue | 130 + src/views/booking/student/index.vue | 503 + .../teacher/components/merchantEdit.vue | 474 + .../booking/teacher/components/search.vue | 42 + .../teacher/components/teacherEdit.vue | 278 + src/views/booking/teacher/index.vue | 247 + .../teacher3/components/org-select.vue | 39 + .../teacher3/components/role-select.vue | 71 + .../teacher3/components/sex-select.vue | 45 + .../booking/teacher3/components/user-edit.vue | 312 + .../teacher3/components/user-import.vue | 88 + .../booking/teacher3/components/user-info.vue | 143 + .../teacher3/components/user-search.vue | 111 + src/views/booking/teacher3/details/index.vue | 130 + src/views/booking/teacher3/index.vue | 511 + src/views/cms/ad/components/ad-edit.vue | 368 + src/views/cms/ad/components/search.vue | 42 + src/views/cms/ad/index.vue | 266 + .../cms/article/components/article-edit.vue | 590 + .../cms/article/components/article-info.vue | 173 + .../cms/article/components/article-search.vue | 104 + .../article/components/category-edit.bak.vue | 350 + .../cms/article/components/category-edit.vue | 289 + .../article/components/category-select.vue | 39 + .../cms/article/dictionary/source-select.vue | 51 + src/views/cms/article/index.vue | 244 + src/views/cms/article/list.vue | 324 + src/views/cms/article/preview/index.vue | 82 + .../cms/category/components/category-edit.vue | 264 + src/views/cms/category/index.vue | 406 + src/views/cms/category/preview/index.vue | 124 + src/views/cms/clear-cache/index.vue | 41 + .../dashboard/components/activities-card.vue | 138 + .../cms/dashboard/components/app-list.vue | 81 + .../cms/dashboard/components/article-list.vue | 56 + .../cms/dashboard/components/count-user.vue | 80 + src/views/cms/dashboard/components/docs.vue | 70 + .../cms/dashboard/components/goal-card.vue | 70 + .../cms/dashboard/components/link-card.vue | 178 + .../cms/dashboard/components/link-icons.ts | 14 + .../cms/dashboard/components/link-list.vue | 54 + .../cms/dashboard/components/more-icon.vue | 38 + .../cms/dashboard/components/profile-card.vue | 121 + src/views/cms/dashboard/components/qrcode.vue | 66 + .../cms/dashboard/components/task-card.vue | 112 + .../cms/dashboard/components/user-list.vue | 84 + src/views/cms/dashboard/index.vue | 360 + .../cms/design/components/design-edit.vue | 387 + src/views/cms/design/components/search.vue | 42 + src/views/cms/design/detail/index.vue | 174 + src/views/cms/design/index.vue | 292 + src/views/cms/dict/components/dict-edit.vue | 177 + src/views/cms/dict/index.vue | 213 + .../docs-book/components/docs-book-edit.vue | 266 + src/views/cms/docs-book/components/search.vue | 42 + src/views/cms/docs-book/index.vue | 287 + .../cms/docs-md-bak/components/docs-edit.vue | 184 + .../docs-md-bak/components/docs-select.vue | 39 + src/views/cms/docs-md-bak/content.vue | 169 + src/views/cms/docs-md-bak/index.vue | 258 + src/views/cms/docs-md-bak/markdown.vue | 162 + src/views/cms/docs-md-bak/tinymce.vue | 162 + src/views/cms/docs/components/docs-edit.vue | 167 + src/views/cms/docs/components/docs-select.vue | 39 + src/views/cms/docs/content.vue | 169 + src/views/cms/docs/index.vue | 311 + src/views/cms/docs/markdown.vue | 162 + src/views/cms/docs/tinymce.vue | 171 + .../cms/domain/components/domain-edit.vue | 227 + src/views/cms/domain/components/search.vue | 42 + src/views/cms/domain/index.vue | 237 + src/views/cms/down/components/video-edit.vue | 223 + src/views/cms/down/index.vue | 299 + src/views/cms/down/player/index.vue | 124 + .../components/form-record-edit.vue | 168 + .../cms/form-record/components/search.vue | 74 + src/views/cms/form-record/index.vue | 292 + .../form/detail/components/checkbox-form.vue | 178 + .../cms/form/detail/components/radio-form.vue | 183 + src/views/cms/form/detail/index.vue | 851 ++ src/views/cms/form/index.vue | 350 + .../navigation/components/navigation-edit.vue | 527 + src/views/cms/navigation/index.vue | 384 + src/views/cms/photo/components/photo-edit.vue | 272 + .../cms/photo/dict/components/dict-edit.vue | 178 + src/views/cms/photo/dict/index.vue | 211 + src/views/cms/photo/image.vue | 141 + src/views/cms/photo/index.vue | 170 + src/views/cms/photo/list.vue | 377 + src/views/cms/photo/player/index.vue | 124 + src/views/cms/setting/components/field.vue | 250 + .../setting/components/website-field-edit.vue | 151 + .../components/website-field-search.vue | 13 + .../cms/setting/components/website-field.vue | 189 + src/views/cms/setting/index.vue | 380 + src/views/cms/video/components/video-edit.vue | 241 + src/views/cms/video/index.vue | 314 + src/views/cms/video/player/index.vue | 124 + src/views/oa/app/components/app-edit.vue | 247 + src/views/oa/app/components/renew-list.vue | 259 + src/views/oa/app/components/search.vue | 179 + src/views/oa/app/components/task-list.vue | 152 + .../app/detail/components/app-about-edit.vue | 283 + .../oa/app/detail/components/app-about.vue | 60 + .../app/detail/components/app-annex-edit.vue | 221 + .../oa/app/detail/components/app-annex.vue | 302 + .../app/detail/components/app-field-edit.vue | 177 + .../detail/components/app-field-search.vue | 13 + .../oa/app/detail/components/app-field.vue | 208 + .../app/detail/components/app-info-edit.vue | 559 + .../oa/app/detail/components/app-info.vue | 176 + .../oa/app/detail/components/app-nenew.vue | 255 + .../app/detail/components/app-photo-edit.vue | 240 + .../oa/app/detail/components/app-photo.vue | 52 + .../detail/components/app-profile-edit.vue | 256 + .../oa/app/detail/components/app-profile.vue | 66 + .../app/detail/components/app-secret-form.vue | 210 + .../app/detail/components/app-task-search.vue | 34 + .../oa/app/detail/components/app-task.vue | 298 + .../oa/app/detail/components/app-url-edit.vue | 157 + .../app/detail/components/app-url-search.vue | 13 + .../oa/app/detail/components/app-url.vue | 202 + .../oa/app/detail/components/app-users.vue | 140 + src/views/oa/app/detail/index.vue | 342 + .../oa/app/dict/components/dict-edit.vue | 178 + src/views/oa/app/dict/index.vue | 223 + src/views/oa/app/index.vue | 477 + .../oa/app/renew/components/app-edit.vue | 379 + .../oa/app/renew/components/renew-list.vue | 302 + src/views/oa/app/renew/components/search.vue | 100 + src/views/oa/app/renew/index.vue | 354 + .../assets/server/components/assets-edit.vue | 623 + .../assets/server/components/renew-list.vue | 259 + .../oa/assets/server/components/search.vue | 160 + .../oa/assets/server/components/task-list.vue | 152 + .../detail/components/assets-info-edit.vue | 454 + .../server/detail/components/assets-info.vue | 131 + .../server/detail/components/assets-users.vue | 95 + src/views/oa/assets/server/detail/index.vue | 174 + .../server/dict/components/dict-edit.vue | 178 + src/views/oa/assets/server/dict/index.vue | 222 + src/views/oa/assets/server/index.vue | 371 + .../assets/server2/components/assets-edit.vue | 726 + .../oa/assets/server2/components/search.vue | 130 + src/views/oa/assets/server2/index.vue | 295 + .../oa/company/components/company-edit.vue | 701 + .../oa/company/components/company-info.vue | 298 + src/views/oa/company/components/search.vue | 232 + .../detail/components/company-about-edit.vue | 245 + .../detail/components/company-about.vue | 60 + .../detail/components/company-annex-edit.vue | 221 + .../detail/components/company-annex.vue | 301 + .../detail/components/company-field-edit.vue | 177 + .../components/company-field-search.vue | 13 + .../detail/components/company-field.vue | 211 + .../detail/components/company-info-edit.vue | 500 + .../detail/components/company-info.vue | 161 + .../detail/components/company-nenew.vue | 255 + .../detail/components/company-photo-edit.vue | 220 + .../detail/components/company-photo.vue | 52 + .../components/company-profile-edit.vue | 256 + .../detail/components/company-profile.vue | 66 + .../detail/components/company-secret-form.vue | 210 + .../detail/components/company-task-search.vue | 34 + .../detail/components/company-task.vue | 298 + .../detail/components/company-users.vue | 110 + src/views/oa/company/detail/index.vue | 203 + .../oa/company/dict/components/dict-edit.vue | 178 + src/views/oa/company/dict/index.vue | 222 + src/views/oa/company/index.vue | 315 + .../oa/customer/components/customer-edit.vue | 304 + .../customer-edit/progress-select.vue | 51 + .../customer-edit/source-select.vue | 51 + .../customer-edit/status-select.vue | 45 + .../components/customer-edit/type-select.vue | 44 + .../components/customer-edit/user-select.vue | 76 + .../oa/customer/components/customer-info.vue | 160 + .../oa/customer/components/customer-move.vue | 88 + .../customer/components/customer-search.vue | 64 + src/views/oa/customer/components/search.vue | 131 + .../oa/customer/components/status-select.vue | 45 + .../oa/customer/components/type-select.vue | 45 + src/views/oa/customer/index.vue | 56 + src/views/oa/customer/list.vue | 352 + .../dashboard/components/activities-card.vue | 138 + .../oa/dashboard/components/app-list.vue | 91 + .../oa/dashboard/components/article-list.vue | 56 + .../oa/dashboard/components/count-user.vue | 80 + src/views/oa/dashboard/components/docs.vue | 70 + .../oa/dashboard/components/goal-card.vue | 70 + .../oa/dashboard/components/link-card.vue | 181 + .../oa/dashboard/components/link-icons.ts | 15 + .../oa/dashboard/components/link-list.vue | 54 + .../oa/dashboard/components/more-icon.vue | 38 + .../oa/dashboard/components/profile-card.vue | 121 + src/views/oa/dashboard/components/qrcode.vue | 66 + .../oa/dashboard/components/task-card.vue | 116 + .../oa/dashboard/components/user-list.vue | 84 + src/views/oa/dashboard/index.vue | 353 + src/views/oa/link/components/link-edit.vue | 262 + src/views/oa/link/components/link-search.vue | 135 + .../oa/link/dict/components/dict-edit.vue | 179 + src/views/oa/link/dict/index.vue | 211 + src/views/oa/link/index.vue | 164 + src/views/oa/order/components/order-edit.vue | 476 + src/views/oa/order/components/search.vue | 101 + src/views/oa/order/index.vue | 259 + .../oa/product/components/product-edit.vue | 1243 ++ .../oa/product/components/renew-list.vue | 259 + src/views/oa/product/components/search.vue | 107 + src/views/oa/product/components/task-list.vue | 152 + .../detail/components/product-about.vue | 36 + .../detail/components/product-annex-edit.vue | 232 + .../detail/components/product-annex.vue | 297 + .../detail/components/product-info.vue | 141 + .../detail/components/product-photo.vue | 27 + .../detail/components/product-tabs-edit.vue | 177 + .../detail/components/product-tabs-search.vue | 13 + .../detail/components/product-tabs.vue | 234 + src/views/oa/product/detail/index.vue | 183 + src/views/oa/product/index.vue | 325 + .../oa/project/components/category-select.vue | 45 + .../oa/project/components/customer-select.vue | 69 + src/views/oa/project/components/markdown.vue | 75 + .../oa/project/components/project-edit.vue | 488 + .../oa/project/components/project-info.vue | 236 + .../oa/project/components/project-search.vue | 74 + src/views/oa/project/components/search.vue | 89 + .../oa/project/components/status-select.vue | 44 + src/views/oa/project/index.vue | 54 + src/views/oa/project/list.vue | 267 + src/views/oa/task/add/index.vue | 345 + .../admin/components/count-pending-all.vue | 154 + .../task/admin/components/count-pending.vue | 153 + .../oa/task/admin/components/count-rate.vue | 86 + .../admin/components/count-satisfaction.vue | 79 + src/views/oa/task/admin/components/qrcode.vue | 66 + src/views/oa/task/admin/index.vue | 150 + src/views/oa/task/components/carousel.vue | 14 + src/views/oa/task/components/count-num.vue | 119 + .../oa/task/components/count-pending.vue | 176 + src/views/oa/task/components/count-rate.vue | 86 + .../oa/task/components/count-satisfaction.vue | 79 + src/views/oa/task/components/count-user.vue | 80 + src/views/oa/task/components/more-icon.vue | 36 + src/views/oa/task/components/news.vue | 12 + src/views/oa/task/components/qrcode.vue | 66 + src/views/oa/task/components/search.vue | 51 + src/views/oa/task/components/task-list.vue | 215 + src/views/oa/task/components/tools.vue | 84 + .../oa/task/detail/components/app-info.vue | 346 + .../oa/task/detail/components/assign.vue | 54 + src/views/oa/task/detail/components/help.vue | 37 + src/views/oa/task/detail/components/links.vue | 40 + .../oa/task/detail/components/task-edit.vue | 126 + .../oa/task/detail/components/task-qrcode.vue | 83 + .../detail/components/task-record-edit.vue | 202 + src/views/oa/task/detail/index.vue | 706 + .../oa/task/dict/components/dict-edit.vue | 178 + src/views/oa/task/dict/index.vue | 224 + .../oa/task/hall/components/category.vue | 71 + .../oa/task/hall/components/pending-all.vue | 216 + src/views/oa/task/hall/components/search.vue | 92 + src/views/oa/task/hall/index.vue | 69 + src/views/oa/task/index.vue | 78 + .../oa/task/search/components/search.vue | 105 + src/views/oa/task/search/index.vue | 307 + src/views/passport/forget/index.vue | 428 + .../register/step/components/step-confirm.vue | 275 + .../register/step/components/step-edit.vue | 286 + .../register/step/components/step-success.vue | 24 + .../login/components/register/step/index.vue | 67 + .../components/register/step/model/index.ts | 12 + .../passport/login/components/wx-work.vue | 41 + src/views/passport/login/index.vue | 532 + .../passport/register/components/register.vue | 384 + src/views/passport/register/index.vue | 16 + .../register/step/components/step-confirm.vue | 276 + .../register/step/components/step-edit.vue | 302 + .../register/step/components/step-success.vue | 32 + src/views/passport/register/step/index.vue | 93 + .../passport/register/step/model/index.ts | 11 + src/views/passport/token-login/index.vue | 32 + src/views/passport/wx-work/index.vue | 41 + src/views/result/fail/index.vue | 62 + src/views/result/success/index.vue | 34 + src/views/shop/brand/components/brandEdit.vue | 201 + src/views/shop/brand/components/search.vue | 42 + src/views/shop/brand/index.vue | 245 + src/views/shop/goods/add/index.vue | 1003 ++ src/views/shop/goods/components/goodsEdit.vue | 361 + src/views/shop/goods/components/search.vue | 42 + src/views/shop/goods/index.vue | 256 + .../components/category-edit.vue | 300 + src/views/shop/goodsCategory/index.vue | 406 + .../shop/goodsCategory/preview/index.vue | 124 + .../shop/goodsSku/components/goodsSkuEdit.vue | 165 + src/views/shop/goodsSku/components/search.vue | 42 + src/views/shop/goodsSku/index.vue | 218 + .../goodsSpec/components/goodsSpecEdit.vue | 165 + .../shop/goodsSpec/components/search.vue | 42 + src/views/shop/goodsSpec/index.vue | 218 + .../components/goodsSpecRelEdit.vue | 165 + .../shop/goodsSpecRel/components/search.vue | 42 + src/views/shop/goodsSpecRel/index.vue | 218 + .../shop/merchant/components/merchantEdit.vue | 474 + src/views/shop/merchant/components/search.vue | 42 + src/views/shop/merchant/index.vue | 259 + .../components/merchantAccountEdit.vue | 249 + .../merchantAccount/components/search.vue | 42 + src/views/shop/merchantAccount/index.vue | 230 + .../components/merchantApplyEdit.vue | 288 + .../shop/merchantApply/components/search.vue | 42 + src/views/shop/merchantApply/index.vue | 235 + .../components/merchantTypeEdit.vue | 197 + .../shop/merchantType/components/search.vue | 42 + src/views/shop/merchantType/index.vue | 239 + src/views/shop/order/components/orderEdit.vue | 396 + src/views/shop/order/components/search.vue | 42 + src/views/shop/order/index.vue | 283 + src/views/shop/spec/components/search.vue | 42 + src/views/shop/spec/components/specEdit.vue | 163 + src/views/shop/spec/index.vue | 250 + .../shop/specValue/components/search.vue | 42 + .../specValue/components/specValueEdit.vue | 141 + src/views/shop/specValue/index.vue | 253 + src/views/shop/user/components/org-select.vue | 39 + .../shop/user/components/role-select.vue | 71 + src/views/shop/user/components/sex-select.vue | 45 + src/views/shop/user/components/user-edit.vue | 313 + .../shop/user/components/user-import.vue | 88 + src/views/shop/user/components/user-info.vue | 143 + .../shop/user/components/user-search.vue | 111 + src/views/shop/user/details/index.vue | 130 + src/views/shop/user/index.vue | 502 + .../access-key/components/accesskey-edit.vue | 233 + src/views/system/access-key/index.vue | 148 + src/views/system/appstore/components/buy.vue | 225 + .../components/dict/progress-select.vue | 51 + .../components/dict/source-select.vue | 51 + .../components/dict/status-select.vue | 45 + .../appstore/components/dict/type-select.vue | 44 + .../appstore/components/dict/user-select.vue | 76 + src/views/system/appstore/components/edit.vue | 400 + .../system/appstore/components/search.vue | 96 + .../system/appstore/components/setting.vue | 83 + .../components/setting/authority-edit.vue | 166 + .../appstore/components/setting/authority.vue | 172 + .../appstore/components/setting/basic.vue | 111 + .../appstore/components/setting/content.vue | 87 + .../appstore/components/setting/menu-edit.vue | 188 + .../appstore/components/setting/menu.vue | 174 + .../appstore/components/setting/setting.vue | 405 + .../step/components/step-confirm.vue | 268 + .../components/step/components/step-edit.vue | 196 + .../step/components/step-success.vue | 32 + .../system/appstore/components/step/index.vue | 112 + .../appstore/components/step/model/index.ts | 11 + src/views/system/appstore/index.vue | 54 + src/views/system/appstore/list.vue | 508 + src/views/system/appstore/menu-icons.ts | 56 + .../system/cache/components/cache-edit.vue | 165 + .../system/cache/components/send-sms.vue | 233 + src/views/system/cache/index.vue | 167 + .../dashboard/components/activities-card.vue | 138 + .../system/dashboard/components/app-list.vue | 82 + .../dashboard/components/article-list.vue | 56 + .../dashboard/components/count-user.vue | 80 + .../system/dashboard/components/docs.vue | 70 + .../system/dashboard/components/goal-card.vue | 70 + .../system/dashboard/components/link-card.vue | 178 + .../system/dashboard/components/link-icons.ts | 12 + .../system/dashboard/components/link-list.vue | 54 + .../system/dashboard/components/more-icon.vue | 38 + .../dashboard/components/profile-card.vue | 121 + .../system/dashboard/components/qrcode.vue | 66 + .../system/dashboard/components/task-card.vue | 112 + .../system/dashboard/components/user-list.vue | 84 + src/views/system/dashboard/index.vue | 359 + src/views/system/demo/index.vue | 23 + .../system/dict/components/dict-data-edit.vue | 165 + .../dict/components/dict-data-search.vue | 70 + .../system/dict/components/dict-data.vue | 229 + .../system/dict/components/dict-edit.vue | 160 + src/views/system/dict/index.vue | 192 + src/views/system/dict/list.vue | 210 + .../dictionary/components/dict-data-edit.vue | 170 + .../components/dict-data-search.vue | 70 + .../dictionary/components/dict-data.vue | 207 + .../dictionary/components/dict-edit.vue | 160 + src/views/system/dictionary/index.vue | 195 + src/views/system/dictionary/list.vue | 195 + src/views/system/exception/403/index.vue | 17 + src/views/system/exception/404/index.vue | 70 + src/views/system/exception/500/index.vue | 17 + .../system/file/components/file-search.vue | 106 + src/views/system/file/index.vue | 244 + .../system/grade/components/grade-edit.vue | 202 + src/views/system/grade/components/search.vue | 42 + src/views/system/grade/index.vue | 292 + .../components/login-record-search.vue | 115 + src/views/system/login-record/index.vue | 235 + src/views/system/menu/components/clone.vue | 192 + .../system/menu/components/menu-edit.vue | 469 + .../system/menu/components/menu-plug.vue | 168 + .../system/menu/components/menu-search.vue | 106 + src/views/system/menu/index.vue | 383 + .../modules/components/modules-edit.vue | 171 + .../modules/components/modules-search.vue | 106 + src/views/system/modules/index.vue | 160 + .../components/operation-record-detail.vue | 131 + .../components/operation-record-search.vue | 112 + .../components/text-ellipsis.vue | 59 + src/views/system/operation-record/index.vue | 273 + .../organization/components/org-edit.vue | 229 + .../organization/components/org-select.vue | 39 + .../components/org-type-select.vue | 39 + .../organization/components/org-user-edit.vue | 296 + .../organization/components/org-user-list.vue | 231 + .../components/org-user-search.vue | 83 + .../organization/components/role-select.vue | 71 + .../organization/components/sex-select.vue | 45 + src/views/system/organization/index.vue | 208 + .../system/plug/components/menu-edit.vue | 416 + .../system/plug/components/menu-search.vue | 106 + .../system/plug/components/plug-edit.vue | 253 + .../system/plug/components/plug-search.vue | 67 + src/views/system/plug/components/plug.vue | 213 + src/views/system/plug/components/tenant.vue | 254 + .../system/plug/create/components/clone.vue | 186 + .../plug/create/components/plug-edit.vue | 261 + .../plug/create/components/plug-search.vue | 98 + src/views/system/plug/create/index.vue | 296 + src/views/system/plug/detail/index.vue | 400 + src/views/system/plug/index.vue | 33 + src/views/system/plug/list/index.vue | 253 + src/views/system/plug/search/index.vue | 286 + src/views/system/profile/components/field.vue | 275 + .../system/profile/components/sex-select.vue | 45 + src/views/system/profile/index.vue | 441 + .../system/role/components/role-auth.vue | 159 + .../system/role/components/role-edit.vue | 169 + .../system/role/components/role-search.vue | 106 + src/views/system/role/index.vue | 210 + src/views/system/setting/components/basic.vue | 318 + src/views/system/setting/components/clear.vue | 137 + .../system/setting/components/developer.vue | 202 + .../system/setting/components/mp-weixin.vue | 217 + .../system/setting/components/payment.vue | 526 + .../system/setting/components/printer.vue | 214 + .../system/setting/components/register.vue | 236 + .../system/setting/components/role-select.vue | 64 + src/views/system/setting/components/sms.vue | 246 + .../system/setting/components/upload.vue | 313 + .../system/setting/components/wx-official.vue | 176 + .../system/setting/components/wx-work.vue | 210 + src/views/system/setting/index.vue | 83 + .../user-group/components/category-select.vue | 39 + .../user-group/components/group-edit.vue | 161 + .../system/user-group/components/search.vue | 42 + src/views/system/user-group/index.vue | 267 + src/views/system/user-info/index.vue | 111 + .../system/user/components/org-select.vue | 39 + .../system/user/components/role-select.vue | 71 + .../system/user/components/sex-select.vue | 45 + .../system/user/components/user-edit.vue | 338 + .../system/user/components/user-import.vue | 88 + .../system/user/components/user-info.vue | 143 + .../system/user/components/user-search.vue | 111 + src/views/system/user/details/index.vue | 130 + src/views/system/user/index.vue | 564 + .../version/components/version-edit.vue | 201 + src/views/system/version/index.vue | 221 + .../system/white-domain/components/search.vue | 42 + .../components/white-domain-edit.vue | 156 + src/views/system/white-domain/index.vue | 203 + src/views/user/balance-log/index.vue | 297 + .../components/org-user-list.vue | 193 + .../components/org-user-search.vue | 61 + .../batch-recharge/components/recharge.vue | 168 + src/views/user/batch-recharge/index.vue | 124 + .../user/company/components/role-select.vue | 71 + .../user/company/components/sex-select.vue | 45 + .../user/company/components/user-edit.vue | 276 + .../user/company/components/user-import.vue | 88 + .../user/company/components/user-info.vue | 143 + .../user/company/components/user-search.vue | 111 + src/views/user/company/details/index.vue | 122 + src/views/user/company/index.vue | 439 + .../user/grade/components/grade-edit.vue | 223 + src/views/user/grade/components/search.vue | 42 + src/views/user/grade/index.vue | 320 + .../user/index/components/org-select.vue | 39 + .../user/index/components/role-select.vue | 71 + .../user/index/components/sex-select.vue | 45 + src/views/user/index/components/user-edit.vue | 366 + .../user/index/components/user-import.vue | 88 + src/views/user/index/components/user-info.vue | 143 + .../user/index/components/user-search.vue | 111 + src/views/user/index/details/index.vue | 122 + src/views/user/index/index.vue | 632 + .../user/profile/components/sex-select.vue | 45 + src/views/user/profile/index.vue | 456 + .../user/recharge/components/recharge.vue | 203 + src/views/user/recharge/details/index.vue | 122 + src/views/user/recharge/index.vue | 303 + src/vite-env.d.ts | 1 + tsconfig.json | 37 + vite.config.ts | 79 + yarn.lock | 4463 ++++++ 991 files changed, 158700 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 components.d.ts create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 prettier.config.js create mode 100644 public/assets/logo.svg create mode 100644 public/favicon.ico create mode 100644 public/json/china-provinces.geo.json create mode 100644 public/json/industry-data.json create mode 100644 public/json/regions-data.json create mode 100644 public/logo.svg create mode 100644 public/tinymce/langs/zh_CN.js create mode 100644 public/tinymce/langs/zh_TW.js create mode 100644 public/tinymce/skins/content/dark/content.css create mode 100644 public/tinymce/skins/content/dark/content.min.css create mode 100644 public/tinymce/skins/content/default/content.css create mode 100644 public/tinymce/skins/content/default/content.min.css create mode 100644 public/tinymce/skins/content/document/content.css create mode 100644 public/tinymce/skins/content/document/content.min.css create mode 100644 public/tinymce/skins/content/writer/content.css create mode 100644 public/tinymce/skins/content/writer/content.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.inline.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.inline.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.mobile.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.mobile.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.css create mode 100644 public/tinymce/skins/ui/oxide/content.inline.css create mode 100644 public/tinymce/skins/ui/oxide/content.inline.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.mobile.css create mode 100644 public/tinymce/skins/ui/oxide/content.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff create mode 100644 public/tinymce/skins/ui/oxide/skin.css create mode 100644 public/tinymce/skins/ui/oxide/skin.min.css create mode 100644 public/tinymce/skins/ui/oxide/skin.mobile.css create mode 100644 public/tinymce/skins/ui/oxide/skin.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide/skin.shadowdom.css create mode 100644 public/tinymce/skins/ui/oxide/skin.shadowdom.min.css create mode 100644 public/ws-logo.svg create mode 100644 src/App.vue create mode 100644 src/api/apps/bc/agent/index.ts create mode 100644 src/api/apps/bc/agent/model/index.ts create mode 100644 src/api/apps/bc/balance-log/index.ts create mode 100644 src/api/apps/bc/balance-log/model/index.ts create mode 100644 src/api/apps/bc/equipment/index.ts create mode 100644 src/api/apps/bc/equipment/model/index.ts create mode 100644 src/api/apps/bc/export/index.ts create mode 100644 src/api/apps/bc/export/model/index.ts create mode 100644 src/api/apps/bc/food/index.ts create mode 100644 src/api/apps/bc/food/model/index.ts create mode 100644 src/api/apps/bc/goods/category/index.ts create mode 100644 src/api/apps/bc/goods/category/model/index.ts create mode 100644 src/api/apps/bc/goods/comment/index.ts create mode 100644 src/api/apps/bc/goods/comment/model/index.ts create mode 100644 src/api/apps/bc/goods/index.ts create mode 100644 src/api/apps/bc/goods/model/index.ts create mode 100644 src/api/apps/bc/goods/service/index.ts create mode 100644 src/api/apps/bc/goods/service/model/index.ts create mode 100644 src/api/apps/bc/order/goods/index.ts create mode 100644 src/api/apps/bc/order/goods/model/index.ts create mode 100644 src/api/apps/bc/order/index.ts create mode 100644 src/api/apps/bc/order/model/index.ts create mode 100644 src/api/apps/bc/order/refund/index.ts create mode 100644 src/api/apps/bc/order/refund/model/index.ts create mode 100644 src/api/apps/bc/plan/index.ts create mode 100644 src/api/apps/bc/plan/model/index.ts create mode 100644 src/api/apps/bc/recharge/export/index.ts create mode 100644 src/api/apps/bc/recharge/export/model/index.ts create mode 100644 src/api/apps/bc/recharge/order/index.ts create mode 100644 src/api/apps/bc/recharge/order/model/index.ts create mode 100644 src/api/apps/bc/temporary/index.ts create mode 100644 src/api/apps/bc/temporary/model/index.ts create mode 100644 src/api/apps/statistics/index.ts create mode 100644 src/api/apps/statistics/model/index.ts create mode 100644 src/api/booking/category/index.ts create mode 100644 src/api/booking/category/model/index.ts create mode 100644 src/api/booking/lesson/index.ts create mode 100644 src/api/booking/lesson/model/index.ts create mode 100644 src/api/booking/teacher/index.ts create mode 100644 src/api/booking/teacher/model/index.ts create mode 100644 src/api/cms/ad/index.ts create mode 100644 src/api/cms/ad/model/index.ts create mode 100644 src/api/cms/article/index.ts create mode 100644 src/api/cms/article/model/index.ts create mode 100644 src/api/cms/category/index.ts create mode 100644 src/api/cms/category/model/index.ts create mode 100644 src/api/cms/design/index.ts create mode 100644 src/api/cms/design/model/index.ts create mode 100644 src/api/cms/docs-book/index.ts create mode 100644 src/api/cms/docs-book/model/index.ts create mode 100644 src/api/cms/docs-content/index.ts create mode 100644 src/api/cms/docs-content/model/index.ts create mode 100644 src/api/cms/docs/index.ts create mode 100644 src/api/cms/docs/model/index.ts create mode 100644 src/api/cms/domain/index.ts create mode 100644 src/api/cms/domain/model/index.ts create mode 100644 src/api/cms/form-record/index.ts create mode 100644 src/api/cms/form-record/model/index.ts create mode 100644 src/api/cms/form/index.ts create mode 100644 src/api/cms/form/model/index.ts create mode 100644 src/api/cms/navigation/index.ts create mode 100644 src/api/cms/navigation/model/index.ts create mode 100644 src/api/cms/website/field/index.ts create mode 100644 src/api/cms/website/field/model/index.ts create mode 100644 src/api/cms/website/index.ts create mode 100644 src/api/cms/website/model/index.ts create mode 100644 src/api/dashboard/analysis/index.ts create mode 100644 src/api/dashboard/analysis/model/index.ts create mode 100644 src/api/dashboard/appstore/index.ts create mode 100644 src/api/dashboard/appstore/model/index.ts create mode 100644 src/api/dashboard/monitor/index.ts create mode 100644 src/api/dashboard/monitor/model/index.ts create mode 100644 src/api/index.ts create mode 100644 src/api/json.ts create mode 100644 src/api/layout/index.ts create mode 100644 src/api/layout/model/index.ts create mode 100644 src/api/login/index.ts create mode 100644 src/api/login/model/index.ts create mode 100644 src/api/login/wx-official/index.ts create mode 100644 src/api/login/wx-official/model/index.ts create mode 100644 src/api/oa/app/field/index.ts create mode 100644 src/api/oa/app/field/model/index.ts create mode 100644 src/api/oa/app/index.ts create mode 100644 src/api/oa/app/model/index.ts create mode 100644 src/api/oa/app/renew/index.ts create mode 100644 src/api/oa/app/renew/model/index.ts create mode 100644 src/api/oa/app/url/index.ts create mode 100644 src/api/oa/app/url/model/index.ts create mode 100644 src/api/oa/app/user/index.ts create mode 100644 src/api/oa/app/user/model/index.ts create mode 100644 src/api/oa/apply/index.ts create mode 100644 src/api/oa/apply/model/index.ts create mode 100644 src/api/oa/assets/index.ts create mode 100644 src/api/oa/assets/model/index.ts create mode 100644 src/api/oa/assets/user/index.ts create mode 100644 src/api/oa/assets/user/model/index.ts create mode 100644 src/api/oa/chatgpt/index.ts create mode 100644 src/api/oa/chatgpt/model/index.ts create mode 100644 src/api/oa/company/field/index.ts create mode 100644 src/api/oa/company/field/model/index.ts create mode 100644 src/api/oa/company/index.ts create mode 100644 src/api/oa/company/model/index.ts create mode 100644 src/api/oa/company/user/index.ts create mode 100644 src/api/oa/company/user/model/index.ts create mode 100644 src/api/oa/customer/index.ts create mode 100644 src/api/oa/customer/model/index.ts create mode 100644 src/api/oa/link/index.ts create mode 100644 src/api/oa/link/model/index.ts create mode 100644 src/api/oa/notice/index.ts create mode 100644 src/api/oa/notice/model/index.ts create mode 100644 src/api/oa/order/index.ts create mode 100644 src/api/oa/order/model/index.ts create mode 100644 src/api/oa/product/index.ts create mode 100644 src/api/oa/product/model/index.ts create mode 100644 src/api/oa/product/tabs/index.ts create mode 100644 src/api/oa/product/tabs/model/index.ts create mode 100644 src/api/oa/project/index.ts create mode 100644 src/api/oa/project/model/index.ts create mode 100644 src/api/oa/task-count/index.ts create mode 100644 src/api/oa/task-count/model/index.ts create mode 100644 src/api/oa/task-record/index.ts create mode 100644 src/api/oa/task-record/model/index.ts create mode 100644 src/api/oa/task-user/index.ts create mode 100644 src/api/oa/task-user/model/index.ts create mode 100644 src/api/oa/task/index.ts create mode 100644 src/api/oa/task/model/index.ts create mode 100644 src/api/oa/task/model/progress.ts create mode 100644 src/api/oa/task/model/task.ts create mode 100644 src/api/oa/tennat/index.ts create mode 100644 src/api/oa/tennat/model/index.ts create mode 100644 src/api/passport/login/index.ts create mode 100644 src/api/passport/login/model/index.ts create mode 100644 src/api/shop/brand/index.ts create mode 100644 src/api/shop/brand/model/index.ts create mode 100644 src/api/shop/goods/index.ts create mode 100644 src/api/shop/goods/model/index.ts create mode 100644 src/api/shop/goodsAttr/index.ts create mode 100644 src/api/shop/goodsAttr/model/index.ts create mode 100644 src/api/shop/goodsAttrResult/index.ts create mode 100644 src/api/shop/goodsAttrResult/model/index.ts create mode 100644 src/api/shop/goodsAttrValue/index.ts create mode 100644 src/api/shop/goodsAttrValue/model/index.ts create mode 100644 src/api/shop/goodsCategory/index.ts create mode 100644 src/api/shop/goodsCategory/model/index.ts create mode 100644 src/api/shop/goodsComment/index.ts create mode 100644 src/api/shop/goodsComment/model/index.ts create mode 100644 src/api/shop/goodsCoupon/index.ts create mode 100644 src/api/shop/goodsCoupon/model/index.ts create mode 100644 src/api/shop/goodsDescription/index.ts create mode 100644 src/api/shop/goodsDescription/model/index.ts create mode 100644 src/api/shop/goodsLog/index.ts create mode 100644 src/api/shop/goodsLog/model/index.ts create mode 100644 src/api/shop/goodsRelation/index.ts create mode 100644 src/api/shop/goodsRelation/model/index.ts create mode 100644 src/api/shop/goodsRule/index.ts create mode 100644 src/api/shop/goodsRule/model/index.ts create mode 100644 src/api/shop/goodsSku/index.ts create mode 100644 src/api/shop/goodsSku/model/index.ts create mode 100644 src/api/shop/goodsSpec/index.ts create mode 100644 src/api/shop/goodsSpec/model/index.ts create mode 100644 src/api/shop/goodsSpecRel/index.ts create mode 100644 src/api/shop/goodsSpecRel/model/index.ts create mode 100644 src/api/shop/merchant/index.ts create mode 100644 src/api/shop/merchant/model/index.ts create mode 100644 src/api/shop/merchantAccount/index.ts create mode 100644 src/api/shop/merchantAccount/model/index.ts create mode 100644 src/api/shop/merchantApply/index.ts create mode 100644 src/api/shop/merchantApply/model/index.ts create mode 100644 src/api/shop/merchantType/index.ts create mode 100644 src/api/shop/merchantType/model/index.ts create mode 100644 src/api/shop/order/index.ts create mode 100644 src/api/shop/order/model/index.ts create mode 100644 src/api/shop/spec/index.ts create mode 100644 src/api/shop/spec/model/index.ts create mode 100644 src/api/shop/specValue/index.ts create mode 100644 src/api/shop/specValue/model/index.ts create mode 100644 src/api/system/access-key/index.ts create mode 100644 src/api/system/access-key/model/index.ts create mode 100644 src/api/system/appstore/index.ts create mode 100644 src/api/system/appstore/model/index.ts create mode 100644 src/api/system/cache/index.ts create mode 100644 src/api/system/cache/model/index.ts create mode 100644 src/api/system/chat/index.ts create mode 100644 src/api/system/chat/model/index.ts create mode 100644 src/api/system/company/index.ts create mode 100644 src/api/system/company/model/index.ts create mode 100644 src/api/system/dict-data/index.ts create mode 100644 src/api/system/dict-data/model/index.ts create mode 100644 src/api/system/dict/index.ts create mode 100644 src/api/system/dict/model/index.ts create mode 100644 src/api/system/dictionary-data/index.ts create mode 100644 src/api/system/dictionary-data/model/index.ts create mode 100644 src/api/system/dictionary/index.ts create mode 100644 src/api/system/dictionary/model/index.ts create mode 100644 src/api/system/environment/index.ts create mode 100644 src/api/system/environment/model/index.ts create mode 100644 src/api/system/file/index.ts create mode 100644 src/api/system/file/model/index.ts create mode 100644 src/api/system/login-record/index.ts create mode 100644 src/api/system/login-record/model/index.ts create mode 100644 src/api/system/menu/index.ts create mode 100644 src/api/system/menu/model/index.ts create mode 100644 src/api/system/modules/index.ts create mode 100644 src/api/system/modules/model/index.ts create mode 100644 src/api/system/operation-record/index.ts create mode 100644 src/api/system/operation-record/model/index.ts create mode 100644 src/api/system/organization/index.ts create mode 100644 src/api/system/organization/model/index.ts create mode 100644 src/api/system/plug/index.ts create mode 100644 src/api/system/plug/model/index.ts create mode 100644 src/api/system/role/index.ts create mode 100644 src/api/system/role/model/index.ts create mode 100644 src/api/system/setting/index.ts create mode 100644 src/api/system/setting/model/index.ts create mode 100644 src/api/system/tennat/index.ts create mode 100644 src/api/system/tennat/model/index.ts create mode 100644 src/api/system/user-file/index.ts create mode 100644 src/api/system/user-file/model/index.ts create mode 100644 src/api/system/user-group/index.ts create mode 100644 src/api/system/user-group/model/index.ts create mode 100644 src/api/system/user/index.ts create mode 100644 src/api/system/user/model/count.ts create mode 100644 src/api/system/user/model/index.ts create mode 100644 src/api/system/version/index.ts create mode 100644 src/api/system/version/model/index.ts create mode 100644 src/api/system/white-domain/index.ts create mode 100644 src/api/system/white-domain/model/index.ts create mode 100644 src/api/tabs.ts create mode 100644 src/api/user/balance-log/index.ts create mode 100644 src/api/user/balance-log/model/index.ts create mode 100644 src/api/user/feedback/index.ts create mode 100644 src/api/user/feedback/model/index.ts create mode 100644 src/api/user/grade/index.ts create mode 100644 src/api/user/grade/model/index.ts create mode 100644 src/api/user/index.ts create mode 100644 src/api/user/model/index.ts create mode 100644 src/api/user/recharge/export/index.ts create mode 100644 src/api/user/recharge/export/model/index.ts create mode 100644 src/api/user/recharge/order/index.ts create mode 100644 src/api/user/recharge/order/model/index.ts create mode 100644 src/api/user/referee/index.ts create mode 100644 src/api/user/referee/model/index.ts create mode 100644 src/assets/bg-2.jpeg create mode 100644 src/assets/bg-login.jpg create mode 100644 src/assets/icon/app1.png create mode 100644 src/assets/icon/book.png create mode 100644 src/assets/icon/forum.png create mode 100644 src/assets/icon/gitea.png create mode 100644 src/assets/icon/openai-avatar.jpeg create mode 100644 src/assets/icon/other.png create mode 100644 src/assets/icon/pc.png create mode 100644 src/assets/icon/question.png create mode 100644 src/assets/icon/weixin.png create mode 100644 src/assets/img/app-ui.png create mode 100755 src/assets/img/circular.png create mode 100755 src/assets/img/default-avatar.png create mode 100755 src/assets/img/phone-top-black.png create mode 100755 src/assets/img/phone-top-white.png create mode 100644 src/assets/img/phone-ui.png create mode 100644 src/assets/logo.svg create mode 100644 src/components/ByteMdEditor/index.vue create mode 100644 src/components/ByteMdViewer/index.vue create mode 100644 src/components/DesignBanner/index.vue create mode 100644 src/components/DesignHeader/index.vue create mode 100644 src/components/DesignTools/index.bak.vue create mode 100644 src/components/DesignTools/index.vue create mode 100644 src/components/DictRadio/index.vue create mode 100644 src/components/DictSelect/index.vue create mode 100644 src/components/DictSelectMultiple/index.vue create mode 100644 src/components/FormSelect/index.vue create mode 100644 src/components/IndustrySelect/index.vue create mode 100644 src/components/IndustrySelect/load-data.ts create mode 100644 src/components/IndustrySelect/types/index.ts create mode 100644 src/components/RadioGroup/index.vue create mode 100644 src/components/RedirectLayout/index.ts create mode 100644 src/components/RegionsSelect/index.vue create mode 100644 src/components/RegionsSelect/load-data.ts create mode 100644 src/components/RegionsSelect/types/index.ts create mode 100644 src/components/RouterLayout/index.vue create mode 100644 src/components/SelectApp/components/select-data.vue create mode 100644 src/components/SelectApp/index.vue create mode 100644 src/components/SelectArticle/components/select-data.vue create mode 100644 src/components/SelectArticle/index.vue create mode 100644 src/components/SelectArticleCategory/components/select-data.vue create mode 100644 src/components/SelectArticleCategory/index.vue create mode 100644 src/components/SelectCompany/components/select-data.vue create mode 100644 src/components/SelectCompany/index.vue create mode 100644 src/components/SelectDesign/components/select-data.vue create mode 100644 src/components/SelectDesign/index.vue create mode 100644 src/components/SelectDict/components/select-data.vue create mode 100644 src/components/SelectDict/index.vue create mode 100644 src/components/SelectDocsBook/components/select-data.vue create mode 100644 src/components/SelectDocsBook/index.vue create mode 100644 src/components/SelectFile/components/file-record-edit.vue create mode 100644 src/components/SelectFile/components/select-data.vue create mode 100644 src/components/SelectFile/index.vue create mode 100644 src/components/SelectForm/components/select-data.vue create mode 100644 src/components/SelectForm/index.vue create mode 100644 src/components/SelectGoodsCategory/index.vue create mode 100644 src/components/SelectGoodsCategory/load-data.ts create mode 100644 src/components/SelectGoodsCategory/types/index.ts create mode 100644 src/components/SelectGrade/components/select-data.vue create mode 100644 src/components/SelectGrade/index.vue create mode 100644 src/components/SelectGroup/components/select-data.vue create mode 100644 src/components/SelectGroup/index.vue create mode 100644 src/components/SelectMerchant/components/select-data.vue create mode 100644 src/components/SelectMerchant/index.vue create mode 100644 src/components/SelectMerchantType/index.vue create mode 100644 src/components/SelectModules/components/select-data.vue create mode 100644 src/components/SelectModules/index.vue create mode 100644 src/components/SelectOrganization/components/select-data.vue create mode 100644 src/components/SelectOrganization/components/select-organization.vue create mode 100644 src/components/SelectOrganization/index.vue create mode 100644 src/components/SelectRole/components/select-data.vue create mode 100644 src/components/SelectRole/index.vue create mode 100644 src/components/SelectSpec/index.vue create mode 100644 src/components/SelectSpecValue/index.vue create mode 100644 src/components/SelectStaff/components/select-data.vue create mode 100644 src/components/SelectStaff/components/select-user.vue create mode 100644 src/components/SelectStaff/index.vue create mode 100644 src/components/SelectTenant/components/select-data.vue create mode 100644 src/components/SelectTenant/index.vue create mode 100644 src/components/SelectUser/components/select-data.vue create mode 100644 src/components/SelectUser/components/select-user.vue create mode 100644 src/components/SelectUser/index.vue create mode 100644 src/components/Simulator/index.vue create mode 100644 src/components/Tag/index.vue create mode 100644 src/components/TinymceEditor/index.vue create mode 100644 src/components/TinymceEditor/util.ts create mode 100644 src/components/UploadCert/index.vue create mode 100644 src/components/UploadFile/index.vue create mode 100644 src/components/User/index.vue create mode 100644 src/components/UserChoose/choose-search.vue create mode 100644 src/components/UserChoose/index.vue create mode 100644 src/components/UserChoose/types/index.ts create mode 100644 src/components/UserSelect/index.vue create mode 100644 src/components/UserSelect/types/index.ts create mode 100644 src/components/UserSelect/user-search.vue create mode 100644 src/config/menu.ts create mode 100644 src/config/setting.ts create mode 100644 src/i18n/index.ts create mode 100644 src/i18n/lang/en/index.ts create mode 100644 src/i18n/lang/en/layout.ts create mode 100644 src/i18n/lang/en/list.ts create mode 100644 src/i18n/lang/en/login.ts create mode 100644 src/i18n/lang/en/route.ts create mode 100644 src/i18n/lang/zh_CN/index.ts create mode 100644 src/i18n/lang/zh_CN/layout.ts create mode 100644 src/i18n/lang/zh_CN/list.ts create mode 100644 src/i18n/lang/zh_CN/login.ts create mode 100644 src/i18n/lang/zh_CN/route.ts create mode 100644 src/i18n/lang/zh_TW/index.ts create mode 100644 src/i18n/lang/zh_TW/layout.ts create mode 100644 src/i18n/lang/zh_TW/list.ts create mode 100644 src/i18n/lang/zh_TW/login.ts create mode 100644 src/i18n/lang/zh_TW/route.ts create mode 100644 src/i18n/use-locale.ts create mode 100644 src/layout/components/header-notice.vue create mode 100644 src/layout/components/header-tools-bak.vue create mode 100644 src/layout/components/header-tools.vue create mode 100644 src/layout/components/header-wechat.vue create mode 100644 src/layout/components/i18n-icon.vue create mode 100644 src/layout/components/menu-title.vue create mode 100644 src/layout/components/page-footer.vue create mode 100644 src/layout/components/password-modal.vue create mode 100644 src/layout/components/setting-drawer.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/menu-icons.ts create mode 100644 src/main.ts create mode 100644 src/router/index.ts create mode 100644 src/router/routes.ts create mode 100644 src/shims-vue.d.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/chat.ts create mode 100644 src/store/modules/params.ts create mode 100644 src/store/modules/tenant.ts create mode 100644 src/store/modules/theme.ts create mode 100644 src/store/modules/user.ts create mode 100644 src/styles/as-needed.less create mode 100644 src/styles/component.less create mode 100644 src/styles/global-import.less create mode 100644 src/styles/index.less create mode 100644 src/styles/transition/fade.less create mode 100644 src/styles/transition/index.less create mode 100644 src/styles/transition/slide.less create mode 100644 src/styles/transition/zoom.less create mode 100644 src/utils/common.ts create mode 100644 src/utils/document-title-util.ts create mode 100644 src/utils/domain.ts create mode 100644 src/utils/editor.ts create mode 100644 src/utils/on-size-change.ts create mode 100644 src/utils/oss.js create mode 100644 src/utils/page-tab-util.ts create mode 100644 src/utils/permission.ts create mode 100644 src/utils/plug-uitl.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/token-util.ts create mode 100644 src/utils/use-echarts.ts create mode 100644 src/utils/use-form-data.ts create mode 100644 src/utils/use-search.ts create mode 100644 src/views/booking/account/components/merchantAccountEdit.vue create mode 100644 src/views/booking/account/components/search.vue create mode 100644 src/views/booking/account/index.vue create mode 100644 src/views/booking/category/components/category-edit.vue create mode 100644 src/views/booking/category/index.vue create mode 100644 src/views/booking/category/preview/index.vue create mode 100644 src/views/booking/goods/add/index.vue create mode 100644 src/views/booking/goods/components/goodsEdit.vue create mode 100644 src/views/booking/goods/components/search.vue create mode 100644 src/views/booking/goods/index.vue create mode 100644 src/views/booking/school/components/merchantEdit.vue create mode 100644 src/views/booking/school/components/search.vue create mode 100644 src/views/booking/school/index.vue create mode 100644 src/views/booking/schoolType/components/merchantTypeEdit.vue create mode 100644 src/views/booking/schoolType/components/search.vue create mode 100644 src/views/booking/schoolType/index.vue create mode 100644 src/views/booking/student/components/org-select.vue create mode 100644 src/views/booking/student/components/role-select.vue create mode 100644 src/views/booking/student/components/sex-select.vue create mode 100644 src/views/booking/student/components/user-edit.vue create mode 100644 src/views/booking/student/components/user-import.vue create mode 100644 src/views/booking/student/components/user-info.vue create mode 100644 src/views/booking/student/components/user-search.vue create mode 100644 src/views/booking/student/details/index.vue create mode 100644 src/views/booking/student/index.vue create mode 100644 src/views/booking/teacher/components/merchantEdit.vue create mode 100644 src/views/booking/teacher/components/search.vue create mode 100644 src/views/booking/teacher/components/teacherEdit.vue create mode 100644 src/views/booking/teacher/index.vue create mode 100644 src/views/booking/teacher3/components/org-select.vue create mode 100644 src/views/booking/teacher3/components/role-select.vue create mode 100644 src/views/booking/teacher3/components/sex-select.vue create mode 100644 src/views/booking/teacher3/components/user-edit.vue create mode 100644 src/views/booking/teacher3/components/user-import.vue create mode 100644 src/views/booking/teacher3/components/user-info.vue create mode 100644 src/views/booking/teacher3/components/user-search.vue create mode 100644 src/views/booking/teacher3/details/index.vue create mode 100644 src/views/booking/teacher3/index.vue create mode 100644 src/views/cms/ad/components/ad-edit.vue create mode 100644 src/views/cms/ad/components/search.vue create mode 100644 src/views/cms/ad/index.vue create mode 100644 src/views/cms/article/components/article-edit.vue create mode 100644 src/views/cms/article/components/article-info.vue create mode 100644 src/views/cms/article/components/article-search.vue create mode 100644 src/views/cms/article/components/category-edit.bak.vue create mode 100644 src/views/cms/article/components/category-edit.vue create mode 100644 src/views/cms/article/components/category-select.vue create mode 100644 src/views/cms/article/dictionary/source-select.vue create mode 100644 src/views/cms/article/index.vue create mode 100644 src/views/cms/article/list.vue create mode 100644 src/views/cms/article/preview/index.vue create mode 100644 src/views/cms/category/components/category-edit.vue create mode 100644 src/views/cms/category/index.vue create mode 100644 src/views/cms/category/preview/index.vue create mode 100644 src/views/cms/clear-cache/index.vue create mode 100644 src/views/cms/dashboard/components/activities-card.vue create mode 100644 src/views/cms/dashboard/components/app-list.vue create mode 100644 src/views/cms/dashboard/components/article-list.vue create mode 100644 src/views/cms/dashboard/components/count-user.vue create mode 100644 src/views/cms/dashboard/components/docs.vue create mode 100644 src/views/cms/dashboard/components/goal-card.vue create mode 100644 src/views/cms/dashboard/components/link-card.vue create mode 100644 src/views/cms/dashboard/components/link-icons.ts create mode 100644 src/views/cms/dashboard/components/link-list.vue create mode 100644 src/views/cms/dashboard/components/more-icon.vue create mode 100644 src/views/cms/dashboard/components/profile-card.vue create mode 100644 src/views/cms/dashboard/components/qrcode.vue create mode 100644 src/views/cms/dashboard/components/task-card.vue create mode 100644 src/views/cms/dashboard/components/user-list.vue create mode 100644 src/views/cms/dashboard/index.vue create mode 100644 src/views/cms/design/components/design-edit.vue create mode 100644 src/views/cms/design/components/search.vue create mode 100644 src/views/cms/design/detail/index.vue create mode 100644 src/views/cms/design/index.vue create mode 100644 src/views/cms/dict/components/dict-edit.vue create mode 100644 src/views/cms/dict/index.vue create mode 100644 src/views/cms/docs-book/components/docs-book-edit.vue create mode 100644 src/views/cms/docs-book/components/search.vue create mode 100644 src/views/cms/docs-book/index.vue create mode 100644 src/views/cms/docs-md-bak/components/docs-edit.vue create mode 100644 src/views/cms/docs-md-bak/components/docs-select.vue create mode 100644 src/views/cms/docs-md-bak/content.vue create mode 100644 src/views/cms/docs-md-bak/index.vue create mode 100644 src/views/cms/docs-md-bak/markdown.vue create mode 100644 src/views/cms/docs-md-bak/tinymce.vue create mode 100644 src/views/cms/docs/components/docs-edit.vue create mode 100644 src/views/cms/docs/components/docs-select.vue create mode 100644 src/views/cms/docs/content.vue create mode 100644 src/views/cms/docs/index.vue create mode 100644 src/views/cms/docs/markdown.vue create mode 100644 src/views/cms/docs/tinymce.vue create mode 100644 src/views/cms/domain/components/domain-edit.vue create mode 100644 src/views/cms/domain/components/search.vue create mode 100644 src/views/cms/domain/index.vue create mode 100644 src/views/cms/down/components/video-edit.vue create mode 100644 src/views/cms/down/index.vue create mode 100644 src/views/cms/down/player/index.vue create mode 100644 src/views/cms/form-record/components/form-record-edit.vue create mode 100644 src/views/cms/form-record/components/search.vue create mode 100644 src/views/cms/form-record/index.vue create mode 100644 src/views/cms/form/detail/components/checkbox-form.vue create mode 100644 src/views/cms/form/detail/components/radio-form.vue create mode 100644 src/views/cms/form/detail/index.vue create mode 100644 src/views/cms/form/index.vue create mode 100644 src/views/cms/navigation/components/navigation-edit.vue create mode 100644 src/views/cms/navigation/index.vue create mode 100644 src/views/cms/photo/components/photo-edit.vue create mode 100644 src/views/cms/photo/dict/components/dict-edit.vue create mode 100644 src/views/cms/photo/dict/index.vue create mode 100644 src/views/cms/photo/image.vue create mode 100644 src/views/cms/photo/index.vue create mode 100644 src/views/cms/photo/list.vue create mode 100644 src/views/cms/photo/player/index.vue create mode 100644 src/views/cms/setting/components/field.vue create mode 100644 src/views/cms/setting/components/website-field-edit.vue create mode 100644 src/views/cms/setting/components/website-field-search.vue create mode 100644 src/views/cms/setting/components/website-field.vue create mode 100644 src/views/cms/setting/index.vue create mode 100644 src/views/cms/video/components/video-edit.vue create mode 100644 src/views/cms/video/index.vue create mode 100644 src/views/cms/video/player/index.vue create mode 100644 src/views/oa/app/components/app-edit.vue create mode 100644 src/views/oa/app/components/renew-list.vue create mode 100644 src/views/oa/app/components/search.vue create mode 100644 src/views/oa/app/components/task-list.vue create mode 100644 src/views/oa/app/detail/components/app-about-edit.vue create mode 100644 src/views/oa/app/detail/components/app-about.vue create mode 100644 src/views/oa/app/detail/components/app-annex-edit.vue create mode 100644 src/views/oa/app/detail/components/app-annex.vue create mode 100644 src/views/oa/app/detail/components/app-field-edit.vue create mode 100644 src/views/oa/app/detail/components/app-field-search.vue create mode 100644 src/views/oa/app/detail/components/app-field.vue create mode 100644 src/views/oa/app/detail/components/app-info-edit.vue create mode 100644 src/views/oa/app/detail/components/app-info.vue create mode 100644 src/views/oa/app/detail/components/app-nenew.vue create mode 100644 src/views/oa/app/detail/components/app-photo-edit.vue create mode 100644 src/views/oa/app/detail/components/app-photo.vue create mode 100644 src/views/oa/app/detail/components/app-profile-edit.vue create mode 100644 src/views/oa/app/detail/components/app-profile.vue create mode 100644 src/views/oa/app/detail/components/app-secret-form.vue create mode 100644 src/views/oa/app/detail/components/app-task-search.vue create mode 100644 src/views/oa/app/detail/components/app-task.vue create mode 100644 src/views/oa/app/detail/components/app-url-edit.vue create mode 100644 src/views/oa/app/detail/components/app-url-search.vue create mode 100644 src/views/oa/app/detail/components/app-url.vue create mode 100644 src/views/oa/app/detail/components/app-users.vue create mode 100644 src/views/oa/app/detail/index.vue create mode 100644 src/views/oa/app/dict/components/dict-edit.vue create mode 100644 src/views/oa/app/dict/index.vue create mode 100644 src/views/oa/app/index.vue create mode 100644 src/views/oa/app/renew/components/app-edit.vue create mode 100644 src/views/oa/app/renew/components/renew-list.vue create mode 100644 src/views/oa/app/renew/components/search.vue create mode 100644 src/views/oa/app/renew/index.vue create mode 100644 src/views/oa/assets/server/components/assets-edit.vue create mode 100644 src/views/oa/assets/server/components/renew-list.vue create mode 100644 src/views/oa/assets/server/components/search.vue create mode 100644 src/views/oa/assets/server/components/task-list.vue create mode 100644 src/views/oa/assets/server/detail/components/assets-info-edit.vue create mode 100644 src/views/oa/assets/server/detail/components/assets-info.vue create mode 100644 src/views/oa/assets/server/detail/components/assets-users.vue create mode 100644 src/views/oa/assets/server/detail/index.vue create mode 100644 src/views/oa/assets/server/dict/components/dict-edit.vue create mode 100644 src/views/oa/assets/server/dict/index.vue create mode 100644 src/views/oa/assets/server/index.vue create mode 100644 src/views/oa/assets/server2/components/assets-edit.vue create mode 100644 src/views/oa/assets/server2/components/search.vue create mode 100644 src/views/oa/assets/server2/index.vue create mode 100644 src/views/oa/company/components/company-edit.vue create mode 100644 src/views/oa/company/components/company-info.vue create mode 100644 src/views/oa/company/components/search.vue create mode 100644 src/views/oa/company/detail/components/company-about-edit.vue create mode 100644 src/views/oa/company/detail/components/company-about.vue create mode 100644 src/views/oa/company/detail/components/company-annex-edit.vue create mode 100644 src/views/oa/company/detail/components/company-annex.vue create mode 100644 src/views/oa/company/detail/components/company-field-edit.vue create mode 100644 src/views/oa/company/detail/components/company-field-search.vue create mode 100644 src/views/oa/company/detail/components/company-field.vue create mode 100644 src/views/oa/company/detail/components/company-info-edit.vue create mode 100644 src/views/oa/company/detail/components/company-info.vue create mode 100644 src/views/oa/company/detail/components/company-nenew.vue create mode 100644 src/views/oa/company/detail/components/company-photo-edit.vue create mode 100644 src/views/oa/company/detail/components/company-photo.vue create mode 100644 src/views/oa/company/detail/components/company-profile-edit.vue create mode 100644 src/views/oa/company/detail/components/company-profile.vue create mode 100644 src/views/oa/company/detail/components/company-secret-form.vue create mode 100644 src/views/oa/company/detail/components/company-task-search.vue create mode 100644 src/views/oa/company/detail/components/company-task.vue create mode 100644 src/views/oa/company/detail/components/company-users.vue create mode 100644 src/views/oa/company/detail/index.vue create mode 100644 src/views/oa/company/dict/components/dict-edit.vue create mode 100644 src/views/oa/company/dict/index.vue create mode 100644 src/views/oa/company/index.vue create mode 100644 src/views/oa/customer/components/customer-edit.vue create mode 100644 src/views/oa/customer/components/customer-edit/progress-select.vue create mode 100644 src/views/oa/customer/components/customer-edit/source-select.vue create mode 100644 src/views/oa/customer/components/customer-edit/status-select.vue create mode 100644 src/views/oa/customer/components/customer-edit/type-select.vue create mode 100644 src/views/oa/customer/components/customer-edit/user-select.vue create mode 100644 src/views/oa/customer/components/customer-info.vue create mode 100644 src/views/oa/customer/components/customer-move.vue create mode 100644 src/views/oa/customer/components/customer-search.vue create mode 100644 src/views/oa/customer/components/search.vue create mode 100644 src/views/oa/customer/components/status-select.vue create mode 100644 src/views/oa/customer/components/type-select.vue create mode 100644 src/views/oa/customer/index.vue create mode 100644 src/views/oa/customer/list.vue create mode 100644 src/views/oa/dashboard/components/activities-card.vue create mode 100644 src/views/oa/dashboard/components/app-list.vue create mode 100644 src/views/oa/dashboard/components/article-list.vue create mode 100644 src/views/oa/dashboard/components/count-user.vue create mode 100644 src/views/oa/dashboard/components/docs.vue create mode 100644 src/views/oa/dashboard/components/goal-card.vue create mode 100644 src/views/oa/dashboard/components/link-card.vue create mode 100644 src/views/oa/dashboard/components/link-icons.ts create mode 100644 src/views/oa/dashboard/components/link-list.vue create mode 100644 src/views/oa/dashboard/components/more-icon.vue create mode 100644 src/views/oa/dashboard/components/profile-card.vue create mode 100644 src/views/oa/dashboard/components/qrcode.vue create mode 100644 src/views/oa/dashboard/components/task-card.vue create mode 100644 src/views/oa/dashboard/components/user-list.vue create mode 100644 src/views/oa/dashboard/index.vue create mode 100644 src/views/oa/link/components/link-edit.vue create mode 100644 src/views/oa/link/components/link-search.vue create mode 100644 src/views/oa/link/dict/components/dict-edit.vue create mode 100644 src/views/oa/link/dict/index.vue create mode 100644 src/views/oa/link/index.vue create mode 100644 src/views/oa/order/components/order-edit.vue create mode 100644 src/views/oa/order/components/search.vue create mode 100644 src/views/oa/order/index.vue create mode 100644 src/views/oa/product/components/product-edit.vue create mode 100644 src/views/oa/product/components/renew-list.vue create mode 100644 src/views/oa/product/components/search.vue create mode 100644 src/views/oa/product/components/task-list.vue create mode 100644 src/views/oa/product/detail/components/product-about.vue create mode 100644 src/views/oa/product/detail/components/product-annex-edit.vue create mode 100644 src/views/oa/product/detail/components/product-annex.vue create mode 100644 src/views/oa/product/detail/components/product-info.vue create mode 100644 src/views/oa/product/detail/components/product-photo.vue create mode 100644 src/views/oa/product/detail/components/product-tabs-edit.vue create mode 100644 src/views/oa/product/detail/components/product-tabs-search.vue create mode 100644 src/views/oa/product/detail/components/product-tabs.vue create mode 100644 src/views/oa/product/detail/index.vue create mode 100644 src/views/oa/product/index.vue create mode 100644 src/views/oa/project/components/category-select.vue create mode 100644 src/views/oa/project/components/customer-select.vue create mode 100644 src/views/oa/project/components/markdown.vue create mode 100644 src/views/oa/project/components/project-edit.vue create mode 100644 src/views/oa/project/components/project-info.vue create mode 100644 src/views/oa/project/components/project-search.vue create mode 100644 src/views/oa/project/components/search.vue create mode 100644 src/views/oa/project/components/status-select.vue create mode 100644 src/views/oa/project/index.vue create mode 100644 src/views/oa/project/list.vue create mode 100644 src/views/oa/task/add/index.vue create mode 100644 src/views/oa/task/admin/components/count-pending-all.vue create mode 100644 src/views/oa/task/admin/components/count-pending.vue create mode 100644 src/views/oa/task/admin/components/count-rate.vue create mode 100644 src/views/oa/task/admin/components/count-satisfaction.vue create mode 100644 src/views/oa/task/admin/components/qrcode.vue create mode 100644 src/views/oa/task/admin/index.vue create mode 100644 src/views/oa/task/components/carousel.vue create mode 100644 src/views/oa/task/components/count-num.vue create mode 100644 src/views/oa/task/components/count-pending.vue create mode 100644 src/views/oa/task/components/count-rate.vue create mode 100644 src/views/oa/task/components/count-satisfaction.vue create mode 100644 src/views/oa/task/components/count-user.vue create mode 100644 src/views/oa/task/components/more-icon.vue create mode 100644 src/views/oa/task/components/news.vue create mode 100644 src/views/oa/task/components/qrcode.vue create mode 100644 src/views/oa/task/components/search.vue create mode 100644 src/views/oa/task/components/task-list.vue create mode 100644 src/views/oa/task/components/tools.vue create mode 100644 src/views/oa/task/detail/components/app-info.vue create mode 100644 src/views/oa/task/detail/components/assign.vue create mode 100644 src/views/oa/task/detail/components/help.vue create mode 100644 src/views/oa/task/detail/components/links.vue create mode 100644 src/views/oa/task/detail/components/task-edit.vue create mode 100644 src/views/oa/task/detail/components/task-qrcode.vue create mode 100644 src/views/oa/task/detail/components/task-record-edit.vue create mode 100644 src/views/oa/task/detail/index.vue create mode 100644 src/views/oa/task/dict/components/dict-edit.vue create mode 100644 src/views/oa/task/dict/index.vue create mode 100644 src/views/oa/task/hall/components/category.vue create mode 100644 src/views/oa/task/hall/components/pending-all.vue create mode 100644 src/views/oa/task/hall/components/search.vue create mode 100644 src/views/oa/task/hall/index.vue create mode 100644 src/views/oa/task/index.vue create mode 100644 src/views/oa/task/search/components/search.vue create mode 100644 src/views/oa/task/search/index.vue create mode 100644 src/views/passport/forget/index.vue create mode 100644 src/views/passport/login/components/register/step/components/step-confirm.vue create mode 100644 src/views/passport/login/components/register/step/components/step-edit.vue create mode 100644 src/views/passport/login/components/register/step/components/step-success.vue create mode 100644 src/views/passport/login/components/register/step/index.vue create mode 100644 src/views/passport/login/components/register/step/model/index.ts create mode 100644 src/views/passport/login/components/wx-work.vue create mode 100644 src/views/passport/login/index.vue create mode 100644 src/views/passport/register/components/register.vue create mode 100644 src/views/passport/register/index.vue create mode 100644 src/views/passport/register/step/components/step-confirm.vue create mode 100644 src/views/passport/register/step/components/step-edit.vue create mode 100644 src/views/passport/register/step/components/step-success.vue create mode 100644 src/views/passport/register/step/index.vue create mode 100644 src/views/passport/register/step/model/index.ts create mode 100644 src/views/passport/token-login/index.vue create mode 100644 src/views/passport/wx-work/index.vue create mode 100644 src/views/result/fail/index.vue create mode 100644 src/views/result/success/index.vue create mode 100644 src/views/shop/brand/components/brandEdit.vue create mode 100644 src/views/shop/brand/components/search.vue create mode 100644 src/views/shop/brand/index.vue create mode 100644 src/views/shop/goods/add/index.vue create mode 100644 src/views/shop/goods/components/goodsEdit.vue create mode 100644 src/views/shop/goods/components/search.vue create mode 100644 src/views/shop/goods/index.vue create mode 100644 src/views/shop/goodsCategory/components/category-edit.vue create mode 100644 src/views/shop/goodsCategory/index.vue create mode 100644 src/views/shop/goodsCategory/preview/index.vue create mode 100644 src/views/shop/goodsSku/components/goodsSkuEdit.vue create mode 100644 src/views/shop/goodsSku/components/search.vue create mode 100644 src/views/shop/goodsSku/index.vue create mode 100644 src/views/shop/goodsSpec/components/goodsSpecEdit.vue create mode 100644 src/views/shop/goodsSpec/components/search.vue create mode 100644 src/views/shop/goodsSpec/index.vue create mode 100644 src/views/shop/goodsSpecRel/components/goodsSpecRelEdit.vue create mode 100644 src/views/shop/goodsSpecRel/components/search.vue create mode 100644 src/views/shop/goodsSpecRel/index.vue create mode 100644 src/views/shop/merchant/components/merchantEdit.vue create mode 100644 src/views/shop/merchant/components/search.vue create mode 100644 src/views/shop/merchant/index.vue create mode 100644 src/views/shop/merchantAccount/components/merchantAccountEdit.vue create mode 100644 src/views/shop/merchantAccount/components/search.vue create mode 100644 src/views/shop/merchantAccount/index.vue create mode 100644 src/views/shop/merchantApply/components/merchantApplyEdit.vue create mode 100644 src/views/shop/merchantApply/components/search.vue create mode 100644 src/views/shop/merchantApply/index.vue create mode 100644 src/views/shop/merchantType/components/merchantTypeEdit.vue create mode 100644 src/views/shop/merchantType/components/search.vue create mode 100644 src/views/shop/merchantType/index.vue create mode 100644 src/views/shop/order/components/orderEdit.vue create mode 100644 src/views/shop/order/components/search.vue create mode 100644 src/views/shop/order/index.vue create mode 100644 src/views/shop/spec/components/search.vue create mode 100644 src/views/shop/spec/components/specEdit.vue create mode 100644 src/views/shop/spec/index.vue create mode 100644 src/views/shop/specValue/components/search.vue create mode 100644 src/views/shop/specValue/components/specValueEdit.vue create mode 100644 src/views/shop/specValue/index.vue create mode 100644 src/views/shop/user/components/org-select.vue create mode 100644 src/views/shop/user/components/role-select.vue create mode 100644 src/views/shop/user/components/sex-select.vue create mode 100644 src/views/shop/user/components/user-edit.vue create mode 100644 src/views/shop/user/components/user-import.vue create mode 100644 src/views/shop/user/components/user-info.vue create mode 100644 src/views/shop/user/components/user-search.vue create mode 100644 src/views/shop/user/details/index.vue create mode 100644 src/views/shop/user/index.vue create mode 100644 src/views/system/access-key/components/accesskey-edit.vue create mode 100644 src/views/system/access-key/index.vue create mode 100644 src/views/system/appstore/components/buy.vue create mode 100644 src/views/system/appstore/components/dict/progress-select.vue create mode 100644 src/views/system/appstore/components/dict/source-select.vue create mode 100644 src/views/system/appstore/components/dict/status-select.vue create mode 100644 src/views/system/appstore/components/dict/type-select.vue create mode 100644 src/views/system/appstore/components/dict/user-select.vue create mode 100644 src/views/system/appstore/components/edit.vue create mode 100644 src/views/system/appstore/components/search.vue create mode 100644 src/views/system/appstore/components/setting.vue create mode 100644 src/views/system/appstore/components/setting/authority-edit.vue create mode 100644 src/views/system/appstore/components/setting/authority.vue create mode 100644 src/views/system/appstore/components/setting/basic.vue create mode 100644 src/views/system/appstore/components/setting/content.vue create mode 100644 src/views/system/appstore/components/setting/menu-edit.vue create mode 100644 src/views/system/appstore/components/setting/menu.vue create mode 100644 src/views/system/appstore/components/setting/setting.vue create mode 100644 src/views/system/appstore/components/step/components/step-confirm.vue create mode 100644 src/views/system/appstore/components/step/components/step-edit.vue create mode 100644 src/views/system/appstore/components/step/components/step-success.vue create mode 100644 src/views/system/appstore/components/step/index.vue create mode 100644 src/views/system/appstore/components/step/model/index.ts create mode 100644 src/views/system/appstore/index.vue create mode 100644 src/views/system/appstore/list.vue create mode 100644 src/views/system/appstore/menu-icons.ts create mode 100644 src/views/system/cache/components/cache-edit.vue create mode 100644 src/views/system/cache/components/send-sms.vue create mode 100644 src/views/system/cache/index.vue create mode 100644 src/views/system/dashboard/components/activities-card.vue create mode 100644 src/views/system/dashboard/components/app-list.vue create mode 100644 src/views/system/dashboard/components/article-list.vue create mode 100644 src/views/system/dashboard/components/count-user.vue create mode 100644 src/views/system/dashboard/components/docs.vue create mode 100644 src/views/system/dashboard/components/goal-card.vue create mode 100644 src/views/system/dashboard/components/link-card.vue create mode 100644 src/views/system/dashboard/components/link-icons.ts create mode 100644 src/views/system/dashboard/components/link-list.vue create mode 100644 src/views/system/dashboard/components/more-icon.vue create mode 100644 src/views/system/dashboard/components/profile-card.vue create mode 100644 src/views/system/dashboard/components/qrcode.vue create mode 100644 src/views/system/dashboard/components/task-card.vue create mode 100644 src/views/system/dashboard/components/user-list.vue create mode 100644 src/views/system/dashboard/index.vue create mode 100644 src/views/system/demo/index.vue create mode 100644 src/views/system/dict/components/dict-data-edit.vue create mode 100644 src/views/system/dict/components/dict-data-search.vue create mode 100644 src/views/system/dict/components/dict-data.vue create mode 100644 src/views/system/dict/components/dict-edit.vue create mode 100644 src/views/system/dict/index.vue create mode 100644 src/views/system/dict/list.vue create mode 100644 src/views/system/dictionary/components/dict-data-edit.vue create mode 100644 src/views/system/dictionary/components/dict-data-search.vue create mode 100644 src/views/system/dictionary/components/dict-data.vue create mode 100644 src/views/system/dictionary/components/dict-edit.vue create mode 100644 src/views/system/dictionary/index.vue create mode 100644 src/views/system/dictionary/list.vue create mode 100644 src/views/system/exception/403/index.vue create mode 100644 src/views/system/exception/404/index.vue create mode 100644 src/views/system/exception/500/index.vue create mode 100644 src/views/system/file/components/file-search.vue create mode 100644 src/views/system/file/index.vue create mode 100644 src/views/system/grade/components/grade-edit.vue create mode 100644 src/views/system/grade/components/search.vue create mode 100644 src/views/system/grade/index.vue create mode 100644 src/views/system/login-record/components/login-record-search.vue create mode 100644 src/views/system/login-record/index.vue create mode 100644 src/views/system/menu/components/clone.vue create mode 100644 src/views/system/menu/components/menu-edit.vue create mode 100644 src/views/system/menu/components/menu-plug.vue create mode 100644 src/views/system/menu/components/menu-search.vue create mode 100644 src/views/system/menu/index.vue create mode 100644 src/views/system/modules/components/modules-edit.vue create mode 100644 src/views/system/modules/components/modules-search.vue create mode 100644 src/views/system/modules/index.vue create mode 100644 src/views/system/operation-record/components/operation-record-detail.vue create mode 100644 src/views/system/operation-record/components/operation-record-search.vue create mode 100644 src/views/system/operation-record/components/text-ellipsis.vue create mode 100644 src/views/system/operation-record/index.vue create mode 100644 src/views/system/organization/components/org-edit.vue create mode 100644 src/views/system/organization/components/org-select.vue create mode 100644 src/views/system/organization/components/org-type-select.vue create mode 100644 src/views/system/organization/components/org-user-edit.vue create mode 100644 src/views/system/organization/components/org-user-list.vue create mode 100644 src/views/system/organization/components/org-user-search.vue create mode 100644 src/views/system/organization/components/role-select.vue create mode 100644 src/views/system/organization/components/sex-select.vue create mode 100644 src/views/system/organization/index.vue create mode 100644 src/views/system/plug/components/menu-edit.vue create mode 100644 src/views/system/plug/components/menu-search.vue create mode 100644 src/views/system/plug/components/plug-edit.vue create mode 100644 src/views/system/plug/components/plug-search.vue create mode 100644 src/views/system/plug/components/plug.vue create mode 100644 src/views/system/plug/components/tenant.vue create mode 100644 src/views/system/plug/create/components/clone.vue create mode 100644 src/views/system/plug/create/components/plug-edit.vue create mode 100644 src/views/system/plug/create/components/plug-search.vue create mode 100644 src/views/system/plug/create/index.vue create mode 100644 src/views/system/plug/detail/index.vue create mode 100644 src/views/system/plug/index.vue create mode 100644 src/views/system/plug/list/index.vue create mode 100644 src/views/system/plug/search/index.vue create mode 100644 src/views/system/profile/components/field.vue create mode 100644 src/views/system/profile/components/sex-select.vue create mode 100644 src/views/system/profile/index.vue create mode 100644 src/views/system/role/components/role-auth.vue create mode 100644 src/views/system/role/components/role-edit.vue create mode 100644 src/views/system/role/components/role-search.vue create mode 100644 src/views/system/role/index.vue create mode 100644 src/views/system/setting/components/basic.vue create mode 100644 src/views/system/setting/components/clear.vue create mode 100644 src/views/system/setting/components/developer.vue create mode 100644 src/views/system/setting/components/mp-weixin.vue create mode 100644 src/views/system/setting/components/payment.vue create mode 100644 src/views/system/setting/components/printer.vue create mode 100644 src/views/system/setting/components/register.vue create mode 100644 src/views/system/setting/components/role-select.vue create mode 100644 src/views/system/setting/components/sms.vue create mode 100644 src/views/system/setting/components/upload.vue create mode 100644 src/views/system/setting/components/wx-official.vue create mode 100644 src/views/system/setting/components/wx-work.vue create mode 100644 src/views/system/setting/index.vue create mode 100644 src/views/system/user-group/components/category-select.vue create mode 100644 src/views/system/user-group/components/group-edit.vue create mode 100644 src/views/system/user-group/components/search.vue create mode 100644 src/views/system/user-group/index.vue create mode 100644 src/views/system/user-info/index.vue create mode 100644 src/views/system/user/components/org-select.vue create mode 100644 src/views/system/user/components/role-select.vue create mode 100644 src/views/system/user/components/sex-select.vue create mode 100644 src/views/system/user/components/user-edit.vue create mode 100644 src/views/system/user/components/user-import.vue create mode 100644 src/views/system/user/components/user-info.vue create mode 100644 src/views/system/user/components/user-search.vue create mode 100644 src/views/system/user/details/index.vue create mode 100644 src/views/system/user/index.vue create mode 100644 src/views/system/version/components/version-edit.vue create mode 100644 src/views/system/version/index.vue create mode 100644 src/views/system/white-domain/components/search.vue create mode 100644 src/views/system/white-domain/components/white-domain-edit.vue create mode 100644 src/views/system/white-domain/index.vue create mode 100644 src/views/user/balance-log/index.vue create mode 100644 src/views/user/batch-recharge/components/org-user-list.vue create mode 100644 src/views/user/batch-recharge/components/org-user-search.vue create mode 100644 src/views/user/batch-recharge/components/recharge.vue create mode 100644 src/views/user/batch-recharge/index.vue create mode 100644 src/views/user/company/components/role-select.vue create mode 100644 src/views/user/company/components/sex-select.vue create mode 100644 src/views/user/company/components/user-edit.vue create mode 100644 src/views/user/company/components/user-import.vue create mode 100644 src/views/user/company/components/user-info.vue create mode 100644 src/views/user/company/components/user-search.vue create mode 100644 src/views/user/company/details/index.vue create mode 100644 src/views/user/company/index.vue create mode 100644 src/views/user/grade/components/grade-edit.vue create mode 100644 src/views/user/grade/components/search.vue create mode 100644 src/views/user/grade/index.vue create mode 100644 src/views/user/index/components/org-select.vue create mode 100644 src/views/user/index/components/role-select.vue create mode 100644 src/views/user/index/components/sex-select.vue create mode 100644 src/views/user/index/components/user-edit.vue create mode 100644 src/views/user/index/components/user-import.vue create mode 100644 src/views/user/index/components/user-info.vue create mode 100644 src/views/user/index/components/user-search.vue create mode 100644 src/views/user/index/details/index.vue create mode 100644 src/views/user/index/index.vue create mode 100644 src/views/user/profile/components/sex-select.vue create mode 100644 src/views/user/profile/index.vue create mode 100644 src/views/user/recharge/components/recharge.vue create mode 100644 src/views/user/recharge/details/index.vue create mode 100644 src/views/user/recharge/index.vue create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env b/.env new file mode 100644 index 0000000..6dc5b52 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +VITE_APP_NAME=webSoft +VITE_API_URL=/api diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..914ba38 --- /dev/null +++ b/.env.development @@ -0,0 +1,10 @@ +VITE_APP_NAME=后台管理系统 +VITE_SOCKET_URL=wss://server.gxwebsoft.com +VITE_SERVER_URL=https://server.gxwebsoft.com/api +#VITE_API_URL=https://modules.gxwebsoft.com/api + +VITE_API_URL=http://127.0.0.1:9099/api +#VITE_SERVER_URL=http://127.0.0.1:9091/api +#VITE_SOCKET_URL=ws://localhost:9191 +#VITE_API_URL=https://server.gxwebsoft.com/api +#VITE_API_URL=http://103.233.255.195:9300/api diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..c853e9e --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +VITE_APP_NAME=后台管理系统 +VITE_SOCKET_URL=wss://server.gxwebsoft.com +VITE_SERVER_URL=https://server.gxwebsoft.com/api +VITE_API_URL=https://modules.gxwebsoft.com/api + +#VITE_API_URL=http://103.233.255.195:9300/api diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..46b1426 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +public +src/assets +dist +node_modules diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..3f64efc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,78 @@ +// @ts-check +const { defineConfig } = require('eslint-define-config'); + +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true + }, + parser: 'vue-eslint-parser', + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended' + ], + parserOptions: { + parser: '@typescript-eslint/parser', + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + rules: { + 'vue/script-setup-uses-vars': 'error', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_' + } + ], + 'no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_' + } + ], + 'space-before-function-paren': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/require-default-prop': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/v-on-event-hyphenation': 'off', + 'vue/multi-word-component-names': 'off' + } +}); diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..acea6cc --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist +/dist-ssr + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.pnpm-debug.log +.eslintcache + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f7e39e6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +/dist/* +.local +.output.js +/node_modules/** + +**/*.svg +**/*.sh + +/public/* diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..6429be2 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,2 @@ +import 'ant-design-vue/typings/global'; +import 'ele-admin-pro/typings/global'; diff --git a/index.html b/index.html new file mode 100644 index 0000000..9a94342 --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + + + + + 网宿软件 + + + +
+
+ + + + +
+
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..cacc47b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12001 @@ +{ + "name": "ele-admin-pro-template", + "version": "1.10.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ele-admin-pro-template", + "version": "1.10.1", + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@bytemd/plugin-gfm": "^1.17.2", + "@bytemd/plugin-highlight": "^1.17.4", + "@bytemd/plugin-highlight-ssr": "^1.20.2", + "@wecom/jssdk": "^1.3.1", + "ali-oss": "^6.18.0", + "ant-design-vue": "^3.2.11", + "axios": "^0.27.2", + "bytemd": "^1.17.2", + "countup.js": "^2.3.2", + "cropperjs": "^1.5.12", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.5", + "echarts": "^5.3.3", + "echarts-wordcloud": "^2.0.0", + "ele-admin-pro": "^1.10.1", + "exceljs": "^4.3.0", + "github-markdown-css": "^5.1.0", + "js-cookie": "^3.0.5", + "js-md5": "^0.7.3", + "jsbarcode": "^3.11.5", + "lodash-es": "^4.17.21", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.0.21", + "socket.io-client": "^4.7.1", + "sortablejs": "^1.15.0", + "tinymce": "^5.10.5", + "vue": "3.2.38", + "vue-echarts": "^6.2.3", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.5", + "vuedraggable": "^4.1.0", + "xgplayer": "^2.31.7", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/lodash-es": "^4.17.6", + "@types/node": "^18.7.14", + "@types/nprogress": "^0.2.0", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", + "@vitejs/plugin-legacy": "^2.0.1", + "@vitejs/plugin-vue": "^3.0.3", + "@vue/compiler-sfc": "^3.2.38", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-define-config": "^1.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.4.0", + "less": "^4.1.3", + "postcss": "^8.4.16", + "prettier": "^2.7.1", + "rimraf": "^3.0.2", + "terser": "^5.15.0", + "typescript": "^4.8.2", + "unplugin-vue-components": "^0.22.4", + "vite": "^3.0.9", + "vite-plugin-compression": "^0.5.1", + "vue-eslint-parser": "^9.0.3", + "vue-tsc": "^0.40.5" + } + }, + "node_modules/@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "node_modules/@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "node_modules/@ant-design/icons-vue": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz", + "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==", + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-svg": "^4.2.1" + }, + "peerDependencies": { + "vue": ">=3.0.3" + } + }, + "node_modules/@antfu/utils": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz", + "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==", + "dev": true + }, + "node_modules/@babel/parser": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz", + "integrity": "sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bytemd/plugin-gfm": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-gfm/-/plugin-gfm-1.17.2.tgz", + "integrity": "sha512-u3DBMdPTcRMIRvzc582ylZhvrFumnoGjWNnUO3aXQH0mJ98XyGXxdWYAh7jow+XevhApp966ks5bvDAbYjzRTQ==", + "dependencies": { + "@icon-park/svg": "^1.4.2", + "remark-gfm": "^3.0.1" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@bytemd/plugin-highlight": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight/-/plugin-highlight-1.20.2.tgz", + "integrity": "sha512-OBm0SkH4ecKyRC+h7CPUQhbp9dDus/WIpTlialhZ3ueKk/PRwRcstiuzQNXwYDBjgUQPBapmCukITN7oFliZBg==", + "dependencies": { + "highlight.js": "^11.7.0" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@bytemd/plugin-highlight-ssr": { + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.21.0.tgz", + "integrity": "sha512-iUf94WgFRH4o6eUJ00Y7lIUUkPWu+uk422n5uMXmhTOmg60YlS9EpiEMjOL81Xe5xjSFwDnxZJTHzHq8eW4gkQ==", + "dependencies": { + "rehype-highlight": "^6.0.0" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@icon-park/svg": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@icon-park/svg/-/svg-1.4.2.tgz", + "integrity": "sha512-1X0DA+1e0R0liYvw+Nb2BQmF1oEo/wS3o/JYkQYifPJXCGYij2vN9sJf/NNhbzDsJWTg4W2bbzZjJvC7Q4w4oQ==", + "engines": { + "node": ">= 8.0.0", + "npm": ">= 5.0.0" + } + }, + "node_modules/@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "dependencies": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "dependencies": { + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "dependencies": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@simonwep/pickr": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz", + "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==", + "dependencies": { + "core-js": "^3.15.1", + "nanopop": "^2.1.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "node_modules/@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.184", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz", + "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "18.7.14", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", + "dev": true + }, + "node_modules/@types/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + }, + "node_modules/@types/sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==", + "dev": true + }, + "node_modules/@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmmirror.com/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz", + "integrity": "sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/type-utils": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz", + "integrity": "sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz", + "integrity": "sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@vitejs/plugin-legacy": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz", + "integrity": "sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q==", + "dev": true, + "dependencies": { + "@babel/standalone": "^7.18.12", + "core-js": "^3.24.1", + "magic-string": "^0.26.2", + "regenerator-runtime": "^0.13.9", + "systemjs": "^6.12.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "terser": "^5.4.0", + "vite": "^3.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz", + "integrity": "sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/code-gen": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz", + "integrity": "sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w==", + "dev": true, + "dependencies": { + "@volar/source-map": "0.40.5" + } + }, + "node_modules/@volar/source-map": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz", + "integrity": "sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.37" + } + }, + "node_modules/@volar/source-map/node_modules/@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.37" + } + }, + "node_modules/@volar/source-map/node_modules/@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", + "dev": true + }, + "node_modules/@volar/typescript-faster": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/typescript-faster/-/typescript-faster-0.40.5.tgz", + "integrity": "sha512-DfIVkQawbesz+8ghbYS1NnlIQjfMIDsSJY/bumIJk98M/tM/2Fykhiil3GDfTr6ju/fAqDpfF8VF8XpYDWPc7w==", + "dev": true, + "dependencies": { + "semver": "^7.3.7" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-0.40.5.tgz", + "integrity": "sha512-4EpMQdLaORWg3EBZtgqzgkNRm1+qvyvCyLbnWHT2SPkUuHObPcbyA3giXbOEnPB0pnQpr2nVTv+tRLWvksXdyA==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.40.5", + "@volar/source-map": "0.40.5", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.40.5.tgz", + "integrity": "sha512-6OHJ87e8A3Z0xuWmBg72X5aYbW/EatogB168827j/OL371eiy3dExqa5y2+eJuWYjDiRJOmlHzhUElN+OEQRZQ==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.40.5", + "@volar/typescript-faster": "0.40.5", + "@volar/vue-language-core": "0.40.5" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.38.tgz", + "integrity": "sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.38.tgz", + "integrity": "sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==", + "dependencies": { + "@vue/compiler-core": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.38.tgz", + "integrity": "sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.38", + "@vue/compiler-dom": "3.2.38", + "@vue/compiler-ssr": "3.2.38", + "@vue/reactivity-transform": "3.2.38", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.38.tgz", + "integrity": "sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==", + "dependencies": { + "@vue/compiler-dom": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "node_modules/@vue/reactivity": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.38.tgz", + "integrity": "sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==", + "dependencies": { + "@vue/shared": "3.2.38" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.38.tgz", + "integrity": "sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==", + "dependencies": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.38", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.38.tgz", + "integrity": "sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==", + "dependencies": { + "@vue/reactivity": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.38.tgz", + "integrity": "sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==", + "dependencies": { + "@vue/runtime-core": "3.2.38", + "@vue/shared": "3.2.38", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.38.tgz", + "integrity": "sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==", + "dependencies": { + "@vue/compiler-ssr": "3.2.38", + "@vue/shared": "3.2.38" + }, + "peerDependencies": { + "vue": "3.2.38" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.38.tgz", + "integrity": "sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==" + }, + "node_modules/@wecom/jssdk": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz", + "integrity": "sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg==" + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "node_modules/ali-oss": { + "version": "6.18.1", + "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz", + "integrity": "sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA==", + "dependencies": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "2.41.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ali-oss/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ant-design-vue": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz", + "integrity": "sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ==", + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", + "@simonwep/pickr": "~1.8.0", + "array-tree-filter": "^2.1.0", + "async-validator": "^4.0.0", + "dayjs": "^1.10.5", + "dom-align": "^1.12.1", + "dom-scroll-into-view": "^2.0.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.15", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.25", + "shallow-equal": "^1.0.0", + "vue-types": "^3.0.0", + "warning": "^4.0.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "vue": ">=3.2.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/bytemd": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz", + "integrity": "sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ==", + "dependencies": { + "@icon-park/svg": "^1.4.2", + "@popperjs/core": "^2.11.5", + "@types/codemirror": "^5.60.5", + "@types/hast": "^2.3.4", + "@types/lodash-es": "^4.17.6", + "@types/mdast": "^3.0.10", + "codemirror-ssr": "^0.65.0", + "hast-util-sanitize": "^4.0.0", + "lodash-es": "^4.17.21", + "rehype-raw": "^6.1.1", + "rehype-sanitize": "^5.0.1", + "rehype-stringify": "^9.0.3", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "select-files": "^1.0.1", + "tippy.js": "^6.3.7", + "unified": "^10.1.2", + "unist-util-visit": "^4.1.0", + "vfile": "^5.3.4", + "word-count": "^0.2.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/codemirror-ssr": { + "version": "0.65.0", + "resolved": "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz", + "integrity": "sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g==", + "peerDependencies": { + "@types/codemirror": "^5.0.0" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "node_modules/core-js": { + "version": "3.25.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==", + "hasInstallScript": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/countup.js": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/countup.js/-/countup.js-2.3.2.tgz", + "integrity": "sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q==" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/danmu.js": { + "version": "0.5.10", + "resolved": "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz", + "integrity": "sha512-zLpSd5Yi+fxVVd0GHjrf5lZA45KKpbvc4Q8BbSVO3OdmCBkoB2vlDCGnVn18cnKpTNqi8Soy7AnzUw1YcqtzUA==", + "dependencies": { + "event-emitter": "^0.3.5" + } + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.11.5", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "dependencies": { + "os-name": "~1.0.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + }, + "node_modules/dom-scroll-into-view": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz", + "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==" + }, + "node_modules/downloadjs": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==" + }, + "node_modules/draggabilly": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/draggabilly/-/draggabilly-2.4.1.tgz", + "integrity": "sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==", + "dependencies": { + "get-size": "^2.0.2", + "unidragger": "^2.4.0" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "node_modules/echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz", + "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==", + "peerDependencies": { + "echarts": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ele-admin-pro": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/ele-admin-pro/-/ele-admin-pro-1.10.1.tgz", + "integrity": "sha512-EiNJcfGGA/4F20cuHlz7bxr2UJ1RdQGM3+MA7dsiNOp7DxLpP3dOo8wgg+MKyMUZUM2dcpp+Dmz94Q5VDpr44Q==", + "peerDependencies": { + "ant-design-vue": ">=3.1.0", + "vue": ">=3.1.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==", + "engines": { + "node": ">= 0.11.14" + } + }, + "node_modules/engine.io-client": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.1.tgz", + "integrity": "sha512-hE5wKXH8Ru4L19MbM1GgYV/2Qo54JSMh1rlJbfpa40bEWkCKNo3ol2eOtGmowcr+ysgbI7+SGL+by42Q3pt/Ng==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-define-config": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz", + "integrity": "sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g==", + "dev": true, + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.0.0", + "pnpm": ">= 7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz", + "integrity": "sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/exceljs": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz", + "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dependencies": { + "format": "^0.2.0" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/formstream": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz", + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + "dependencies": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "pause-stream": "~0.0.11" + } + }, + "node_modules/formstream/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/generate-source-map": { + "version": "0.0.5", + "resolved": "https://registry.npmmirror.com/generate-source-map/-/generate-source-map-0.0.5.tgz", + "integrity": "sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg==", + "dependencies": { + "esprima": "~1.2.2", + "source-map": "~0.1.34" + } + }, + "node_modules/generate-source-map/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "node_modules/get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==" + }, + "node_modules/get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" + }, + "node_modules/github-markdown-css": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz", + "integrity": "sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", + "dependencies": { + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, + "node_modules/hast-util-is-element": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "dependencies": { + "@types/hast": "^2.0.0" + } + }, + "node_modules/hast-util-raw": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/hast-util-sanitize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", + "dependencies": { + "@types/hast": "^2.0.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "dependencies": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/hast-util-to-text": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz", + "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unist-util-find-after": "^4.0.0" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" + }, + "node_modules/hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, + "node_modules/highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "dependencies": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbarcode": { + "version": "3.11.5", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz", + "integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA==", + "bin": { + "auto.js": "bin/barcodes/CODE128/auto.js", + "Barcode.js": "bin/barcodes/Barcode.js", + "barcodes": "bin/barcodes", + "canvas.js": "bin/renderers/canvas.js", + "checksums.js": "bin/barcodes/MSI/checksums.js", + "codabar": "bin/barcodes/codabar", + "CODE128": "bin/barcodes/CODE128", + "CODE128_AUTO.js": "bin/barcodes/CODE128/CODE128_AUTO.js", + "CODE128.js": "bin/barcodes/CODE128/CODE128.js", + "CODE128A.js": "bin/barcodes/CODE128/CODE128A.js", + "CODE128B.js": "bin/barcodes/CODE128/CODE128B.js", + "CODE128C.js": "bin/barcodes/CODE128/CODE128C.js", + "CODE39": "bin/barcodes/CODE39", + "constants.js": "bin/barcodes/ITF/constants.js", + "defaults.js": "bin/options/defaults.js", + "EAN_UPC": "bin/barcodes/EAN_UPC", + "EAN.js": "bin/barcodes/EAN_UPC/EAN.js", + "EAN13.js": "bin/barcodes/EAN_UPC/EAN13.js", + "EAN2.js": "bin/barcodes/EAN_UPC/EAN2.js", + "EAN5.js": "bin/barcodes/EAN_UPC/EAN5.js", + "EAN8.js": "bin/barcodes/EAN_UPC/EAN8.js", + "encoder.js": "bin/barcodes/EAN_UPC/encoder.js", + "ErrorHandler.js": "bin/exceptions/ErrorHandler.js", + "exceptions": "bin/exceptions", + "exceptions.js": "bin/exceptions/exceptions.js", + "fixOptions.js": "bin/help/fixOptions.js", + "GenericBarcode": "bin/barcodes/GenericBarcode", + "getOptionsFromElement.js": "bin/help/getOptionsFromElement.js", + "getRenderProperties.js": "bin/help/getRenderProperties.js", + "help": "bin/help", + "index.js": "bin/renderers/index.js", + "index.tmp.js": "bin/barcodes/index.tmp.js", + "ITF": "bin/barcodes/ITF", + "ITF.js": "bin/barcodes/ITF/ITF.js", + "ITF14.js": "bin/barcodes/ITF/ITF14.js", + "JsBarcode.js": "bin/JsBarcode.js", + "linearizeEncodings.js": "bin/help/linearizeEncodings.js", + "merge.js": "bin/help/merge.js", + "MSI": "bin/barcodes/MSI", + "MSI.js": "bin/barcodes/MSI/MSI.js", + "MSI10.js": "bin/barcodes/MSI/MSI10.js", + "MSI1010.js": "bin/barcodes/MSI/MSI1010.js", + "MSI11.js": "bin/barcodes/MSI/MSI11.js", + "MSI1110.js": "bin/barcodes/MSI/MSI1110.js", + "object.js": "bin/renderers/object.js", + "options": "bin/options", + "optionsFromStrings.js": "bin/help/optionsFromStrings.js", + "pharmacode": "bin/barcodes/pharmacode", + "renderers": "bin/renderers", + "shared.js": "bin/renderers/shared.js", + "svg.js": "bin/renderers/svg.js", + "UPC.js": "bin/barcodes/EAN_UPC/UPC.js", + "UPCE.js": "bin/barcodes/EAN_UPC/UPCE.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==" + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowlight": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/lowlight/-/lowlight-2.9.0.tgz", + "integrity": "sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==", + "dependencies": { + "@types/hast": "^2.0.0", + "fault": "^2.0.0", + "highlight.js": "~11.8.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/mdast-util-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", + "dependencies": { + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.1.tgz", + "integrity": "sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", + "mdurl": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanopop": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz", + "integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/needle": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "dependencies": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "dependencies": { + "minimist": "^1.1.0" + }, + "bin": { + "osx-release": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinia": { + "version": "2.0.21", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.21.tgz", + "integrity": "sha512-6ol04PtL29O0Z6JHI47O3JUSoyOJ7Og0rstXrHVMZSP4zAldsQBXJCNF0i/H7m8vp/Hjd/CSmuPl7C5QAwpeWQ==", + "dependencies": { + "@vue/devtools-api": "^6.2.1", + "vue-demi": "*" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rehype-highlight": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz", + "integrity": "sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-text": "^3.0.0", + "lowlight": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + } + }, + "node_modules/rehype-sanitize": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz", + "integrity": "sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-sanitize": "^4.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + } + }, + "node_modules/resize-detector": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz", + "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "dependencies": { + "compute-scroll-into-view": "^1.0.17" + } + }, + "node_modules/sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "dependencies": { + "get-ready": "~1.0.0" + } + }, + "node_modules/select-files": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz", + "integrity": "sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ==" + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/socket.io-client": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz", + "integrity": "sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/systemjs": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz", + "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==", + "dev": true + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tinymce": { + "version": "5.10.5", + "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.5.tgz", + "integrity": "sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w==" + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmmirror.com/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "dependencies": { + "extend-shallow": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unidragger": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unidragger/-/unidragger-2.4.0.tgz", + "integrity": "sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==", + "dependencies": { + "unipointer": "^2.4.0" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "node_modules/unipointer": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unipointer/-/unipointer-2.4.0.tgz", + "integrity": "sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==", + "dependencies": { + "ev-emitter": "^1.0.1" + } + }, + "node_modules/unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz", + "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "node_modules/unist-util-position": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + }, + "peerDependencies": { + "esbuild": ">=0.13", + "rollup": "^2.50.0", + "vite": "^2.3.0 || ^3.0.0-0", + "webpack": "4 || 5" + }, + "peerDependenciesMeta": { + "esbuild": { + "optional": true + }, + "rollup": { + "optional": true + }, + "vite": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.22.4", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz", + "integrity": "sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.5.2", + "@rollup/pluginutils": "^4.2.1", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.11", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.2", + "minimatch": "^5.1.0", + "resolve": "^1.22.1", + "unplugin": "^0.9.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unplugin-vue-components/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urllib": { + "version": "2.41.0", + "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz", + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + "dependencies": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "debug": "^2.6.9", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.15", + "ip": "^1.1.5", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "proxy-agent": "^5.0.0" + }, + "peerDependenciesMeta": { + "proxy-agent": { + "optional": true + } + } + }, + "node_modules/urllib/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/urllib/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urllib/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utility": { + "version": "1.18.0", + "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "dependencies": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vfile": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "node_modules/vfile-message": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.2.tgz", + "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.47", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vue": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.38.tgz", + "integrity": "sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==", + "dependencies": { + "@vue/compiler-dom": "3.2.38", + "@vue/compiler-sfc": "3.2.38", + "@vue/runtime-dom": "3.2.38", + "@vue/server-renderer": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "node_modules/vue-echarts": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz", + "integrity": "sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w==", + "hasInstallScript": true, + "dependencies": { + "resize-detector": "^0.3.0", + "vue-demi": "^0.13.2" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.5", + "echarts": "^5.1.2", + "vue": "^2.6.12 || ^3.1.1" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-echarts/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.5.tgz", + "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", + "dependencies": { + "@vue/devtools-api": "^6.1.4" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz", + "integrity": "sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "0.40.5", + "@volar/vue-typescript": "0.40.5" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-types": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz", + "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==", + "dependencies": { + "is-plain-object": "3.0.1" + }, + "engines": { + "node": ">=10.15.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", + "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "dependencies": { + "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/win-release/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-count": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/word-count/-/word-count-0.2.2.tgz", + "integrity": "sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA==" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xgplayer": { + "version": "2.31.7", + "resolved": "https://registry.npmmirror.com/xgplayer/-/xgplayer-2.31.7.tgz", + "integrity": "sha512-Wksoj/+BQgsDD7hVsd0d8jICHWWL7SGV6c6V01kH3LfLS6JgwVKyNnr4rRHZFFztlr/kOgBnqPqlV3Fiefmviw==", + "dependencies": { + "chalk": "^2.3.2", + "commander": "^2.15.1", + "danmu.js": "^0.5.9", + "downloadjs": "1.4.7", + "draggabilly": "^2.2.0", + "event-emitter": "^0.3.5", + "fs-extra": "^5.0.0", + "xgplayer-subtitles": "^1.0.19" + }, + "bin": { + "xgplayer": "bin/xgplayer.js" + } + }, + "node_modules/xgplayer-subtitles": { + "version": "1.0.22", + "resolved": "https://registry.npmmirror.com/xgplayer-subtitles/-/xgplayer-subtitles-1.0.22.tgz", + "integrity": "sha512-+m1fo+FFynL+2ymO4UQBUSnJAz3WuIthpJFCrKBjd+ukcLRoy3vTcsylXEOo5AZN1xT28fpHmxvZQKEIEYA+6w==", + "dependencies": { + "eventemitter3": "^4.0.7", + "generate-source-map": "0.0.5" + } + }, + "node_modules/xgplayer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/xgplayer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/xgplayer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/xgplayer/node_modules/fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/xgplayer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/xgplayer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" + } + }, + "dependencies": { + "@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "requires": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "@ant-design/icons-vue": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz", + "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-svg": "^4.2.1" + } + }, + "@antfu/utils": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz", + "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==", + "dev": true + }, + "@babel/parser": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.13.tgz", + "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==" + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/standalone": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz", + "integrity": "sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g==", + "dev": true + }, + "@bytemd/plugin-gfm": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-gfm/-/plugin-gfm-1.17.2.tgz", + "integrity": "sha512-u3DBMdPTcRMIRvzc582ylZhvrFumnoGjWNnUO3aXQH0mJ98XyGXxdWYAh7jow+XevhApp966ks5bvDAbYjzRTQ==", + "requires": { + "@icon-park/svg": "^1.4.2", + "remark-gfm": "^3.0.1" + } + }, + "@bytemd/plugin-highlight": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight/-/plugin-highlight-1.20.2.tgz", + "integrity": "sha512-OBm0SkH4ecKyRC+h7CPUQhbp9dDus/WIpTlialhZ3ueKk/PRwRcstiuzQNXwYDBjgUQPBapmCukITN7oFliZBg==", + "requires": { + "highlight.js": "^11.7.0" + } + }, + "@bytemd/plugin-highlight-ssr": { + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.21.0.tgz", + "integrity": "sha512-iUf94WgFRH4o6eUJ00Y7lIUUkPWu+uk422n5uMXmhTOmg60YlS9EpiEMjOL81Xe5xjSFwDnxZJTHzHq8eW4gkQ==", + "requires": { + "rehype-highlight": "^6.0.0" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + } + } + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@icon-park/svg": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@icon-park/svg/-/svg-1.4.2.tgz", + "integrity": "sha512-1X0DA+1e0R0liYvw+Nb2BQmF1oEo/wS3o/JYkQYifPJXCGYij2vN9sJf/NNhbzDsJWTg4W2bbzZjJvC7Q4w4oQ==" + }, + "@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "requires": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + } + }, + "@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "requires": { + "@intlify/shared": "9.2.2" + } + }, + "@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "requires": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + } + }, + "@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" + }, + "@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@simonwep/pickr": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz", + "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==", + "requires": { + "core-js": "^3.15.1", + "nanopop": "^2.1.0" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "requires": { + "@types/tern": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "requires": { + "@types/unist": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/lodash": { + "version": "4.14.184", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz", + "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "requires": { + "@types/unist": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "@types/node": { + "version": "18.7.14", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", + "dev": true + }, + "@types/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + }, + "@types/sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==", + "dev": true + }, + "@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmmirror.com/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "requires": { + "@types/estree": "*" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz", + "integrity": "sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/type-utils": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz", + "integrity": "sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz", + "integrity": "sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vitejs/plugin-legacy": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz", + "integrity": "sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q==", + "dev": true, + "requires": { + "@babel/standalone": "^7.18.12", + "core-js": "^3.24.1", + "magic-string": "^0.26.2", + "regenerator-runtime": "^0.13.9", + "systemjs": "^6.12.1" + } + }, + "@vitejs/plugin-vue": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz", + "integrity": "sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==", + "dev": true, + "requires": {} + }, + "@volar/code-gen": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz", + "integrity": "sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w==", + "dev": true, + "requires": { + "@volar/source-map": "0.40.5" + } + }, + "@volar/source-map": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz", + "integrity": "sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.37" + }, + "dependencies": { + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dev": true, + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", + "dev": true + } + } + }, + "@volar/typescript-faster": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/typescript-faster/-/typescript-faster-0.40.5.tgz", + "integrity": "sha512-DfIVkQawbesz+8ghbYS1NnlIQjfMIDsSJY/bumIJk98M/tM/2Fykhiil3GDfTr6ju/fAqDpfF8VF8XpYDWPc7w==", + "dev": true, + "requires": { + "semver": "^7.3.7" + } + }, + "@volar/vue-language-core": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-0.40.5.tgz", + "integrity": "sha512-4EpMQdLaORWg3EBZtgqzgkNRm1+qvyvCyLbnWHT2SPkUuHObPcbyA3giXbOEnPB0pnQpr2nVTv+tRLWvksXdyA==", + "dev": true, + "requires": { + "@volar/code-gen": "0.40.5", + "@volar/source-map": "0.40.5", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "@volar/vue-typescript": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.40.5.tgz", + "integrity": "sha512-6OHJ87e8A3Z0xuWmBg72X5aYbW/EatogB168827j/OL371eiy3dExqa5y2+eJuWYjDiRJOmlHzhUElN+OEQRZQ==", + "dev": true, + "requires": { + "@volar/code-gen": "0.40.5", + "@volar/typescript-faster": "0.40.5", + "@volar/vue-language-core": "0.40.5" + } + }, + "@vue/compiler-core": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.38.tgz", + "integrity": "sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "@vue/compiler-dom": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.38.tgz", + "integrity": "sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g==", + "requires": { + "@vue/compiler-core": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.38.tgz", + "integrity": "sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.38", + "@vue/compiler-dom": "3.2.38", + "@vue/compiler-ssr": "3.2.38", + "@vue/reactivity-transform": "3.2.38", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.38.tgz", + "integrity": "sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ==", + "requires": { + "@vue/compiler-dom": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "@vue/reactivity": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.38.tgz", + "integrity": "sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==", + "requires": { + "@vue/shared": "3.2.38" + } + }, + "@vue/reactivity-transform": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.38.tgz", + "integrity": "sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA==", + "requires": { + "@babel/parser": "^7.16.4", + "@vue/compiler-core": "3.2.38", + "@vue/shared": "3.2.38", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@vue/runtime-core": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.38.tgz", + "integrity": "sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg==", + "requires": { + "@vue/reactivity": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "@vue/runtime-dom": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.38.tgz", + "integrity": "sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A==", + "requires": { + "@vue/runtime-core": "3.2.38", + "@vue/shared": "3.2.38", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.38.tgz", + "integrity": "sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA==", + "requires": { + "@vue/compiler-ssr": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "@vue/shared": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.38.tgz", + "integrity": "sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==" + }, + "@wecom/jssdk": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz", + "integrity": "sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg==" + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ali-oss": { + "version": "6.18.1", + "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz", + "integrity": "sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA==", + "requires": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "2.41.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + } + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ant-design-vue": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz", + "integrity": "sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", + "@simonwep/pickr": "~1.8.0", + "array-tree-filter": "^2.1.0", + "async-validator": "^4.0.0", + "dayjs": "^1.10.5", + "dom-align": "^1.12.1", + "dom-scroll-into-view": "^2.0.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.15", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.25", + "shallow-equal": "^1.0.0", + "vue-types": "^3.0.0", + "warning": "^4.0.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "bytemd": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz", + "integrity": "sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ==", + "requires": { + "@icon-park/svg": "^1.4.2", + "@popperjs/core": "^2.11.5", + "@types/codemirror": "^5.60.5", + "@types/hast": "^2.3.4", + "@types/lodash-es": "^4.17.6", + "@types/mdast": "^3.0.10", + "codemirror-ssr": "^0.65.0", + "hast-util-sanitize": "^4.0.0", + "lodash-es": "^4.17.21", + "rehype-raw": "^6.1.1", + "rehype-sanitize": "^5.0.1", + "rehype-stringify": "^9.0.3", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "select-files": "^1.0.1", + "tippy.js": "^6.3.7", + "unified": "^10.1.2", + "unist-util-visit": "^4.1.0", + "vfile": "^5.3.4", + "word-count": "^0.2.2" + } + }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + }, + "character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" + }, + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "codemirror-ssr": { + "version": "0.65.0", + "resolved": "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz", + "integrity": "sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g==", + "requires": {} + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "core-js": { + "version": "3.25.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "countup.js": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/countup.js/-/countup.js-2.3.2.tgz", + "integrity": "sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q==" + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } + }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "danmu.js": { + "version": "0.5.10", + "resolved": "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz", + "integrity": "sha512-zLpSd5Yi+fxVVd0GHjrf5lZA45KKpbvc4Q8BbSVO3OdmCBkoB2vlDCGnVn18cnKpTNqi8Soy7AnzUw1YcqtzUA==", + "requires": { + "event-emitter": "^0.3.5" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==" + }, + "dayjs": { + "version": "1.11.5", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "requires": { + "character-entities": "^2.0.0" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "requires": { + "os-name": "~1.0.3" + } + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + }, + "digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + }, + "dom-scroll-into-view": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz", + "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==" + }, + "downloadjs": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==" + }, + "draggabilly": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/draggabilly/-/draggabilly-2.4.1.tgz", + "integrity": "sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==", + "requires": { + "get-size": "^2.0.2", + "unidragger": "^2.4.0" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz", + "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==", + "requires": {} + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ele-admin-pro": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/ele-admin-pro/-/ele-admin-pro-1.10.1.tgz", + "integrity": "sha512-EiNJcfGGA/4F20cuHlz7bxr2UJ1RdQGM3+MA7dsiNOp7DxLpP3dOo8wgg+MKyMUZUM2dcpp+Dmz94Q5VDpr44Q==", + "requires": {} + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==" + }, + "engine.io-client": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.1.tgz", + "integrity": "sha512-hE5wKXH8Ru4L19MbM1GgYV/2Qo54JSMh1rlJbfpa40bEWkCKNo3ol2eOtGmowcr+ysgbI7+SGL+by42Q3pt/Ng==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "engine.io-parser": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-define-config": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz", + "integrity": "sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz", + "integrity": "sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "exceljs": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz", + "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", + "requires": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "requires": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "requires": { + "format": "^0.2.0" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" + }, + "formstream": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz", + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + "requires": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "pause-stream": "~0.0.11" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + } + } + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "generate-source-map": { + "version": "0.0.5", + "resolved": "https://registry.npmmirror.com/generate-source-map/-/generate-source-map-0.0.5.tgz", + "integrity": "sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg==", + "requires": { + "esprima": "~1.2.2", + "source-map": "~0.1.34" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==" + }, + "get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" + }, + "github-markdown-css": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz", + "integrity": "sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hast-to-hyperscript": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", + "requires": { + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-is-element": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } + }, + "hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "requires": { + "@types/hast": "^2.0.0" + } + }, + "hast-util-raw": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "hast-util-sanitize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", + "requires": { + "@types/hast": "^2.0.0" + } + }, + "hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "requires": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + } + }, + "hast-util-to-parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "hast-util-to-text": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz", + "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unist-util-find-after": "^4.0.0" + } + }, + "hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" + }, + "hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, + "highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" + }, + "html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" + }, + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + }, + "is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "requires": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, + "js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbarcode": { + "version": "3.11.5", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz", + "integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==" + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowlight": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/lowlight/-/lowlight-2.9.0.tgz", + "integrity": "sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==", + "requires": { + "@types/hast": "^2.0.0", + "fault": "^2.0.0", + "highlight.js": "~11.8.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } + } + }, + "markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + }, + "mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "requires": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + } + } + }, + "mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", + "requires": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + } + }, + "mdast-util-gfm-autolink-literal": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", + "requires": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + } + }, + "mdast-util-gfm-strikethrough": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-table": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", + "requires": { + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-task-list-item": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-to-hast": { + "version": "12.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.1.tgz", + "integrity": "sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", + "mdurl": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "requires": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "requires": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" + }, + "micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" + }, + "micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" + }, + "micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + }, + "nanopop": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz", + "integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "needle": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "requires": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + } + }, + "osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "requires": { + "minimist": "^1.1.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "requires": { + "through": "~2.3" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "pinia": { + "version": "2.0.21", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.21.tgz", + "integrity": "sha512-6ol04PtL29O0Z6JHI47O3JUSoyOJ7Og0rstXrHVMZSP4zAldsQBXJCNF0i/H7m8vp/Hjd/CSmuPl7C5QAwpeWQ==", + "requires": { + "@vue/devtools-api": "^6.2.1", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "rehype-highlight": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz", + "integrity": "sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-to-text": "^3.0.0", + "lowlight": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + } + }, + "rehype-sanitize": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz", + "integrity": "sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-sanitize": "^4.0.0", + "unified": "^10.0.0" + } + }, + "rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + } + }, + "remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + } + }, + "remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + } + }, + "resize-detector": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz", + "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==" + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "requires": { + "compute-scroll-into-view": "^1.0.17" + } + }, + "sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "requires": { + "get-ready": "~1.0.0" + } + }, + "select-files": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz", + "integrity": "sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "socket.io-client": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz", + "integrity": "sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.1", + "socket.io-parser": "~4.2.4" + } + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "requires": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "systemjs": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz", + "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==", + "dev": true + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "terser": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "tinymce": { + "version": "5.10.5", + "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.5.tgz", + "integrity": "sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w==" + }, + "tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmmirror.com/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "requires": { + "@popperjs/core": "^2.9.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" + }, + "trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "devOptional": true + }, + "unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "requires": { + "extend-shallow": "^2.0.1" + } + }, + "unidragger": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unidragger/-/unidragger-2.4.0.tgz", + "integrity": "sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==", + "requires": { + "unipointer": "^2.4.0" + } + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "unipointer": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unipointer/-/unipointer-2.4.0.tgz", + "integrity": "sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==", + "requires": { + "ev-emitter": "^1.0.1" + } + }, + "unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-find-after": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz", + "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + }, + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "unist-util-position": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + } + }, + "unist-util-visit-parents": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + } + }, + "unplugin-vue-components": { + "version": "0.22.4", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz", + "integrity": "sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==", + "dev": true, + "requires": { + "@antfu/utils": "^0.5.2", + "@rollup/pluginutils": "^4.2.1", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.11", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.2", + "minimatch": "^5.1.0", + "resolve": "^1.22.1", + "unplugin": "^0.9.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urllib": { + "version": "2.41.0", + "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz", + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + "requires": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "debug": "^2.6.9", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.15", + "ip": "^1.1.5", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utility": { + "version": "1.18.0", + "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "requires": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, + "vfile": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "vfile-message": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.2.tgz", + "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "vite": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", + "dev": true, + "requires": { + "esbuild": "^0.14.47", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" + } + }, + "vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + } + }, + "vue": { + "version": "3.2.38", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.38.tgz", + "integrity": "sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q==", + "requires": { + "@vue/compiler-dom": "3.2.38", + "@vue/compiler-sfc": "3.2.38", + "@vue/runtime-dom": "3.2.38", + "@vue/server-renderer": "3.2.38", + "@vue/shared": "3.2.38" + } + }, + "vue-echarts": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz", + "integrity": "sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w==", + "requires": { + "resize-detector": "^0.3.0", + "vue-demi": "^0.13.2" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + } + }, + "vue-router": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.5.tgz", + "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", + "requires": { + "@vue/devtools-api": "^6.1.4" + } + }, + "vue-tsc": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz", + "integrity": "sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA==", + "dev": true, + "requires": { + "@volar/vue-language-core": "0.40.5", + "@volar/vue-typescript": "0.40.5" + } + }, + "vue-types": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz", + "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==", + "requires": { + "is-plain-object": "3.0.1" + } + }, + "vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "requires": { + "sortablejs": "1.14.0" + }, + "dependencies": { + "sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + } + } + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", + "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "requires": { + "semver": "^5.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-count": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/word-count/-/word-count-0.2.2.tgz", + "integrity": "sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "requires": {} + }, + "xgplayer": { + "version": "2.31.7", + "resolved": "https://registry.npmmirror.com/xgplayer/-/xgplayer-2.31.7.tgz", + "integrity": "sha512-Wksoj/+BQgsDD7hVsd0d8jICHWWL7SGV6c6V01kH3LfLS6JgwVKyNnr4rRHZFFztlr/kOgBnqPqlV3Fiefmviw==", + "requires": { + "chalk": "^2.3.2", + "commander": "^2.15.1", + "danmu.js": "^0.5.9", + "downloadjs": "1.4.7", + "draggabilly": "^2.2.0", + "event-emitter": "^0.3.5", + "fs-extra": "^5.0.0", + "xgplayer-subtitles": "^1.0.19" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "xgplayer-subtitles": { + "version": "1.0.22", + "resolved": "https://registry.npmmirror.com/xgplayer-subtitles/-/xgplayer-subtitles-1.0.22.tgz", + "integrity": "sha512-+m1fo+FFynL+2ymO4UQBUSnJAz3WuIthpJFCrKBjd+ukcLRoy3vTcsylXEOo5AZN1xT28fpHmxvZQKEIEYA+6w==", + "requires": { + "eventemitter3": "^4.0.7", + "generate-source-map": "0.0.5" + } + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + } + }, + "zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "requires": { + "tslib": "2.3.0" + } + }, + "zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..15a9d10 --- /dev/null +++ b/package.json @@ -0,0 +1,79 @@ +{ + "name": "ele-admin-pro-template", + "version": "1.10.1", + "private": true, + "scripts": { + "dev": "vite", + "serve": "vite build && vite preview", + "build": "vite build", + "lint:eslint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts}\" --fix", + "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite/", + "clean:lib": "rimraf node_modules" + }, + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@bytemd/plugin-gfm": "^1.17.2", + "@bytemd/plugin-highlight": "^1.17.4", + "@bytemd/plugin-highlight-ssr": "^1.20.2", + "@wecom/jssdk": "^1.3.1", + "ali-oss": "^6.18.0", + "ant-design-vue": "^3.2.11", + "axios": "^0.27.2", + "bytemd": "^1.17.2", + "countup.js": "^2.3.2", + "cropperjs": "^1.5.12", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.5", + "echarts": "^5.3.3", + "echarts-wordcloud": "^2.0.0", + "ele-admin-pro": "^1.10.1", + "exceljs": "^4.3.0", + "github-markdown-css": "^5.1.0", + "js-cookie": "^3.0.5", + "js-md5": "^0.7.3", + "jsbarcode": "^3.11.5", + "lodash-es": "^4.17.21", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.0.21", + "socket.io-client": "^4.7.1", + "sortablejs": "^1.15.0", + "tinymce": "^5.10.5", + "vue": "3.2.38", + "vue-echarts": "^6.2.3", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.5", + "vuedraggable": "^4.1.0", + "xgplayer": "^2.31.7", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/lodash-es": "^4.17.6", + "@types/node": "^18.7.14", + "@types/nprogress": "^0.2.0", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", + "@vitejs/plugin-legacy": "^2.0.1", + "@vitejs/plugin-vue": "^3.0.3", + "@vue/compiler-sfc": "^3.2.38", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-define-config": "^1.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.4.0", + "less": "^4.1.3", + "postcss": "^8.4.16", + "prettier": "^2.7.1", + "rimraf": "^3.0.2", + "terser": "^5.15.0", + "typescript": "^4.8.2", + "unplugin-vue-components": "^0.22.4", + "vite": "^3.0.9", + "vite-plugin-compression": "^0.5.1", + "vue-eslint-parser": "^9.0.3", + "vue-tsc": "^0.40.5" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..fa4aabc --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,3 @@ +module.exports = { + plugins: {} +}; diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..33ad45b --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,19 @@ +module.exports = { + printWidth: 80, + tabWidth: 2, + useTabs: false, + semi: true, + singleQuote: true, + quoteProps: 'as-needed', + jsxSingleQuote: false, + trailingComma: 'none', + bracketSpacing: true, + bracketSameLine: false, + arrowParens: 'always', + requirePragma: false, + insertPragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + vueIndentScriptAndStyle: true, + endOfLine: 'lf' +}; diff --git a/public/assets/logo.svg b/public/assets/logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/public/assets/logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..56625ef95ad31c01c1f367b3ea5fba691597cb8a GIT binary patch literal 4286 zcmeI#dyG_f6$kJ$yC{|xmLL&vcV~8IcOG|MJG09o5EN{bYE6iJ5L>J3BYj9wY&2=n zSQ%SmjhZ%ZFk+hm7(v-GKH`c_~B1Lz3_9frmK z<&w|-&hMPFzw?{BWCKJl{HdxU>no*J5`BV*f`All1uLI$Nvf{0(r2 zLY#_}ac9T_?i>$yhgb9PI^y0s`y1th<&?7;s|VaUR=f)A-v1@QT;j=1CEVhBoDbE^ z!EDak+*~`!U7M_`}%$89CXV_uSv zx*x^)yoht?al_T;cPV6chi=6D56l+KxsrDOn`Td>R{p|WDSzoX3%m${+74KBzA=~} z^XW=5x|LrUZ9X>IY8?vp?bxT3ABtaBeHRR12h$Pf^UwU}89#~NR9*27Mn8V`N9)Rr z?%-*o1Lx;;`c>p!Hah&eowI6Pfmg+o-j~JW)m-2V_7@9se-TequYoJi?+ugD8`*4h z2QC_2ew?3^3chOeMQ=v_Z+0$I3$Q%kGsW+`?C?JBv;+Gyj+|A$B=&i~fVJp+eYAm$ zmMYSF!w(y&0N$-bPpHKhZ(L^dga#Mn(W7+)Sv*z4;`g?bVt>tY?4NMtvh}BGev3Ph zI8b}p9rU3%=_85jG5@4~B*^m=P4AEF(0fCq_eby1k0|ySynw8J@SS!9qbOl(n``bmUuT-@8NqyGm!v1N|fp@deBj_RY+jr2$8%Ud4 zzf>EFj%Y_QKW`vnXv1|)+F&%(iL_)XeChVW=%O@U0ZIv;Jd+mapCWGbtFXaRnUMP zCe+dJ$AIKCKGXC%ubha_%5lukn~2Y$7LfSN&gYh`7YNE=Gkhjz^R1t|uo9fDq>hIz zUUedT4%p!x#4#W_nXvBgEzH;DL>=3v5`9{F<5KPT`UPj+vF#rOo;$zz-Ya*0={*4| zymrS;?*?E&uR0mA=9j3`krvlLV*Y*pv z>pq>DZoT;6H*f#I1a7+R;$!h;f1|$EpE4^sDLUQh9Q{R~)N< zLri17E%A48qA@CtH(qw0mALyGA6nMl`)%BdeL6>6y~3bE>Ta% z_QM>^=DdmZHu?O9<(T8aJ=|H19_&~BtMvvlUi@s)Gp*$AAF!naO09UYM|~kiuo67r z&aq_|NI8H;4w?nd-c-vmJC;Ni|$H#RI-qz48P%QZ&fW>nwNfHMQO&K6{Shl Y \ No newline at end of file diff --git a/public/tinymce/langs/zh_CN.js b/public/tinymce/langs/zh_CN.js new file mode 100644 index 0000000..2a784f5 --- /dev/null +++ b/public/tinymce/langs/zh_CN.js @@ -0,0 +1,462 @@ +tinymce.addI18n('zh_CN',{ +"Redo": "\u91cd\u505a", +"Undo": "\u64a4\u9500", +"Cut": "\u526a\u5207", +"Copy": "\u590d\u5236", +"Paste": "\u7c98\u8d34", +"Select all": "\u5168\u9009", +"New document": "\u65b0\u6587\u4ef6", +"Ok": "\u786e\u5b9a", +"Cancel": "\u53d6\u6d88", +"Visual aids": "\u7f51\u683c\u7ebf", +"Bold": "\u7c97\u4f53", +"Italic": "\u659c\u4f53", +"Underline": "\u4e0b\u5212\u7ebf", +"Strikethrough": "\u5220\u9664\u7ebf", +"Superscript": "\u4e0a\u6807", +"Subscript": "\u4e0b\u6807", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Align left": "\u5de6\u8fb9\u5bf9\u9f50", +"Align center": "\u4e2d\u95f4\u5bf9\u9f50", +"Align right": "\u53f3\u8fb9\u5bf9\u9f50", +"Justify": "\u4e24\u7aef\u5bf9\u9f50", +"Bullet list": "\u9879\u76ee\u7b26\u53f7", +"Numbered list": "\u7f16\u53f7\u5217\u8868", +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", +"Increase indent": "\u589e\u52a0\u7f29\u8fdb", +"Close": "\u5173\u95ed", +"Formats": "\u683c\u5f0f", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002", +"Headers": "\u6807\u9898", +"Header 1": "\u6807\u98981", +"Header 2": "\u6807\u98982", +"Header 3": "\u6807\u98983", +"Header 4": "\u6807\u98984", +"Header 5": "\u6807\u98985", +"Header 6": "\u6807\u98986", +"Headings": "\u6807\u9898", +"Heading 1": "\u6807\u98981", +"Heading 2": "\u6807\u98982", +"Heading 3": "\u6807\u98983", +"Heading 4": "\u6807\u98984", +"Heading 5": "\u6807\u98985", +"Heading 6": "\u6807\u98986", +"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684", +"Div": "Div", +"Pre": "Pre", +"Code": "\u4ee3\u7801", +"Paragraph": "\u6bb5\u843d", +"Blockquote": "\u5f15\u6587\u533a\u5757", +"Inline": "\u6587\u672c", +"Blocks": "\u57fa\u5757", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", +"Fonts": "\u5b57\u4f53", +"Font Sizes": "\u5b57\u53f7", +"Class": "\u7c7b\u578b", +"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf", +"OR": "\u6216", +"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64", +"Upload": "\u4e0a\u4f20", +"Block": "\u5757", +"Align": "\u5bf9\u9f50", +"Default": "\u9ed8\u8ba4", +"Circle": "\u7a7a\u5fc3\u5706", +"Disc": "\u5b9e\u5fc3\u5706", +"Square": "\u65b9\u5757", +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Anchor...": "\u951a\u70b9...", +"Name": "\u540d\u79f0", +"Id": "\u6807\u8bc6\u7b26", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", +"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", +"Special character...": "\u7279\u6b8a\u5b57\u7b26...", +"Source code": "\u6e90\u4ee3\u7801", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", +"Language": "\u8bed\u8a00", +"Code sample...": "\u793a\u4f8b\u4ee3\u7801...", +"Color Picker": "\u9009\u8272\u5668", +"R": "R", +"G": "G", +"B": "B", +"Left to right": "\u4ece\u5de6\u5230\u53f3", +"Right to left": "\u4ece\u53f3\u5230\u5de6", +"Emoticons": "\u8868\u60c5", +"Emoticons...": "\u8868\u60c5\u7b26\u53f7...", +"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Description": "\u63cf\u8ff0", +"Robots": "\u673a\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7f16\u7801", +"Fullscreen": "\u5168\u5c4f", +"Action": "\u64cd\u4f5c", +"Shortcut": "\u5feb\u6377\u952e", +"Help": "\u5e2e\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", +"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", +"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", +"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", +"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", +"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u63d2\u4ef6", +"Handy Shortcuts": "\u5feb\u6377\u952e", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0", +"Accessibility": "\u8f85\u52a9\u529f\u80fd", +"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684", +"Source": "\u5730\u5740", +"Dimensions": "\u5927\u5c0f", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Style": "\u6837\u5f0f", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Border": "\u8fb9\u6846", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Image...": "\u56fe\u7247...", +"Image list": "\u56fe\u7247\u5217\u8868", +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", +"Edit image": "\u7f16\u8f91\u56fe\u7247", +"Image options": "\u56fe\u7247\u9009\u9879", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7f29\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8c03\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u9510\u5316", +"Contrast": "\u5bf9\u6bd4\u5ea6", +"Color levels": "\u989c\u8272\u5c42\u6b21", +"Gamma": "\u4f3d\u9a6c\u503c", +"Invert": "\u53cd\u8f6c", +"Apply": "\u5e94\u7528", +"Back": "\u540e\u9000", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Url": "\u5730\u5740", +"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...", +"Current window": "\u5f53\u524d\u7a97\u53e3", +"None": "\u65e0", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"Open link": "\u6253\u5f00\u94fe\u63a5", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Anchors": "\u951a\u70b9", +"Link...": "\u94fe\u63a5...", +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \u524d\u7f00\u5417\uff1f", +"Link list": "\u94fe\u63a5\u5217\u8868", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", +"Alternative source": "\u955c\u50cf", +"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740", +"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Embed": "\u5185\u5d4c", +"Media...": "\u591a\u5a92\u4f53...", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print...": "\u6253\u5370...", +"Save": "\u4fdd\u5b58", +"Find": "\u67e5\u627e", +"Replace with": "\u66ff\u6362\u4e3a", +"Replace": "\u66ff\u6362", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Previous": "\u4e0a\u4e00\u4e2a", +"Next": "\u4e0b\u4e00\u4e2a", +"Find and Replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Find whole words only": "\u5168\u5b57\u5339\u914d", +"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00", +"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Delete table": "\u5220\u9664\u8868\u683c", +"Cell": "\u5355\u5143\u683c", +"Row": "\u884c", +"Column": "\u5217", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Delete row": "\u5220\u9664\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Cut row": "\u526a\u5207\u884c", +"Copy row": "\u590d\u5236\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Delete column": "\u5220\u9664\u5217", +"Cols": "\u5217", +"Rows": "\u884c", +"Width": "\u5bbd", +"Height": "\u9ad8", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Caption": "\u6807\u9898", +"Show caption": "\u663e\u793a\u6807\u9898", +"Left": "\u5de6\u5bf9\u9f50", +"Center": "\u5c45\u4e2d", +"Right": "\u53f3\u5bf9\u9f50", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Scope": "\u8303\u56f4", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Row group": "\u884c\u7ec4", +"Column group": "\u5217\u7ec4", +"Row type": "\u884c\u7c7b\u578b", +"Header": "\u8868\u5934", +"Body": "\u8868\u4f53", +"Footer": "\u8868\u5c3e", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Insert template...": "\u63d2\u5165\u6a21\u677f...", +"Templates": "\u6a21\u677f", +"Template": "\u6a21\u677f", +"Text color": "\u6587\u5b57\u989c\u8272", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Remove color": "\u79fb\u9664\u989c\u8272", +"Table of Contents": "\u5185\u5bb9\u5217\u8868", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Word count": "\u5b57\u6570", +"Count": "\u8ba1\u6570", +"Document": "\u6587\u6863", +"Selection": "\u9009\u62e9", +"Words": "\u5355\u8bcd", +"Words: {0}": "\u5b57\u6570\uff1a{0}", +"{0} words": "{0} \u5b57", +"File": "\u6587\u4ef6", +"Edit": "\u7f16\u8f91", +"Insert": "\u63d2\u5165", +"View": "\u89c6\u56fe", +"Format": "\u683c\u5f0f", +"Table": "\u8868\u683c", +"Tools": "\u5de5\u5177", +"Powered by {0}": "\u7531{0}\u9a71\u52a8", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", +"Image title": "\u56fe\u7247\u6807\u9898", +"Border width": "\u8fb9\u6846\u5bbd\u5ea6", +"Border style": "\u8fb9\u6846\u6837\u5f0f", +"Error": "\u9519\u8bef", +"Warn": "\u8b66\u544a", +"Valid": "\u6709\u6548", +"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846", +"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002", +"System Font": "\u7cfb\u7edf\u5b57\u4f53", +"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}", +"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}", +"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}", +"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}", +"example": "\u793a\u4f8b", +"Search": "\u641c\u7d22", +"All": "\u5168\u90e8", +"Currency": "\u8d27\u5e01", +"Text": "\u6587\u5b57", +"Quotations": "\u5f15\u7528", +"Mathematical": "\u6570\u5b66", +"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145", +"Symbols": "\u7b26\u53f7", +"Arrows": "\u7bad\u5934", +"User Defined": "\u81ea\u5b9a\u4e49", +"dollar sign": "\u7f8e\u5143\u7b26\u53f7", +"currency sign": "\u8d27\u5e01\u7b26\u53f7", +"euro-currency sign": "\u6b27\u5143\u7b26\u53f7", +"colon sign": "\u5192\u53f7", +"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7", +"french franc sign": "\u6cd5\u90ce\u7b26\u53f7", +"lira sign": "\u91cc\u62c9\u7b26\u53f7", +"mill sign": "\u5bc6\u5c14\u7b26\u53f7", +"naira sign": "\u5948\u62c9\u7b26\u53f7", +"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7", +"rupee sign": "\u5362\u6bd4\u7b26\u53f7", +"won sign": "\u97e9\u5143\u7b26\u53f7", +"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7", +"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7", +"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7", +"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7", +"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7", +"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7", +"peso sign": "\u6bd4\u7d22\u7b26\u53f7", +"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7", +"austral sign": "\u6fb3\u5143\u7b26\u53f7", +"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7", +"cedi sign": "\u585e\u5730\u7b26\u53f7", +"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7", +"spesmilo sign": "spesmilo\u7b26\u53f7", +"tenge sign": "\u575a\u6208\u7b26\u53f7", +"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4", +"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9", +"nordic mark sign": "\u5317\u6b27\u9a6c\u514b", +"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7", +"ruble sign": "\u5362\u5e03\u7b26\u53f7", +"yen character": "\u65e5\u5143\u5b57\u6837", +"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837", +"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09", +"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09", +"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...", +"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7", +"People": "\u4eba\u7c7b", +"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136", +"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1", +"Activity": "\u6d3b\u52a8", +"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9", +"Objects": "\u7269\u4ef6", +"Flags": "\u65d7\u5e1c", +"Characters": "\u5b57\u7b26", +"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)", +"{0} characters": "{0} \u4e2a\u5b57\u7b26", +"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002", +"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002", +"Update": "\u66f4\u65b0", +"Color swatch": "\u989c\u8272\u6837\u672c", +"Turquoise": "\u9752\u7eff\u8272", +"Green": "\u7eff\u8272", +"Blue": "\u84dd\u8272", +"Purple": "\u7d2b\u8272", +"Navy Blue": "\u6d77\u519b\u84dd", +"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272", +"Dark Green": "\u6df1\u7eff\u8272", +"Medium Blue": "\u4e2d\u84dd\u8272", +"Medium Purple": "\u4e2d\u7d2b\u8272", +"Midnight Blue": "\u6df1\u84dd\u8272", +"Yellow": "\u9ec4\u8272", +"Orange": "\u6a59\u8272", +"Red": "\u7ea2\u8272", +"Light Gray": "\u6d45\u7070\u8272", +"Gray": "\u7070\u8272", +"Dark Yellow": "\u6697\u9ec4\u8272", +"Dark Orange": "\u6df1\u6a59\u8272", +"Dark Red": "\u6df1\u7ea2\u8272", +"Medium Gray": "\u4e2d\u7070\u8272", +"Dark Gray": "\u6df1\u7070\u8272", +"Light Green": "\u6d45\u7eff\u8272", +"Light Yellow": "\u6d45\u9ec4\u8272", +"Light Red": "\u6d45\u7ea2\u8272", +"Light Purple": "\u6d45\u7d2b\u8272", +"Light Blue": "\u6d45\u84dd\u8272", +"Dark Purple": "\u6df1\u7d2b\u8272", +"Dark Blue": "\u6df1\u84dd\u8272", +"Black": "\u9ed1\u8272", +"White": "\u767d\u8272", +"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f", +"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846", +"history": "\u5386\u53f2", +"styles": "\u6837\u5f0f", +"formatting": "\u683c\u5f0f\u5316", +"alignment": "\u5bf9\u9f50", +"indentation": "\u7f29\u8fdb", +"Font": "\u5b57\u4f53", +"Size": "\u5b57\u53f7", +"More...": "\u66f4\u591a...", +"Select...": "\u9009\u62e9...", +"Preferences": "\u9996\u9009\u9879", +"Yes": "\u662f", +"No": "\u5426", +"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15", +"Version": "\u7248\u672c", +"Code view": "\u4ee3\u7801\u89c6\u56fe", +"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae", +"List Properties": "\u5217\u8868\u5c5e\u6027", +"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027", +"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868", +"Line height": "\u884c\u9ad8", +"comments": "\u5907\u6ce8", +"Format Painter": "\u683c\u5f0f\u5237", +"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6", +"Capitalization": "\u5927\u5199", +"lowercase": "\u5c0f\u5199", +"UPPERCASE": "\u5927\u5199", +"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199", +"permanent pen": "\u8bb0\u53f7\u7b14", +"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027", +"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...", +"case change": "\u6848\u4f8b\u66f4\u6539", +"page embed": "\u9875\u9762\u5d4c\u5165", +"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...", +"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f", +"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868", +"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868", +"Sort": "\u6392\u5e8f", +"Order": "\u6392\u5e8f", +"Sort by": "\u6392\u5e8f\u65b9\u5f0f", +"Ascending": "\u5347\u5e8f", +"Descending": "\u964d\u5e8f", +"Column {0}": "\u5217{0}", +"Row {0}": "\u884c{0}", +"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...", +"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd", +"Suggestions": "\u5efa\u8bae", +"Change": "\u66f4\u6539", +"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae", +"Success": "\u6210\u529f", +"Repair": "\u4fee\u590d", +"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}", +"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0", +"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002", +"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a", +"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a", +"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684", +"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c", +"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6", +"Remove this ID": "\u5220\u9664\u6b64 ID", +"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs", +"Checklist": "\u6e05\u5355", +"Anchor": "\u951a\u70b9", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Code sample": "\u4ee3\u7801\u793a\u4f8b", +"Color": "\u989c\u8272", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Image": "\u56fe\u7247", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"Link": "\u94fe\u63a5", +"Poster": "\u5c01\u9762", +"Media": "\u5a92\u4f53", +"Print": "\u6253\u5370", +"Prev": "\u4e0a\u4e00\u4e2a", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Insert template": "\u63d2\u5165\u6a21\u677f" +}); \ No newline at end of file diff --git a/public/tinymce/langs/zh_TW.js b/public/tinymce/langs/zh_TW.js new file mode 100644 index 0000000..1987486 --- /dev/null +++ b/public/tinymce/langs/zh_TW.js @@ -0,0 +1,419 @@ +tinymce.addI18n('zh_TW',{ +"Redo": "\u91cd\u505a", +"Undo": "\u64a4\u92b7", +"Cut": "\u526a\u4e0b", +"Copy": "\u8907\u88fd", +"Paste": "\u8cbc\u4e0a", +"Select all": "\u5168\u9078", +"New document": "\u65b0\u6587\u4ef6", +"Ok": "\u78ba\u5b9a", +"Cancel": "\u53d6\u6d88", +"Visual aids": "\u5c0f\u5e6b\u624b", +"Bold": "\u7c97\u9ad4", +"Italic": "\u659c\u9ad4", +"Underline": "\u4e0b\u5283\u7dda", +"Strikethrough": "\u522a\u9664\u7dda", +"Superscript": "\u4e0a\u6a19", +"Subscript": "\u4e0b\u6a19", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Align left": "\u5de6\u908a\u5c0d\u9f4a", +"Align center": "\u4e2d\u9593\u5c0d\u9f4a", +"Align right": "\u53f3\u908a\u5c0d\u9f4a", +"Justify": "\u5de6\u53f3\u5c0d\u9f4a", +"Bullet list": "\u9805\u76ee\u6e05\u55ae", +"Numbered list": "\u6578\u5b57\u6e05\u55ae", +"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392", +"Increase indent": "\u589e\u52a0\u7e2e\u6392", +"Close": "\u95dc\u9589", +"Formats": "\u683c\u5f0f", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002", +"Headers": "\u6a19\u984c", +"Header 1": "\u6a19\u984c 1", +"Header 2": "\u6a19\u984c 2", +"Header 3": "\u6a19\u984c 3", +"Header 4": "\u6a19\u984c 4", +"Header 5": "\u6a19\u984c 5", +"Header 6": "\u6a19\u984c 6", +"Headings": "\u6a19\u984c", +"Heading 1": "\u6a19\u984c1", +"Heading 2": "\u6a19\u984c2", +"Heading 3": "\u6a19\u984c3", +"Heading 4": "\u6a19\u984c4", +"Heading 5": "\u6a19\u984c5", +"Heading 6": "\u6a19\u984c6", +"Preformatted": "\u9810\u5148\u683c\u5f0f\u5316\u7684", +"Div": "Div", +"Pre": "Pre", +"Code": "\u4ee3\u78bc", +"Paragraph": "\u6bb5\u843d", +"Blockquote": "\u5f15\u6587\u5340\u584a", +"Inline": "\u5167\u806f", +"Blocks": "\u57fa\u584a", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002", +"Fonts": "\u5b57\u578b", +"Font Sizes": "\u5b57\u578b\u5927\u5c0f", +"Class": "\u985e\u578b", +"Browse for an image": "\u5f9e\u5716\u7247\u4e2d\u700f\u89bd", +"OR": "\u6216", +"Drop an image here": "\u62d6\u66f3\u5716\u7247\u81f3\u6b64", +"Upload": "\u4e0a\u50b3", +"Block": "\u5340\u584a", +"Align": "\u5c0d\u9f4a", +"Default": "\u9810\u8a2d", +"Circle": "\u7a7a\u5fc3\u5713", +"Disc": "\u5be6\u5fc3\u5713", +"Square": "\u6b63\u65b9\u5f62", +"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd", +"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57", +"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57", +"Anchor...": "\u9328\u9ede...", +"Name": "\u540d\u7a31", +"Id": "Id", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id\u61c9\u4ee5\u5b57\u6bcd\u958b\u982d\uff0c\u5f8c\u9762\u63a5\u8457\u5b57\u6bcd\uff0c\u6578\u5b57\uff0c\u7834\u6298\u865f\uff0c\u9ede\u6578\uff0c\u5192\u865f\u6216\u4e0b\u5283\u7dda\u3002", +"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f", +"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f", +"Special character...": "\u7279\u6b8a\u5b57\u5143......", +"Source code": "\u539f\u59cb\u78bc", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7de8\u8f2f \u7a0b\u5f0f\u78bc\u7bc4\u4f8b", +"Language": "\u8a9e\u8a00", +"Code sample...": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b...", +"Color Picker": "\u9078\u8272\u5668", +"R": "\u7d05", +"G": "\u7da0", +"B": "\u85cd", +"Left to right": "\u5f9e\u5de6\u5230\u53f3", +"Right to left": "\u5f9e\u53f3\u5230\u5de6", +"Emoticons...": "\u8868\u60c5\u7b26\u865f\u2026", +"Metadata and Document Properties": "\u5f8c\u8a2d\u8cc7\u6599\u8207\u6587\u4ef6\u5c6c\u6027", +"Title": "\u6a19\u984c", +"Keywords": "\u95dc\u9375\u5b57", +"Description": "\u63cf\u8ff0", +"Robots": "\u6a5f\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7de8\u78bc", +"Fullscreen": "\u5168\u87a2\u5e55", +"Action": "\u52d5\u4f5c", +"Shortcut": "\u5feb\u901f\u9375", +"Help": "\u5e6b\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u8df3\u81f3\u9078\u55ae\u5217", +"Focus to toolbar": "\u8df3\u81f3\u5de5\u5177\u5217", +"Focus to element path": "\u8df3\u81f3HTML\u5143\u7d20\u5217", +"Focus to contextual toolbar": "\u8df3\u81f3\u5feb\u6377\u9078\u55ae", +"Insert link (if link plugin activated)": "\u65b0\u589e\u6377\u5f91 (\u6377\u5f91\u5916\u639b\u555f\u7528\u6642)", +"Save (if save plugin activated)": "\u5132\u5b58 (\u5132\u5b58\u5916\u639b\u555f\u7528\u6642)", +"Find (if searchreplace plugin activated)": "\u5c0b\u627e (\u5c0b\u627e\u53d6\u4ee3\u5916\u639b\u555f\u7528\u6642)", +"Plugins installed ({0}):": "({0}) \u500b\u5916\u639b\u5df2\u5b89\u88dd\uff1a", +"Premium plugins:": "\u52a0\u503c\u5916\u639b\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u60a8\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u5916\u639b", +"Handy Shortcuts": "\u5feb\u901f\u9375", +"Horizontal line": "\u6c34\u5e73\u7dda", +"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247", +"Image description": "\u5716\u7247\u63cf\u8ff0", +"Source": "\u5716\u7247\u7db2\u5740", +"Dimensions": "\u5c3a\u5bf8", +"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e", +"General": "\u4e00\u822c", +"Advanced": "\u9032\u968e", +"Style": "\u6a23\u5f0f", +"Vertical space": "\u9ad8\u5ea6", +"Horizontal space": "\u5bec\u5ea6", +"Border": "\u908a\u6846", +"Insert image": "\u63d2\u5165\u5716\u7247", +"Image...": "\u5716\u7247......", +"Image list": "\u5716\u7247\u6e05\u55ae", +"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49", +"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f49", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49", +"Edit image": "\u7de8\u8f2f\u5716\u7247", +"Image options": "\u5716\u7247\u9078\u9805", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7e2e\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8abf\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u92b3\u5316", +"Contrast": "\u5c0d\u6bd4", +"Color levels": "\u984f\u8272\u5c64\u6b21", +"Gamma": "\u4f3d\u99ac\u503c", +"Invert": "\u53cd\u8f49", +"Apply": "\u61c9\u7528", +"Back": "\u5f8c\u9000", +"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593", +"Date\/time": "\u65e5\u671f\/\u6642\u9593", +"Insert\/Edit Link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50", +"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50", +"Text to display": "\u986f\u793a\u6587\u5b57", +"Url": "\u7db2\u5740", +"Open link in...": "\u958b\u555f\u9023\u7d50\u65bc...", +"Current window": "\u76ee\u524d\u8996\u7a97", +"None": "\u7121", +"New window": "\u53e6\u958b\u8996\u7a97", +"Remove link": "\u79fb\u9664\u9023\u7d50", +"Anchors": "\u52a0\u5165\u9328\u9ede", +"Link...": "\u9023\u7d50...", +"Paste or type a link": "\u8cbc\u4e0a\u6216\u8f38\u5165\u9023\u7d50", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f", +"Link list": "\u9023\u7d50\u6e05\u55ae", +"Insert video": "\u63d2\u5165\u5f71\u97f3", +"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3", +"Insert\/edit media": "\u63d2\u5165\/\u7de8\u8f2f \u5a92\u9ad4", +"Alternative source": "\u66ff\u4ee3\u5f71\u97f3", +"Alternative source URL": "\u66ff\u4ee3\u4f86\u6e90URL", +"Media poster (Image URL)": "\u5a92\u9ad4\u6d77\u5831\uff08\u5f71\u50cfImage URL\uff09", +"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:", +"Embed": "\u5d4c\u5165\u78bc", +"Media...": "\u5a92\u9ad4...", +"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c", +"Page break": "\u5206\u9801", +"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a", +"Preview": "\u9810\u89bd", +"Print...": "\u5217\u5370...", +"Save": "\u5132\u5b58", +"Find": "\u641c\u5c0b", +"Replace with": "\u66f4\u63db", +"Replace": "\u66ff\u63db", +"Replace all": "\u66ff\u63db\u5168\u90e8", +"Previous": "\u4e0a\u4e00\u500b", +"Next": "\u4e0b\u4e00\u500b", +"Find and replace...": "\u5c0b\u627e\u53ca\u53d6\u4ee3...", +"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32", +"Match case": "\u76f8\u5339\u914d\u6848\u4ef6", +"Find whole words only": "\u50c5\u627e\u51fa\u5b8c\u6574\u5b57\u532f", +"Spell check": "\u62fc\u5beb\u6aa2\u67e5", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5ffd\u7565\u6240\u6709", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c6c\u6027", +"Delete table": "\u522a\u9664\u8868\u683c", +"Cell": "\u5132\u5b58\u683c", +"Row": "\u5217", +"Column": "\u884c", +"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027", +"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c", +"Split cell": "\u5206\u5272\u5132\u5b58\u683c", +"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d", +"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c", +"Delete row": "\u522a\u9664\u5217", +"Row properties": "\u5217\u5c6c\u6027", +"Cut row": "\u526a\u4e0b\u5217", +"Copy row": "\u8907\u88fd\u5217", +"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d", +"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c", +"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d", +"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c", +"Delete column": "\u522a\u9664\u884c", +"Cols": "\u6b04\u4f4d\u6bb5", +"Rows": "\u5217", +"Width": "\u5bec\u5ea6", +"Height": "\u9ad8\u5ea6", +"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd", +"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd", +"Show caption": "\u986f\u793a\u6a19\u984c", +"Left": "\u5de6\u908a", +"Center": "\u4e2d\u9593", +"Right": "\u53f3\u908a", +"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b", +"Scope": "\u7bc4\u570d", +"Alignment": "\u5c0d\u9f4a", +"H Align": "\u6c34\u5e73\u4f4d\u7f6e", +"V Align": "\u5782\u76f4\u4f4d\u7f6e", +"Top": "\u7f6e\u9802", +"Middle": "\u7f6e\u4e2d", +"Bottom": "\u7f6e\u5e95", +"Header cell": "\u6a19\u982d\u5132\u5b58\u683c", +"Row group": "\u5217\u7fa4\u7d44", +"Column group": "\u6b04\u4f4d\u7fa4\u7d44", +"Row type": "\u884c\u7684\u985e\u578b", +"Header": "\u6a19\u982d", +"Body": "\u4e3b\u9ad4", +"Footer": "\u9801\u5c3e", +"Border color": "\u908a\u6846\u984f\u8272", +"Insert template...": "\u63d2\u5165\u6a23\u7248...", +"Templates": "\u6a23\u7248", +"Template": "\u6a23\u677f", +"Text color": "\u6587\u5b57\u984f\u8272", +"Background color": "\u80cc\u666f\u984f\u8272", +"Custom...": "\u81ea\u8a02", +"Custom color": "\u81ea\u8a02\u984f\u8272", +"No color": "No color", +"Remove color": "\u79fb\u9664\u984f\u8272", +"Table of Contents": "\u76ee\u9304", +"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a", +"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143", +"Word count": "\u8a08\u7b97\u5b57\u6578", +"Count": "\u8a08\u7b97", +"Document": "\u6587\u4ef6", +"Selection": "\u9078\u9805", +"Words": "\u5b57\u6578", +"Words: {0}": "\u5b57\u6578\uff1a{0}", +"{0} words": "{0} \u5b57\u5143", +"File": "\u6a94\u6848", +"Edit": "\u7de8\u8f2f", +"Insert": "\u63d2\u5165", +"View": "\u6aa2\u8996", +"Format": "\u683c\u5f0f", +"Table": "\u8868\u683c", +"Tools": "\u5de5\u5177", +"Powered by {0}": "\u7531 {0} \u63d0\u4f9b", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9", +"Image title": "\u5716\u7247\u6a19\u984c", +"Border width": "\u6846\u7dda\u5bec\u5ea6", +"Border style": "\u6846\u7dda\u6a23\u5f0f", +"Error": "\u932f\u8aa4", +"Warn": "\u8b66\u544a", +"Valid": "\u6709\u6548", +"To open the popup, press Shift+Enter": "\u8981\u958b\u555f\u5f48\u51fa\u8996\u7a97\uff0c\u8acb\u6309Shift+Enter", +"Rich Text Area. Press ALT-0 for help.": "\u5bcc\u6587\u672c\u5340\u57df\u3002\u8acb\u6309ALT-0\u5c0b\u6c42\u5354\u52a9\u3002", +"System Font": "\u7cfb\u7d71\u5b57\u578b", +"Failed to upload image: {0}": "\u7121\u6cd5\u4e0a\u50b3\u5f71\u50cf\uff1a{0}", +"Failed to load plugin: {0} from url {1}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}\u81eaurl{1}", +"Failed to load plugin url: {0}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}", +"Failed to initialize plugin: {0}": "\u7121\u6cd5\u555f\u52d5\u63d2\u4ef6\uff1a{0}", +"example": "\u7bc4\u4f8b", +"Search": "\u641c\u7d22", +"All": "\u5168\u90e8", +"Currency": "\u8ca8\u5e63", +"Text": "\u6587\u672c", +"Quotations": "\u5f15\u7528", +"Mathematical": "\u6578\u5b78", +"Extended Latin": "\u62c9\u4e01\u5b57\u6bcd\u64f4\u5145", +"Symbols": "\u7b26\u865f", +"Arrows": "\u7bad\u982d", +"User Defined": "\u4f7f\u7528\u8005\u5df2\u5b9a\u7fa9", +"dollar sign": "\u7f8e\u5143\u7b26\u865f", +"currency sign": "\u8ca8\u5e63\u7b26\u865f", +"euro-currency sign": "\u6b50\u5143\u7b26\u865f", +"colon sign": "\u79d1\u6717\u7b26\u865f", +"cruzeiro sign": "\u514b\u9b6f\u8cfd\u7f85\u7b26\u865f", +"french franc sign": "\u6cd5\u6717\u7b26\u865f", +"lira sign": "\u91cc\u62c9\u7b26\u865f", +"mill sign": "\u6587\u7b26\u865f", +"naira sign": "\u5948\u62c9\u7b26\u865f", +"peseta sign": "\u6bd4\u585e\u5854\u7b26\u865f", +"rupee sign": "\u76e7\u6bd4\u7b26\u865f", +"won sign": "\u97d3\u571c\u7b26\u865f", +"new sheqel sign": "\u65b0\u8b1d\u514b\u723e\u7b26\u865f", +"dong sign": "\u8d8a\u5357\u76fe\u7b26\u865f", +"kip sign": "\u8001\u64be\u5e63\u7b26\u865f", +"tugrik sign": "\u8499\u53e4\u5e63\u7b26\u865f", +"drachma sign": "\u5fb7\u514b\u62c9\u99ac\u7b26\u865f", +"german penny symbol": "\u5fb7\u570b\u5206\u7b26\u865f", +"peso sign": "\u62ab\u7d22\u7b26\u865f", +"guarani sign": "\u5df4\u62c9\u572d\u5e63\u7b26\u865f", +"austral sign": "\u963f\u6839\u5ef7\u5e63\u7b26\u865f", +"hryvnia sign": "\u70cf\u514b\u862d\u5e63\u7b26\u865f", +"cedi sign": "\u8fe6\u7d0d\u5e63\u7b26\u865f", +"livre tournois sign": "\u91cc\u5f17\u723e\u7b26\u865f", +"spesmilo sign": "\u570b\u969b\u5e63\u7b26\u865f", +"tenge sign": "\u54c8\u85a9\u514b\u5e63\u7b26\u865f", +"indian rupee sign": "\u5370\u5ea6\u76e7\u6bd4\u7b26\u865f", +"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9\u7b26\u865f", +"nordic mark sign": "\u5317\u6b50\u99ac\u514b\u7b26\u865f", +"manat sign": "\u4e9e\u585e\u62dc\u7136\u5e63\u7b26\u865f", +"ruble sign": "\u76e7\u5e03\u7b26\u865f", +"yen character": "\u65e5\u5713\u7b26\u865f", +"yuan character": "\u4eba\u6c11\u5e63\u7b26\u865f", +"yuan character, in hong kong and taiwan": "\u6e2f\u5143\u8207\u53f0\u5e63\u7b26\u865f", +"yen\/yuan character variant one": "\u65e5\u5713\/\u4eba\u6c11\u5e63\u7b26\u865f\u8b8a\u5316\u578b", +"Loading emoticons...": "\u8f09\u5165\u8868\u60c5\u7b26\u865f\u2026", +"Could not load emoticons": "\u7121\u6cd5\u8f09\u5165\u8868\u60c5\u7b26\u865f", +"People": "\u4eba", +"Animals and Nature": "\u52d5\u7269\u8207\u81ea\u7136", +"Food and Drink": "\u98f2\u98df", +"Activity": "\u6d3b\u52d5", +"Travel and Places": "\u65c5\u884c\u8207\u5730\u9ede", +"Objects": "\u7269\u4ef6", +"Flags": "\u65d7\u6a19", +"Characters": "\u5b57\u5143", +"Characters (no spaces)": "\u5b57\u5143\uff08\u7121\u7a7a\u683c\uff09", +"{0} characters": "{0}\u5b57\u5143", +"Error: Form submit field collision.": "\u932f\u8aa4\uff1a\u8868\u683c\u905e\u4ea4\u6b04\u4f4d\u885d\u7a81\u3002", +"Error: No form element found.": "\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8868\u683c\u5143\u7d20\u3002", +"Update": "\u66f4\u65b0", +"Color swatch": "\u8272\u5f69\u6a23\u672c", +"Turquoise": "\u571f\u8033\u5176\u85cd", +"Green": "\u7da0\u8272", +"Blue": "\u85cd\u8272", +"Purple": "\u7d2b\u8272", +"Navy Blue": "\u6df1\u85cd\u8272", +"Dark Turquoise": "\u6df1\u571f\u8033\u5176\u85cd", +"Dark Green": "\u6df1\u7da0\u8272", +"Medium Blue": "\u4e2d\u85cd\u8272", +"Medium Purple": "\u4e2d\u7d2b\u8272", +"Midnight Blue": "\u9ed1\u85cd\u8272", +"Yellow": "\u9ec3\u8272", +"Orange": "\u6a59\u8272", +"Red": "\u7d05\u8272", +"Light Gray": "\u6dfa\u7070\u8272", +"Gray": "\u7070\u8272", +"Dark Yellow": "\u6df1\u9ec3\u8272", +"Dark Orange": "\u6df1\u6a59\u8272", +"Dark Red": "\u6697\u7d05\u8272", +"Medium Gray": "\u4e2d\u7070\u8272", +"Dark Gray": "\u6df1\u7070\u8272", +"Light Green": "\u6de1\u7da0\u8272", +"Light Yellow": "\u6dfa\u9ec3\u8272", +"Light Red": "\u6dfa\u7d05\u8272", +"Light Purple": "\u6dfa\u7d2b\u8272", +"Light Blue": "\u6dfa\u85cd\u8272", +"Dark Purple": "\u6df1\u7d2b\u8272", +"Dark Blue": "\u6df1\u85cd\u8272", +"Black": "\u9ed1\u8272", +"White": "\u767d\u8272", +"Switch to or from fullscreen mode": "\u8f49\u63db\u81ea\/\u81f3\u5168\u87a2\u5e55\u6a21\u5f0f", +"Open help dialog": "\u958b\u555f\u5354\u52a9\u5c0d\u8a71", +"history": "\u6b77\u53f2", +"styles": "\u6a23\u5f0f", +"formatting": "\u683c\u5f0f", +"alignment": "\u5c0d\u9f4a", +"indentation": "\u7e2e\u6392", +"permanent pen": "\u6c38\u4e45\u6027\u7b46", +"comments": "\u8a3b\u89e3", +"Format Painter": "\u8907\u88fd\u683c\u5f0f", +"Insert\/edit iframe": "\u63d2\u5165\/\u7de8\u8f2fiframe", +"Capitalization": "\u5927\u5beb", +"lowercase": "\u5c0f\u5beb", +"UPPERCASE": "\u5927\u5beb", +"Title Case": "\u5b57\u9996\u5927\u5beb", +"Permanent Pen Properties": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027", +"Permanent pen properties...": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027......", +"Font": "\u5b57\u578b", +"Size": "\u5b57\u5f62\u5927\u5c0f", +"More...": "\u66f4\u591a\u8cc7\u8a0a......", +"Spellcheck Language": "\u62fc\u5beb\u8a9e\u8a00", +"Select...": "\u9078\u64c7......", +"Preferences": "\u9996\u9078\u9805", +"Yes": "\u662f", +"No": "\u5426", +"Keyboard Navigation": "\u9375\u76e4\u5c0e\u822a", +"Version": "\u7248\u672c", +"Anchor": "\u52a0\u5165\u9328\u9ede", +"Special character": "\u7279\u6b8a\u5b57\u5143", +"Code sample": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b", +"Color": "\u984f\u8272", +"Emoticons": "\u8868\u60c5", +"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027", +"Image": "\u5716\u7247", +"Insert link": "\u63d2\u5165\u9023\u7d50", +"Target": "\u958b\u555f\u65b9\u5f0f", +"Link": "\u9023\u7d50", +"Poster": "\u9810\u89bd\u5716\u7247", +"Media": "\u5a92\u9ad4", +"Print": "\u5217\u5370", +"Prev": "\u4e0a\u4e00\u500b", +"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3", +"Whole words": "\u6574\u500b\u55ae\u5b57", +"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5", +"Caption": "\u8868\u683c\u6a19\u984c", +"Insert template": "\u63d2\u5165\u6a23\u7248" +}); \ No newline at end of file diff --git a/public/tinymce/skins/content/dark/content.css b/public/tinymce/skins/content/dark/content.css new file mode 100644 index 0000000..bae7923 --- /dev/null +++ b/public/tinymce/skins/content/dark/content.css @@ -0,0 +1,72 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + background-color: #2f3742; + color: #dfe0e4; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + margin: 1rem; +} +a { + color: #4099ff; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #6d737b; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #8a8f97; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #6d737b; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #6d737b; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #6d737b; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #6d737b; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/dark/content.min.css b/public/tinymce/skins/content/dark/content.min.css new file mode 100644 index 0000000..07d40c2 --- /dev/null +++ b/public/tinymce/skins/content/dark/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/default/content.css b/public/tinymce/skins/content/default/content.css new file mode 100644 index 0000000..40dca50 --- /dev/null +++ b/public/tinymce/skins/content/default/content.css @@ -0,0 +1,66 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #999; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #e8e8e8; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/default/content.min.css b/public/tinymce/skins/content/default/content.min.css new file mode 100644 index 0000000..a462f67 --- /dev/null +++ b/public/tinymce/skins/content/default/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/document/content.css b/public/tinymce/skins/content/document/content.css new file mode 100644 index 0000000..75f637a --- /dev/null +++ b/public/tinymce/skins/content/document/content.css @@ -0,0 +1,72 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +@media screen { + html { + background: #f4f4f4; + min-height: 100%; + } +} +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} +@media screen { + body { + background-color: #fff; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.15); + box-sizing: border-box; + margin: 1rem auto 0; + max-width: 820px; + min-height: calc(100vh - 1rem); + padding: 4rem 6rem 6rem 6rem; + } +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure figcaption { + color: #999; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/document/content.min.css b/public/tinymce/skins/content/document/content.min.css new file mode 100644 index 0000000..a1feef4 --- /dev/null +++ b/public/tinymce/skins/content/document/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/writer/content.css b/public/tinymce/skins/content/writer/content.css new file mode 100644 index 0000000..ceee359 --- /dev/null +++ b/public/tinymce/skins/content/writer/content.css @@ -0,0 +1,68 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + margin: 1rem auto; + max-width: 900px; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #999; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #e8e8e8; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/writer/content.min.css b/public/tinymce/skins/content/writer/content.min.css new file mode 100644 index 0000000..0d8f5d3 --- /dev/null +++ b/public/tinymce/skins/content/writer/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/ui/oxide-dark/content.css b/public/tinymce/skins/ui/oxide-dark/content.css new file mode 100644 index 0000000..9c0e3a8 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.css @@ -0,0 +1,714 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * Dracula Theme originally by Zeno Rocha [@zenorocha] + * https://draculatheme.com/ + * + * Ported for PrismJS by Albert Vallverdu [@byverdu] + */ +code[class*="language-"], +pre[class*="language-"] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #282a36; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #6272a4; +} +.token.punctuation { + color: #f8f8f2; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #ff79c6; +} +.token.boolean, +.token.number { + color: #bd93f9; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #50fa7b; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #f1fa8c; +} +.token.keyword { + color: #8be9fd; +} +.token.regex, +.token.important { + color: #ffb86c; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #4099ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #4099ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #4099ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #4099ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #4099ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid transparent; + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: lighten; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #4099ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.css b/public/tinymce/skins/ui/oxide-dark/content.inline.css new file mode 100644 index 0000000..8e7521d --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.inline.css @@ -0,0 +1,726 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.min.css b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css new file mode 100644 index 0000000..b4ab9a3 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/public/tinymce/skins/ui/oxide-dark/content.min.css b/public/tinymce/skins/ui/oxide-dark/content.min.css new file mode 100644 index 0000000..e27b8a0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #000000; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.5); + border-color: #207ab7; + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.5); + border-color: rgba(255, 165, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.5); + border-color: rgba(204, 0, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.5); + border-color: rgba(120, 171, 70, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: none; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #3d546f; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #3d546f; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: none; +} +.tox .tox-button--secondary[disabled] { + background-color: #3d546f; + background-image: none; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #2b3b4e; + background-image: none; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #fff; +} +.tox .tox-button--naked[disabled] { + background-color: #3d546f; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #2b3b4e; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #fff; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(255, 255, 255, 0.2); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #1a1a1a; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #333333; + color: #fff; + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #fff; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #2b3b4e; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #4a5562; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #fff; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #2b3b4e; + border: 1px solid #1a1a1a; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox .tox-collection__item-container { + display: flex; +} +.tox .tox-collection__item-container--row { + align-items: center; + flex: 1 1 auto; + flex-direction: row; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-left { + margin-right: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-right { + justify-content: flex-end; + margin-left: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top { + align-items: flex-start; + margin-bottom: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle { + align-items: center; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom { + align-items: flex-end; + margin-top: auto; +} +.tox .tox-collection__item-container--column { + -ms-grid-row-align: center; + align-self: center; + flex: 1 1 auto; + flex-direction: column; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-left { + align-items: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-right { + align-items: flex-end; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top { + align-self: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { + -ms-grid-row-align: center; + align-self: center; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { + align-self: flex-end; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #4a5562; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #2b3b4e; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #fff; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; +} +.tox .tox-comment__body { + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(255, 255, 255, 0.5); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #2b3b4e; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #2b3b4e; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #fff; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #2b3b4e; + box-shadow: 0 0 8px 8px #2b3b4e; + color: #fff; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #2b3b4e; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-user__name { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #222f3e; +} +.tox .tox-dialog { + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #2b3b4e; + border-bottom: none; + color: #fff; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #fff; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #fff; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #fff; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #fff; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #2b3b4e; + border-top: 1px solid #000000; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #000000; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #000000; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(255, 255, 255, 0.5); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #000000; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: transparent; + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(42, 55, 70, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #2b3b4e; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(255, 255, 255, 0.5); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-listboxfield .tox-listbox--select, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #222f3e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-listboxfield .tox-listbox--select:focus, +.tox .tox-textarea:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #fff; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-listboxfield { + cursor: pointer; + position: relative; +} +.tox .tox-listboxfield .tox-listbox--select[disabled] { + background-color: #19232e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-listbox__select-label { + cursor: default; + flex: 1; + margin: 0 4px; +} +.tox .tox-listbox__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-listbox__select-chevron svg { + fill: #fff; +} +.tox .tox-listboxfield .tox-listbox--select { + align-items: center; + display: flex; +} +.tox:not([dir=rtl]) .tox-listboxfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-listboxfield svg { + left: 8px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #19232e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #000000; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: #fff; + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #000000; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn--active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #fff; +} +.tox .tox-notification--success p { + color: #fff; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #fff; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #fff; +} +.tox .tox-notification--error p { + color: #fff; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #fff; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #fff; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #fff; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #fff; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #fff; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #fff; +} +.tox .tox-notification--info p { + color: #fff; +} +.tox .tox-notification--info a { + color: #fff; +} +.tox .tox-notification--info svg { + fill: #fff; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #fff; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar, +.tox .tox-pop--resizing .tox-toolbar__group { + flex-wrap: nowrap; +} +.tox .tox-pop--transition { + transition: 0.15s ease; + transition-property: left, right, top, bottom; +} +.tox .tox-pop--transition::before, +.tox .tox-pop--transition::after { + transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s; +} +.tox .tox-pop__dialog { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + opacity: 1; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--inset::before, +.tox .tox-pop.tox-pop--inset::after { + opacity: 0; + transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #222f3e transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #000000 transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #222f3e transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #000000 transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #222f3e transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #000000 transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #222f3e; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #000000; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #222f3e; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #000000; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #222f3e; + border-top: 1px solid #000000; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: #fff; + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: #fff; +} +.tox .tox-statusbar__resize-handle:focus svg { + background-color: #4a5562; + border-radius: 1px; + box-shadow: 0 0 0 2px #4a5562; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1299; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #fff; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #4a5562; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:hover svg { + fill: #fff; +} +.tox .tox-tbtn:active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:active svg { + fill: #fff; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #fff; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #4a5562 inset; +} +.tox .tox-split-button:focus { + background: #4a5562; + box-shadow: none; + color: #fff; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #222f3e; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #000000; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #000000; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #3d546f; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #3d546f; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #3d546f; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #3d546f; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #3d546f; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #000000; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #000000; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.min.css b/public/tinymce/skins/ui/oxide-dark/skin.min.css new file mode 100644 index 0000000..e71f6f0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css new file mode 100644 index 0000000..d2adc4d --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css @@ -0,0 +1,37 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css new file mode 100644 index 0000000..a0893b9 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/public/tinymce/skins/ui/oxide/content.css b/public/tinymce/skins/ui/oxide/content.css new file mode 100644 index 0000000..2ac0cca --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.css @@ -0,0 +1,732 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide/content.inline.css b/public/tinymce/skins/ui/oxide/content.inline.css new file mode 100644 index 0000000..8e7521d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.inline.css @@ -0,0 +1,726 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/public/tinymce/skins/ui/oxide/content.inline.min.css b/public/tinymce/skins/ui/oxide/content.inline.min.css new file mode 100644 index 0000000..b4ab9a3 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/public/tinymce/skins/ui/oxide/content.min.css b/public/tinymce/skins/ui/oxide/content.min.css new file mode 100644 index 0000000..844858d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide/content.mobile.css b/public/tinymce/skins/ui/oxide/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide/content.mobile.min.css b/public/tinymce/skins/ui/oxide/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #cccccc; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.1); + border-color: rgba(32, 122, 183, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: rgba(32, 122, 183, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.1); + border-color: rgba(255, 165, 0, 0.5); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.5); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.1); + border-color: rgba(204, 0, 0, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.1); + border-color: rgba(120, 171, 70, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: none; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #f0f0f0; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #f0f0f0; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: none; +} +.tox .tox-button--secondary[disabled] { + background-color: #f0f0f0; + background-image: none; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #d6d6d6; + background-image: none; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked[disabled] { + background-color: #f0f0f0; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #d6d6d6; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #222f3e; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(34, 47, 62, 0.3); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #cccccc; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #e6e6e6; + color: rgba(34, 47, 62, 0.7); + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #222f3e; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #fff; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #dee0e2; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #222f3e; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox .tox-collection__item-container { + display: flex; +} +.tox .tox-collection__item-container--row { + align-items: center; + flex: 1 1 auto; + flex-direction: row; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-left { + margin-right: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-right { + justify-content: flex-end; + margin-left: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top { + align-items: flex-start; + margin-bottom: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle { + align-items: center; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom { + align-items: flex-end; + margin-top: auto; +} +.tox .tox-collection__item-container--column { + -ms-grid-row-align: center; + align-self: center; + flex: 1 1 auto; + flex-direction: column; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-left { + align-items: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-right { + align-items: flex-end; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top { + align-self: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { + -ms-grid-row-align: center; + align-self: center; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { + align-self: flex-end; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #dee0e2; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #fff; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #222f3e; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; +} +.tox .tox-comment__body { + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(34, 47, 62, 0.7); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #fff; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(255, 255, 255, 0), #fff); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #fff; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #222f3e; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #fff; + box-shadow: 0 0 8px 8px #fff; + color: #222f3e; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #fff; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-user__name { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #fff; +} +.tox .tox-dialog { + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #fff; + border-bottom: none; + color: #222f3e; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #222f3e; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #222f3e; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #222f3e; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #222f3e; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #cccccc; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #cccccc; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(34, 47, 62, 0.7); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #cccccc; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: transparent; + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(34, 47, 62, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #fff; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-listboxfield .tox-listbox--select, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-listboxfield .tox-listbox--select:focus, +.tox .tox-textarea:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #222f3e; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-listboxfield { + cursor: pointer; + position: relative; +} +.tox .tox-listboxfield .tox-listbox--select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-listbox__select-label { + cursor: default; + flex: 1; + margin: 0 4px; +} +.tox .tox-listbox__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-listbox__select-chevron svg { + fill: #222f3e; +} +.tox .tox-listboxfield .tox-listbox--select { + align-items: center; + display: flex; +} +.tox:not([dir=rtl]) .tox-listboxfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-listboxfield svg { + left: 8px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #cccccc; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #cccccc; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn--active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #222f3e; +} +.tox .tox-notification--success p { + color: #222f3e; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #222f3e; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #222f3e; +} +.tox .tox-notification--error p { + color: #222f3e; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #222f3e; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #222f3e; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #222f3e; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #222f3e; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #222f3e; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #222f3e; +} +.tox .tox-notification--info p { + color: #222f3e; +} +.tox .tox-notification--info a { + color: #222f3e; +} +.tox .tox-notification--info svg { + fill: #222f3e; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #222f3e; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar, +.tox .tox-pop--resizing .tox-toolbar__group { + flex-wrap: nowrap; +} +.tox .tox-pop--transition { + transition: 0.15s ease; + transition-property: left, right, top, bottom; +} +.tox .tox-pop--transition::before, +.tox .tox-pop--transition::after { + transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s; +} +.tox .tox-pop__dialog { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + opacity: 1; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--inset::before, +.tox .tox-pop.tox-pop--inset::after { + opacity: 0; + transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #fff transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #cccccc transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #fff transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #cccccc transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #fff transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #cccccc transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #fff; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #cccccc; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #fff; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #cccccc; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(34, 47, 62, 0.7); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + color: rgba(34, 47, 62, 0.7); + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: rgba(34, 47, 62, 0.7); + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-statusbar__resize-handle:focus svg { + background-color: #dee0e2; + border-radius: 1px; + box-shadow: 0 0 0 2px #dee0e2; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1299; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #dee0e2; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tbtn:active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:active svg { + fill: #222f3e; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #dee0e2 inset; +} +.tox .tox-split-button:focus { + background: #dee0e2; + box-shadow: none; + color: #222f3e; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #fff; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #cccccc; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #cccccc; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #222f3e; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #222f3e; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #222f3e; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #222f3e; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #222f3e; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #cccccc; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #cccccc; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/public/tinymce/skins/ui/oxide/skin.min.css b/public/tinymce/skins/ui/oxide/skin.min.css new file mode 100644 index 0000000..f570b8e --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.css b/public/tinymce/skins/ui/oxide/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.min.css b/public/tinymce/skins/ui/oxide/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.css new file mode 100644 index 0000000..d2adc4d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.css @@ -0,0 +1,37 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css new file mode 100644 index 0000000..a0893b9 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/public/ws-logo.svg b/public/ws-logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/public/ws-logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..0252b48 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/api/apps/bc/agent/index.ts b/src/api/apps/bc/agent/index.ts new file mode 100644 index 0000000..132ab34 --- /dev/null +++ b/src/api/apps/bc/agent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BCAgent, BCAgentParam } from '@/api/apps/bc/agent/model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询设备 + */ +export async function pageBCAgent(params: BCAgentParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-agent/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设备列表 + */ +export async function listBCAgent(params?: BCAgentParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-agent', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设备 + */ +export async function addBCAgent(data: BCAgent) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-agent', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设备 + */ +export async function updateBCAgent(data: BCAgent) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-agent', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定设备 + */ +export async function bindBCAgent(data: BCAgent) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-agent/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设备 + */ +export async function removeBCAgent(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-agent/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设备 + */ +export async function removeBatchBCAgent(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-agent/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/agent/model/index.ts b/src/api/apps/bc/agent/model/index.ts new file mode 100644 index 0000000..81db111 --- /dev/null +++ b/src/api/apps/bc/agent/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +/** + * 代理报餐 + */ +export interface BCAgent { + agentId?: number; + userId?: number; + parentId?: number; + sortNumber?: number; + status?: number; + comments?: string; + createTime?: string; + tenantId?: number; +} + +/** + * 订单搜索条件 + */ +export interface BCAgentParam extends PageParam { + status?: number; + userId?: number; +} diff --git a/src/api/apps/bc/balance-log/index.ts b/src/api/apps/bc/balance-log/index.ts new file mode 100644 index 0000000..f2942f0 --- /dev/null +++ b/src/api/apps/bc/balance-log/index.ts @@ -0,0 +1,104 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserBalanceLog, UserBalanceLogParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询余额明细 + */ +export async function pageUserBalanceLog(params: UserBalanceLogParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/user-balance-log/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询余额明细列表 + */ +export async function listUserBalanceLog(params?: UserBalanceLogParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/user-balance-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询余额明细 + */ +export async function getUserBalanceLog(id: number) { + const res = await request.get>( + OPEN_API_URL + '/shop/user-balance-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加余额明细 + */ +export async function addUserBalanceLog(data: UserBalanceLog) { + const res = await request.post>( + OPEN_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改余额明细 + */ +export async function updateUserBalanceLog(data: UserBalanceLog) { + const res = await request.put>( + OPEN_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除余额明细 + */ +export async function removeUserBalanceLog(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/user-balance-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除余额明细 + */ +export async function removeUserBalanceLogs(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/user-balance-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/balance-log/model/index.ts b/src/api/apps/bc/balance-log/model/index.ts new file mode 100644 index 0000000..987885f --- /dev/null +++ b/src/api/apps/bc/balance-log/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 余额明细 + */ +export interface UserBalanceLog { + logId?: number; + userId?: number; + scene?: number; + money?: string; + describe?: string; + remark?: string; + sortNumber?: number; + MerchantCode?: string; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserBalanceLogParam extends PageParam { + logId?: number; + userId?: number; + scene?: number; + createTimeStart?: string; + createTimeEnd?: string; + MerchantCode?: string; +} diff --git a/src/api/apps/bc/equipment/index.ts b/src/api/apps/bc/equipment/index.ts new file mode 100644 index 0000000..10f93f0 --- /dev/null +++ b/src/api/apps/bc/equipment/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BcEquipment, BcEquipmentParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询设备 + */ +export async function pageBcEquipment(params: BcEquipmentParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-equipment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设备列表 + */ +export async function listBcEquipment(params?: BcEquipmentParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-equipment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设备 + */ +export async function addBcEquipment(data: BcEquipment) { + const merchantCode = localStorage.getItem('MerchantCode'); + console.log(merchantCode); + if (merchantCode !== null && merchantCode != '') { + console.log(merchantCode); + data.merchantCode = String(merchantCode); + } + const res = await request.post>( + OPEN_API_URL + '/apps/bc-equipment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设备 + */ +export async function updateBcEquipment(data: BcEquipment) { + const res = await request.put>('/apps/bc-equipment', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定设备 + */ +export async function bindBcEquipment(data: BcEquipment) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-equipment/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设备 + */ +export async function removeBcEquipment(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-equipment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设备 + */ +export async function removeBatchBcEquipment(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-equipment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-equipment/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 发送企业微信消息推送 + */ +export async function addSend(data: BcEquipment) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-equipment/addSend', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/equipment/model/index.ts b/src/api/apps/bc/equipment/model/index.ts new file mode 100644 index 0000000..729d617 --- /dev/null +++ b/src/api/apps/bc/equipment/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 设备 + */ +export interface BcEquipment { + bcEquipmentId?: number; + equipmentName?: string; + equipmentCode?: string; + gear?: number; + describe?: string; + sortNumber?: number; + status?: number; + comments?: string; + createTime?: string; + tenantId?: number; + content?: string; + merchantCode?: string; +} + +/** + * 订单搜索条件 + */ +export interface BcEquipmentParam extends PageParam { + bcEquipmentId?: number; + equipmentName?: string; + equipmentCode?: string; + status?: number; + merchantCode?: string; + userId?: number; +} diff --git a/src/api/apps/bc/export/index.ts b/src/api/apps/bc/export/index.ts new file mode 100644 index 0000000..d46ed80 --- /dev/null +++ b/src/api/apps/bc/export/index.ts @@ -0,0 +1,107 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BcExport, BcExportParam } from '@/api/apps/bc/export/model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询计划 + */ +export async function pageBcExport(params: BcExportParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-export/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询计划列表 + */ +export async function listBcExport(params?: BcExportParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-export', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加计划 + */ +export async function addBcExport(data: BcExport) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-export', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改计划 + */ +export async function updateBcExport(data: BcExport) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-export', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定计划 + */ +export async function bindBcExport(data: BcExport) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-export/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除计划 + */ +export async function removeBcExport(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-export/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除计划 + */ +export async function removeBatchBcExport(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-export/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/export/model/index.ts b/src/api/apps/bc/export/model/index.ts new file mode 100644 index 0000000..2f25945 --- /dev/null +++ b/src/api/apps/bc/export/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +export interface BcExport { + exportId?: number; + organizationName?: string; + nickname?: string; + breakfastPost?: number; + breakfastSign?: number; + lunchPost?: number; + lunchSign?: number; + dinnerPost?: number; + dinnerSign?: number; + gear10?: number; + gear20?: number; + signGear10?: number; + signGear20?: number; + createTime?: string; + tenantId?: number; + expendMoney?: number; + userId?: number; + lunchPostText?: string; + lunchSignText?: string; +} + +/** + * 搜索条件 + */ +export interface BcExportParam extends PageParam { + exportId?: number; + organizationName?: string; + organizationId?: number; + dayTime?: string; + week?: number; + status?: number; + userId?: number; + deliveryTime?: string; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTimeStart?: string; + deliveryTimeEnd?: string; +} diff --git a/src/api/apps/bc/food/index.ts b/src/api/apps/bc/food/index.ts new file mode 100644 index 0000000..1fd5ba8 --- /dev/null +++ b/src/api/apps/bc/food/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BCFood, BCFoodParam } from '@/api/apps/bc/food/model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询计划 + */ +export async function pageBCFood(params: BCFoodParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-food/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询计划列表 + */ +export async function listBCFood(params?: BCFoodParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-food', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加计划 + */ +export async function addBCFood(data: BCFood) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-food', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改计划 + */ +export async function updateBCFood(data: BCFood) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-food', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定计划 + */ +export async function bindBCFood(data: BCFood) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-food/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除计划 + */ +export async function removeBCFood(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-food/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除计划 + */ +export async function removeBatchBCFood(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-food/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/food/model/index.ts b/src/api/apps/bc/food/model/index.ts new file mode 100644 index 0000000..85ae0ef --- /dev/null +++ b/src/api/apps/bc/food/model/index.ts @@ -0,0 +1,21 @@ +import type { PageParam } from '@/api'; + +export interface BCFood { + temporaryId?: number; + userId?: number; + parentId?: number; + sortNumber?: number; + status?: number; + comments?: string; + expirationTime?: string; + createTime?: string; + tenantId?: number; +} + +/** + * 搜索条件 + */ +export interface BCFoodParam extends PageParam { + status?: number; + userId?: number; +} diff --git a/src/api/apps/bc/goods/category/index.ts b/src/api/apps/bc/goods/category/index.ts new file mode 100644 index 0000000..b93b224 --- /dev/null +++ b/src/api/apps/bc/goods/category/index.ts @@ -0,0 +1,114 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Category, CategoryParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; +// const merchantCode = String(localStorage.getItem('MerchantCode')); + +/** + * 分页查询商品分类 + */ +export async function pageCategory(params: CategoryParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品分类列表 + */ +export async function listCategory(params?: CategoryParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品分类 + */ +export async function addCategory(data: Category) { + const res = await request.post>( + OPEN_API_URL + '/shop/category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品分类 + */ +export async function updateCategory(data: Category) { + const res = await request.put>( + OPEN_API_URL + '/shop/category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品分类 + */ +export async function removeCategory(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品分类 + */ +export async function removeBatchCategory(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/shop/category/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/goods/category/model/index.ts b/src/api/apps/bc/goods/category/model/index.ts new file mode 100644 index 0000000..5f651b7 --- /dev/null +++ b/src/api/apps/bc/goods/category/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 商品分类 + */ +export interface Category { + // 商品分类id + categoryId?: number; + // 商品分类 + title?: string; + // 商品分类图片 + image?: string; + // 上级分类 + parentId?: number; + // 是否隐藏 + hide?: number; + // 封面图 + avatar?: string; + // 用户ID + userId?: string; + // 所属门店ID + shopId?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // + key?: number; + // + merchantCode?: string; + value?: any; + // 子菜单 + children?: Category[]; +} + +/** + * 商品分类搜索条件 + */ +export interface CategoryParam extends PageParam { + title?: string; + categoryId?: number; + parentId?: number; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/apps/bc/goods/comment/index.ts b/src/api/apps/bc/goods/comment/index.ts new file mode 100644 index 0000000..8023c30 --- /dev/null +++ b/src/api/apps/bc/goods/comment/index.ts @@ -0,0 +1,91 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Comment, CommentParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询商品评价 + */ +export async function pageComments(params: CommentParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/comment/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品评价列表 + */ +export async function listComments(params?: CommentParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/comment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品评价 + */ +export async function addComment(data: Comment) { + const res = await request.post>( + OPEN_API_URL + '/shop/comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品评价 + */ +export async function updateComment(data: Comment) { + const res = await request.put>( + OPEN_API_URL + '/shop/comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品评价 + */ +export async function removeComment(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品评价 + */ +export async function removeComments(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/goods/comment/model/index.ts b/src/api/apps/bc/goods/comment/model/index.ts new file mode 100644 index 0000000..4212cb0 --- /dev/null +++ b/src/api/apps/bc/goods/comment/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api'; + +/** + * 商品评价 + */ +export interface Comment { + // 商品评价id + commentId?: number; + // 商品评价标识 + commentCode?: string; + // 商品评价名称 + commentName?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; +} + +/** + * 商品评价搜索条件 + */ +export interface CommentParam extends PageParam { + type?: string; + goodsName?: string; + goodsCode?: string; + userId?: string; + score?: number; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/apps/bc/goods/index.ts b/src/api/apps/bc/goods/index.ts new file mode 100644 index 0000000..ce6faeb --- /dev/null +++ b/src/api/apps/bc/goods/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Goods, GoodsParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询商品 + */ +export async function pageGoods(params: GoodsParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品列表 + */ +export async function listGoods(params?: GoodsParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品 + */ +export async function addGoods(data: Goods) { + const res = await request.post>( + OPEN_API_URL + '/shop/goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品 + */ +export async function updateGoods(data: Goods) { + const res = await request.put>( + OPEN_API_URL + '/shop/goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品 + */ +export async function removeGoods(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品 + */ +export async function removeBatchGoods(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/shop/goods/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/goods/model/index.ts b/src/api/apps/bc/goods/model/index.ts new file mode 100644 index 0000000..6768089 --- /dev/null +++ b/src/api/apps/bc/goods/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 商品 + */ +export interface Goods { + goodsType?: number; + goodsId?: number; + goodsName?: string; + goodsCode?: string; + period?: string; + gear?: number; + categoryId?: number; + categoryName?: string; + fullName?: string; + logo?: string; + describe?: string; + logoImageId?: number; + isRecycle?: number; + sortNumber?: number; + status?: number; + comments?: string; + createTime?: string; + tenantId?: number; + specType?: number; + deliveryType?: number; + content?: string; + deliveryId?: number; + image?: string; + files?: string; + goodsPriceMin?: number; + linePriceMin?: number; + linePriceMax?: number; + sellingPoint?: string; + purchaseLimit?: number; + deductStockType?: number; + salesActual?: number; + goodsWeight?: number; + stockTotal?: number; +} + +/** + * 订单搜索条件 + */ +export interface GoodsParam extends PageParam { + goodsId?: number; + goodsName?: string; + goodsCode?: string; + listType?: string; + status?: number; + stockTotal?: number; + merchantCode?: string; +} diff --git a/src/api/apps/bc/goods/service/index.ts b/src/api/apps/bc/goods/service/index.ts new file mode 100644 index 0000000..3418b36 --- /dev/null +++ b/src/api/apps/bc/goods/service/index.ts @@ -0,0 +1,91 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Service, ServiceParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询服务承诺 + */ +export async function pageServices(params: ServiceParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/goods-service/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询服务承诺列表 + */ +export async function listServices(params?: ServiceParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/goods-service', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加服务承诺 + */ +export async function addService(data: Service) { + const res = await request.post>( + OPEN_API_URL + '/shop/goods-service', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改服务承诺 + */ +export async function updateService(data: Service) { + const res = await request.put>( + OPEN_API_URL + '/shop/goods-service', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除服务承诺 + */ +export async function removeService(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/goods-service/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除服务承诺 + */ +export async function removeServices(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/goods-service/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/goods/service/model/index.ts b/src/api/apps/bc/goods/service/model/index.ts new file mode 100644 index 0000000..23019f2 --- /dev/null +++ b/src/api/apps/bc/goods/service/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 服务承诺 + */ +export interface Service { + // 服务承诺id + serviceId?: number; + // 服务承诺名称 + name?: string; + // 描述 + summary?: string; + // 是否默认勾选 + isDefault?: number; + // 排序 + sortNumber?: number; + // 创建时间 + createTime?: string; +} + +/** + * 服务承诺搜索条件 + */ +export interface ServiceParam extends PageParam { + serviceId?: string; + name?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/apps/bc/order/goods/index.ts b/src/api/apps/bc/order/goods/index.ts new file mode 100644 index 0000000..b1bc569 --- /dev/null +++ b/src/api/apps/bc/order/goods/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OrderGoods, OrderGoodsParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询订单商品 + */ +export async function pageOrderGoods(params: OrderGoodsParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/order-goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单商品列表 + */ +export async function listOrderGoods(params?: OrderGoodsParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/order-goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单商品 + */ +export async function addOrderGoods(data: OrderGoods) { + const res = await request.post>( + OPEN_API_URL + '/shop/order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单商品 + */ +export async function updateOrderGoods(data: OrderGoods) { + const res = await request.put>( + OPEN_API_URL + '/shop/order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单商品 + */ +export async function removeOrderGoods(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order-goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单商品 + */ +export async function removeBatchOrderGoods(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order-goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/shop/order-goods/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/order/goods/model/index.ts b/src/api/apps/bc/order/goods/model/index.ts new file mode 100644 index 0000000..2255eb8 --- /dev/null +++ b/src/api/apps/bc/order/goods/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +export interface OrderGoods { + // 订单id + orderGoodsId?: number; + // 创建时间 + createTime?: string; + startTime?: string; + // 状态 + status?: string; + deliveryStatus?: number; + // 用户ID + userId?: any; + totalNum?: any; + organizationName?: string; + nickname?: ''; + breakfastPostUsers?: ''; + breakfastSignUsers?: ''; + lunchPostUsers?: ''; + lunchSignUsers?: ''; + dinnerPostUsers?: ''; + dinnerSignUsers?: ''; +} + +/** + * 订单搜索条件 + */ +export interface OrderGoodsParam extends PageParam { + keywords?: string; + deliveryTime?: string; + categoryId?: number; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTimeStart?: string; + deliveryTimeEnd?: string; + payStatus?: number; + gear?: number; + week?: number; + deliveryStatus?: number; + organizationId?: number; + organizationName?: string; +} diff --git a/src/api/apps/bc/order/index.ts b/src/api/apps/bc/order/index.ts new file mode 100644 index 0000000..65ce870 --- /dev/null +++ b/src/api/apps/bc/order/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Order, OrderParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询订单 + */ +export async function pageOrder(params: OrderParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listOrder(params?: OrderParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getOrder(id: number) { + const res = await request.get>( + OPEN_API_URL + '/shop/order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addOrder(data: Order) { + const res = await request.post>( + OPEN_API_URL + '/shop/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateOrder(data: Order) { + const res = await request.put>( + OPEN_API_URL + '/shop/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeOrder(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchOrder(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/shop/order/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/order/model/index.ts b/src/api/apps/bc/order/model/index.ts new file mode 100644 index 0000000..dd23194 --- /dev/null +++ b/src/api/apps/bc/order/model/index.ts @@ -0,0 +1,95 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +export interface Order { + // 订单id + orderId?: number; + // 订单类型 + orderType?: string; + // 订单来源 + orderSource?: string; + // 来源记录ID + orderSourceId?: number; + // 来源记录的参数 (json格式) + orderSourceData?: string; + rentOrderId?: number; + // 订单编号 + orderNo?: string; + // 订单名称 + orderName?: string; + // 订单头像 + orderAvatar?: string; + // 座机电话 + orderPhone?: string; + // 手机号码 + orderMobile?: string; + // 联系人 + orderContacts?: string; + // 联系地址 + orderAddress?: string; + // 跟进状态 + progress?: string; + // 排序 + sortNumber?: number; + // 配送方式 + deliveryType?: string; + // 付款状态 + payStatus?: number; + expressPrice?: string; + // 付款金额 + payPrice?: number; + payMethod?: string; + tradeId?: string; + goodsId?: number; + // 总金额 + totalPrice?: number; + // 发货状态 + deliveryStatus?: number; + // 收货状态 + receiptStatus?: number; + // 订单状态 + orderStatus?: number; + // 备注 + comments?: string; + buyerRemark?: string; + // 创建时间 + createTime?: string; + startTime?: string; + deliveryTime?: string; + expirationTime?: string; + // 状态 + status?: string; + // 用户ID + userId?: any; + nickname?: string; +} + +/** + * 订单搜索条件 + */ +export interface OrderParam extends PageParam { + keywords?: string; + orderName?: string; + orderNo?: string; + orderType?: string; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTime?: string; + orderCategory?: string; + progress?: string; + orderSource?: string; + betweenTime?: any; + userId?: string; + week?: number; + payStatus?: number; + rentOrderId?: number; + deliveryStatus?: number; + receiptStatus?: number; + orderStatus?: number; + isTemporary?: number; + isRenew?: number; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/apps/bc/order/refund/index.ts b/src/api/apps/bc/order/refund/index.ts new file mode 100644 index 0000000..ec1e314 --- /dev/null +++ b/src/api/apps/bc/order/refund/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OrderRefund, OrderRefundParam } from './model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 分页查询退货单 + */ +export async function pageOrderRefund(params: OrderRefundParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/order-refund/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询退货单列表 + */ +export async function listOrderRefund(params?: OrderRefundParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/order-refund', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询退货单 + */ +export async function getOrderRefund(id: number) { + const res = await request.get>( + OPEN_API_URL + '/shop/order-refund/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加退货单 + */ +export async function addOrderRefund(data: OrderRefund) { + const res = await request.post>( + OPEN_API_URL + '/shop/order-refund', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改退货单 + */ +export async function updateOrderRefund(data: OrderRefund) { + const res = await request.put>( + OPEN_API_URL + '/shop/order-refund', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除退货单 + */ +export async function removeOrderRefund(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order-refund/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除退货单 + */ +export async function removeBatchOrderRefund(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/order-refund/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + OPEN_API_URL + '/shop/order-refund/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/order/refund/model/index.ts b/src/api/apps/bc/order/refund/model/index.ts new file mode 100644 index 0000000..d4174d0 --- /dev/null +++ b/src/api/apps/bc/order/refund/model/index.ts @@ -0,0 +1,38 @@ +import type { PageParam } from '@/api'; + +/** + * 退货订单 + */ +export interface OrderRefund { + orderRefundId?: number; + orderId?: number; + orderGoodsId?: number; + userId?: number; + type?: number; + applyDesc?: string; + auditStatus?: number; + refuseDesc?: string; + refundMoney?: number; + isUserSend?: number; + sendTime?: string; + expressId?: string; + expressNo?: string; + isReceipt?: number; + shopId?: number; + sortNumber?: number; + comments?: string; + status?: number; + merchantCode?: string; + createTime?: string; + updateTIme?: string; + tenantId?: string; +} + +/** + * 退货订单搜索条件 + */ +export interface OrderRefundParam extends PageParam { + orderRefundId?: number; + orderId?: number; + orderGoodsId?: number; +} diff --git a/src/api/apps/bc/plan/index.ts b/src/api/apps/bc/plan/index.ts new file mode 100644 index 0000000..e874d00 --- /dev/null +++ b/src/api/apps/bc/plan/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BCPlan, BCPlanParam } from '@/api/apps/bc/plan/model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询计划 + */ +export async function pageBCPlan(params: BCPlanParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-plan/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询计划列表 + */ +export async function listBCPlan(params?: BCPlanParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-plan', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加计划 + */ +export async function addBCPlan(data: BCPlan) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-plan', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改计划 + */ +export async function updateBCPlan(data: BCPlan) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-plan', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定计划 + */ +export async function bindBCPlan(data: BCPlan) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-plan/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除计划 + */ +export async function removeBCPlan(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-plan/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除计划 + */ +export async function removeBatchBCPlan(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-plan/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/plan/model/index.ts b/src/api/apps/bc/plan/model/index.ts new file mode 100644 index 0000000..0795676 --- /dev/null +++ b/src/api/apps/bc/plan/model/index.ts @@ -0,0 +1,28 @@ +import type { PageParam } from '@/api'; + +export interface BCPlan { + bcPlanId?: number; + dayTime?: any; + oldTime?: string; + type?: string; + userId?: number; + goodsIds?: any; + status?: number; + period?: string; + comments?: string; + createTime?: string; + tenantId?: number; + isRepeat?: number; +} + +/** + * 搜索条件 + */ +export interface BCPlanParam extends PageParam { + bcPlanId?: number; + dayTime?: string; + week?: number; + status?: number; + userId?: number; + oldTime?: string; +} diff --git a/src/api/apps/bc/recharge/export/index.ts b/src/api/apps/bc/recharge/export/index.ts new file mode 100644 index 0000000..b63c4bc --- /dev/null +++ b/src/api/apps/bc/recharge/export/index.ts @@ -0,0 +1,109 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + RechargeOrder, + RechargeOrderParam +} from '@/api/user/recharge/export/model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询充值计划 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值计划列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值计划 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + OPEN_API_URL + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值计划 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + OPEN_API_URL + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定充值计划 + */ +export async function bindRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + OPEN_API_URL + '/shop/recharge-order/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值计划 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值计划 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/recharge/export/model/index.ts b/src/api/apps/bc/recharge/export/model/index.ts new file mode 100644 index 0000000..2b91f7d --- /dev/null +++ b/src/api/apps/bc/recharge/export/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +export interface RechargeOrder { + orderId?: number; + organizationId?: number; + organizationName?: string; + nickname?: string; + payPrice?: number; + comments?: string; + createTime?: string; + tenantId?: number; + expendMoney?: string; + userId?: number; +} + +/** + * 搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + exportId?: number; + organizationName?: string; + organizationId?: number; + dayTime?: string; + week?: number; + status?: number; + userId?: number; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTimeStart?: string; + deliveryTimeEnd?: string; +} diff --git a/src/api/apps/bc/recharge/order/index.ts b/src/api/apps/bc/recharge/order/index.ts new file mode 100644 index 0000000..1ba771b --- /dev/null +++ b/src/api/apps/bc/recharge/order/index.ts @@ -0,0 +1,134 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { RechargeOrder, RechargeOrderParam } from './model/index'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 充值 + */ +export async function recharge(data: RechargeOrder) { + const res = await request.post>( + OPEN_API_URL + '/shop/recharge-order/recharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询充值记录 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + OPEN_API_URL + '/shop/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值记录列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + OPEN_API_URL + '/shop/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询充值记录 + */ +export async function getRechargeOrder(id: number) { + const res = await request.get>( + OPEN_API_URL + '/shop/recharge-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值记录 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + OPEN_API_URL + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值记录 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + OPEN_API_URL + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值记录 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/shop/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值记录 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/shop/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量充值操作 + */ +export async function batchRecharge(data: RechargeOrder[]) { + const res = await request.post>( + OPEN_API_URL + '/shop/recharge-order/batchRecharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/recharge/order/model/index.ts b/src/api/apps/bc/recharge/order/model/index.ts new file mode 100644 index 0000000..051f0a3 --- /dev/null +++ b/src/api/apps/bc/recharge/order/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 充值记录 + */ +export interface RechargeOrder { + orderId?: number; + userId?: number; + scene?: number; + orderNo?: string; + money?: string; + payPrice?: number; + organizationId?: number; + rechargeType?: number; + describe?: string; + remark?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; + balance?: number; +} + +/** + * 用户搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/apps/bc/temporary/index.ts b/src/api/apps/bc/temporary/index.ts new file mode 100644 index 0000000..96edd2b --- /dev/null +++ b/src/api/apps/bc/temporary/index.ts @@ -0,0 +1,109 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + BCTemporary, + BCTemporaryParam +} from '@/api/apps/bc/temporary/model'; +import { OPEN_API_URL } from '@/config/setting'; +/** + * 分页查询设备 + */ +export async function pageBCTemporary(params: BCTemporaryParam) { + const res = await request.get>>( + OPEN_API_URL + '/apps/bc-temporary/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设备列表 + */ +export async function listBCTemporary(params?: BCTemporaryParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-temporary', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设备 + */ +export async function addBCTemporary(data: BCTemporary) { + const res = await request.post>( + OPEN_API_URL + '/apps/bc-temporary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设备 + */ +export async function updateBCTemporary(data: BCTemporary) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-temporary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定设备 + */ +export async function bindBCTemporary(data: BCTemporary) { + const res = await request.put>( + OPEN_API_URL + '/apps/bc-temporary/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设备 + */ +export async function removeBCTemporary(id?: number) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-temporary/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设备 + */ +export async function removeBatchBCTemporary(data: (number | undefined)[]) { + const res = await request.delete>( + OPEN_API_URL + '/apps/bc-temporary/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/bc/temporary/model/index.ts b/src/api/apps/bc/temporary/model/index.ts new file mode 100644 index 0000000..6cdc69b --- /dev/null +++ b/src/api/apps/bc/temporary/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 代理报餐 + */ +export interface BCTemporary { + temporaryId?: number; + userId?: number; + parentId?: number; + sortNumber?: number; + applyStatus?: number; + status?: number; + comments?: string; + expirationTime?: string; + createTime?: string; + tenantId?: number; +} + +/** + * 订单搜索条件 + */ +export interface BCTemporaryParam extends PageParam { + status?: number; + userId?: number; +} diff --git a/src/api/apps/statistics/index.ts b/src/api/apps/statistics/index.ts new file mode 100644 index 0000000..559d855 --- /dev/null +++ b/src/api/apps/statistics/index.ts @@ -0,0 +1,46 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { Order, OrderParam } from '@/api/apps/bc/order/model'; +import { OPEN_API_URL } from '@/config/setting'; + +/** + * 菜品预定统计 + */ +export async function countOrderGoods(params: any) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-statistics/baoCanUsers', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function repairData(params?: OrderParam) { + const res = await request.get>( + OPEN_API_URL + '/apps/bc-statistics/repairData', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function pageUserLog(params: any) { + const res = await request.get>>( + 'http://127.0.0.1:10051/api/shop/user-balance-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/apps/statistics/model/index.ts b/src/api/apps/statistics/model/index.ts new file mode 100644 index 0000000..d83ef19 --- /dev/null +++ b/src/api/apps/statistics/model/index.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@/api'; + +/** + * 链接 + */ +export interface Link { + +} + +/** + * 链接搜索条件 + */ +export interface LinkParam extends PageParam { + +} diff --git a/src/api/booking/category/index.ts b/src/api/booking/category/index.ts new file mode 100644 index 0000000..9d2e3ba --- /dev/null +++ b/src/api/booking/category/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Category, CategoryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询课程分类 + */ +export async function pageCategory(params: CategoryParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询课程分类列表 + */ +export async function listCategory(params?: CategoryParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加课程分类 + */ +export async function addCategory(data: Category) { + const res = await request.post>( + MODULES_API_URL + '/booking/category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改课程分类 + */ +export async function updateCategory(data: Category) { + const res = await request.put>( + MODULES_API_URL + '/booking/category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除课程分类 + */ +export async function removeCategory(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除课程分类 + */ +export async function removeBatchCategory(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询课程分类 + */ +export async function getCategory(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/category/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/booking/category/model/index.ts b/src/api/booking/category/model/index.ts new file mode 100644 index 0000000..30c79ca --- /dev/null +++ b/src/api/booking/category/model/index.ts @@ -0,0 +1,57 @@ +import type { PageParam } from '@/api'; + +/** + * 课程分类 + */ +export interface Category { + // 商品分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0列表 1单页 2外链 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 商品数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 课程分类搜索条件 + */ +export interface CategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/booking/lesson/index.ts b/src/api/booking/lesson/index.ts new file mode 100644 index 0000000..139445c --- /dev/null +++ b/src/api/booking/lesson/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Lesson, LessonParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询课程管理 + */ +export async function pageLesson(params: LessonParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/lesson/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询课程管理列表 + */ +export async function listLesson(params?: LessonParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/lesson', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加课程管理 + */ +export async function addLesson(data: Lesson) { + const res = await request.post>( + MODULES_API_URL + '/booking/lesson', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改课程管理 + */ +export async function updateLesson(data: Lesson) { + const res = await request.put>( + MODULES_API_URL + '/booking/lesson', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除课程管理 + */ +export async function removeLesson(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/lesson/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除课程管理 + */ +export async function removeBatchLesson(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/lesson/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询课程管理 + */ +export async function getLesson(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/lesson/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/booking/lesson/model/index.ts b/src/api/booking/lesson/model/index.ts new file mode 100644 index 0000000..28c7209 --- /dev/null +++ b/src/api/booking/lesson/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 课程管理 + */ +export interface Lesson { + // ID + lessonId?: number; + // 课程名称 + lessonName?: string; + // 图标 + image?: string; + // 分类ID + categoryId?: number; + // 老师ID + teacherId?: number; + // 商户ID + merchantId?: number; + // 上课时间 + startTime?: string; + // 报名人数上限 + maxNumber?: number; + // 上课地点 + address?: string; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 课程管理搜索条件 + */ +export interface LessonParam extends PageParam { + lessonId?: number; + keywords?: string; +} diff --git a/src/api/booking/teacher/index.ts b/src/api/booking/teacher/index.ts new file mode 100644 index 0000000..5dd0879 --- /dev/null +++ b/src/api/booking/teacher/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Teacher, TeacherParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询老师管理 + */ +export async function pageTeacher(params: TeacherParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/teacher/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询老师管理列表 + */ +export async function listTeacher(params?: TeacherParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/teacher', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加老师管理 + */ +export async function addTeacher(data: Teacher) { + const res = await request.post>( + MODULES_API_URL + '/booking/teacher', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改老师管理 + */ +export async function updateTeacher(data: Teacher) { + const res = await request.put>( + MODULES_API_URL + '/booking/teacher', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除老师管理 + */ +export async function removeTeacher(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/teacher/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除老师管理 + */ +export async function removeBatchTeacher(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/teacher/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询老师管理 + */ +export async function getTeacher(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/teacher/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/booking/teacher/model/index.ts b/src/api/booking/teacher/model/index.ts new file mode 100644 index 0000000..0bf4d4e --- /dev/null +++ b/src/api/booking/teacher/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 老师管理 + */ +export interface Teacher { + // ID + teacherId?: number; + // 老师姓名 + teacherName?: string; + // 老师照片 + image?: string; + // 老师介绍 + content?: string; + // 商户ID + merchantId?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 老师管理搜索条件 + */ +export interface TeacherParam extends PageParam { + teacherId?: number; + keywords?: string; +} diff --git a/src/api/cms/ad/index.ts b/src/api/cms/ad/index.ts new file mode 100644 index 0000000..356d5fd --- /dev/null +++ b/src/api/cms/ad/index.ts @@ -0,0 +1,140 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Ad, AdParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询广告位 + */ +export async function pageAd(params: AdParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/ad/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询广告位列表 + */ +export async function listAd(params?: AdParam) { + const res = await request.get>(MODULES_API_URL + '/cms/ad', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加广告位 + */ +export async function addAd(data: Ad) { + const res = await request.post>( + MODULES_API_URL + '/cms/ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改广告位 + */ +export async function updateAd(data: Ad) { + const res = await request.put>( + MODULES_API_URL + '/cms/ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除广告位 + */ +export async function removeAd(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/ad/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除广告位 + */ +export async function removeBatchAd(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/ad/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateAdStatus(adId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/ad/status', + { + adId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询广告位 + */ +export async function getAd(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/ad/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/ad/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/ad/model/index.ts b/src/api/cms/ad/model/index.ts new file mode 100644 index 0000000..370f259 --- /dev/null +++ b/src/api/cms/ad/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 广告位 + */ +export interface Ad { + adId?: number; + name?: string; + adType?: string; + type?: string; + width?: string; + height?: string; + path?: string; + images?: string; + userId?: number; + sortNumber?: number; + comments?: string; + status?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 广告位搜索条件 + */ +export interface AdParam extends PageParam { + adId?: string; + name?: number; + type?: number; + userId?: number; +} diff --git a/src/api/cms/article/index.ts b/src/api/cms/article/index.ts new file mode 100644 index 0000000..2dcf6ee --- /dev/null +++ b/src/api/cms/article/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Article, ArticleParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文章 + */ +export async function pageArticle(params: ArticleParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/article/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章列表 + */ +export async function listArticle(params?: ArticleParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/article', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章 + */ +export async function addArticle(data: Article) { + const res = await request.post>( + MODULES_API_URL + '/cms/article', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章 + */ +export async function updateArticle(data: Article) { + const res = await request.put>( + MODULES_API_URL + '/cms/article', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章 + */ +export async function removeArticle(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/article/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章 + */ +export async function removeBatchArticle(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/article/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateArticleStatus(articleId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/article/status', + { + articleId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章 + */ +export async function getArticle(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/article/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/article/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/article/model/index.ts b/src/api/cms/article/model/index.ts new file mode 100644 index 0000000..0486f45 --- /dev/null +++ b/src/api/cms/article/model/index.ts @@ -0,0 +1,74 @@ +import type { PageParam } from '@/api'; + +/** + * 文章 + */ +export interface Article { + // 文章id + articleId?: number; + // 文章标题 + title?: string; + // 分类类型 + type?: number; + // 展现方式 + showType?: any; + // 文章类型 + categoryId?: number; + // 封面图 + image?: string; + // 附件 + files?: string; + // 缩列图 + thumbnail?: string; + // 视频地址 + video?: string; + // 上传的文件类型 + accept?: string; + // 来源 + source?: string; + // 文章内容 + content?: string; + // 虚拟阅读量 + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 用户ID + userId?: number; + // 用户昵称 + nickname?: string; + // 账号 + username?: string; + // 用户头像 + userAvatar?: string; + // 所属门店ID + shopId?: number; + // + likes?: number; + // 排序 + sortNumber?: any; + // 备注 + comments?: any; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 文章搜索条件 + */ +export interface ArticleParam extends PageParam { + title?: string; + articleId?: number; + categoryId?: number; + status?: string; + sortNumber?: string; + createTime?: string; + username?: string; + nickname?: string; + userId?: number; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/cms/category/index.ts b/src/api/cms/category/index.ts new file mode 100644 index 0000000..1bceeea --- /dev/null +++ b/src/api/cms/category/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ArticleCategory, ArticleCategoryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文章分类 + */ +export async function pageArticleCategory(params: ArticleCategoryParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/article-category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章分类列表 + */ +export async function listArticleCategory(params?: ArticleCategoryParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/article-category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章分类 + */ +export async function getArticleCategory(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/article-category/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章分类 + */ +export async function addArticleCategory(data: ArticleCategory) { + const res = await request.post>( + MODULES_API_URL + '/cms/article-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章分类 + */ +export async function updateArticleCategory(data: ArticleCategory) { + const res = await request.put>( + MODULES_API_URL + '/cms/article-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章分类 + */ +export async function removeArticleCategory(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/article-category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章分类 + */ +export async function removeBatchArticleCategory(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/article-category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/article-category/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/category/model/index.ts b/src/api/cms/category/model/index.ts new file mode 100644 index 0000000..4695543 --- /dev/null +++ b/src/api/cms/category/model/index.ts @@ -0,0 +1,78 @@ +import type { PageParam } from '@/api'; + +/** + * 文章分类 + */ +export interface ArticleCategory { + // 文章分类id + categoryId?: number; + // 分类类型 0列表 1页面 2链接 + type?: number; + // 文章分类 + title?: string; + // 文章分类图片 + image?: string; + // 路由/链接 + path?: string; + // 组件路径 + component?: string; + // 页面ID + pageId?: number; + // 页面名称 + pageName?: string; + // 上级分类 + parentId?: number; + // 封面图 + avatar?: string; + // 用户ID + userId?: string; + // 所属门店ID + shopId?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 是否显示在首页 + showIndex?: number; + // 是否推荐 + recommend?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + key?: number; + value?: number; + // 子菜单 + children?: ArticleCategory[]; + tempPath?: string; + disabled?: boolean; + tenantId?: number; +} + +/** + * 整理分类用于网站导航栏 + */ +export interface ArrangeCategory { + categoryId?: number; + type?: number; + title?: string; + parentId?: number; + avatar?: string; + path?: string; + component?: string; + pageId?: number; + sortNumber?: number; + comments?: string; + status?: number; + children?: ArrangeCategory[]; +} + +/** + * 文章分类搜索条件 + */ +export interface ArticleCategoryParam extends PageParam { + title?: string; + categoryId?: number; +} diff --git a/src/api/cms/design/index.ts b/src/api/cms/design/index.ts new file mode 100644 index 0000000..6631dde --- /dev/null +++ b/src/api/cms/design/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Design, DesignParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询页面设计 + */ +export async function pageDesign(params: DesignParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/design/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询页面设计列表 + */ +export async function listDesign(params?: DesignParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/design', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加页面设计 + */ +export async function addDesign(data: Design) { + const res = await request.post>( + MODULES_API_URL + '/cms/design', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改页面设计 + */ +export async function updateDesign(data: Design) { + const res = await request.put>( + MODULES_API_URL + '/cms/design', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除页面设计 + */ +export async function removeDesign(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/design/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除页面设计 + */ +export async function removeBatchDesign(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/design/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateDesignStatus(designId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/design/status', + { + designId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询页面设计 + */ +export async function getDesign(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/design/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/design/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/design/model/index.ts b/src/api/cms/design/model/index.ts new file mode 100644 index 0000000..650cad7 --- /dev/null +++ b/src/api/cms/design/model/index.ts @@ -0,0 +1,50 @@ +import type { PageParam } from '@/api'; + +/** + * 页面 + */ +export interface Design { + pageId?: number; + name?: string; + keywords?: string; + description?: string; + path?: string; + component?: string; + photo?: string; + content?: string; + // 类型 + type?: string; + // 宽 + width?: string; + // 高 + height?: string; + // 附件 + images?: string; + // 用户ID + userId?: number; + // 设为首页 + home?: number; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // 页面布局 + layout?: string; + backgroundColor?: string; +} + +/** + * 页面搜索条件 + */ +export interface DesignParam extends PageParam { + pageId?: string; + name?: number; + type?: number; + userId?: number; +} diff --git a/src/api/cms/docs-book/index.ts b/src/api/cms/docs-book/index.ts new file mode 100644 index 0000000..a764abe --- /dev/null +++ b/src/api/cms/docs-book/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DocsBook, DocsBookParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询书籍 + */ +export async function pageDocsBook(params: DocsBookParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/docs-book/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询书籍列表 + */ +export async function listDocsBook(params?: DocsBookParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-book', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加书籍 + */ +export async function addDocsBook(data: DocsBook) { + const res = await request.post>( + MODULES_API_URL + '/cms/docs-book', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改书籍 + */ +export async function updateDocsBook(data: DocsBook) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs-book', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除书籍 + */ +export async function removeDocsBook(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs-book/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除书籍 + */ +export async function removeBatchDocsBook(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs-book/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateDocsBookStatus(docsId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs-book/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询书籍 + */ +export async function getDocsBook(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-book/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-book/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/docs-book/model/index.ts b/src/api/cms/docs-book/model/index.ts new file mode 100644 index 0000000..ddfeff0 --- /dev/null +++ b/src/api/cms/docs-book/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 书籍内容 + */ +export interface DocsBook { + // 自增ID + bookId?: number; + // 名称 + name?: string; + // 书籍标识 + code?: string; + // 封面图 + photo?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; +} + +/** + * 书籍搜索条件 + */ +export interface DocsBookParam extends PageParam { + bookId?: number; + docsId?: number; +} diff --git a/src/api/cms/docs-content/index.ts b/src/api/cms/docs-content/index.ts new file mode 100644 index 0000000..b840e2b --- /dev/null +++ b/src/api/cms/docs-content/index.ts @@ -0,0 +1,146 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DocsContent, DocsContentParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文档 + */ +export async function pageDocsContent(params: DocsContentParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/docs-content/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文档列表 + */ +export async function listDocsContent(params?: DocsContentParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-content', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文档 + */ +export async function addDocsContent(data: DocsContent) { + const res = await request.post>( + MODULES_API_URL + '/cms/docs-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文档 + */ +export async function updateDocsContent(data: DocsContent) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文档 + */ +export async function removeDocsContent(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs-content/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文档 + */ +export async function removeBatchDocsContent(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs-content/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateDocsContentStatus( + docsId?: number, + status?: number +) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs-content/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文档 + */ +export async function getDocsContent(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-content/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs-content/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/docs-content/model/index.ts b/src/api/cms/docs-content/model/index.ts new file mode 100644 index 0000000..418108b --- /dev/null +++ b/src/api/cms/docs-content/model/index.ts @@ -0,0 +1,36 @@ +import type { PageParam } from '@/api'; + +/** + * 文档内容 + */ +export interface DocsContent { + // 自增ID + id?: number; + // 文档内容id + docsId?: number; + // 文档内容 + content?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // + key?: number; + // + value?: number; +} + +/** + * 文档内容搜索条件 + */ +export interface DocsContentParam extends PageParam { + id?: number; + docsId?: number; + content?: string; +} diff --git a/src/api/cms/docs/index.ts b/src/api/cms/docs/index.ts new file mode 100644 index 0000000..d67672c --- /dev/null +++ b/src/api/cms/docs/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Docs, DocsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文档 + */ +export async function pageDocs(params: DocsParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/docs/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文档列表 + */ +export async function listDocs(params?: DocsParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文档 + */ +export async function addDocs(data: Docs) { + const res = await request.post>( + MODULES_API_URL + '/cms/docs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文档 + */ +export async function updateDocs(data: Docs) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文档 + */ +export async function removeDocs(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文档 + */ +export async function removeBatchDocs(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/docs/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateDocsStatus(docsId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/docs/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文档 + */ +export async function getDocs(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/docs/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/docs/model/index.ts b/src/api/cms/docs/model/index.ts new file mode 100644 index 0000000..b1c1e7b --- /dev/null +++ b/src/api/cms/docs/model/index.ts @@ -0,0 +1,64 @@ +import type { PageParam } from '@/api'; + +/** + * 文档 + */ +export interface Docs { + // 文档id + docsId?: number; + // 书籍ID + bookId?: number; + // 书籍标识 + code?: string; + // 文档标题 + title?: string; + // 上级分类 + parentId?: number; + // 上级分类名称 + parentName?: string; + // 文档内容 + content?: string; + // 虚拟阅读量 + virtualViews?: string; + // 实际阅读量 + actualViews?: string; + // 用户ID + userId?: string; + // 用户昵称 + nickname?: string; + // 账号 + username?: string; + // 用户头像 + userAvatar?: string; + // 所属门店ID + shopId?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + key?: number; + value?: number; + isUpdate?: boolean; +} + +/** + * 文档搜索条件 + */ +export interface DocsParam extends PageParam { + bookId?: number; + code?: string; + title?: string; + docsId?: number; + categoryId?: string; + status?: string; + sortNumber?: string; + createTime?: string; + username?: string; + nickname?: string; +} diff --git a/src/api/cms/domain/index.ts b/src/api/cms/domain/index.ts new file mode 100644 index 0000000..3689b4b --- /dev/null +++ b/src/api/cms/domain/index.ts @@ -0,0 +1,153 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Domain, DomainParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询网站域名 + */ +export async function pageDomain(params: DomainParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站域名列表 + */ +export async function listDomain(params?: DomainParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站域名 + */ +export async function addDomain(data: Domain) { + const res = await request.post>( + MODULES_API_URL + '/cms/domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站域名 + */ +export async function updateDomain(data: Domain) { + const res = await request.put>( + MODULES_API_URL + '/cms/domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站域名 + */ +export async function removeDomain(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站域名 + */ +export async function removeBatchDomain(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateDomainStatus(docsId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/domain/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站域名 + */ +export async function getDomain(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/domain/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function resolvable(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/domain/resolvable/' + id + ); + if (res.data.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/domain/model/index.ts b/src/api/cms/domain/model/index.ts new file mode 100644 index 0000000..41076bd --- /dev/null +++ b/src/api/cms/domain/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 网站域名 + */ +export interface Domain { + // 自增ID + id?: number; + // 域名 + domain?: string; + // 主机记录 + hostName?: string; + // 主机记录值 + hostValue?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; +} + +/** + * 网站域名搜索条件 + */ +export interface DomainParam extends PageParam { + id?: number; + domain?: string; +} diff --git a/src/api/cms/form-record/index.ts b/src/api/cms/form-record/index.ts new file mode 100644 index 0000000..110f4c4 --- /dev/null +++ b/src/api/cms/form-record/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { FormRecord, FormRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询表单设计 + */ +export async function pageFormRecord(params: FormRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/form-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询表单设计列表 + */ +export async function listFormRecord(params?: FormRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/form-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加表单设计 + */ +export async function addFormRecord(data: FormRecord) { + const res = await request.post>( + MODULES_API_URL + '/cms/form-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改表单设计 + */ +export async function updateFormRecord(data: FormRecord) { + const res = await request.put>( + MODULES_API_URL + '/cms/form-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除表单设计 + */ +export async function removeFormRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/form-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除表单设计 + */ +export async function removeBatchFormRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/form-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询表单设计 + */ +export async function getFormRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/form-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/form-record/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/form-record/model/index.ts b/src/api/cms/form-record/model/index.ts new file mode 100644 index 0000000..c8aa781 --- /dev/null +++ b/src/api/cms/form-record/model/index.ts @@ -0,0 +1,28 @@ +import type { PageParam } from '@/api'; + +/** + * 表单数据 + */ +export interface FormRecord { + formRecordId?: number; + formId?: number; + name?: string; + formData?: string; + formObj?: Object; + userId?: number; + sortNumber?: number; + comments?: string; + status?: number; + createTime?: string; + layout?: string; +} + +/** + * 搜索条件 + */ +export interface FormRecordParam extends PageParam { + formRecordId?: string; + formId?: number; + phone?: string; + name?: number; +} diff --git a/src/api/cms/form/index.ts b/src/api/cms/form/index.ts new file mode 100644 index 0000000..7679845 --- /dev/null +++ b/src/api/cms/form/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Form, FormParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询表单设计 + */ +export async function pageForm(params: FormParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/form/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询表单设计列表 + */ +export async function listForm(params?: FormParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/form', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加表单设计 + */ +export async function addForm(data: Form) { + const res = await request.post>( + MODULES_API_URL + '/cms/form', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改表单设计 + */ +export async function updateForm(data: Form) { + const res = await request.put>( + MODULES_API_URL + '/cms/form', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除表单设计 + */ +export async function removeForm(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/form/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除表单设计 + */ +export async function removeBatchForm(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/form/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateFormStatus(formId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/form/status', + { + formId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询表单设计 + */ +export async function getForm(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/form/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/form/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/form/model/index.ts b/src/api/cms/form/model/index.ts new file mode 100644 index 0000000..e82aaa6 --- /dev/null +++ b/src/api/cms/form/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 表单设计 + */ +export interface Form { + formId?: number; + name?: string; + photo?: string; + background?: string; + video?: string; + submitNumber?: number; + layout?: string; + userId?: number; + sortNumber?: number; + comments?: string; + status?: number; + createTime?: string; + hidePhoto?: any; + hideBackground?: number; + hideVideo?: number; + opacity?: number; + data?: any[]; + clearCache?: number; +} + +/** + * 搜索条件 + */ +export interface FormParam extends PageParam { + formId?: number; + name?: number; +} diff --git a/src/api/cms/navigation/index.ts b/src/api/cms/navigation/index.ts new file mode 100644 index 0000000..e71feab --- /dev/null +++ b/src/api/cms/navigation/index.ts @@ -0,0 +1,143 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Navigation, NavigationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询导航 + */ +export async function pageNavigation(params: NavigationParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/navigation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询导航列表 + */ +export async function listNavigation(params?: NavigationParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/navigation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加导航 + */ +export async function addNavigation(data: Navigation) { + const res = await request.post>( + MODULES_API_URL + '/cms/navigation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改导航 + */ +export async function updateNavigation(data: Navigation) { + const res = await request.put>( + MODULES_API_URL + '/cms/navigation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除导航 + */ +export async function removeNavigation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/navigation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除导航 + */ +export async function removeBatchNavigation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/navigation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateNavigationStatus(navigationId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/navigation/status', + { + navigationId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询导航 + */ +export async function getNavigation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/navigation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/navigation/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/navigation/model/index.ts b/src/api/cms/navigation/model/index.ts new file mode 100644 index 0000000..b184daa --- /dev/null +++ b/src/api/cms/navigation/model/index.ts @@ -0,0 +1,41 @@ +/** + * 菜单 + */ +export interface Navigation { + navigationId?: number; + parentId?: number; + title?: string; + path?: string; + icon?: string; + component?: string; + type?: number; + sortNumber?: number; + hide?: number; + home?: number; + position?: number; + meta?: string; + children?: Navigation[]; + disabled?: boolean; + tenantId?: number; + comments?: string; + status?: number; + pageId?: number; + articleCategoryId?: number; + articleId?: number; + goodsCategoryId?: number; + goodsId?: number; + bookCode?: string; + formId?: number; + pageName?: string; + createTime?: string; +} + +/** + * 菜单搜索参数 + */ +export interface NavigationParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; +} diff --git a/src/api/cms/website/field/index.ts b/src/api/cms/website/field/index.ts new file mode 100644 index 0000000..426d6e5 --- /dev/null +++ b/src/api/cms/website/field/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + WebsiteField, + WebsiteFieldParam +} from '@/api/cms/website/field/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询项目参数 + */ +export async function pageWebsiteField(params: WebsiteFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/website-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目参数列表 + */ +export async function listWebsiteField(params?: WebsiteFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/website-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目参数 + */ +export async function getWebsiteField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/website-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目参数 + */ +export async function addWebsiteField(data: WebsiteField) { + const res = await request.post>( + MODULES_API_URL + '/cms/website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目参数 + */ +export async function updateWebsiteField(data: WebsiteField) { + const res = await request.put>( + MODULES_API_URL + '/cms/website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目参数 + */ +export async function removeWebsiteField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目参数 + */ +export async function removeBatchWebsiteField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/website-field/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/website/field/model/index.ts b/src/api/cms/website/field/model/index.ts new file mode 100644 index 0000000..157263b --- /dev/null +++ b/src/api/cms/website/field/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 网站参数 + */ +export interface WebsiteField { + id?: number; + name?: string; + value?: string; + comments?: string; + userId?: number; + websiteId?: number; + status?: any; + sortNumber?: any; + createTime?: string; +} + +/** + * 网站参数搜索条件 + */ +export interface WebsiteFieldParam extends PageParam { + id?: number; + userId?: number; + websiteId?: number; +} diff --git a/src/api/cms/website/index.ts b/src/api/cms/website/index.ts new file mode 100644 index 0000000..133fe1a --- /dev/null +++ b/src/api/cms/website/index.ts @@ -0,0 +1,169 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Website, WebsiteParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 获取网站信息 + */ +export async function getSiteInfo() { + const res = await request.get>( + MODULES_API_URL + '/cms/website/getSiteInfo' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 清除缓存 + */ +export async function removeSiteInfoCache(key?: string) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website/clearSiteInfo/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询网站 + */ +export async function pageWebsite(params: WebsiteParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/website/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站列表 + */ +export async function listWebsite(params?: WebsiteParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/website', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站 + */ +export async function addWebsite(data: Website) { + const res = await request.post>( + MODULES_API_URL + '/cms/website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站 + */ +export async function updateWebsite(data: Website) { + const res = await request.put>( + MODULES_API_URL + '/cms/website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站 + */ +export async function removeWebsite(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站 + */ +export async function removeBatchWebsite(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateWebsiteStatus(websiteId?: number, status?: number) { + const res = await request.put>( + MODULES_API_URL + '/cms/website/status', + { + websiteId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站 + */ +export async function getWebsite(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/website/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/cms/website/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/website/model/index.ts b/src/api/cms/website/model/index.ts new file mode 100644 index 0000000..61657f0 --- /dev/null +++ b/src/api/cms/website/model/index.ts @@ -0,0 +1,57 @@ +import { WebsiteField } from '@/api/cms/website/field/model'; +import {Navigation} from "@/api/cms/navigation/model"; +import {Link} from "@/api/oa/link/model"; +import {ArrangeCategory} from "@/api/cms/category/model"; + +/** + * 菜单 + */ +export interface Website { + websiteId?: number; + websiteName?: string; + websiteCode?: string; + websiteIcon?: string; + websiteLogo?: string; + websiteDarkLogo?: string; + keywords?: string; + address?: string; + phone?: string; + email?: string; + websiteType?: string; + expirationTime?: string; + templateId?: string; + industryParent?: string; + industryChild?: string; + companyId?: number; + domain?: string; + icpNo?: string; + policeNo?: string; + comments?: string; + sortNumber?: number; + createTime?: string; + disabled?: boolean; + country?: string; + province?: string; + city?: string; + region?: string; + appId?: number; + fields?: WebsiteField[]; + status?: number; + tenantId?: number; + tenantName?: string; + navigations?: Navigation[]; + categoryList?: ArrangeCategory[]; + links?: Link[]; + // 配置信息 + config?: any; +} + +/** + * 菜单搜索参数 + */ +export interface WebsiteParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; +} diff --git a/src/api/dashboard/analysis/index.ts b/src/api/dashboard/analysis/index.ts new file mode 100644 index 0000000..311d422 --- /dev/null +++ b/src/api/dashboard/analysis/index.ts @@ -0,0 +1,56 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { PayNumData, SaleroomResult, VisitData, CloudData } from './model'; + +/** + * 获取支付笔数数据 + */ +export async function getPayNumList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/analysis-pay-num.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取销售量数据 + */ +export async function getSaleroomList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/analysis-saleroom.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取最近 1 小时访问情况数据 + * @returns {Promise} + */ +export async function getVisitHourList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/analysis-visits.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取词云数据 + */ +export async function getWordCloudList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/analysis-hot-search.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/dashboard/analysis/model/index.ts b/src/api/dashboard/analysis/model/index.ts new file mode 100644 index 0000000..026ecbd --- /dev/null +++ b/src/api/dashboard/analysis/model/index.ts @@ -0,0 +1,46 @@ +/** + * 支付笔数数据格式 + */ +export interface PayNumData { + // 日期 + date?: string; + // 支付笔数 + value?: number; +} + +/** + * 销售量数据格式 + */ +export interface SaleroomData { + // 月份 + month?: string; + // 销售量 + value?: number; +} + +export interface SaleroomResult { + list1: SaleroomData[]; + list2: SaleroomData[]; +} + +/** + * 访问情况数据格式 + */ +export interface VisitData { + // 时间 + time?: string; + // 访问量 + visits?: number; + // 浏览量 + views?: number; +} + +/** + * 词云数据格式 + */ +export interface CloudData { + // 标题 + name: string; + // 数量 + value: number; +} diff --git a/src/api/dashboard/appstore/index.ts b/src/api/dashboard/appstore/index.ts new file mode 100644 index 0000000..964a66b --- /dev/null +++ b/src/api/dashboard/appstore/index.ts @@ -0,0 +1,114 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { App, AppParam } from './model'; +import { Menu } from '@/api/system/menu/model'; + +/** + * 分页查询应用 + */ +export async function pageApp(params: AppParam) { + const res = await request.get>>('/oa/app/page', { + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listApp(params?: AppParam) { + const res = await request.get>('/oa/app', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用 + */ +export async function addApp(data: App) { + const res = await request.post>('/oa/app', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateApp(data: App) { + const res = await request.put>('/oa/app', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用 + */ +export async function removeApp(id?: number) { + const res = await request.delete>('/oa/app/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用 + */ +export async function removeBatchApp(data: (number | undefined)[]) { + const res = await request.delete>('/oa/app/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>('/oa/app/existence', { + params: { field, value, id } + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 添加菜单 +export async function saveMenu(data: App) { + const res = await request.post>('/oa/app/saveMenu', data); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +// 添加菜单按钮 +export async function saveAuthority(data: Menu[]) { + const res = await request.post>( + '/oa/app/saveAuthority', + data + ); + if (res.data.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/dashboard/appstore/model/index.ts b/src/api/dashboard/appstore/model/index.ts new file mode 100644 index 0000000..b163055 --- /dev/null +++ b/src/api/dashboard/appstore/model/index.ts @@ -0,0 +1,95 @@ +import type { PageParam } from '@/api'; + +/** + * 应用 + */ +export interface App { + // 应用id + appId?: number; + // 应用名称 + appName?: string; + // 上级id, 0是顶级 + parentId?: number; + // 应用编号 + appCode?: string; + // 应用图标 + appIcon?: string; + // 应用类型 + appType?: string; + // 菜单类型 + menuType?: number; + // 应用地址 + appUrl?: string; + // 下载地址 + downUrl?: string; + // 应用包名 + packageName?: string; + // 点击次数 + clicks?: string; + // 安装次数 + installs?: string; + // 项目介绍 + content?: string; + // 开发者(个人) + developer?: string; + // 软件定价 + price?: string; + // 评分 + score?: string; + // 星级 + star?: string; + // 菜单组件地址 + component?: string; + // 菜单路由地址 + path?: string; + // 权限标识 + authority?: string; + // 打开位置 + target?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 版本 + edition?: string; + // 版本号 + version?: string; + // 是否已安装 + isUse?: number; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: number; + // 发布者 + userId?: any; + // 发布者昵称 + nickname?: string; + // 子菜单 + children?: App[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; +} + +/** + * 应用搜索条件 + */ +export interface AppParam extends PageParam { + appName?: string; + appCode?: string; + developer?: string; + parentId?: number; +} diff --git a/src/api/dashboard/monitor/index.ts b/src/api/dashboard/monitor/index.ts new file mode 100644 index 0000000..6b87f19 --- /dev/null +++ b/src/api/dashboard/monitor/index.ts @@ -0,0 +1,44 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { UserCount, BrowserCount } from './model'; +const BASE_URL = import.meta.env.BASE_URL; + +/** + * 获取中国地图geo数据 + */ +export async function getChinaMapData() { + const res = await request.get( + BASE_URL + 'json/china-provinces.geo.json', + { baseURL: '' } + ); + if (res.data) { + return res.data; + } + return Promise.reject(new Error('获取地图数据失败')); +} + +/** + * 获取用户分布数据 + */ +export async function getUserCountList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/monitor-user-count.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取用户浏览器分布数据 + */ +export async function getBrowserCountList() { + const res = await request.get>( + 'https://www.gxwebsoft.com/20200610/monitor-browser-count.json' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/dashboard/monitor/model/index.ts b/src/api/dashboard/monitor/model/index.ts new file mode 100644 index 0000000..e7d21a8 --- /dev/null +++ b/src/api/dashboard/monitor/model/index.ts @@ -0,0 +1,21 @@ +/** + * 用户分布数据格式 + */ +export interface UserCount { + // 省份 + name: string; + // 用户数量 + value: number; + // 百分比 + percent?: number; +} + +/** + * 浏览器分布数据格式 + */ +export interface BrowserCount { + // 浏览器 + name: string; + // 用户数量 + value: number; +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..4e651e7 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,47 @@ +/** + * 接口统一返回结果 + */ +export interface ApiResult { + // 状态码 + code: number; + // 状态信息 + message?: string; + // 返回数据 + data?: T; +} + +/** + * 分页查询统一结果 + */ +export interface PageResult { + // 返回数据 + list: T[]; + // 总数量 + count: number; +} + +/** + * 分页查询基本参数 + */ +export interface PageParam { + // 第几页 + page?: number; + // 每页多少条 + limit?: number; + // 排序字段 + sort?: string; + // 排序方式, asc升序, desc降序 + order?: string; + // 租户ID + tenantId?: number; + // 企业ID + companyId?: number; + // 商户ID + merchantId?: number; + // 搜素关键词 + keywords?: string; + // 起始时间 + createTimeStart?: string; + // 结束时间 + createTimeEnd?: string; +} diff --git a/src/api/json.ts b/src/api/json.ts new file mode 100644 index 0000000..9bcdbe3 --- /dev/null +++ b/src/api/json.ts @@ -0,0 +1,91 @@ +/** + * 默认字典数据 + */ +export async function getLinkType() { + return { + list: [ + { value: '0', label: '应用组件', text: '应用组件', comments: '' }, + { value: '1', label: '外部链接', text: '外部链接', comments: '' } + ] + }; +} + +// 默认字典数据 +export function getJson(dictName) { + if (dictName == 'customerFollowStatus') { + return [ + { value: '1', label: '初访', text: '初访', comments: '' }, + { value: '2', label: '意向', text: '意向', comments: '' }, + { value: '3', label: '报价', text: '报价', comments: '' }, + { value: '4', label: '成交', text: '成交', comments: '' }, + { value: '5', label: '暂时搁置', text: '暂时搁置', comments: '' }, + { value: '6', label: '未成交', text: '未成交', comments: '' } + ]; + } + if (dictName == 'customerCategory') { + return [ + { value: 'my', label: '我创建的', text: '我创建的', comments: '' }, + { value: 'stars', label: '标星客户', text: '标星客户', comments: '' }, + { value: 'join', label: '我协作的', text: '我协作的', comments: '' } + ]; + } + if (dictName == 'orderType') { + return [ + { value: 'all', label: '全部订单', text: '全部订单', comments: '' }, + { value: 'delivery', label: '待发货', text: '待发货', comments: '' }, + { value: 'receipt', label: '待收货', text: '待收货', comments: '' }, + { value: 'pay', label: '待付款', text: '待付款', comments: '' }, + { value: 'complete', label: '已完成', text: '已完成', comments: '' }, + { value: 'cancel', label: '已取消', text: '已取消', comments: '' } + ]; + } + if (dictName == 'customerSource') { + return [ + { value: '搜索引擎', label: '搜索引擎', text: '搜索引擎', comments: '' }, + { value: '客户介绍', label: '客户介绍', text: '客户介绍', comments: '' }, + { value: '代理商', label: '代理商', text: '代理商', comments: '' }, + { value: '社交推广', label: '社交推广', text: '社交推广', comments: '' }, + { value: '其他', label: '其他', text: '其他', comments: '' } + ]; + } + if (dictName == 'serverBrand') { + return [ + { value: '阿里云', label: '阿里云', text: '阿里云', comments: '' }, + { value: '腾讯云', label: '腾讯云', text: '腾讯云', comments: '' }, + { value: '华为云', label: '华为云', text: '华为云', comments: '' }, + { value: '西部数码', label: '西部数码', text: '西部数码', comments: '' }, + { value: '其他', label: '其他', text: '其他', comments: '' } + ]; + } + if (dictName == 'orderType') { + return [ + { value: 'all', label: '全部订单', text: '全部订单', comments: '' }, + { value: 'delivery', label: '待发货', text: '待发货', comments: '' }, + { value: 'receipt', label: '待收货', text: '待收货', comments: '' }, + { value: 'pay', label: '待付款', text: '待付款', comments: '' }, + { value: 'complete', label: '已完成', text: '已完成', comments: '' }, + { value: 'cancel', label: '已取消', text: '已取消', comments: '' } + ]; + } + if (dictName == 'sex') { + return [ + { value: '1', label: '男', text: '男', comments: null }, + { value: '2', label: '女', text: '女', comments: null } + ]; + } + if (dictName == 'payMethod') { + return [ + { + value: '余额支付', + label: '余额支付', + text: '余额支付' + }, + { + value: '微信支付', + label: '微信支付', + text: '微信支付' + }, + { value: '支付宝', label: '支付宝', text: '支付宝' } + ]; + } +} diff --git a/src/api/layout/index.ts b/src/api/layout/index.ts new file mode 100644 index 0000000..854c9a0 --- /dev/null +++ b/src/api/layout/index.ts @@ -0,0 +1,161 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { User } from '@/api/system/user/model'; +import type { UpdatePasswordParam, NoticeResult } from './model'; +import { MODULES_API_URL, SERVER_API_URL } from '@/config/setting'; +import { Company } from '@/api/oa/company/model'; +import { Website } from '@/api/cms/website/model'; + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +export async function getTenantInfo(): Promise { + const res = await request.get>( + SERVER_API_URL + '/auth/tenant' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取网站信息 + */ +export async function getSiteInfo() { + const res = await request.get>( + MODULES_API_URL + '/cms/website/getSiteInfo' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +export async function getUserInfo(): Promise { + const res = await request.get>(SERVER_API_URL + '/auth/user'); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 向子模块传递token + * @param url + */ +export async function transferToken(url: string): Promise { + const res = await request.get>(url); + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改当前登录的用户密码 + */ +export async function updatePassword( + data: UpdatePasswordParam +): Promise { + const res = await request.put>( + SERVER_API_URL + '/auth/password', + data + ); + if (res.data.code === 0) { + return res.data.message ?? '修改成功'; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询未读通知 + */ +export async function getUnreadNotice(): Promise { + return { + notice: [ + { + color: '#60B2FC', + icon: 'NotificationFilled', + title: '你收到了一封14份新周报', + time: '2020-07-27 18:30:18' + }, + { + color: '#F5686F', + icon: 'PushpinFilled', + title: '许经理同意了你的请假申请', + time: '2020-07-27 09:08:36' + }, + { + color: '#7CD734', + icon: 'VideoCameraFilled', + title: '陈总邀请你参加视频会议', + time: '2020-07-26 18:30:01' + }, + { + color: '#FAAD14', + icon: 'CarryOutFilled', + title: '你推荐的刘诗雨已通过第三轮面试', + time: '2020-07-25 16:38:46' + }, + { + color: '#2BCACD', + icon: 'BellFilled', + title: '你的6月加班奖金已发放', + time: '2020-07-25 11:03:31' + } + ], + letter: [ + { + avatar: + 'https://cdn.eleadmin.com/20200609/c184eef391ae48dba87e3057e70238fb.jpg', + title: 'SunSmile 评论了你的日志', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-27 18:30:18' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/948344a2a77c47a7a7b332fe12ff749a.jpg', + title: '刘诗雨 点赞了你的日志', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-27 09:08:36' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/2d98970a51b34b6b859339c96b240dcd.jpg', + title: '酷酷的大叔 评论了你的周报', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-26 18:30:01' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/f6bc05af944a4f738b54128717952107.jpg', + title: 'Jasmine 点赞了你的周报', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-25 11:03:31' + } + ], + todo: [ + { + status: 0, + title: '刘诗雨的请假审批', + description: '刘诗雨在 07-27 18:30 提交的请假申请' + }, + { + status: 1, + title: '第三方代码紧急变更', + description: '需要在 2020-07-27 之前完成' + }, + { + status: 2, + title: '信息安全考试', + description: '需要在 2020-07-26 18:30 前完成' + }, + { + status: 2, + title: 'EleAdmin发布新版本', + description: '需要在 2020-07-25 11:03 前完成' + } + ] + }; +} diff --git a/src/api/layout/model/index.ts b/src/api/layout/model/index.ts new file mode 100644 index 0000000..317b25d --- /dev/null +++ b/src/api/layout/model/index.ts @@ -0,0 +1,74 @@ +/** + * 首页布局样式 + */ +export interface Layout { + // 内容区域的宽度 + width?: string; + // 文字颜色 + color?: string; + // 高亮颜色 + hover?: string; + // 背景颜色 + backgroundColor?: string; + headerStyle?: any; + siteNameStyle?: any; +} + +/** + * 修改密码参数 + */ +export interface UpdatePasswordParam { + // 新密码 + password: string; + // 原始密码 + oldPassword: string; +} + +/** + * 通知数据格式 + */ +export interface NoticeModel { + // 图标颜色 + color?: string; + // 图标 + icon?: string; + // 标题 + title?: string; + // 时间 + time?: string; +} + +/** + * 私信数据格式 + */ +export interface LetterModel { + // 头像 + avatar?: string; + // 标题 + title?: string; + // 内容 + content?: string; + // 时间 + time?: string; +} + +/** + * 代办数据格式 + */ +export interface TodoModel { + // 状态 + status?: number; + // 标题 + title?: string; + // 描述 + description?: string; +} + +/** + * 查询未读通知返回结果 + */ +export interface NoticeResult { + notice: NoticeModel[]; + letter: LetterModel[]; + todo: TodoModel[]; +} diff --git a/src/api/login/index.ts b/src/api/login/index.ts new file mode 100644 index 0000000..ae0d7cd --- /dev/null +++ b/src/api/login/index.ts @@ -0,0 +1,73 @@ +import type { ApiResult } from '@/api'; +import { UpdatePasswordParam } from '@/api/layout/model'; +import { User } from '@/api/system/user/model'; +import request from '@/utils/request'; +import { setToken } from '@/utils/token-util'; +import type { + CaptchaResult, + LoginParam, + LoginResult, + SmsCaptchaResult +} from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 登录 + */ +export async function login(data: LoginParam) { + const res = await request.post>('/login', data); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取验证码 + */ +export async function getCaptcha() { + const res = await request.get>('/captcha'); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 发送短信验证码 + */ +export async function sendSmsCaptcha(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/sendSmsCaptcha', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改当前登录的用户密码 + */ +export async function updatePassword( + data: UpdatePasswordParam +): Promise { + const res = await request.put>('/password', data); + if (res.data.code === 0) { + return res.data.message ?? '修改成功'; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 注册用户 + */ +export async function registerUser(data: User) { + const res = await request.post>('/register', data); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/login/model/index.ts b/src/api/login/model/index.ts new file mode 100644 index 0000000..11a6078 --- /dev/null +++ b/src/api/login/model/index.ts @@ -0,0 +1,47 @@ +import type { User } from '../../system/user/model'; +/** + * 登录参数 + */ +export interface LoginParam { + // 账号 + username?: string; + // 密码 + password?: string; + // 租户id + tenantId?: number; + // 是否记住密码 + remember?: boolean; + + // 手机号码 + phone?: string; + // + key?: string; +} + +/** + * 登录返回结果 + */ +export interface LoginResult { + // token + access_token?: string; + // 用户信息 + user?: User; +} + +/** + * 图形验证码返回结果 + */ +export interface CaptchaResult { + // 图形验证码base64数据 + base64: string; + // 验证码文本 + text: string; +} + +/** + * 短信验证码返回结果 + */ +export interface SmsCaptchaResult { + // 验证码文本 + text: string; +} diff --git a/src/api/login/wx-official/index.ts b/src/api/login/wx-official/index.ts new file mode 100644 index 0000000..a1f7407 --- /dev/null +++ b/src/api/login/wx-official/index.ts @@ -0,0 +1,24 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +/** + * 微信公众号授权登录 + */ +export async function getCode() { + const res = await request.get>('/wx-official/code'); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 微信公众号授权登录 + */ +export async function wxOfficialLogin() { + const res = await request.get>('/wx-official'); + console.log(res.data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/login/wx-official/model/index.ts b/src/api/login/wx-official/model/index.ts new file mode 100644 index 0000000..bf0218e --- /dev/null +++ b/src/api/login/wx-official/model/index.ts @@ -0,0 +1,47 @@ +import type { User } from '../../../system/user/model'; +/** + * 登录参数 + */ +export interface LoginParam { + // 账号 + username?: string; + // 密码 + password?: string; + // 租户id + tenantId?: number; + // 是否记住密码 + remember?: boolean; + + // 手机号码 + phone?: string; + // + key?: string; +} + +/** + * 登录返回结果 + */ +export interface LoginResult { + // token + access_token?: string; + // 用户信息 + user?: User; +} + +/** + * 图形验证码返回结果 + */ +export interface CaptchaResult { + // 图形验证码base64数据 + base64: string; + // 验证码文本 + text: string; +} + +/** + * 短信验证码返回结果 + */ +export interface SmsCaptchaResult { + // 验证码文本 + text: string; +} diff --git a/src/api/oa/app/field/index.ts b/src/api/oa/app/field/index.ts new file mode 100644 index 0000000..b7929c8 --- /dev/null +++ b/src/api/oa/app/field/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { AppField, AppFieldParam } from '@/api/oa/app/field/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询项目参数 + */ +export async function pageAppField(params: AppFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/app-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目参数列表 + */ +export async function listAppField(params?: AppFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目参数 + */ +export async function getAppField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目参数 + */ +export async function addAppField(data: AppField) { + const res = await request.post>( + MODULES_API_URL + '/oa/app-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目参数 + */ +export async function updateAppField(data: AppField) { + const res = await request.put>( + MODULES_API_URL + '/oa/app-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目参数 + */ +export async function removeAppField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目参数 + */ +export async function removeBatchAppField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-field/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/app/field/model/index.ts b/src/api/oa/app/field/model/index.ts new file mode 100644 index 0000000..788eaf5 --- /dev/null +++ b/src/api/oa/app/field/model/index.ts @@ -0,0 +1,24 @@ +import type { PageParam } from '@/api'; + +/** + * 项目参数 + */ +export interface AppField { + id?: number; + name?: string; + comments?: string; + userId?: number; + appId?: number; + status?: any; + sortNumber?: any; + createTime?: string; +} + +/** + * 项目参数搜索条件 + */ +export interface AppFieldParam extends PageParam { + id?: number; + userId?: number; + appId?: number; +} diff --git a/src/api/oa/app/index.ts b/src/api/oa/app/index.ts new file mode 100644 index 0000000..de7cea2 --- /dev/null +++ b/src/api/oa/app/index.ts @@ -0,0 +1,177 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { App, AppParam } from './model/index'; +import { MODULES_API_URL } from '@/config/setting'; + +export async function getCount() { + const res = await request.get(MODULES_API_URL + '/oa/app/data'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询应用 + */ +export async function pageApp(params: AppParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/app/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listApp(params?: AppParam) { + const res = await request.get>(MODULES_API_URL + '/oa/app', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getApp(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/app/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用 + */ +export async function addApp(data: App) { + const res = await request.post>( + MODULES_API_URL + '/oa/app', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateApp(data: App) { + const res = await request.put>( + MODULES_API_URL + '/oa/app', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用 + */ +export async function removeApp(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用 + */ +export async function removeBatchApp(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/app/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getAppSecret(data: App) { + const res = await request.post>( + MODULES_API_URL + '/open/app/getAppSecret', + data + ); + if (res.data.code === 0 && res.data.data) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function updateAppSecret(data: App) { + const res = await request.post>( + MODULES_API_URL + '/oa/app/updateAppSecret', + data + ); + if (res.data.code === 0 && res.data.data) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + +// 添加菜单 +export async function saveMenu(data: App) { + const res = await request.post>( + MODULES_API_URL + '/oa/app/saveMenu', + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +// 添加菜单按钮 +export async function saveAuthority(data: any[]) { + const res = await request.post>( + MODULES_API_URL + '/oa/app/saveAuthority', + data + ); + if (res.data.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/app/model/index.ts b/src/api/oa/app/model/index.ts new file mode 100644 index 0000000..e4c2c62 --- /dev/null +++ b/src/api/oa/app/model/index.ts @@ -0,0 +1,163 @@ +import type { PageParam } from '@/api'; +import { AppUser } from '@/api/oa/app/user/model'; +import { AppField } from '@/api/oa/app/field/model'; + +/** + * 应用 + */ +export interface App { + // 应用id + appId?: number; + // 应用秘钥 + appSecret?: string; + // 英文名称 + enName?: string; + // 应用名称 + appName?: string; + // 上级id, 0是顶级 + parentId?: number; + // 应用编号 + appCode?: string; + // 应用图标 + appIcon?: string; + appQrcode?: string; + // 应用截图 + images?: string; + // 应用类型 + appType?: string; + appTypeMultiple?: string[]; + // 菜单类型 + menuType?: number; + // 应用地址 + appUrl?: string; + // 后台管理地址 + adminUrl?: string; + // 原型图地址 + prototypeUrl?: string; + // 下载地址 + downUrl?: string; + // 服务器接口地址 + serverUrl?: string; + // 模块接口地址 + modulesUrl?: string; + // 回调地址 + callbackUrl?: string; + // 腾讯文档地址 + gitUrl?: string; + docsUrl?: string; + ipAddress?: string; + fileUrl?: string; + // 应用包名 + packageName?: string; + // 点击次数 + clicks?: string; + // 安装次数 + installs?: string; + // 项目介绍 + content?: string; + // 开发者(个人) + developer?: string; + director?: string; + projectDirector?: string; + salesman?: string; + // 续费金额 + renewMoney?: string; + // 软件定价 + price?: string; + // 评分 + score?: string; + // 星级 + star?: string; + // 菜单组件地址 + component?: string; + // 菜单路由地址 + path?: string; + // 权限标识 + authority?: string; + // 打开位置 + target?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 版本 + edition?: string; + // 版本号 + version?: string; + // 是否已安装 + isUse?: number; + // 排序 + sortNumber?: number; + // 备注 + comments?: any; + tenantName?: string; + companyId?: number; + companyName?: string; + // 租户编号 + tenantCode?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 过期时间 + expirationTime?: string; + // 应用状态 + appStatus?: string; + // 状态 + status?: number; + // 发布者 + userId?: any; + // 发布者昵称 + nickname?: string; + // 子菜单 + children?: App[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + // + search?: any; + // 成员管理 + users?: AppUser[]; + fields?: AppField[]; + // 项目需求 + requirement?: string; + phone?: string; + file1?: string; + file2?: string; + file3?: string; + showCase?: boolean; + showIndex?: boolean; + recommend?: boolean; +} + +/** + * 应用搜索条件 + */ +export interface AppParam extends PageParam { + userId?: number; + appName?: any; + appCode?: string; + appId?: number; + developer?: string; + tenantCode?: string; + parentId?: string; + tenantName?: string; + companyName?: string; + companyId?: number; + status?: number; + nickname?: string; + appStatus?: any; + showCase?: boolean; + showIndex?: boolean; + showExpiration?: boolean; + keywords?: any; +} diff --git a/src/api/oa/app/renew/index.ts b/src/api/oa/app/renew/index.ts new file mode 100644 index 0000000..e690dca --- /dev/null +++ b/src/api/oa/app/renew/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { AppRenew, AppRenewParam } from '@/api/oa/app/renew/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询开发成员 + */ +export async function pageAppRenew(params: AppRenewParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/app-renew/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询开发成员列表 + */ +export async function listAppRenew(params?: AppRenewParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-renew', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询开发成员 + */ +export async function getAppRenew(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-renew/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加开发成员 + */ +export async function addAppRenew(data: AppRenew) { + const res = await request.post>( + MODULES_API_URL + '/oa/app-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改开发成员 + */ +export async function updateAppRenew(data: AppRenew) { + const res = await request.put>( + MODULES_API_URL + '/oa/app-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除开发成员 + */ +export async function removeAppRenew(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-renew/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除开发成员 + */ +export async function removeBatchAppRenew(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-renew/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-renew/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/app/renew/model/index.ts b/src/api/oa/app/renew/model/index.ts new file mode 100644 index 0000000..5bfd819 --- /dev/null +++ b/src/api/oa/app/renew/model/index.ts @@ -0,0 +1,40 @@ +import type { PageParam } from '@/api'; + +/** + * 开发成员 + */ +export interface AppRenew { + appRenewId?: number; + money?: any; + comments?: string; + startTime?: any; + endTime?: any; + userId?: number; + nickname?: string; + email?: string; + phone?: string; + mobile?: string; + appId?: number; + companyId?: number; + status?: any; + images?: string; + files?: any; + createTime?: string; + editStatus?: boolean; +} + +/** + * 开发成员搜索条件 + */ +export interface AppRenewParam extends PageParam { + userId?: number; + appId?: number; +} + +export interface UserItem { + key: string; + isEdit?: boolean; + number?: string; + name?: string; + department?: string; +} diff --git a/src/api/oa/app/url/index.ts b/src/api/oa/app/url/index.ts new file mode 100644 index 0000000..193a7b2 --- /dev/null +++ b/src/api/oa/app/url/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { AppUrl, AppUrlParam } from '@/api/oa/app/url/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询项目域名 + */ +export async function pageAppUrl(params: AppUrlParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/app-url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目域名列表 + */ +export async function listAppUrl(params?: AppUrlParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-url', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目域名 + */ +export async function getAppUrl(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-url/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目域名 + */ +export async function addAppUrl(data: AppUrl) { + const res = await request.post>( + MODULES_API_URL + '/oa/app-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目域名 + */ +export async function updateAppUrl(data: AppUrl) { + const res = await request.put>( + MODULES_API_URL + '/oa/app-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目域名 + */ +export async function removeAppUrl(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目域名 + */ +export async function removeBatchAppUrl(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/app/url/model/index.ts b/src/api/oa/app/url/model/index.ts new file mode 100644 index 0000000..01f11c2 --- /dev/null +++ b/src/api/oa/app/url/model/index.ts @@ -0,0 +1,26 @@ +import type { PageParam } from '@/api'; + +/** + * 项目域名 + */ +export interface AppUrl { + appUrlId?: number; + name?: string; + domain?: string; + account?: string; + password?: string; + comments?: string; + appId?: number; + status?: any; + sortNumber?: any; + createTime?: string; +} + +/** + * 项目域名搜索条件 + */ +export interface AppUrlParam extends PageParam { + id?: number; + userId?: number; + appId?: number; +} diff --git a/src/api/oa/app/user/index.ts b/src/api/oa/app/user/index.ts new file mode 100644 index 0000000..92c6425 --- /dev/null +++ b/src/api/oa/app/user/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { AppUser, AppUserParam } from '@/api/oa/app/user/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询开发成员 + */ +export async function pageAppUser(params: AppUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/app-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询开发成员列表 + */ +export async function listAppUser(params?: AppUserParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询开发成员 + */ +export async function getAppUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加开发成员 + */ +export async function addAppUser(data: AppUser) { + const res = await request.post>( + MODULES_API_URL + '/oa/app-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改开发成员 + */ +export async function updateAppUser(data: AppUser) { + const res = await request.put>( + MODULES_API_URL + '/oa/app-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除开发成员 + */ +export async function removeAppUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除开发成员 + */ +export async function removeBatchAppUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/app-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/app-user/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/app/user/model/index.ts b/src/api/oa/app/user/model/index.ts new file mode 100644 index 0000000..c544c0d --- /dev/null +++ b/src/api/oa/app/user/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 开发成员 + */ +export interface AppUser { + // 开发成员id + appUserId?: number; + role?: number; + userId?: number; + username?: string; + nickname?: string; + avatar?: string; + email?: string; + phone?: string; + mobile?: string; + appId?: number; + status?: string; + createTime?: string; +} + +/** + * 开发成员搜索条件 + */ +export interface AppUserParam extends PageParam { + userId?: number; + appId?: number; + role?: number; +} + +export interface UserItem { + key: string; + isEdit?: boolean; + number?: string; + name?: string; + department?: string; +} diff --git a/src/api/oa/apply/index.ts b/src/api/oa/apply/index.ts new file mode 100644 index 0000000..2c19f35 --- /dev/null +++ b/src/api/oa/apply/index.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Customer } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 申请免费体验 + */ +export async function apply(data: Customer) { + const res = await request.post>( + MODULES_API_URL + '/customer-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/apply/model/index.ts b/src/api/oa/apply/model/index.ts new file mode 100644 index 0000000..099dbfd --- /dev/null +++ b/src/api/oa/apply/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 客户 + */ +export interface Customer { + // 客户id + customerId?: number; + // 客户类型 + customerType?: string; + // 客户标识 + customerCode: string; + // 客户名称 + customerName?: string; + // 客户头像 + customerAvatar?: string; + // 座机电话 + customerPhone?: string; + // 手机号码 + customerMobile?: string; + // 联系人 + customerContacts?: string; + // 联系地址 + customerAddress?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: string; +} + +/** + * 客户搜索条件 + */ +export interface CustomerParam extends PageParam { + customerName?: string; + customerCode?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/oa/assets/index.ts b/src/api/oa/assets/index.ts new file mode 100644 index 0000000..d2042cc --- /dev/null +++ b/src/api/oa/assets/index.ts @@ -0,0 +1,134 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Assets, AssetsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +export async function getCount() { + const res = await request.get(MODULES_API_URL + '/oa/assets/data'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询资产 + */ +export async function pageAssets(params: AssetsParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/assets/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询资产列表 + */ +export async function listAssets(params?: AssetsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询服务器 + */ +export async function getAssets(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加资产 + */ +export async function addAssets(data: Assets) { + const res = await request.post>( + MODULES_API_URL + '/oa/assets', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改资产 + */ +export async function updateAssets(data: Assets) { + const res = await request.put>( + MODULES_API_URL + '/oa/assets', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除资产 + */ +export async function removeAssets(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/assets/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除资产 + */ +export async function removeBatchAssets(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/assets/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/assets/model/index.ts b/src/api/oa/assets/model/index.ts new file mode 100644 index 0000000..350c94d --- /dev/null +++ b/src/api/oa/assets/model/index.ts @@ -0,0 +1,89 @@ +import type { PageParam } from '@/api'; +import type { User } from '@/api/system/user/model'; +import {AssetsUser} from "@/api/oa/assets/user/model"; + +/** + * 资产 + */ +export interface Assets { + // 资产id + assetsId?: number; + // 资产类型 + type?: string; + // 资产标识 + code: string; + // 资产名称 + name?: string; + // + account?: string; + // + password?: string; + // + panel?: string; + // + panelAccount?: string; + // + panelPassword?: string; + // + configuration?: any; + root?: string; + // + sortNumber?: number; + financeAmount?: any; + financeYears?: any; + financeRenew?: any; + financeCustomerName?: string; + financeCustomerContact?: string; + financeCustomerPhone?: string; + // + brandAccount?: string; + brandPassword?: string; + btSign?: string; + openPort?: any; + comments?: string; + // 所属客户 + customerId?: number; + customerName?: string; + // 品牌 + brand?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: string; + userId?: number; + companyId?: number; + companyName?: string; + nickname?: string; + // 可见性类型 + visibility?: string; + // 可见用户ID + userList?: User[]; + systemTotal?: Object; + diskInfo?: Object; + netWork?: Object; + sites?: Object; + users?: AssetsUser[]; +} + +/** + * 资产搜索条件 + */ +export interface AssetsParam extends PageParam { + assetsId?: number; + name?: string; + code?: string; + isExpire?: string; + status?: string; + brand?: string; + customerId?: string; + companyId?: number; + companyName?: string; + userId?: number; + showExpiration?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/oa/assets/user/index.ts b/src/api/oa/assets/user/index.ts new file mode 100644 index 0000000..f03bb63 --- /dev/null +++ b/src/api/oa/assets/user/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + AssetsUser, + AssetsUserParam +} from '@/api/oa/assets/user/model/index'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询开发成员 + */ +export async function pageAssetsUser(params: AssetsUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/assets-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询开发成员列表 + */ +export async function listAssetsUser(params?: AssetsUserParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询开发成员 + */ +export async function getAssetsUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加开发成员 + */ +export async function addAssetsUser(data: AssetsUser) { + const res = await request.post>( + MODULES_API_URL + '/oa/assets-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改开发成员 + */ +export async function updateAssetsUser(data: AssetsUser) { + const res = await request.put>( + MODULES_API_URL + '/oa/assets-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除开发成员 + */ +export async function removeAssetsUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/assets-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除开发成员 + */ +export async function removeBatchAssetsUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/assets-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/assets-user/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/assets/user/model/index.ts b/src/api/oa/assets/user/model/index.ts new file mode 100644 index 0000000..5e9092e --- /dev/null +++ b/src/api/oa/assets/user/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 开发成员 + */ +export interface AssetsUser { + // 开发成员id + id?: number; + role?: number; + userId?: number; + username?: string; + nickname?: string; + avatar?: string; + email?: string; + phone?: string; + assetsId?: number; + status?: string; + createTime?: string; +} + +/** + * 开发成员搜索条件 + */ +export interface AssetsUserParam extends PageParam { + userId?: number; + assetsId?: number; +} + +export interface UserItem { + key: string; + isEdit?: boolean; + number?: string; + name?: string; + department?: string; +} diff --git a/src/api/oa/chatgpt/index.ts b/src/api/oa/chatgpt/index.ts new file mode 100644 index 0000000..b8dfcd1 --- /dev/null +++ b/src/api/oa/chatgpt/index.ts @@ -0,0 +1,31 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import { ChatParam } from '@/api/oa/chatgpt/model'; +import {MODULES_API_URL} from "@/config/setting"; + +/** + * 发送 + */ +export async function send(data: ChatParam) { + const res = await request.post>(MODULES_API_URL + '/open/chat/send', data); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 请求openAI + * /open/chat/chat + * 'https://chatgpt.websoft.top/api/open/chat/chat', + */ +export async function chat(data: ChatParam) { + const res = await request.post>( + 'https://chatgpt.websoft.top/api/open/chat/chat', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/chatgpt/model/index.ts b/src/api/oa/chatgpt/model/index.ts new file mode 100644 index 0000000..abdc126 --- /dev/null +++ b/src/api/oa/chatgpt/model/index.ts @@ -0,0 +1,17 @@ +/** + * 消息 + */ +export interface Chat { + noticeId?: number; + content?: any; + tenantId?: number; +} + +/** + * 任务搜索条件 + */ +export interface ChatParam { + tenantId?: number; + content?: string; + noticeId?: number; +} diff --git a/src/api/oa/company/field/index.ts b/src/api/oa/company/field/index.ts new file mode 100644 index 0000000..9102d54 --- /dev/null +++ b/src/api/oa/company/field/index.ts @@ -0,0 +1,130 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + CompanyField, + CompanyFieldParam +} from '@/api/oa/company/field/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询客户资料 + */ +export async function pageCompanyField(params: CompanyFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/company-field/page', + { + params + } + ); + console.log(res.data.data); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询客户资料列表 + */ +export async function listCompanyField(params?: CompanyFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询客户资料 + */ +export async function getCompanyField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加客户资料 + */ +export async function addCompanyField(data: CompanyField) { + const res = await request.post>( + MODULES_API_URL + '/oa/company-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改客户资料 + */ +export async function updateCompanyField(data: CompanyField) { + const res = await request.put>( + MODULES_API_URL + '/oa/company-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除客户资料 + */ +export async function removeCompanyField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除客户资料 + */ +export async function removeBatchCompanyField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-field/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/company/field/model/index.ts b/src/api/oa/company/field/model/index.ts new file mode 100644 index 0000000..fe4d42a --- /dev/null +++ b/src/api/oa/company/field/model/index.ts @@ -0,0 +1,24 @@ +import type { PageParam } from '@/api'; + +/** + * 项目参数 + */ +export interface CompanyField { + id?: number; + name?: string; + comments?: string; + userId?: number; + companyId?: number; + status?: any; + sortNumber?: any; + createTime?: string; +} + +/** + * 项目参数搜索条件 + */ +export interface CompanyFieldParam extends PageParam { + id?: number; + userId?: number; + companyId?: number; +} diff --git a/src/api/oa/company/index.ts b/src/api/oa/company/index.ts new file mode 100644 index 0000000..7c2227b --- /dev/null +++ b/src/api/oa/company/index.ts @@ -0,0 +1,148 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Company, CompanyParam } from './model'; +import { PageResult } from '@/api'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 查询企业资料 + */ +export async function getCompany(params?: CompanyParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/company/profile', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业资料不限租户 + */ +export async function getCompanyAll(companyId: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/company/profileAll/' + companyId + ); + if (res.data.code === 0 && res.data) { + console.log(res.data); + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表 + */ +export async function pageCompany(params: CompanyParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/company/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表不限租户 + */ +export async function pageCompanyAll(params: CompanyParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/company/pageAll', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加Company + */ +export async function addCompany(data: Company) { + const res = await request.post>( + MODULES_API_URL + '/oa/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改Company + */ +export async function updateCompany(data: Company) { + const res = await request.put>( + MODULES_API_URL + '/oa/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除Company + */ +export async function removeCompany(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 销毁租户 +export async function destructionTenant(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company/destruction/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除Company + */ +export async function removeBatchCompany(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/company/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/company/model/index.ts b/src/api/oa/company/model/index.ts new file mode 100644 index 0000000..7803d04 --- /dev/null +++ b/src/api/oa/company/model/index.ts @@ -0,0 +1,92 @@ +import { PageParam } from '@/api'; +import { CompanyUser } from '@/api/oa/company/user/model'; +import { CompanyField } from '@/api/oa/company/field/model'; + +/** + * 企业信息 + */ +export interface Company { + companyId?: number; + shortName?: string; + companyName?: string; + companyType?: number; + companyTypeMultiple?: string; + appType?: string; + companyLogo?: string; + companyCode?: string; + domain?: string; + phone?: string; + tel?: string; + email?: string; + InvoiceHeader?: string; + startTime?: string; + expirationTime?: string; + version?: number; + members?: number; + storage?: string; + storageMax?: string; + buys?: number; + clicks?: number; + users?: number; + departments?: number; + industryParent?: string; + industryChild?: string; + country?: string; + province?: string; + city?: string; + region?: string; + address?: string; + latitude?: string; + longitude?: string; + businessEntity?: string; + comments?: any; + authentication?: number; + industryId?: number; + industryName?: string; + status?: number; + userId?: number; + planId?: number; + sortNumber?: number; + authoritative?: boolean; + tenantId?: number; + tenantName?: string; + tenantCode?: string; + modules?: string; + requestUrl?: string; + socketUrl?: string; + serverUrl?: string; + modulesUrl?: string; + avatar?: string; + nickname?: string; + code?: number; + createTime?: string; + updateTime?: string; + password?: string; + password2?: string; + userList?: CompanyUser[]; + fields?: CompanyField[]; +} + +/** + * 企业信息搜索条件 + */ +export interface CompanyParam extends PageParam { + companyId?: number; + shortName?: string; + companyName?: string; + domain?: string; + recommend?: boolean; + keywords?: any; + authoritative?: number; + authentication?: number; + industryParent?: string; + industryChild?: string; + province?: string; + city?: string; + region?: string; + version?: number; + sceneType?: string; + createTimeStart?: string; + createTimeEnd?: string; + tenantId?: number; +} diff --git a/src/api/oa/company/user/index.ts b/src/api/oa/company/user/index.ts new file mode 100644 index 0000000..ed543e0 --- /dev/null +++ b/src/api/oa/company/user/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + CompanyUser, + CompanyUserParam +} from '@/api/oa/company/user/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询企业成员 + */ +export async function pageCompanyUser(params: CompanyUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/company-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业成员列表 + */ +export async function listCompanyUser(params?: CompanyUserParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询企业成员 + */ +export async function getCompanyUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加企业成员 + */ +export async function addCompanyUser(data: CompanyUser) { + const res = await request.post>( + MODULES_API_URL + '/oa/company-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改企业成员 + */ +export async function updateCompanyUser(data: CompanyUser) { + const res = await request.put>( + MODULES_API_URL + '/oa/company-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除企业成员 + */ +export async function removeCompanyUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除企业成员 + */ +export async function removeBatchCompanyUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/company-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/company-user/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/company/user/model/index.ts b/src/api/oa/company/user/model/index.ts new file mode 100644 index 0000000..5bbe67d --- /dev/null +++ b/src/api/oa/company/user/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 成员 + */ +export interface CompanyUser { + // 成员id + companyUserId?: number; + role?: number; + userId?: number; + username?: string; + nickname?: string; + avatar?: string; + email?: string; + phone?: string; + mobile?: string; + companyId?: number; + status?: string; + createTime?: string; +} + +/** + * 成员搜索条件 + */ +export interface CompanyUserParam extends PageParam { + userId?: number; + companyId?: number; + role?: number; +} + +export interface UserItem { + key: string; + isEdit?: boolean; + number?: string; + name?: string; + department?: string; +} diff --git a/src/api/oa/customer/index.ts b/src/api/oa/customer/index.ts new file mode 100644 index 0000000..866a0bf --- /dev/null +++ b/src/api/oa/customer/index.ts @@ -0,0 +1,140 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Customer, CustomerParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询客户 + */ +export async function pageCustomer(params: CustomerParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/customer/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询客户列表 + */ +export async function listCustomer(params?: CustomerParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/customer', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询客户 + */ +export async function getCustomer(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/customer/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加客户 + */ +export async function addCustomer(data: Customer) { + const res = await request.post>( + MODULES_API_URL + '/oa/customer', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改客户 + */ +export async function updateCustomer(data: Customer) { + const res = await request.put>( + MODULES_API_URL + '/oa/customer', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量修改客户 + */ +export async function updateBatchCustomer(data: Customer[]) { + const res = await request.put>( + MODULES_API_URL + '/oa/customer/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除客户 + */ +export async function removeCustomer(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/customer/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除客户 + */ +export async function removeBatchCustomer(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/customer/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/customer/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/customer/model/index.ts b/src/api/oa/customer/model/index.ts new file mode 100644 index 0000000..722296a --- /dev/null +++ b/src/api/oa/customer/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 客户 + */ +export interface Customer { + // 客户id + customerId?: number; + // 客户类型 + customerType?: string; + // 客户来源 + customerSource?: string; + // 客户标识 + customerCode: string; + // 客户名称 + customerName?: string; + // 客户全称 + customerFullName?: string; + // 客户头像 + customerAvatar?: string; + // 座机电话 + customerPhone?: string; + // 手机号码 + customerMobile?: string; + // 联系人 + customerContacts?: string; + // 联系地址 + customerAddress?: string; + customerProvince?: string; + customerCity?: string; + customerRegion?: string; + longitude?: string; + latitude?: string; + // 跟进状态 + progress?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: string; + // 用户ID + userId?: any; + // 发布者昵称 + nickname?: string; +} + +/** + * 客户搜索条件 + */ +export interface CustomerParam extends PageParam { + customerName?: string; + customerCode?: string; + customerType?: string; + createTimeStart?: string; + createTimeEnd?: string; + customerCategory?: string; + progress?: string; + customerSource?: string; + betweenTime?: any; + userId?: number; + nickname?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/oa/link/index.ts b/src/api/oa/link/index.ts new file mode 100644 index 0000000..e18a108 --- /dev/null +++ b/src/api/oa/link/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Link, LinkParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询链接 + */ +export async function pageLink(params: LinkParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/link/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询链接列表 + */ +export async function listLink(params?: LinkParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/link', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加链接 + */ +export async function addLink(data: Link) { + const res = await request.post>( + MODULES_API_URL + '/oa/link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改链接 + */ +export async function updateLink(data: Link) { + const res = await request.put>( + MODULES_API_URL + '/oa/link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除链接 + */ +export async function removeLink(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/link/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除链接 + */ +export async function removeBatchLink(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/link/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/link/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/link/model/index.ts b/src/api/oa/link/model/index.ts new file mode 100644 index 0000000..7d7f821 --- /dev/null +++ b/src/api/oa/link/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 链接 + */ +export interface Link { + id?: number; + name?: string; + icon?: string; + url?: string; + linkType?: string; + appId?: number; + userId?: number; + comments?: string; + recommend?: number; + sortNumber?: number; + deleted?: number; + status?: number; + createTime?: number; +} + +/** + * 链接搜索条件 + */ +export interface LinkParam extends PageParam { + id?: number; + linkType?: string; + name?: string; +} diff --git a/src/api/oa/notice/index.ts b/src/api/oa/notice/index.ts new file mode 100644 index 0000000..03fb275 --- /dev/null +++ b/src/api/oa/notice/index.ts @@ -0,0 +1,111 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Notice, NoticeParam } from './model/index'; +import { TabsParam } from '@/api/tabs'; + +/** + * 分页查询消息 + */ +export async function pageNotice(params: NoticeParam) { + const res = await request.get>>( + '/oa/notice/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询消息列表 + */ +export async function listNotice(params?: NoticeParam) { + const res = await request.get>('/oa/notice', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询消息 + */ +export async function getNotice(id: number) { + const res = await request.get>('/oa/notice/' + id); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加消息 + */ +export async function addNotice(data: Notice) { + const res = await request.post>('/oa/notice', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改消息 + */ +export async function updateNotice(data: Notice) { + const res = await request.put>('/oa/notice', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除消息 + */ +export async function removeNotice(id?: number) { + const res = await request.delete>('/oa/notice/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量修改消息 + */ +export async function updateBatchNotices(data: Notice[]) { + const res = await request.put>('/oa/notice/batch', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除消息 + */ +export async function removeBatchNotice(data: (number | undefined)[]) { + const res = await request.delete>('/oa/notice/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params?: TabsParam) { + const res = await request.get>('/oa/notice/count', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/notice/model/index.ts b/src/api/oa/notice/model/index.ts new file mode 100644 index 0000000..fa7e47b --- /dev/null +++ b/src/api/oa/notice/model/index.ts @@ -0,0 +1,40 @@ +import type { PageParam } from '@/api'; + +/** + * 消息 + */ +export interface Notice { + // 消息id + noticeRecordId?: number; + noticeId?: number; + title?: string; + channel?: string; + avatar?: string; + content?: string; + files?: string; + developerId?: number; + userId?: number; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 消息搜索条件 + */ +export interface NoticeParam extends PageParam { + type?: string; + noticeRecordId?: number; + noticeId?: number; + userId?: number; + developerId?: number; + status?: number; +} + +// 查询未读数量 +export interface NnReadNum { + notice?: string; + letter?: number; + todo?: number; + chatGPT?: number; +} diff --git a/src/api/oa/order/index.ts b/src/api/oa/order/index.ts new file mode 100644 index 0000000..eb7ab1f --- /dev/null +++ b/src/api/oa/order/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Order, OrderParam } from './model'; + +/** + * 分页查询订单 + */ +export async function pageOrder(params: OrderParam) { + const res = await request.get>>( + '/oa/order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listOrder(params?: OrderParam) { + const res = await request.get>('/oa/order', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addOrder(data: Order) { + const res = await request.post>('/oa/order', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateOrder(data: Order) { + const res = await request.put>('/oa/order', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeOrder(id?: number) { + const res = await request.delete>('/oa/order/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchOrder(data: (number | undefined)[]) { + const res = await request.delete>('/oa/order/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateOrderStatus(orderId?: number, status?: number) { + const res = await request.put>('/oa/order/status', { + orderId, + status + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getOrder(id: number) { + const res = await request.get>('/oa/order/' + id); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>('/oa/order/existence', { + params: { field, value, id } + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/order/model/index.ts b/src/api/oa/order/model/index.ts new file mode 100644 index 0000000..0c9a5e7 --- /dev/null +++ b/src/api/oa/order/model/index.ts @@ -0,0 +1,44 @@ +import type { PageParam } from '@/api'; +import { Company } from '@/api/system/company/model'; + +/** + * 订单 + */ +export interface Order { + orderId?: number; + orderNo?: string; + type?: number; + logo?: string; + money?: number; + payPrice?: number; + planId?: number; + priceId?: number; + gradeId?: number; + userId?: number; + companyId?: number; + nickname?: string; + username?: string; + userAvatar?: string; + shopId?: string; + sortNumber?: number; + comments?: string; + status?: number; + createTime?: string; + updateTime?: string; + company?: Company; +} + +/** + * 订单搜索条件 + */ +export interface OrderParam extends PageParam { + orderId?: number; + orderNo?: string; + type?: number; + status?: string; + sortNumber?: string; + userId?: number; + createTime?: string; + username?: string; + nickname?: string; +} diff --git a/src/api/oa/product/index.ts b/src/api/oa/product/index.ts new file mode 100644 index 0000000..be36da9 --- /dev/null +++ b/src/api/oa/product/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Product, ProductParam } from './model'; + +/** + * 分页查询产品 + */ +export async function pageProduct(params: ProductParam) { + const res = await request.get>>( + '/oa/product/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询产品列表 + */ +export async function listProduct(params?: ProductParam) { + const res = await request.get>('/oa/product', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加产品 + */ +export async function addProduct(data: Product) { + const res = await request.post>('/oa/product', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改产品 + */ +export async function updateProduct(data: Product) { + const res = await request.put>('/oa/product', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除产品 + */ +export async function removeProduct(id?: number) { + const res = await request.delete>('/oa/product/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除产品 + */ +export async function removeBatchProduct(data: (number | undefined)[]) { + const res = await request.delete>('/oa/product/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateProductStatus(productId?: number, status?: number) { + const res = await request.put>('/oa/product/status', { + productId, + status + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询产品 + */ +export async function getProduct(id: number) { + const res = await request.get>('/oa/product/' + id); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>('/oa/product/existence', { + params: { field, value, id } + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/product/model/index.ts b/src/api/oa/product/model/index.ts new file mode 100644 index 0000000..181bb79 --- /dev/null +++ b/src/api/oa/product/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; +import {Company} from "@/api/system/company/model"; + +/** + * 产品 + */ +export interface Product { + productId?: number; + name?: string; + code?: string; + type?: string; + logo?: string; + money?: number; + salesInitial?: number; + salesActual?: number; + stockTotal?: number; + image?: string; + backgroundColor?: string; + backgroundImage?: string; + backgroundGif?: string; + buyUrl?: string; + adminUrl?: string; + downUrl?: string; + source?: string; + content?: string; + virtualViews?: string; + actualViews?: string; + userId?: string; + companyId?: number; + nickname?: string; + username?: string; + userAvatar?: string; + shopId?: string; + files?: string; + sortNumber?: number; + comments?: string; + serverUrl?: string; + status?: number; + callbackUrl?: string; + createTime?: string; + updateTime?: string; + company?: Company; + tenantId?: number; +} + +/** + * 产品搜索条件 + */ +export interface ProductParam extends PageParam { + title?: string; + code?: string; + productId?: number; + categoryId?: string; + status?: string; + sortNumber?: string; + createTime?: string; + username?: string; + nickname?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/oa/product/tabs/index.ts b/src/api/oa/product/tabs/index.ts new file mode 100644 index 0000000..c9081f4 --- /dev/null +++ b/src/api/oa/product/tabs/index.ts @@ -0,0 +1,129 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + ProductTabs, + ProductTabsParam +} from '@/api/oa/product/tabs/model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询产品属性 + */ +export async function pageProductTabs(params: ProductTabsParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/product-tabs/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询产品属性列表 + */ +export async function listProductTabs(params?: ProductTabsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/product-tabs', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询产品属性 + */ +export async function getProductTabs(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/product-tabs/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加产品属性 + */ +export async function addProductTabs(data: ProductTabs) { + const res = await request.post>( + MODULES_API_URL + '/oa/product-tabs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改产品属性 + */ +export async function updateProductTabs(data: ProductTabs) { + const res = await request.put>( + MODULES_API_URL + '/oa/product-tabs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除产品属性 + */ +export async function removeProductTabs(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/product-tabs/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除产品属性 + */ +export async function removeBatchProductTabs(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/product-tabs/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/product-tabs/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/product/tabs/model/index.ts b/src/api/oa/product/tabs/model/index.ts new file mode 100644 index 0000000..9115ef4 --- /dev/null +++ b/src/api/oa/product/tabs/model/index.ts @@ -0,0 +1,24 @@ +import type { PageParam } from '@/api'; + +/** + * 产品属性 + */ +export interface ProductTabs { + productId?: number; + name?: string; + type?: string; + comments?: string; + userId?: number; + appId?: number; + status?: any; + sortNumber?: number; + createTime?: string; +} + +/** + * 项目参数搜索条件 + */ +export interface ProductTabsParam extends PageParam { + productId?: number; + userId?: number; +} diff --git a/src/api/oa/project/index.ts b/src/api/oa/project/index.ts new file mode 100644 index 0000000..3e06eea --- /dev/null +++ b/src/api/oa/project/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Project, ProjectParam } from './model'; + +/** + * 分页查询项目 + */ +export async function pageProject(params: ProjectParam) { + const res = await request.get>>( + '/oa/project/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目列表 + */ +export async function listProject(params?: ProjectParam) { + const res = await request.get>('/oa/project', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目 + */ +export async function getProject(id: number) { + const res = await request.get>('/oa/project/' + id); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目 + */ +export async function addProject(data: Project) { + const res = await request.post>('/oa/project', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目 + */ +export async function updateProject(data: Project) { + const res = await request.put>('/oa/project', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目 + */ +export async function removeProject(id?: number) { + const res = await request.delete>('/oa/project/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目 + */ +export async function removeBatchProject(data: (number | undefined)[]) { + const res = await request.delete>('/oa/project/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>('/oa/project/existence', { + params: { field, value, id } + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/project/model/index.ts b/src/api/oa/project/model/index.ts new file mode 100644 index 0000000..bb6e700 --- /dev/null +++ b/src/api/oa/project/model/index.ts @@ -0,0 +1,56 @@ +import type { PageParam } from '@/api'; + +/** + * 项目 + */ +export interface Project { + // 项目id + projectId?: number; + // 项目类型 + projectType?: string; + // 项目分类 + projectCategory?: string; + // 项目标识 + projectCode: string; + // 项目名称 + projectName?: string; + // 项目图标 + projectAvatar?: string; + url?: string; + urlDev?: string; + urlAdmin?: string; + account?: string; + money?: string; + realMoney?: string; + annualFee?: string; + qrcode?: string; + progress?: string; + views?: string; + // 项目详情 + content?: string; + // 客户ID + customerId?: number; + // 客户名称 + customerName?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: string; + // 用户ID + userId?: number; +} + +/** + * 项目搜索条件 + */ +export interface ProjectParam extends PageParam { + projectName?: string; + projectCode?: string; + status?: string; + // 商户编号 + merchantCode?: string; +} diff --git a/src/api/oa/task-count/index.ts b/src/api/oa/task-count/index.ts new file mode 100644 index 0000000..125a8f1 --- /dev/null +++ b/src/api/oa/task-count/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { TaskCount, TaskCountParam } from './model/index'; +import { TabsParam } from '@/api/tabs'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询统计 + */ +export async function pageTaskCount(params: TaskCountParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task-count/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询统计列表 + */ +export async function listTaskCount(params?: TaskCountParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询统计 + */ +export async function getTaskCount(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-count/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加统计 + */ +export async function addTaskCount(data: TaskCount) { + const res = await request.post>( + MODULES_API_URL + '/oa/task-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改统计 + */ +export async function updateTaskCount(data: TaskCount) { + const res = await request.put>( + MODULES_API_URL + '/oa/task-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除统计 + */ +export async function removeTaskCount(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-count/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除统计 + */ +export async function removeBatchTaskCount(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-count/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params?: TabsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-count/count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/task-count/model/index.ts b/src/api/oa/task-count/model/index.ts new file mode 100644 index 0000000..41f65d9 --- /dev/null +++ b/src/api/oa/task-count/model/index.ts @@ -0,0 +1,32 @@ +import type { PageParam } from '@/api'; + +/** + * 统计 + */ +export interface TaskCount { + // 统计id + taskCountId?: number; + userId?: number; + nickname?: string; + avatar?: string; + phone?: string; + pending?: number; + unused?: number; + today?: number; + month?: number; + year?: number; + total?: number; + commander?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 统计搜索条件 + */ +export interface TaskCountParam extends PageParam { + taskCountId?: number; + userId?: number; + roleId?: number; + roleCode?: string; +} diff --git a/src/api/oa/task-record/index.ts b/src/api/oa/task-record/index.ts new file mode 100644 index 0000000..380b269 --- /dev/null +++ b/src/api/oa/task-record/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { TaskRecord, TaskRecordParam } from './model/index'; +import { TabsParam } from '@/api/tabs'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询任务 + */ +export async function pageTaskRecord(params: TaskRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询任务列表 + */ +export async function listTaskRecord(params?: TaskRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询任务 + */ +export async function getTaskRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加任务 + */ +export async function addTaskRecord(data: TaskRecord) { + const res = await request.post>( + MODULES_API_URL + '/oa/task-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改任务 + */ +export async function updateTaskRecord(data: TaskRecord) { + const res = await request.put>( + MODULES_API_URL + '/oa/task-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除任务 + */ +export async function removeTaskRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除任务 + */ +export async function removeBatchTaskRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params?: TabsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-record/count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/task-record/model/index.ts b/src/api/oa/task-record/model/index.ts new file mode 100644 index 0000000..50254e3 --- /dev/null +++ b/src/api/oa/task-record/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; +import { User } from '@/api/user/model'; + +/** + * 任务 + */ +export interface TaskRecord { + // 任务id + taskRecordId?: number; + taskId?: number; + parentId?: number; + nickname?: string; + avatar?: string; + content?: string; + files?: any; + appId?: number; + developerId?: number; + userId?: number; + sortNumber?: number; + comments?: string; + status?: string; + children?: TaskRecord[] | []; + createTime?: string; + toUser: User | null; +} + +/** + * 任务搜索条件 + */ +export interface TaskRecordParam extends PageParam { + taskRecordId?: number; + taskId?: number; + userId?: number; + developerId?: number; +} diff --git a/src/api/oa/task-user/index.ts b/src/api/oa/task-user/index.ts new file mode 100644 index 0000000..e334d46 --- /dev/null +++ b/src/api/oa/task-user/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { TaskUser, TaskUserParam } from './model/index'; +import { TabsParam } from '@/api/tabs'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询工单成员 + */ +export async function pageTaskUser(params: TaskUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询工单成员列表 + */ +export async function listTaskUser(params?: TaskUserParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询工单成员 + */ +export async function getTaskUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加工单成员 + */ +export async function addTaskUser(data: TaskUser) { + const res = await request.post>( + MODULES_API_URL + '/oa/task-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改工单成员 + */ +export async function updateTaskUser(data: TaskUser) { + const res = await request.put>( + MODULES_API_URL + '/oa/task-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除工单成员 + */ +export async function removeTaskUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除工单成员 + */ +export async function removeBatchTaskUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params?: TabsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task-user/count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/task-user/model/index.ts b/src/api/oa/task-user/model/index.ts new file mode 100644 index 0000000..334c1ea --- /dev/null +++ b/src/api/oa/task-user/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 任务 + */ +export interface TaskUser { + // 任务id + taskUserId?: number; + taskId?: number; + role?: number; + userId?: number; + status?: string; + avatar?: string; + name?: string; + username?: string; + email?: string; + phone?: string; +} + +/** + * 任务搜索条件 + */ +export interface TaskUserParam extends PageParam { + taskUserId?: number; + taskId?: number; + userId?: number; +} diff --git a/src/api/oa/task/index.ts b/src/api/oa/task/index.ts new file mode 100644 index 0000000..acb6697 --- /dev/null +++ b/src/api/oa/task/index.ts @@ -0,0 +1,154 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Task, TaskParam } from './model/index'; +import { TabsParam } from '@/api/tabs'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询任务 + */ +export async function pageTask(params: TaskParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询任务列表 + */ +export async function listTask(params?: TaskParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询任务 + */ +export async function getTask(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/task/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加任务 + */ +export async function addTask(data: Task) { + const res = await request.post>( + MODULES_API_URL + '/oa/task', + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改任务 + */ +export async function updateTask(data: Task) { + const res = await request.put>( + MODULES_API_URL + '/oa/task', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除任务 + */ +export async function removeTask(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除任务 + */ +export async function removeBatchTask(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/task/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params?: TabsParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/task/count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取工单二维码 + * @param params + */ +export async function taskQRCode(params: TaskParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task/taskQRCode', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取邀请加入二维码 + * @param params + */ +export async function taskJoinQRCode(params: TaskParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/task/taskJoinQRCode', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/task/model/index.ts b/src/api/oa/task/model/index.ts new file mode 100644 index 0000000..31a4cfd --- /dev/null +++ b/src/api/oa/task/model/index.ts @@ -0,0 +1,111 @@ +import type { PageParam } from '@/api'; +import { TaskRecord } from '@/api/oa/task-record/model'; +import { TaskUser } from '@/api/oa/task-user/model'; + +/** + * 任务 + */ +export interface Task { + // 任务id + taskId?: number; + // 任务名称 + name?: string; + // 任务类型 + taskType?: string; + // 关联应用 + appId?: number; + appName?: string; + // 项目ID + projectId?: string; + // 客户ID + customerId?: string; + // 资产ID + assetsId?: string; + // 开始时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 任务内容 + content?: string; + files?: string; + // 任务发起人 + promoter?: number; + promoterName?: string; + promoterAlias?: string; + promoterAvatar?: string; + promoterCompanyName?: string; + // 任务状态 + progress?: number; + isRead?: boolean; + // 优先级 + priority?: string; + // 品质要求 + quality?: string; + // 期限(天) + day?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + redirect?: string; + // 创建时间 + createTime?: string; + updateTime?: string; + // 状态 + status?: number; + // 发布者 + userId?: any; + // 发布者昵称 + nickname?: string; + // 项目名称 + projectName?: string; + // 图片集 + images?: []; + avatar?: string; + // 受理人 + commander?: number; + commanderName?: string; + commanderAlias?: string; + commanderAvatar?: string; + commanderCompanyName?: string; + commanderRealName?: string; + // 最后回复人 + lastRealName?: string; + lastAvatar?: string; + lastReadUser?: number; + lastNickname?: string; + recordList?: TaskRecord[]; + users?: TaskUser[]; + phone?: string; + overdueDays?: string; + phoneXX?: string; + action?: string; + // 机密信息 + confidential?: any; + tenantId?: number; +} + +/** + * 任务搜索条件 + */ +export interface TaskParam extends PageParam { + taskId?: number; + status?: any; + name?: string; + promoter?: number; + promoterName?: string; + commander?: number; + commanderName?: string; + progress?: number; + betweenTime?: any; + userId?: number; + nickname?: string; + keywords?: any; + current?: string; + pending?: number; + appId?: number; + appName?: string; + companyId?: number; + companyName?: string; + taskType?: string; +} diff --git a/src/api/oa/task/model/progress.ts b/src/api/oa/task/model/progress.ts new file mode 100644 index 0000000..20cf262 --- /dev/null +++ b/src/api/oa/task/model/progress.ts @@ -0,0 +1,9 @@ +/** + * 枚举类 + */ +export const TOBEARRANGED = 0; // 待安排 +export const PENDING = 1; // 待处理 +export const PROCESSING = 2; // 处理中 +export const TOBECONFIRMED = 3; // 待评价 +export const COMPLETED = 4; // 已完成 +export const CLOSED = 5; // 已关闭 diff --git a/src/api/oa/task/model/task.ts b/src/api/oa/task/model/task.ts new file mode 100644 index 0000000..0fd77f8 --- /dev/null +++ b/src/api/oa/task/model/task.ts @@ -0,0 +1,8 @@ +export const TASK_STATUS_0 = 0; // 待处理 +export const TASK_STATUS_1 = 1; // 已完成 + +export const ACTION_1 = '派单'; +export const ACTION_2 = '已解决'; +export const ACTION_3 = '关单'; +export const ACTION_4 = '分享'; +export const ACTION_5 = '编辑'; diff --git a/src/api/oa/tennat/index.ts b/src/api/oa/tennat/index.ts new file mode 100644 index 0000000..609092e --- /dev/null +++ b/src/api/oa/tennat/index.ts @@ -0,0 +1,155 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Tenant, TenantParam } from './model'; +import { Menu } from '@/api/system/menu/model'; + +/** + * 分页查询租户 + */ +export async function pageTenant(params: TenantParam) { + // 租户列表查询需要传一个key + // params.tenantCode = 'ZAcxbdmDQFwUKC3e'; + const res = await request.get>>( + '/system/tenant/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户资料 + */ +export async function profile(params?: TenantParam) { + const res = await request.get>('/system/tenant/profile', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户列表 + */ +export async function listTenant(params?: TenantParam) { + const res = await request.get>('/system/tenant', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getTenant(id: number) { + const res = await request.get>('/system/tenant/' + id); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加租户 + */ +export async function addTenant(data: Tenant) { + const res = await request.post>('/system/tenant', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改租户 + */ +export async function updateTenant(data: Tenant) { + const res = await request.put>('/system/tenant', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除租户 + */ +export async function removeTenant(id?: number) { + const res = await request.delete>('/system/tenant/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除租户 + */ +export async function removeBatchTenant(data: (number | undefined)[]) { + const res = await request.delete>('/system/tenant/batch', { + data + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 重置用户密码 + */ +export async function updateTenantPassword( + tenantId?: number, + password = 'gxwebsoft.com' +) { + const res = await request.put>('/system/tenant/password', { + tenantId, + password + }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + '/system/tenant/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 租户初始化 + */ +export async function initialization(roleId?: number) { + const res = await request.get>( + '/system/tenant/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/tennat/model/index.ts b/src/api/oa/tennat/model/index.ts new file mode 100644 index 0000000..7f9fbd6 --- /dev/null +++ b/src/api/oa/tennat/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 租户 + */ +export interface Tenant { + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 应用ID + appId?: string; + // 应用秘钥 + appSecret?: string; + logo?: string; + // 所属客户 + companyName?: string; + // 关联客户ID + companyId?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: number; + // + password?: string; +} + +/** + * 租户搜索条件 + */ +export interface TenantParam extends PageParam { + tenantName?: string; + appId?: string; + companyId?: number; + companyName?: string; + tenantCode?: string; +} diff --git a/src/api/passport/login/index.ts b/src/api/passport/login/index.ts new file mode 100644 index 0000000..790ebf1 --- /dev/null +++ b/src/api/passport/login/index.ts @@ -0,0 +1,98 @@ +import request from '@/utils/request'; +import { setToken } from '@/utils/token-util'; +import type { ApiResult } from '@/api'; +import type { + LoginParam, + LoginResult, + CaptchaResult, + SmsCaptchaResult +} from './model'; +import { User } from '@/api/system/user/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 登录 + */ +export async function login(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/login', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取验证码 + */ +export async function getCaptcha() { + const res = await request.get>( + SERVER_API_URL + '/captcha' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 发送短信验证码 + */ +export async function sendSmsCaptcha(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/sendSmsCaptcha', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 登录 + */ +export async function remoteLogin(data: LoginParam) { + const res = await request.post>( + 'https://open.gxwebsoft.com/api/login', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取企业微信登录链接 + */ +export async function getWxWorkQrConnect(data) { + const res = await request.post>( + SERVER_API_URL + '/wx-work', + data + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function registerUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/register', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/passport/login/model/index.ts b/src/api/passport/login/model/index.ts new file mode 100644 index 0000000..ba82b06 --- /dev/null +++ b/src/api/passport/login/model/index.ts @@ -0,0 +1,42 @@ +import type { User } from '@/api/system/user/model'; +/** + * 登录参数 + */ +export interface LoginParam { + // 账号 + username?: string; + // 密码 + password?: string; + // 租户id + tenantId?: number; + // 是否记住密码 + remember?: boolean; +} + +/** + * 登录返回结果 + */ +export interface LoginResult { + // token + access_token?: string; + // 用户信息 + user?: User; +} + +/** + * 图形验证码返回结果 + */ +export interface CaptchaResult { + // 图形验证码base64数据 + base64: string; + // 验证码文本 + text: string; +} + +/** + * 短信验证码返回结果 + */ +export interface SmsCaptchaResult { + // 验证码文本 + text: string; +} diff --git a/src/api/shop/brand/index.ts b/src/api/shop/brand/index.ts new file mode 100644 index 0000000..0b9b104 --- /dev/null +++ b/src/api/shop/brand/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Brand, BrandParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询品牌 + */ +export async function pageBrand(params: BrandParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/brand/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询品牌列表 + */ +export async function listBrand(params?: BrandParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/brand', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加品牌 + */ +export async function addBrand(data: Brand) { + const res = await request.post>( + MODULES_API_URL + '/shop/brand', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改品牌 + */ +export async function updateBrand(data: Brand) { + const res = await request.put>( + MODULES_API_URL + '/shop/brand', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除品牌 + */ +export async function removeBrand(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/brand/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除品牌 + */ +export async function removeBatchBrand(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/brand/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询品牌 + */ +export async function getBrand(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/brand/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/brand/model/index.ts b/src/api/shop/brand/model/index.ts new file mode 100644 index 0000000..e2698e6 --- /dev/null +++ b/src/api/shop/brand/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 品牌 + */ +export interface Brand { + // ID + brandId?: number; + // 品牌名称 + brandName?: string; + // 图标 + image?: string; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 品牌搜索条件 + */ +export interface BrandParam extends PageParam { + brandId?: number; + keywords?: string; +} diff --git a/src/api/shop/goods/index.ts b/src/api/shop/goods/index.ts new file mode 100644 index 0000000..5016d9b --- /dev/null +++ b/src/api/shop/goods/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Goods, GoodsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品记录表 + */ +export async function pageGoods(params: GoodsParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品记录表列表 + */ +export async function listGoods(params?: GoodsParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品记录表 + */ +export async function addGoods(data: Goods) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品记录表 + */ +export async function updateGoods(data: Goods) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品记录表 + */ +export async function removeGoods(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品记录表 + */ +export async function removeBatchGoods(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品记录表 + */ +export async function getGoods(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goods/model/index.ts b/src/api/shop/goods/model/index.ts new file mode 100644 index 0000000..32c1c40 --- /dev/null +++ b/src/api/shop/goods/model/index.ts @@ -0,0 +1,84 @@ +import type { PageParam } from '@/api'; +import { GoodsSpec } from '@/api/shop/goodsSpec/model'; +import { GoodsSku } from '@/api/shop/goodsSku/model'; + +/** + * 商品记录表 + */ +export interface Goods { + // 自增ID + goodsId?: number; + // 类型 1实物商品 2虚拟商品 + type?: number; + // 商品编码 + code?: string; + // 商品标题 + title?: string; + // 商品封面图 + image?: string; + // 商品详情 + content?: string; + // 商品附件 + files?: string; + // 分类ID + categoryId?: number; + categoryParent?: string; + categoryChildren?: string; + // 分类名称 + categoryName?: string; + // 规格 + specs?: number; + // 货架 + position?: string; + // 进货价格 + price?: number; + // 销售价格 + salePrice?: string; + // 销量 + sales?: number; + // 库存 + stock?: number; + // 商品重量 + goodsWeight?: number; + // 库存计算方式 + deductStockType?: number; + // 推荐 + recommend?: number; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 所有人 + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 商户ID + merchantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 商品规格 + goodsSpecs?: GoodsSpec[]; + // 商品sku列表 + goodsSkus?: GoodsSku[]; +} + +export interface BathSet { + price?: number; + salePrice?: number; + stock?: number; + skuNo?: string; +} + +/** + * 商品记录表搜索条件 + */ +export interface GoodsParam extends PageParam { + goodsId?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsAttr/index.ts b/src/api/shop/goodsAttr/index.ts new file mode 100644 index 0000000..dd249db --- /dev/null +++ b/src/api/shop/goodsAttr/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsAttr, GoodsAttrParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品属性表 + */ +export async function pageGoodsAttr(params: GoodsAttrParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-attr/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品属性表列表 + */ +export async function listGoodsAttr(params?: GoodsAttrParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品属性表 + */ +export async function addGoodsAttr(data: GoodsAttr) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-attr', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品属性表 + */ +export async function updateGoodsAttr(data: GoodsAttr) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-attr', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品属性表 + */ +export async function removeGoodsAttr(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品属性表 + */ +export async function removeBatchGoodsAttr(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品属性表 + */ +export async function getGoodsAttr(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsAttr/model/index.ts b/src/api/shop/goodsAttr/model/index.ts new file mode 100644 index 0000000..458cfe0 --- /dev/null +++ b/src/api/shop/goodsAttr/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 商品属性表 + */ +export interface GoodsAttr { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 属性名 + attrName?: string; + // 属性值 + attrValues?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; +} + +/** + * 商品属性表搜索条件 + */ +export interface GoodsAttrParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsAttrResult/index.ts b/src/api/shop/goodsAttrResult/index.ts new file mode 100644 index 0000000..f7edda3 --- /dev/null +++ b/src/api/shop/goodsAttrResult/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsAttrResult, GoodsAttrResultParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品属性详情表 + */ +export async function pageGoodsAttrResult(params: GoodsAttrResultParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-attr-result/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品属性详情表列表 + */ +export async function listGoodsAttrResult(params?: GoodsAttrResultParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr-result', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品属性详情表 + */ +export async function addGoodsAttrResult(data: GoodsAttrResult) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-attr-result', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品属性详情表 + */ +export async function updateGoodsAttrResult(data: GoodsAttrResult) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-attr-result', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品属性详情表 + */ +export async function removeGoodsAttrResult(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr-result/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品属性详情表 + */ +export async function removeBatchGoodsAttrResult(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr-result/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品属性详情表 + */ +export async function getGoodsAttrResult(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr-result/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsAttrResult/model/index.ts b/src/api/shop/goodsAttrResult/model/index.ts new file mode 100644 index 0000000..62afe50 --- /dev/null +++ b/src/api/shop/goodsAttrResult/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 商品属性详情表 + */ +export interface GoodsAttrResult { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 商品属性参数 + result?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 租户id + tenantId?: number; + // 更新时间 + updateTime?: string; +} + +/** + * 商品属性详情表搜索条件 + */ +export interface GoodsAttrResultParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsAttrValue/index.ts b/src/api/shop/goodsAttrValue/index.ts new file mode 100644 index 0000000..463b6f0 --- /dev/null +++ b/src/api/shop/goodsAttrValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsAttrValue, GoodsAttrValueParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品属性值表 + */ +export async function pageGoodsAttrValue(params: GoodsAttrValueParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-attr-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品属性值表列表 + */ +export async function listGoodsAttrValue(params?: GoodsAttrValueParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr-value', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品属性值表 + */ +export async function addGoodsAttrValue(data: GoodsAttrValue) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-attr-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品属性值表 + */ +export async function updateGoodsAttrValue(data: GoodsAttrValue) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-attr-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品属性值表 + */ +export async function removeGoodsAttrValue(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品属性值表 + */ +export async function removeBatchGoodsAttrValue(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-attr-value/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品属性值表 + */ +export async function getGoodsAttrValue(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-attr-value/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsAttrValue/model/index.ts b/src/api/shop/goodsAttrValue/model/index.ts new file mode 100644 index 0000000..e03cd54 --- /dev/null +++ b/src/api/shop/goodsAttrValue/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 商品属性值表 + */ +export interface GoodsAttrValue { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 商品属性索引值 (attr_value|attr_value[|....]) + suk?: string; + // 属性对应的库存 + stock?: number; + // 销量 + sales?: number; + // 属性金额 + price?: string; + // 图片 + image?: string; + // 唯一值 + unique?: string; + // 成本价 + cost?: string; + // 商品条码 + barCode?: string; + // 原价 + otPrice?: string; + // 重量 + weight?: string; + // 体积 + volume?: string; + // 一级返佣 + brokerage?: string; + // 二级返佣 + brokerageTwo?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 活动限购数量 + quota?: number; + // 活动限购数量显示 + quotaShow?: number; + // attr_values 创建更新时的属性对应 + attrValue?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 商品属性值表搜索条件 + */ +export interface GoodsAttrValueParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsCategory/index.ts b/src/api/shop/goodsCategory/index.ts new file mode 100644 index 0000000..b8c07c4 --- /dev/null +++ b/src/api/shop/goodsCategory/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsCategory, GoodsCategoryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品分类 + */ +export async function pageGoodsCategory(params: GoodsCategoryParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品分类列表 + */ +export async function listGoodsCategory(params?: GoodsCategoryParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品分类 + */ +export async function addGoodsCategory(data: GoodsCategory) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品分类 + */ +export async function updateGoodsCategory(data: GoodsCategory) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品分类 + */ +export async function removeGoodsCategory(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品分类 + */ +export async function removeBatchGoodsCategory(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品分类 + */ +export async function getGoodsCategory(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-category/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsCategory/model/index.ts b/src/api/shop/goodsCategory/model/index.ts new file mode 100644 index 0000000..085d9b2 --- /dev/null +++ b/src/api/shop/goodsCategory/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 商品分类 + */ +export interface GoodsCategory { + // 商品分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0列表 1单页 2外链 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 商品数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + disabled?: boolean; + key?: number; + value?: number; + label?: string; + // 子菜单 + children?: GoodsCategory[]; +} + +/** + * 商品分类搜索条件 + */ +export interface GoodsCategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsComment/index.ts b/src/api/shop/goodsComment/index.ts new file mode 100644 index 0000000..4761a04 --- /dev/null +++ b/src/api/shop/goodsComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsComment, GoodsCommentParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询评论表 + */ +export async function pageGoodsComment(params: GoodsCommentParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-comment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询评论表列表 + */ +export async function listGoodsComment(params?: GoodsCommentParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-comment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加评论表 + */ +export async function addGoodsComment(data: GoodsComment) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改评论表 + */ +export async function updateGoodsComment(data: GoodsComment) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除评论表 + */ +export async function removeGoodsComment(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除评论表 + */ +export async function removeBatchGoodsComment(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询评论表 + */ +export async function getGoodsComment(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-comment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsComment/model/index.ts b/src/api/shop/goodsComment/model/index.ts new file mode 100644 index 0000000..bf42cfa --- /dev/null +++ b/src/api/shop/goodsComment/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 评论表 + */ +export interface GoodsComment { + // 评论ID + id?: number; + // 用户ID + uid?: number; + // 订单ID + oid?: number; + // 商品唯一id + unique?: string; + // 商品id + goodsId?: number; + // 某种商品类型(普通商品、秒杀商品) + replyType?: string; + // 商品分数 + goodsScore?: string; + // 服务分数 + serviceScore?: string; + // 评论内容 + comment?: string; + // 评论图片 + pics?: string; + // 管理员回复内容 + merchantReplyContent?: string; + // 管理员回复时间 + merchantReplyTime?: number; + // 0未删除1已删除 + isDel?: string; + // 0未回复1已回复 + isReply?: string; + // 用户名称 + nickname?: string; + // 用户头像 + avatar?: string; + // 商品规格属性值,多个,号隔开 + sku?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 评论表搜索条件 + */ +export interface GoodsCommentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsCoupon/index.ts b/src/api/shop/goodsCoupon/index.ts new file mode 100644 index 0000000..0d24e35 --- /dev/null +++ b/src/api/shop/goodsCoupon/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsCoupon, GoodsCouponParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品优惠券表 + */ +export async function pageGoodsCoupon(params: GoodsCouponParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品优惠券表列表 + */ +export async function listGoodsCoupon(params?: GoodsCouponParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品优惠券表 + */ +export async function addGoodsCoupon(data: GoodsCoupon) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品优惠券表 + */ +export async function updateGoodsCoupon(data: GoodsCoupon) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品优惠券表 + */ +export async function removeGoodsCoupon(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品优惠券表 + */ +export async function removeBatchGoodsCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品优惠券表 + */ +export async function getGoodsCoupon(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsCoupon/model/index.ts b/src/api/shop/goodsCoupon/model/index.ts new file mode 100644 index 0000000..9c9f78d --- /dev/null +++ b/src/api/shop/goodsCoupon/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 商品优惠券表 + */ +export interface GoodsCoupon { + // + id?: number; + // 商品id + goodsId?: number; + // 优惠劵id + issueCouponId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 商品优惠券表搜索条件 + */ +export interface GoodsCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsDescription/index.ts b/src/api/shop/goodsDescription/index.ts new file mode 100644 index 0000000..d0a1ce7 --- /dev/null +++ b/src/api/shop/goodsDescription/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsDescription, GoodsDescriptionParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品描述表 + */ +export async function pageGoodsDescription(params: GoodsDescriptionParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-description/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品描述表列表 + */ +export async function listGoodsDescription(params?: GoodsDescriptionParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-description', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品描述表 + */ +export async function addGoodsDescription(data: GoodsDescription) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-description', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品描述表 + */ +export async function updateGoodsDescription(data: GoodsDescription) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-description', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品描述表 + */ +export async function removeGoodsDescription(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-description/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品描述表 + */ +export async function removeBatchGoodsDescription(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-description/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品描述表 + */ +export async function getGoodsDescription(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-description/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsDescription/model/index.ts b/src/api/shop/goodsDescription/model/index.ts new file mode 100644 index 0000000..804b347 --- /dev/null +++ b/src/api/shop/goodsDescription/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 商品描述表 + */ +export interface GoodsDescription { + // + id?: number; + // 商品ID + goodsId?: number; + // 商品详情 + description?: string; + // 商品类型 + type?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品描述表搜索条件 + */ +export interface GoodsDescriptionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsLog/index.ts b/src/api/shop/goodsLog/index.ts new file mode 100644 index 0000000..c6a44d2 --- /dev/null +++ b/src/api/shop/goodsLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsLog, GoodsLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品日志表 + */ +export async function pageGoodsLog(params: GoodsLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品日志表列表 + */ +export async function listGoodsLog(params?: GoodsLogParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品日志表 + */ +export async function addGoodsLog(data: GoodsLog) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品日志表 + */ +export async function updateGoodsLog(data: GoodsLog) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品日志表 + */ +export async function removeGoodsLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品日志表 + */ +export async function removeBatchGoodsLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品日志表 + */ +export async function getGoodsLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsLog/model/index.ts b/src/api/shop/goodsLog/model/index.ts new file mode 100644 index 0000000..68ecab3 --- /dev/null +++ b/src/api/shop/goodsLog/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 商品日志表 + */ +export interface GoodsLog { + // 统计ID + id?: number; + // 类型visit,cart,order,pay,collect,refund + type?: string; + // 商品ID + goodsId?: number; + // 是否浏览 + visitNum?: string; + // 加入购物车数量 + cartNum?: number; + // 下单数量 + orderNum?: number; + // 支付数量 + payNum?: number; + // 支付金额 + payPrice?: string; + // 商品成本价 + costPrice?: string; + // 支付用户ID + payUid?: number; + // 退款数量 + refundNum?: number; + // 退款金额 + refundPrice?: string; + // 收藏 + collectNum?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 商品日志表搜索条件 + */ +export interface GoodsLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsRelation/index.ts b/src/api/shop/goodsRelation/index.ts new file mode 100644 index 0000000..dc1af2f --- /dev/null +++ b/src/api/shop/goodsRelation/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsRelation, GoodsRelationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品点赞和收藏表 + */ +export async function pageGoodsRelation(params: GoodsRelationParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-relation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品点赞和收藏表列表 + */ +export async function listGoodsRelation(params?: GoodsRelationParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-relation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品点赞和收藏表 + */ +export async function addGoodsRelation(data: GoodsRelation) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-relation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品点赞和收藏表 + */ +export async function updateGoodsRelation(data: GoodsRelation) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-relation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品点赞和收藏表 + */ +export async function removeGoodsRelation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-relation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品点赞和收藏表 + */ +export async function removeBatchGoodsRelation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-relation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品点赞和收藏表 + */ +export async function getGoodsRelation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-relation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsRelation/model/index.ts b/src/api/shop/goodsRelation/model/index.ts new file mode 100644 index 0000000..5e76007 --- /dev/null +++ b/src/api/shop/goodsRelation/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 商品点赞和收藏表 + */ +export interface GoodsRelation { + // id + id?: number; + // 用户ID + userId?: number; + // 商品ID + goodsId?: number; + // 类型(收藏(collect)、点赞(like)) + type?: string; + // 某种类型的商品(普通商品、秒杀商品) + category?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 商品点赞和收藏表搜索条件 + */ +export interface GoodsRelationParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsRule/index.ts b/src/api/shop/goodsRule/index.ts new file mode 100644 index 0000000..747e98b --- /dev/null +++ b/src/api/shop/goodsRule/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsRule, GoodsRuleParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品规则值(规格)表 + */ +export async function pageGoodsRule(params: GoodsRuleParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-rule/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品规则值(规格)表列表 + */ +export async function listGoodsRule(params?: GoodsRuleParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-rule', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品规则值(规格)表 + */ +export async function addGoodsRule(data: GoodsRule) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-rule', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品规则值(规格)表 + */ +export async function updateGoodsRule(data: GoodsRule) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-rule', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品规则值(规格)表 + */ +export async function removeGoodsRule(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-rule/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品规则值(规格)表 + */ +export async function removeBatchGoodsRule(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-rule/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品规则值(规格)表 + */ +export async function getGoodsRule(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-rule/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsRule/model/index.ts b/src/api/shop/goodsRule/model/index.ts new file mode 100644 index 0000000..6537e30 --- /dev/null +++ b/src/api/shop/goodsRule/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +/** + * 商品规则值(规格)表 + */ +export interface GoodsRule { + // + id?: number; + // 规格名称 + ruleName?: string; + // 规格值 + ruleValue?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品规则值(规格)表搜索条件 + */ +export interface GoodsRuleParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsSku/index.ts b/src/api/shop/goodsSku/index.ts new file mode 100644 index 0000000..caa6df2 --- /dev/null +++ b/src/api/shop/goodsSku/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsSku, GoodsSkuParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品sku列表 + */ +export async function pageGoodsSku(params: GoodsSkuParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-sku/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品sku列表列表 + */ +export async function listGoodsSku(params?: GoodsSkuParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-sku', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品sku列表 + */ +export async function addGoodsSku(data: GoodsSku) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品sku列表 + */ +export async function updateGoodsSku(data: GoodsSku) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品sku列表 + */ +export async function removeGoodsSku(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-sku/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品sku列表 + */ +export async function removeBatchGoodsSku(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-sku/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品sku列表 + */ +export async function getGoodsSku(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-sku/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsSku/model/index.ts b/src/api/shop/goodsSku/model/index.ts new file mode 100644 index 0000000..f3950af --- /dev/null +++ b/src/api/shop/goodsSku/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 商品sku列表 + */ +export interface GoodsSku { + // 主键ID + id?: number; + // 商品ID + goodsId?: number; + // 规格组ID + specId?: number; + // 规格值ID + specValueId?: number; + // 规格值0 + specValue0?: string; + // 规格值1 + specValue1?: string; + // 规格值2 + specValue2?: string; + // 商品图片 + image?: string; + // 商品价格 + price?: string; + // 市场价格 + salePrice?: string; + // 库存 + stock?: number; + // sku编码 + skuNo?: string; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商品sku列表搜索条件 + */ +export interface GoodsSkuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsSpec/index.ts b/src/api/shop/goodsSpec/index.ts new file mode 100644 index 0000000..6e62c3c --- /dev/null +++ b/src/api/shop/goodsSpec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsSpec, GoodsSpecParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品多规格 + */ +export async function pageGoodsSpec(params: GoodsSpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品多规格列表 + */ +export async function listGoodsSpec(params?: GoodsSpecParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-spec', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品多规格 + */ +export async function addGoodsSpec(data: GoodsSpec) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品多规格 + */ +export async function updateGoodsSpec(data: GoodsSpec) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品多规格 + */ +export async function removeGoodsSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品多规格 + */ +export async function removeBatchGoodsSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品多规格 + */ +export async function getGoodsSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-spec/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsSpec/model/index.ts b/src/api/shop/goodsSpec/model/index.ts new file mode 100644 index 0000000..99da558 --- /dev/null +++ b/src/api/shop/goodsSpec/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api'; + +/** + * 商品多规格 + */ +export interface GoodsSpec { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + valueList?: any[]; + specValues?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品多规格搜索条件 + */ +export interface GoodsSpecParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/goodsSpecRel/index.ts b/src/api/shop/goodsSpecRel/index.ts new file mode 100644 index 0000000..ba3463d --- /dev/null +++ b/src/api/shop/goodsSpecRel/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { GoodsSpecRel, GoodsSpecRelParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品规格值 + */ +export async function pageGoodsSpecRel(params: GoodsSpecRelParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/goods-spec-rel/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品规格值列表 + */ +export async function listGoodsSpecRel(params?: GoodsSpecRelParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-spec-rel', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品规格值 + */ +export async function addGoodsSpecRel(data: GoodsSpecRel) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-spec-rel', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品规格值 + */ +export async function updateGoodsSpecRel(data: GoodsSpecRel) { + const res = await request.put>( + MODULES_API_URL + '/shop/goods-spec-rel', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品规格值 + */ +export async function removeGoodsSpecRel(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-spec-rel/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品规格值 + */ +export async function removeBatchGoodsSpecRel(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/goods-spec-rel/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品规格值 + */ +export async function getGoodsSpecRel(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/goods-spec-rel/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/goodsSpecRel/model/index.ts b/src/api/shop/goodsSpecRel/model/index.ts new file mode 100644 index 0000000..fb8b1bc --- /dev/null +++ b/src/api/shop/goodsSpecRel/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 商品规格值 + */ +export interface GoodsSpecRel { + // 主键 + id?: number; + // 规格ID + specId?: number; + // 规格值ID + specValueId?: number; + // 规格值 + specValue?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品规格值搜索条件 + */ +export interface GoodsSpecRelParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/merchant/index.ts b/src/api/shop/merchant/index.ts new file mode 100644 index 0000000..1f410d9 --- /dev/null +++ b/src/api/shop/merchant/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Merchant, MerchantParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户 + */ +export async function pageMerchant(params: MerchantParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/merchant/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户列表 + */ +export async function listMerchant(params?: MerchantParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户 + */ +export async function addMerchant(data: Merchant) { + const res = await request.post>( + MODULES_API_URL + '/shop/merchant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户 + */ +export async function updateMerchant(data: Merchant) { + const res = await request.put>( + MODULES_API_URL + '/shop/merchant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户 + */ +export async function removeMerchant(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户 + */ +export async function removeBatchMerchant(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户 + */ +export async function getMerchant(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/merchant/model/index.ts b/src/api/shop/merchant/model/index.ts new file mode 100644 index 0000000..ebb896d --- /dev/null +++ b/src/api/shop/merchant/model/index.ts @@ -0,0 +1,66 @@ +import type { PageParam } from '@/api'; + +/** + * 商户 + */ +export interface Merchant { + // ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 店铺类型 + shopType?: string; + // 商户分类 + category?: string; + // 商户坐标 + lngAndLat?: string; + // 省 + province?: string; + // 市 + city?: string; + // 区 + region?: string; + // 地址 + address?: string; + // 手续费 + commission?: number; + // 关键字 + keywords?: string; + // 资质图片 + files?: string; + // 是否自营 + ownStore?: number; + // 是否推荐 + recommend?: number; + // 是否需要审核 + goodsReview?: number; + // 管理入口 + adminUrl?: string; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 默认商户管理角色ID + roleId?: number; + roleName?: string; +} + +/** + * 商户搜索条件 + */ +export interface MerchantParam extends PageParam { + merchantId?: number; + keywords?: string; +} diff --git a/src/api/shop/merchantAccount/index.ts b/src/api/shop/merchantAccount/index.ts new file mode 100644 index 0000000..c28495f --- /dev/null +++ b/src/api/shop/merchantAccount/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MerchantAccount, MerchantAccountParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户账号 + */ +export async function pageMerchantAccount(params: MerchantAccountParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/merchant-account/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户账号列表 + */ +export async function listMerchantAccount(params?: MerchantAccountParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-account', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户账号 + */ +export async function addMerchantAccount(data: MerchantAccount) { + const res = await request.post>( + MODULES_API_URL + '/shop/merchant-account', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户账号 + */ +export async function updateMerchantAccount(data: MerchantAccount) { + const res = await request.put>( + MODULES_API_URL + '/shop/merchant-account', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户账号 + */ +export async function removeMerchantAccount(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-account/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户账号 + */ +export async function removeBatchMerchantAccount(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-account/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户账号 + */ +export async function getMerchantAccount(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-account/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/merchantAccount/model/index.ts b/src/api/shop/merchantAccount/model/index.ts new file mode 100644 index 0000000..ca0ca67 --- /dev/null +++ b/src/api/shop/merchantAccount/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 商户账号 + */ +export interface MerchantAccount { + // ID + id?: number; + // 商户手机号 + phone?: string; + password?: string; + // 真实姓名 + realName?: string; + // 商户ID + merchantId?: number; + merchantName?: string; + roleId?: number; + roleName?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户账号搜索条件 + */ +export interface MerchantAccountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/merchantApply/index.ts b/src/api/shop/merchantApply/index.ts new file mode 100644 index 0000000..6a58bd5 --- /dev/null +++ b/src/api/shop/merchantApply/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MerchantApply, MerchantApplyParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户入驻申请 + */ +export async function pageMerchantApply(params: MerchantApplyParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/merchant-apply/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户入驻申请列表 + */ +export async function listMerchantApply(params?: MerchantApplyParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-apply', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户入驻申请 + */ +export async function addMerchantApply(data: MerchantApply) { + const res = await request.post>( + MODULES_API_URL + '/shop/merchant-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户入驻申请 + */ +export async function updateMerchantApply(data: MerchantApply) { + const res = await request.put>( + MODULES_API_URL + '/shop/merchant-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户入驻申请 + */ +export async function removeMerchantApply(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-apply/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户入驻申请 + */ +export async function removeBatchMerchantApply(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-apply/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户入驻申请 + */ +export async function getMerchantApply(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-apply/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/merchantApply/model/index.ts b/src/api/shop/merchantApply/model/index.ts new file mode 100644 index 0000000..d02cc2c --- /dev/null +++ b/src/api/shop/merchantApply/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 商户入驻申请 + */ +export interface MerchantApply { + // ID + applyId?: number; + // 商户名称 + merchantName?: string; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 店铺类型 + shopType?: string; + // 商户分类 + category?: string; + // 手续费 + commission?: string; + // 关键字 + keywords?: string; + // 资质图片 + files?: string; + // 是否自营 + ownStore?: number; + // 是否推荐 + recommend?: number; + // 是否需要审核 + goodsReview?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户入驻申请搜索条件 + */ +export interface MerchantApplyParam extends PageParam { + applyId?: number; + keywords?: string; +} diff --git a/src/api/shop/merchantType/index.ts b/src/api/shop/merchantType/index.ts new file mode 100644 index 0000000..ae2c09c --- /dev/null +++ b/src/api/shop/merchantType/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MerchantType, MerchantTypeParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户类型 + */ +export async function pageMerchantType(params: MerchantTypeParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/merchant-type/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户类型列表 + */ +export async function listMerchantType(params?: MerchantTypeParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-type', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户类型 + */ +export async function addMerchantType(data: MerchantType) { + const res = await request.post>( + MODULES_API_URL + '/shop/merchant-type', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户类型 + */ +export async function updateMerchantType(data: MerchantType) { + const res = await request.put>( + MODULES_API_URL + '/shop/merchant-type', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户类型 + */ +export async function removeMerchantType(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-type/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户类型 + */ +export async function removeBatchMerchantType(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/merchant-type/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户类型 + */ +export async function getMerchantType(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/merchant-type/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/merchantType/model/index.ts b/src/api/shop/merchantType/model/index.ts new file mode 100644 index 0000000..7e08a4f --- /dev/null +++ b/src/api/shop/merchantType/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 商户类型 + */ +export interface MerchantType { + // ID + id?: number; + // 店铺类型 + name?: string; + // 店铺入驻条件 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户类型搜索条件 + */ +export interface MerchantTypeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/order/index.ts b/src/api/shop/order/index.ts new file mode 100644 index 0000000..417059d --- /dev/null +++ b/src/api/shop/order/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Order, OrderParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询订单 + */ +export async function pageOrder(params: OrderParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listOrder(params?: OrderParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addOrder(data: Order) { + const res = await request.post>( + MODULES_API_URL + '/shop/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateOrder(data: Order) { + const res = await request.put>( + MODULES_API_URL + '/shop/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeOrder(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchOrder(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getOrder(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/order/model/index.ts b/src/api/shop/order/model/index.ts new file mode 100644 index 0000000..2d465e8 --- /dev/null +++ b/src/api/shop/order/model/index.ts @@ -0,0 +1,79 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +export interface Order { + // ID + orderId?: number; + // 订单号 + orderNo?: string; + // 类型 + type?: number; + // 订单金额 + money?: string; + // 实际付款金额(包含运费) + payPrice?: string; + // 套餐ID + planId?: number; + // 卡ID + priceId?: number; + // 获得的会员等级 + gradeId?: number; + // 卡名称 + priceName?: string; + // 用户ID + userId?: number; + // 持有者ID + memberId?: number; + // 真实姓名 + realName?: string; + // 联系电话 + phone?: string; + // 付款时间 + payTime?: string; + // 支付流水号 + transactionId?: string; + // 付款状态(10未付款 20已付款) + payStatus?: number; + // 到期时间 + expirationTime?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 所在地区 + area?: string; + // 街道地址 + address?: string; + // 退款凭证 + refundImage?: string; + // 退款理由 + refundContent?: string; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 订单搜索条件 + */ +export interface OrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/shop/spec/index.ts b/src/api/shop/spec/index.ts new file mode 100644 index 0000000..0bca15b --- /dev/null +++ b/src/api/shop/spec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Spec, SpecParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品规格组记录表 + */ +export async function pageSpec(params: SpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品规格组记录表列表 + */ +export async function listSpec(params?: SpecParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品规格组记录表 + */ +export async function addSpec(data: Spec) { + const res = await request.post>( + MODULES_API_URL + '/shop/spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品规格组记录表 + */ +export async function updateSpec(data: Spec) { + const res = await request.put>( + MODULES_API_URL + '/shop/spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品规格组记录表 + */ +export async function removeSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品规格组记录表 + */ +export async function removeBatchSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品规格组记录表 + */ +export async function getSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/spec/model/index.ts b/src/api/shop/spec/model/index.ts new file mode 100644 index 0000000..37815a8 --- /dev/null +++ b/src/api/shop/spec/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; +import { SpecValue } from '@/api/shop/specValue/model'; + +/** + * 商品规格组记录表 + */ +export interface Spec { + // 规格组ID + specId?: number; + // 规格组名称 + specName?: string; + // 描述 + comments?: string; + // 状态 + status?: number; + // 排序 + sortNumber?: number; + // 租户id + tenantId?: number; + // 规格值 + specValues?: SpecValue[]; + key?: string; + label?: string; + value?: string; +} + +/** + * 商品规格组记录表搜索条件 + */ +export interface SpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/shop/specValue/index.ts b/src/api/shop/specValue/index.ts new file mode 100644 index 0000000..2e2e398 --- /dev/null +++ b/src/api/shop/specValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { SpecValue, SpecValueParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格值 + */ +export async function pageSpecValue(params: SpecValueParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/spec-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格值列表 + */ +export async function listSpecValue(params?: SpecValueParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec-value', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加规格值 + */ +export async function addSpecValue(data: SpecValue) { + const res = await request.post>( + MODULES_API_URL + '/shop/spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格值 + */ +export async function updateSpecValue(data: SpecValue) { + const res = await request.put>( + MODULES_API_URL + '/shop/spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格值 + */ +export async function removeSpecValue(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchSpecValue(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec-value/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格值 + */ +export async function getSpecValue(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec-value/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/specValue/model/index.ts b/src/api/shop/specValue/model/index.ts new file mode 100644 index 0000000..5576a5e --- /dev/null +++ b/src/api/shop/specValue/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface SpecValue { + // 规格值ID + specValueId?: number; + // 规格值 + specValue?: string; + // 规格组ID + specId?: number; + // 描述 + comments?: string; + // 排序 + sortNumber?: number; + // 租户id + tenantId?: number; + key?: string; + label?: string; + value?: string; +} + +/** + * 规格值搜索条件 + */ +export interface SpecValueParam extends PageParam { + specValueId?: number; + specId?: number; + keywords?: string; +} diff --git a/src/api/system/access-key/index.ts b/src/api/system/access-key/index.ts new file mode 100644 index 0000000..844cb04 --- /dev/null +++ b/src/api/system/access-key/index.ts @@ -0,0 +1,59 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { AccessKey, AccessKeyParam } from './model'; +import { PageResult } from '@/api'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 查询AccessKey列表 + */ +export async function pageAccessKey(params: AccessKeyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/access-key/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加AccessKey + */ +export async function addAccessKey(data: AccessKey) { + const res = await request.post>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改AccessKey + */ +export async function updateAccessKey(data: AccessKey) { + const res = await request.put>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除AccessKey + */ +export async function removeAccessKey(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/access-key/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/access-key/model/index.ts b/src/api/system/access-key/model/index.ts new file mode 100644 index 0000000..376b577 --- /dev/null +++ b/src/api/system/access-key/model/index.ts @@ -0,0 +1,20 @@ +/** + * AccessKey + */ +export interface AccessKey { + id?: number; + phone?: string; + accessKey?: string; + accessSecret?: string; + createTime?: string; + tenantId?: number; + code?: number; +} + +/** + * AccessKey搜索条件 + */ +export interface AccessKeyParam { + id?: number; + accessKey?: string; +} diff --git a/src/api/system/appstore/index.ts b/src/api/system/appstore/index.ts new file mode 100644 index 0000000..4acad48 --- /dev/null +++ b/src/api/system/appstore/index.ts @@ -0,0 +1,11 @@ +// json数据 +export function appstoreType() { + return [ + { value: '0', label: '全部', text: '全部', comments: '' }, + { value: '1', label: '系统管理', text: '系统管理', comments: '' }, + { value: '2', label: '内容管理', text: '内容管理', comments: '' }, + { value: '3', label: '第三方应用', text: '第三方应用', comments: '' }, + { value: '4', label: '办公协同', text: '办公协同', comments: '' }, + { value: '5', label: '商城模块', text: '商城模块', comments: '' } + ]; +} diff --git a/src/api/system/appstore/model/index.ts b/src/api/system/appstore/model/index.ts new file mode 100644 index 0000000..c3c9c45 --- /dev/null +++ b/src/api/system/appstore/model/index.ts @@ -0,0 +1,13 @@ +/** + * 消息 + */ +export interface Appstore { + // 消息id + id?: number; + // 标题 + title?: string; + // 时间 + time?: string; + // 状态 + status?: number; +} diff --git a/src/api/system/cache/index.ts b/src/api/system/cache/index.ts new file mode 100644 index 0000000..aa4c8e6 --- /dev/null +++ b/src/api/system/cache/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Cache, CacheParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询缓存数据 + */ +export async function listCache(params?: CacheParam) { + const res = await request.get>( + SERVER_API_URL + '/system/cache', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取缓存数据 + * @param key + */ +export async function getCache(key: String) { + const res = await request.get>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.data.code === 0) { + return res.data.data; + } +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCache(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache', + cache + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除缓存数据 + * @param key + */ +export async function removeCache(key?: String) { + const res = await request.delete>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCacheTheme(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache/theme', + cache + ); + if (res.data.code === 0) { + return res.data.message; + } +} diff --git a/src/api/system/cache/model/index.ts b/src/api/system/cache/model/index.ts new file mode 100644 index 0000000..dc28d00 --- /dev/null +++ b/src/api/system/cache/model/index.ts @@ -0,0 +1,18 @@ +import type { PageParam } from '@/api'; + +/** + * 缓存管理 + */ +export interface Cache { + key?: string; + content?: string; + uploadMethod?: any; + expireTime?: number; // 过期时间(秒) +} + +/** + * 搜索条件 + */ +export interface CacheParam extends PageParam { + key?: string; +} diff --git a/src/api/system/chat/index.ts b/src/api/system/chat/index.ts new file mode 100644 index 0000000..e926ecd --- /dev/null +++ b/src/api/system/chat/index.ts @@ -0,0 +1,157 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + ChatConversation, + ChatConversationParam, + ChatMessage, + ChatMessageParam +} from '@/api/system/chat/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询聊天列表 + */ +export async function pageChatConversation(params: ChatConversationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-conversation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询聊天列表 + */ +export async function pageChatMessage(params: ChatMessageParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-message/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} +/** + * 查询日志列表 + */ +export async function listChatConversation(params?: ChatConversationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-conversation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加日志 + */ +export async function addChatMessage(data: ChatMessage) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.data.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加日志 + */ +export async function addChatConversation(data: ChatConversation) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改日志 + */ +export async function updateChatConversation(data: any) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定日志 + */ +export async function bindChatConversation(data: ChatConversation) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加 + */ +export async function addBatchChatConversation(data: ChatConversation[]) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除日志 + */ +export async function removeChatConversation(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-conversation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除日志 + */ +export async function removeBatchChatConversation( + data: (number | undefined)[] +) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-conversation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/chat/model/index.ts b/src/api/system/chat/model/index.ts new file mode 100644 index 0000000..8db6db5 --- /dev/null +++ b/src/api/system/chat/model/index.ts @@ -0,0 +1,48 @@ +import type { PageParam } from '@/api'; +import type { User } from '@/api/system/user/model'; + +export interface ChatConversation { + id?: number; + userId?: number; + friendId?: number; + userInfo?: User; + friendInfo?: User; + content: string; + messages: ChatMessage[]; + unRead: number; + createTime?: string; + updateTime: string | number | Date; +} + +export interface ChatMessage { + id?: number; + formUserId?: number; + formUserInfo?: User; + toUserInfo?: User; + toUserId?: number; + type: string; + content: string; + status?: number; + createTime?: number; + updateTime?: number; +} + +/** + * 搜索条件 + */ +export interface ChatConversationParam extends PageParam { + userId?: number; + status: number; + onlyFake: boolean; + keywords: string; +} + +/** + * 搜索条件 + */ +export interface ChatMessageParam extends PageParam { + formUserId?: number; + toUserId?: number; + type?: string; + keywords: string; +} diff --git a/src/api/system/company/index.ts b/src/api/system/company/index.ts new file mode 100644 index 0000000..b876290 --- /dev/null +++ b/src/api/system/company/index.ts @@ -0,0 +1,148 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Company, CompanyParam } from './model'; +import { PageResult } from '@/api'; +import { MODULES_API_URL, SERVER_API_URL } from '@/config/setting'; + +/** + * 查询企业资料 + */ +export async function getCompany(params?: CompanyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company/profile', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业资料不限租户 + */ +export async function getCompanyAll(companyId: number) { + const res = await request.get>( + MODULES_API_URL + '/system/company/profileAll/' + companyId + ); + if (res.data.code === 0 && res.data) { + console.log(res.data); + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表 + */ +export async function pageCompany(params: CompanyParam) { + const res = await request.get>>( + MODULES_API_URL + '/system/company/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表不限租户 + */ +export async function pageCompanyAll(params: CompanyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company/pageAll', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加Company + */ +export async function addCompany(data: Company) { + const res = await request.post>( + MODULES_API_URL + '/system/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改Company + */ +export async function updateCompany(data: Company) { + const res = await request.put>( + SERVER_API_URL + '/system/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除Company + */ +export async function removeCompany(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/system/company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 销毁租户 +export async function destructionTenant(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/system/company/destruction/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除Company + */ +export async function removeBatchCompany(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/system/company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/system/company/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/company/model/index.ts b/src/api/system/company/model/index.ts new file mode 100644 index 0000000..4b85a2c --- /dev/null +++ b/src/api/system/company/model/index.ts @@ -0,0 +1,89 @@ +import { PageParam } from '@/api'; + +/** + * 企业信息 + */ +export interface Company { + companyId?: number; + shortName?: string; + companyName?: string; + companyType?: number; + companyTypeMultiple?: string; + appType?: string; + companyLogo?: string; + companyCode?: string; + domain?: string; + phone?: string; + email?: string; + InvoiceHeader?: string; + startTime?: string; + expirationTime?: string; + version?: number; + versionName?: string; + versionCode?: string; + members?: number; + storage?: string; + storageMax?: string; + buys?: number; + clicks?: number; + users?: number; + departments?: number; + industryParent?: string; + industryChild?: string; + country?: string; + province?: string; + city?: string; + region?: string; + address?: string; + latitude?: string; + longitude?: string; + businessEntity?: string; + comments?: any; + authentication?: number; + industryId?: number; + industryName?: string; + status?: number; + userId?: number; + planId?: number; + sortNumber?: number; + authoritative?: boolean; + tenantId?: number; + tenantName?: string; + tenantCode?: string; + modules?: string; + requestUrl?: string; + socketUrl?: string; + serverUrl?: string; + modulesUrl?: string; + avatar?: string; + nickname?: string; + code?: number; + createTime?: string; + updateTime?: string; + password?: string; + password2?: string; +} + +/** + * 企业信息搜索条件 + */ +export interface CompanyParam extends PageParam { + companyId?: number; + shortName?: string; + companyName?: string; + domain?: string; + recommend?: boolean; + keywords?: any; + authoritative?: number; + authentication?: number; + industryParent?: string; + industryChild?: string; + province?: string; + city?: string; + region?: string; + version?: number; + sceneType?: string; + createTimeStart?: string; + createTimeEnd?: string; + tenantId?: number; +} diff --git a/src/api/system/dict-data/index.ts b/src/api/system/dict-data/index.ts new file mode 100644 index 0000000..ded8ced --- /dev/null +++ b/src/api/system/dict-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictData, DictDataParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询字典数据 + */ +export async function pageDictData(params: DictDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dict-data/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictData(params: DictDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict-data', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictData(data: DictData) { + const res = await request.post>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictData(data: DictData) { + const res = await request.put>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictData(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictDataBatch(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dict-data/model/index.ts b/src/api/system/dict-data/model/index.ts new file mode 100644 index 0000000..d4d40a8 --- /dev/null +++ b/src/api/system/dict-data/model/index.ts @@ -0,0 +1,45 @@ +import { PageParam } from '@/api'; + +/** + * 字典数据 + */ +export interface DictData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典名称 + dictName?: string; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 字典标识 + dictCode?: string; + // 排序号 + sortNumber?: any; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + tenantId?: number; + label?: string; + value?: number; +} + +/** + * 字典数据搜索条件 + */ +export interface DictDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; + // + value?: number; + // + label?: string; + dictDataId?: number; +} diff --git a/src/api/system/dict/index.ts b/src/api/system/dict/index.ts new file mode 100644 index 0000000..59ec1db --- /dev/null +++ b/src/api/system/dict/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Dict, DictParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典 + */ +export async function addDict(data: Dict) { + const res = await request.post>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典 + */ +export async function updateDict(data: Dict) { + const res = await request.put>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典 + */ +export async function removeDict(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dict/model/index.ts b/src/api/system/dict/model/index.ts new file mode 100644 index 0000000..575cb35 --- /dev/null +++ b/src/api/system/dict/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dict { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/dictionary-data/index.ts b/src/api/system/dictionary-data/index.ts new file mode 100644 index 0000000..9eb786f --- /dev/null +++ b/src/api/system/dictionary-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictionaryData, DictionaryDataParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询字典数据 + */ +export async function pageDictionaryData(params: DictionaryDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dict-data/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictionaryData(params: DictionaryDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict-data', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictionaryData(data: DictionaryData) { + const res = await request.post>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictionaryData(data: DictionaryData) { + const res = await request.put>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictionaryData(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictionaryDataBatch(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dictionary-data/model/index.ts b/src/api/system/dictionary-data/model/index.ts new file mode 100644 index 0000000..e1301bd --- /dev/null +++ b/src/api/system/dictionary-data/model/index.ts @@ -0,0 +1,33 @@ +import { PageParam } from '@/api'; + +/** + * 字典数据 + */ +export interface DictionaryData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 排序号 + sortNumber?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; +} + +/** + * 字典数据搜索条件 + */ +export interface DictionaryDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; +} diff --git a/src/api/system/dictionary/index.ts b/src/api/system/dictionary/index.ts new file mode 100644 index 0000000..84dcc4c --- /dev/null +++ b/src/api/system/dictionary/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Dictionary, DictionaryParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictionaryParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dictionary', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典 + */ +export async function addDictionary(data: Dictionary) { + const res = await request.post>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典 + */ +export async function updateDictionary(data: Dictionary) { + const res = await request.put>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典 + */ +export async function removeDictionary(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dictionary/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dictionary/model/index.ts b/src/api/system/dictionary/model/index.ts new file mode 100644 index 0000000..d72e7c2 --- /dev/null +++ b/src/api/system/dictionary/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dictionary { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictionaryParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/environment/index.ts b/src/api/system/environment/index.ts new file mode 100644 index 0000000..01d542b --- /dev/null +++ b/src/api/system/environment/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Environment, EnvironmentParam } from './model/index'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pageEnvironment(params?: EnvironmentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/environment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listEnvironment(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getEnvironment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateEnvironment(data: Environment) { + const res = await request.put>( + SERVER_API_URL + '/system/environment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 排行榜 +export async function ranking(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 搜索历史 +export async function searchHistory(params?: String) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/search-history', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createEnvironment(data: Environment) { + const res = await request.post>( + SERVER_API_URL + '/system/environment/environment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/environment/model/index.ts b/src/api/system/environment/model/index.ts new file mode 100644 index 0000000..daa916b --- /dev/null +++ b/src/api/system/environment/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Environment { + id?: number; + environmentName?: string; + environmentCode?: string; + brand?: string; + serverIp?: string; + modulesUrl?: string; + modulesApi?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface EnvironmentParam extends PageParam { + id: number; + environmentName: string; +} diff --git a/src/api/system/file/index.ts b/src/api/system/file/index.ts new file mode 100644 index 0000000..1f7723c --- /dev/null +++ b/src/api/system/file/index.ts @@ -0,0 +1,215 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { FileRecord, FileRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; +import { FILE_SERVER } from '@/config/setting'; + +/** + * 上传文件 + */ +export async function uploadFileLocal(file: File, AppId: number) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + FILE_SERVER + '/api/file/upload', + formData, + { + headers: { AppId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传文件 + */ +export async function uploadFileLocalByCompany(file: File, CompanyId: number) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + FILE_SERVER + '/api/file/upload', + formData, + { + headers: { CompanyId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传文件 + */ +export async function uploadFile(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传 base64 文件 + * @param base64 文件数据 + * @param fileName 文件名称 + */ +export async function uploadBase64File(base64: string, fileName?: string) { + const formData = new FormData(); + formData.append('base64', base64); + if (fileName) { + formData.append('fileName', fileName); + } + const res = await request.post>( + SERVER_API_URL + '/file/upload/base64', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传证书 + */ +export async function uploadCert(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/file/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询文件上传记录 + */ +export async function pageFiles(params: FileRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/file/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文件 + */ +export async function getFile(id: number) { + const res = await request.get>( + SERVER_API_URL + '/file/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文件 + */ +export async function removeFile(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/file/remove/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文件 + */ +export async function removeFiles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/file/remove/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文件 + */ +export async function addFiles(data: FileRecord) { + const res = await request.post>( + SERVER_API_URL + '/file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文件 + */ +export async function updateFiles(data: FileRecord) { + const res = await request.put>( + SERVER_API_URL + '/file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOss(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOssByGroupId(file: File, GroupId: string) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData, + { + headers: { GroupId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/file/model/index.ts b/src/api/system/file/model/index.ts new file mode 100644 index 0000000..bcd0541 --- /dev/null +++ b/src/api/system/file/model/index.ts @@ -0,0 +1,52 @@ +import { PageParam } from '@/api'; + +/** + * 文件上传记录 + */ +export interface FileRecord { + // id + id: number; + // 文件名称 + name?: string; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传人id + createUserId?: number; + // 分组ID + groupId?: number; + groupName?: string; + // 上传时间 + createTime?: string; + // 描述 + comments?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; + // 上传人账号 + createUsername?: string; + // 上传人名称 + createNickname?: string; + // 是否编辑状态 + isUpdate?: boolean; +} + +/** + * 文件上传记录查询参数 + */ +export interface FileRecordParam extends PageParam { + name?: string; + path?: string; + contentType?: string; + createNickname?: string; + groupId?: number; + groupName?: string; + count?: number; + page?: number; +} diff --git a/src/api/system/login-record/index.ts b/src/api/system/login-record/index.ts new file mode 100644 index 0000000..d96f0ca --- /dev/null +++ b/src/api/system/login-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { LoginRecord, LoginRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询登录日志 + */ +export async function pageLoginRecords(params: LoginRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/login-record/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询登录日志列表 + */ +export async function listLoginRecords(params?: LoginRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/login-record', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/login-record/model/index.ts b/src/api/system/login-record/model/index.ts new file mode 100644 index 0000000..0836eb5 --- /dev/null +++ b/src/api/system/login-record/model/index.ts @@ -0,0 +1,38 @@ +import { PageParam } from '@/api'; + +/** + * 登录日志 + */ +export interface LoginRecord { + // 登录日志id + id: number; + // 用户账号 + username: string; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token + loginType: number; + // 备注 + comments: string; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; +} + +/** + * 登录日志搜索条件 + */ +export interface LoginRecordParam extends PageParam { + username?: string; + nickname?: string; + createTimeStart?: string; + createTimeEnd?: string; + loginType?: number; +} diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts new file mode 100644 index 0000000..f302be2 --- /dev/null +++ b/src/api/system/menu/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Menu, MenuParam } from './model'; +import { App } from '@/api/dashboard/appstore/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询菜单列表 + */ +export async function listMenus(params: MenuParam) { + const res = await request.get>( + SERVER_API_URL + '/system/menu', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加菜单 + */ +export async function addMenu(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改菜单 + */ +export async function updateMenu(data: Menu) { + const res = await request.put>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除菜单 + */ +export async function removeMenu(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/menu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 安装应用 + */ +export async function installApp(data: App) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/install', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 卸载应用 + */ +export async function uninstallApp(data: App) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/uninstall', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 菜单克隆 +export async function clone(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/clone', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 安装插件 +export async function installPlug(id?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/menu/install/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/menu/model/index.ts b/src/api/system/menu/model/index.ts new file mode 100644 index 0000000..4b52e95 --- /dev/null +++ b/src/api/system/menu/model/index.ts @@ -0,0 +1,67 @@ +/** + * 菜单 + */ +export interface Menu { + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title: string; + // 菜单路由地址 + path: string; + // 菜单组件地址 + component: string; + // 模块API + modulesUrl?: string; + // 模块ID + modules?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Menu[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + disabled?: boolean; + // + appId?: number; + // + tenantId?: number; + tenantName?: string; + companyId?: number; + // 插件Api + plugUrl?: string; + label?: string; +} + +/** + * 菜单搜索参数 + */ +export interface MenuParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; + menuType?: number; + hide?: number; +} diff --git a/src/api/system/modules/index.ts b/src/api/system/modules/index.ts new file mode 100644 index 0000000..859a703 --- /dev/null +++ b/src/api/system/modules/index.ts @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Modules, ModulesParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色module + */ +export async function pageModules(params) { + const res = await request.get>>( + SERVER_API_URL + '/system/modules/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listModules(params?: ModulesParam) { + const res = await request.get>( + SERVER_API_URL + '/system/modules', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addModules(data: Modules) { + const res = await request.post>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateModules(data: Modules) { + const res = await request.put>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeModules(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/modules/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeModulesBath(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/modules/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listModulesMenus(modulesId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/modules-menu/' + modulesId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateModulesMenus(modulesId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/modules-menu/' + modulesId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/modules/model/index.ts b/src/api/system/modules/model/index.ts new file mode 100644 index 0000000..a1cda9b --- /dev/null +++ b/src/api/system/modules/model/index.ts @@ -0,0 +1,22 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Modules { + id?: number; + modules?: string; + modulesUrl?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface ModulesParam extends PageParam { + id: number; + modules: string; + modulesUrl?: string; +} diff --git a/src/api/system/operation-record/index.ts b/src/api/system/operation-record/index.ts new file mode 100644 index 0000000..216e935 --- /dev/null +++ b/src/api/system/operation-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OperationRecord, OperationRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询操作日志 + */ +export async function pageOperationRecords(params: OperationRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/operation-record/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询操作日志列表 + */ +export async function listOperationRecords(params?: OperationRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/operation-record', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/operation-record/model/index.ts b/src/api/system/operation-record/model/index.ts new file mode 100644 index 0000000..fc1425e --- /dev/null +++ b/src/api/system/operation-record/model/index.ts @@ -0,0 +1,56 @@ +import { PageParam } from '@/api'; + +/** + * 操作日志 + */ +export interface OperationRecord { + // 操作日志id + id?: number; + // 用户id + userId?: number; + // 操作模块 + module: string; + // 操作功能 + description: string; + // 请求地址 + url: string; + // 请求方式 + requestMethod: string; + // 调用方法 + method: string; + // 请求参数 + params: string; + // 返回结果 + result: string; + // 异常信息 + error: string; + // 消耗时间, 单位毫秒 + spendTime: number; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 状态, 0成功, 1异常 + status: number; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; + // 用户账号 + username: string; +} + +/** + * 操作日志搜索条件 + */ +export interface OperationRecordParam extends PageParam { + username?: string; + module?: string; + createTimeStart?: string; + createTimeEnd?: string; + status?: number; +} diff --git a/src/api/system/organization/index.ts b/src/api/system/organization/index.ts new file mode 100644 index 0000000..3557b1a --- /dev/null +++ b/src/api/system/organization/index.ts @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Organization, OrganizationParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询机构 + */ +export async function pageOrganizations(params: OrganizationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/organization/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询机构列表 + */ +export async function listOrganizations(params?: OrganizationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/organization', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加机构 + */ +export async function addOrganization(data: Organization) { + const res = await request.post>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改机构 + */ +export async function updateOrganization(data: Organization) { + const res = await request.put>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除机构 + */ +export async function removeOrganization(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/organization/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/organization/model/index.ts b/src/api/system/organization/model/index.ts new file mode 100644 index 0000000..1f9deaa --- /dev/null +++ b/src/api/system/organization/model/index.ts @@ -0,0 +1,42 @@ +import { PageParam } from '@/api'; + +/** + * 机构 + */ +export interface Organization { + // 机构id + organizationId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 机构名称 + organizationName?: string; + // 机构全称 + organizationFullName?: string; + // 机构代码 + organizationCode?: string; + // 机构类型(字典) + organizationType?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 机构类型名称 + organizationTypeName?: string; + // + key?: number; + // + value?: number; + // + title?: string; + children?: Organization[]; +} + +/** + * 机构搜索条件 + */ +export interface OrganizationParam extends PageParam { + organizationName?: string; + parentId?: number; +} diff --git a/src/api/system/plug/index.ts b/src/api/system/plug/index.ts new file mode 100644 index 0000000..bd27986 --- /dev/null +++ b/src/api/system/plug/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Plug, PlugParam } from './model/index'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pagePlug(params: PlugParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/plug/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listPlug(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getPlug(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updatePlug(data: Plug) { + const res = await request.put>( + SERVER_API_URL + '/system/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 排行榜 +export async function ranking(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 搜索历史 +export async function searchHistory(params?: String) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/search-history', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Plug) { + const res = await request.post>( + SERVER_API_URL + '/system/plug/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/plug/model/index.ts b/src/api/system/plug/model/index.ts new file mode 100644 index 0000000..e67242f --- /dev/null +++ b/src/api/system/plug/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Plug { + plugId?: number; + plugName?: string; + plugCode?: string; + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址 + component?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + score?: number; + price?: number; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Plug[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + shortName?: string; + comments?: string; + content?: string; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + // + userId?: number; + // + appId?: number; + status?: number; + tenantId?: number; +} + +/** + * 插件搜索条件 + */ +export interface PlugParam extends PageParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; +} diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts new file mode 100644 index 0000000..352e352 --- /dev/null +++ b/src/api/system/role/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Role, RoleParam } from './model'; +import type { Menu } from '../menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色 + */ +export async function pageRoles(params: RoleParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/role/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listRoles(params?: RoleParam) { + const res = await request.get>( + SERVER_API_URL + '/system/role', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addRole(data: Role) { + const res = await request.post>( + SERVER_API_URL + '/system/role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateRole(data: Role) { + const res = await request.put>( + SERVER_API_URL + '/system/role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeRole(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/role/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeRoles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/role/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listRoleMenus(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateRoleMenus(roleId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/role-menu/' + roleId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/role/model/index.ts b/src/api/system/role/model/index.ts new file mode 100644 index 0000000..d4c9a50 --- /dev/null +++ b/src/api/system/role/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 角色 + */ +export interface Role { + // 角色id + roleId?: number; + // 角色标识 + roleCode?: string; + // 角色名称 + roleName?: string; + sortNumber?: any; + // 备注 + comments?: any; + // 创建时间 + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface RoleParam extends PageParam { + roleName?: string; + roleCode?: string; + comments?: string; +} diff --git a/src/api/system/setting/index.ts b/src/api/system/setting/index.ts new file mode 100644 index 0000000..e743223 --- /dev/null +++ b/src/api/system/setting/index.ts @@ -0,0 +1,126 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Setting, SettingParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询设置 + */ +export async function pageSetting(params: SettingParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/setting/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设置列表 + */ +export async function listSetting(params?: SettingParam) { + const res = await request.get>( + SERVER_API_URL + '/system/setting', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getSetting(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设置 + */ +export async function addSetting(data: Setting) { + const res = await request.post>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设置 + */ +export async function updateSetting(data: Setting) { + const res = await request.put>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设置 + */ +export async function removeSetting(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设置 + */ +export async function removeBatchSetting(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/setting/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/setting/model/index.ts b/src/api/system/setting/model/index.ts new file mode 100644 index 0000000..c0bee23 --- /dev/null +++ b/src/api/system/setting/model/index.ts @@ -0,0 +1,127 @@ +import type { PageParam } from '@/api'; + +/** + * 系统设置 + */ +export interface Setting { + // 公共字段 + settingId?: number; + settingKey?: string; + content?: string; + comments?: string; + tenantName?: string; + tenantId?: string | null; + + // 设置信息 + siteName?: string; + fullName?: string; + tenantCode?: string; + domain?: string; + remarks?: string; + icp?: string; + copyright?: string; + keyword?: string; + phone?: string; + company?: string; + address?: string; + email?: string; + support?: string; + logo?: string; + + // 注册设置 + roleId?: number; + openWxAuth?: number; + openWxBindPhone?: number; + openWxofficialAuth?: number; + openWxofficialBindPhone?: number; + tokenExpireTime?: number; + + // 短信设置 + type?: number; + accessKeyId?: string; + accessKeySecret?: string; + sign?: string; + isNoticeUser?: string; + userTemplateId?: string; + merchantTemplateId?: string; + isNoticeMerchant?: string; + merchantMobiles?: string; + + // 支付设置 + payMethod?: string; + signMode?: string; + alipayAppId?: string; + signType?: string; + appCertPublicKey?: string; + alipayCertPublicKey?: string; + alipayRootCert?: string; + alipayPublicKey?: string; + privateKey?: string; + decryptKey?: string; + balanceIsEnable?: boolean; + wechatIsEnable?: boolean; + alipayIsEnable?: boolean; + wechatType?: string; + mchId?: number; + wechatAppId?: string; + wechatApiKey?: string; + apiclientCert?: string; + apiclientKey?: string; + spAppId?: string; + spMchId?: string; + spApiKey?: string; + spSubAppId?: string; + spSubMchId?: string; + spApiclientCert?: string; + spApiclientKey?: string; + merchantSerialNumber?: string; + + // 微信公众号/小程序设置 + appId?: string; + appSecret?: string; + wxOfficialAccount?: string; + originalId?: string; + + // 企业微信参数 + suiteId?: string; + secret?: string; + corpId?: string; + token?: string; + encodingAESKey?: string; + + // 打印设置 + isOpenPrinter?: string; + printerType?: string; + printerStatus?: string; + printerUser?: string; + printerUserKey?: string; + printerCode?: string; + printerKey?: string; + printerTimes?: string; + + // chatGPT + chatKey?: string; + + // 清除缓存 + clearCache?: string; + + // 主题 + theme?: string; + + // 云存储 + uploadMethod?: any; + fileUrl?: string; + bucketName?: string; + bucketEndpoint?: string; + bucketDomain?: string; + // accessKeyId?: string; 引用上面的 + // accessKeySecret?: string; 引用上面的 +} + +/** + * 系统设置搜索条件 + */ +export interface SettingParam extends PageParam { + settingId?: number; + settingKey?: string; +} diff --git a/src/api/system/tennat/index.ts b/src/api/system/tennat/index.ts new file mode 100644 index 0000000..602c6b7 --- /dev/null +++ b/src/api/system/tennat/index.ts @@ -0,0 +1,178 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Tenant, TenantParam } from './model'; +import { Menu } from '@/api/system/menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询租户 + */ +export async function pageTenant(params: TenantParam) { + // 租户列表查询需要传一个key + // params.tenantCode = 'ZAcxbdmDQFwUKC3e'; + const res = await request.get>>( + SERVER_API_URL + '/system/tenant/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户资料 + */ +export async function profile(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/profile', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户列表 + */ +export async function listTenant(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getTenant(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加租户 + */ +export async function addTenant(data: Tenant) { + const res = await request.post>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改租户 + */ +export async function updateTenant(data: Tenant) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除租户 + */ +export async function removeTenant(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除租户 + */ +export async function removeBatchTenant(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/tenant/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 重置用户密码 + */ +export async function updateTenantPassword( + tenantId?: number, + password = 'gxwebsoft.com' +) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant/password', + { + tenantId, + password + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 租户初始化 + */ +export async function initialization(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/tennat/model/index.ts b/src/api/system/tennat/model/index.ts new file mode 100644 index 0000000..6de67cd --- /dev/null +++ b/src/api/system/tennat/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; +import { Company } from '@/api/system/company/model'; + +/** + * 租户 + */ +export interface Tenant { + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 应用ID + appId?: string; + // 应用秘钥 + appSecret?: string; + // logo + logo?: string; + // 企业名称 + companyName?: string; + // 关联客户ID + companyId?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: number; + // + password?: string; + // 企业信息 + company?: Company | null; +} + +/** + * 租户搜索条件 + */ +export interface TenantParam extends PageParam { + tenantName?: string; + appId?: string; + companyId?: number; + companyName?: string; + tenantCode?: string; +} diff --git a/src/api/system/user-file/index.ts b/src/api/system/user-file/index.ts new file mode 100644 index 0000000..67a9c22 --- /dev/null +++ b/src/api/system/user-file/index.ts @@ -0,0 +1,89 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserFile, UserFileParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询用户文件 + */ +export async function pageUserFiles(params: UserFileParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-file/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户文件列表 + */ +export async function listUserFiles(params: UserFileParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-file', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户文件 + */ +export async function addUserFile(data: UserFile) { + const res = await request.post>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户文件 + */ +export async function updateUserFile(data: UserFile) { + const res = await request.put>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户文件 + */ +export async function removeUserFile(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-file/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户文件 + */ +export async function removeUserFiles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-file/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-file/model/index.ts b/src/api/system/user-file/model/index.ts new file mode 100644 index 0000000..ca51256 --- /dev/null +++ b/src/api/system/user-file/model/index.ts @@ -0,0 +1,39 @@ +import { PageParam } from '@/api'; + +/** + * 用户文件 + */ +export interface UserFile { + // id + id?: number; + // 用户id + userId?: number; + // 文件名称 + name?: string; + // 是否是文件夹, 0否, 1是 + isDirectory?: number; + // 上级id + parentId?: number; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传时间 + createTime?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; +} + +/** + * 用户文件查询参数 + */ +export interface UserFileParam extends PageParam { + name?: string; + parentId?: number; +} diff --git a/src/api/system/user-group/index.ts b/src/api/system/user-group/index.ts new file mode 100644 index 0000000..6e2aca9 --- /dev/null +++ b/src/api/system/user-group/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Group, GroupParam } from '@/api/system/user-group/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询仓库 + */ +export async function pageGroup(params: GroupParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-group/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGroup(params?: GroupParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-group', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addGroup(data: Group) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGroup(data: Group[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeGroup(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-group/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGroup(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-group/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-group/model/index.ts b/src/api/system/user-group/model/index.ts new file mode 100644 index 0000000..dc858cb --- /dev/null +++ b/src/api/system/user-group/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +export interface Group { + groupId?: number; + name?: string; + status?: number; + comments?: any; + sortNumber?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GroupParam extends PageParam { + groupId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts new file mode 100644 index 0000000..2ac2612 --- /dev/null +++ b/src/api/system/user/index.ts @@ -0,0 +1,236 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { User, UserParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询用户 + */ +export async function pageUsers(params: UserParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function listUsers(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function getStaffs(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function getCompanyList(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户 + */ +export async function getUser(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户 + */ +export async function addUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/system/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户 + */ +export async function updateUser(data: User) { + const res = await request.put>( + SERVER_API_URL + '/system/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户 + */ +export async function removeUser(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户 + */ +export async function removeUsers(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateUserStatus(userId?: number, status?: number) { + const res = await request.put>( + SERVER_API_URL + '/system/user/status', + { + userId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改推荐状态 + */ +export async function updateUserRecommend(form) { + const res = await request.put>( + SERVER_API_URL + '/system/user/recommend', + form + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 重置用户密码 + */ +export async function updateUserPassword(userId?: number, password = '123456') { + const res = await request.put>( + SERVER_API_URL + '/system/user/password', + { + userId, + password + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入用户 + */ +export async function importUsers(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/system/user/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查用户是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/user/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 统计用户余额 + */ +export async function countUserBalance(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user/countUserBalance', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user/model/count.ts b/src/api/system/user/model/count.ts new file mode 100644 index 0000000..82442c2 --- /dev/null +++ b/src/api/system/user/model/count.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@/api'; + +/** + * 用户 + */ +export interface Count { + balance?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + organizationId?: number; +} diff --git a/src/api/system/user/model/index.ts b/src/api/system/user/model/index.ts new file mode 100644 index 0000000..3fa8426 --- /dev/null +++ b/src/api/system/user/model/index.ts @@ -0,0 +1,113 @@ +import type { PageParam } from '@/api'; +import type { Role } from '../../role/model'; +import type { Menu } from '../../menu/model'; +import { Company } from '@/api/system/company/model'; + +/** + * 用户 + */ +export interface User { + // 账号类型 + type?: number; + // 用户id + userId?: number; + // 账号 + username?: string; + // 密码 + password?: string; + password2?: string; + // 昵称 + nickname?: string; + // 别名 + alias?: string; + // 头像 + avatar?: string; + // 性别(字典) + sex?: string; + // 手机号 + phone?: string; + // 脱敏手机号 + mobile?: string; + // 邮箱 + email?: string; + // 出生日期 + birthday?: string; + age?: number; + // 详细地址 + address?: string; + longitude?: string; + latitude?: string; + // 会员等级ID + gradeId?: number; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 性别名称 + sexName?: string; + province?: string; + city?: string; + region?: string; + // 机构名称 + organizationName?: string; + // 角色列表 + roles?: Role[]; + roleCode?: string; + // 权限列表 + authorities?: Menu[]; + payTime?: string; + deliveryTime?: string; + receiptTime?: string; + // 创建时间 + createTime?: string; + // 租户ID + tenantId?: number; + // 租户名称 + tenantName?: string; + logo?: string; + companyId?: number; + companyInfo?: Company; + planId?: number; + code?: string; + // + remember?: boolean; + balance?: number; + points?: number; + payMoney?: number; + setting?: string; + realName?: string; + companyName?: string; + gradeName?: string; + idCard?: string; + comments?: string; + recommend?: number; + system?: any; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + keywords?: any; + type?: any; + userId?: number; + username?: string; + nickname?: string; + realName?: string; + gradeId?: unknown; + gradeName?: string; + companyName?: string; + city?: string; + cityMate?: string; + sex?: string; + phone?: string; + status?: number; + organizationId?: number; + parentId?: number; + sexName?: string; + roleId?: string; + showProfile?: boolean; + isStaff?: boolean; +} diff --git a/src/api/system/version/index.ts b/src/api/system/version/index.ts new file mode 100644 index 0000000..aba95d8 --- /dev/null +++ b/src/api/system/version/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Version, VersionParam } from './model'; +import type { Menu } from '../menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色 + */ +export async function pageVersion(params: VersionParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/version/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listVersion(params?: VersionParam) { + const res = await request.get>( + SERVER_API_URL + '/system/version', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addVersion(data: Version) { + const res = await request.post>( + SERVER_API_URL + '/system/version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateVersion(data: Version) { + const res = await request.put>( + SERVER_API_URL + '/system/version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeVersion(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/version/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeVersions(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/version/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listVersionMenus(versionId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/version-menu/' + versionId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateVersionMenus(versionId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/version-menu/' + versionId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/version/model/index.ts b/src/api/system/version/model/index.ts new file mode 100644 index 0000000..8899e2f --- /dev/null +++ b/src/api/system/version/model/index.ts @@ -0,0 +1,26 @@ +import type { PageParam } from '@/api'; + +export interface Version { + id?: number; + versionName?: string; + versionCode?: string; + vueDownloadUrl?: string; + androidDownloadUrl?: string; + iosDownloadUrl?: string; + updateInfo?: any; + isHard?: boolean; + isHot?: boolean; + status?: number; + comments?: string; + tenantId?: number; + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface VersionParam extends PageParam { + versionName?: string; + versionCode?: string; + comments?: string; +} diff --git a/src/api/system/white-domain/index.ts b/src/api/system/white-domain/index.ts new file mode 100644 index 0000000..3649677 --- /dev/null +++ b/src/api/system/white-domain/index.ts @@ -0,0 +1,146 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { WhiteDomain, WhiteDomainParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询服务器白名单 + */ +export async function pageWhiteDomain(params: WhiteDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/white-domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询服务器白名单列表 + */ +export async function listWhiteDomain(params?: WhiteDomainParam) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加服务器白名单 + */ +export async function addWhiteDomain(data: WhiteDomain) { + const res = await request.post>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改服务器白名单 + */ +export async function updateWhiteDomain(data: WhiteDomain) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除服务器白名单 + */ +export async function removeWhiteDomain(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除服务器白名单 + */ +export async function removeBatchWhiteDomain(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/white-domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateWhiteDomainStatus( + docsId?: number, + status?: number +) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询服务器白名单 + */ +export async function getWhiteDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/white-domain/model/index.ts b/src/api/system/white-domain/model/index.ts new file mode 100644 index 0000000..8a231df --- /dev/null +++ b/src/api/system/white-domain/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 服务器白名单 + */ +export interface WhiteDomain { + // 自增ID + id?: number; + // 域名 + domain?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; +} + +/** + * 服务器白名单搜索条件 + */ +export interface WhiteDomainParam extends PageParam { + id?: number; + domain?: string; +} diff --git a/src/api/tabs.ts b/src/api/tabs.ts new file mode 100644 index 0000000..1dccc7a --- /dev/null +++ b/src/api/tabs.ts @@ -0,0 +1,12 @@ +/** + * 标签页参数 + */ +export interface TabsParam { + // 选项卡头显示文字 + tab?: string; + // 对应 activeKey + key?: string; + // 记录数 + count?: number; + userId?: number; +} diff --git a/src/api/user/balance-log/index.ts b/src/api/user/balance-log/index.ts new file mode 100644 index 0000000..75656b9 --- /dev/null +++ b/src/api/user/balance-log/index.ts @@ -0,0 +1,104 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserBalanceLog, UserBalanceLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询余额明细 + */ +export async function pageUserBalanceLog(params: UserBalanceLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/user-balance-log/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询余额明细列表 + */ +export async function listUserBalanceLog(params?: UserBalanceLogParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/user-balance-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询余额明细 + */ +export async function getUserBalanceLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/user-balance-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加余额明细 + */ +export async function addUserBalanceLog(data: UserBalanceLog) { + const res = await request.post>( + MODULES_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改余额明细 + */ +export async function updateUserBalanceLog(data: UserBalanceLog) { + const res = await request.put>( + MODULES_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除余额明细 + */ +export async function removeUserBalanceLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/user-balance-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除余额明细 + */ +export async function removeUserBalanceLogs(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/user-balance-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/balance-log/model/index.ts b/src/api/user/balance-log/model/index.ts new file mode 100644 index 0000000..71ffd77 --- /dev/null +++ b/src/api/user/balance-log/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 余额明细 + */ +export interface UserBalanceLog { + logId?: number; + userId?: number; + scene?: number; + money?: string; + describe?: string; + remark?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserBalanceLogParam extends PageParam { + logId?: number; + userId?: number; + scene?: number; + createTimeStart?: string; + createTimeEnd?: string; +} diff --git a/src/api/user/feedback/index.ts b/src/api/user/feedback/index.ts new file mode 100644 index 0000000..5862ed3 --- /dev/null +++ b/src/api/user/feedback/index.ts @@ -0,0 +1,103 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserFeedback, UserFeedbackParam } from './model'; + +/** + * 分页查询意见反馈 + */ +export async function pageUserFeedback(params: UserFeedbackParam) { + const res = await request.get>>( + '/shop/user-feedback/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询意见反馈列表 + */ +export async function listUserFeedback(params?: UserFeedbackParam) { + const res = await request.get>( + '/shop/user-feedback', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询意见反馈 + */ +export async function getUserFeedback(id: number) { + const res = await request.get>( + '/shop/user-feedback/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加意见反馈 + */ +export async function addUserFeedback(data: UserFeedback) { + const res = await request.post>( + '/shop/user-feedback', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改意见反馈 + */ +export async function updateUserFeedback(data: UserFeedback) { + const res = await request.put>( + '/shop/user-feedback', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除意见反馈 + */ +export async function removeUserFeedback(id?: number) { + const res = await request.delete>( + '/shop/user-feedback/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除意见反馈 + */ +export async function removeBatchUserFeedbacks(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/user-feedback/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/feedback/model/index.ts b/src/api/user/feedback/model/index.ts new file mode 100644 index 0000000..5b4acfe --- /dev/null +++ b/src/api/user/feedback/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 意见反馈 + */ +export interface UserFeedback { + id?: number; + userId?: number; + type?: string; + content?: string; + images?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserFeedbackParam extends PageParam { + id?: number; + userId?: number; + type?: string; + createTimeStart?: string; + createTimeEnd?: string; +} diff --git a/src/api/user/grade/index.ts b/src/api/user/grade/index.ts new file mode 100644 index 0000000..3803604 --- /dev/null +++ b/src/api/user/grade/index.ts @@ -0,0 +1,114 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Grade, GradeParam } from '@/api/user/grade/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询仓库 + */ +export async function pageGrade(params: GradeParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-grade/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGrade(params?: GradeParam) { + const res = await request.get>('/system/user-grade', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addGrade(data: Grade) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateGrade(data: Grade) { + const res = await request.put>('/system/user-grade', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGrade(data: Grade) { + const res = await request.put>( + SERVER_API_URL + '/system/user-grade/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGrade(data: Grade[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeGrade(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGrade(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/grade/model/index.ts b/src/api/user/grade/model/index.ts new file mode 100644 index 0000000..c4d9cc4 --- /dev/null +++ b/src/api/user/grade/model/index.ts @@ -0,0 +1,28 @@ +import type { PageParam } from '@/api'; + +export interface Grade { + gradeId?: number; + name?: string; + weight?: string; + upgrade?: string; + equity?: string; + commission?: string; + status?: number; + comments?: string; + sortNumber?: number; + userId?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GradeParam extends PageParam { + gradeId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000..df7b5db --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,14 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { User } from './model'; + +/** + * 修改当前登录用户信息 + */ +export async function authUser(data: User) { + const res = await request.put>('/auth/user', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/model/index.ts b/src/api/user/model/index.ts new file mode 100644 index 0000000..b46b136 --- /dev/null +++ b/src/api/user/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 用户 + */ +export interface User { + // 用户id + userId?: number; + // 账号 + username?: string; + // 密码 + password?: string; + // 昵称 + nickname?: string; + // 头像 + avatar?: string; + // 性别(字典) + sex?: string; + // 手机号 + phone?: string; + // 邮箱 + email?: string; + // 出生日期 + birthday?: string; + // 手机号 + address?: string; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 性别名称 + sexName?: string; + // 机构名称 + organizationName?: string; + // 创建时间 + createTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + userId?: number; + username?: string; + nickname?: string; + sex?: string; + phone?: string; + status?: number; + organizationId?: number; + sexName?: string; +} diff --git a/src/api/user/recharge/export/index.ts b/src/api/user/recharge/export/index.ts new file mode 100644 index 0000000..87ec48a --- /dev/null +++ b/src/api/user/recharge/export/index.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + RechargeOrder, + RechargeOrderParam +} from '@/api/user/recharge/export/model'; +/** + * 分页查询充值计划 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + '/shop/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值计划列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + '/shop/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值计划 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值计划 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定充值计划 + */ +export async function bindRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + '/shop/recharge-order/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值计划 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + '/shop/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值计划 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/recharge/export/model/index.ts b/src/api/user/recharge/export/model/index.ts new file mode 100644 index 0000000..2b91f7d --- /dev/null +++ b/src/api/user/recharge/export/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +export interface RechargeOrder { + orderId?: number; + organizationId?: number; + organizationName?: string; + nickname?: string; + payPrice?: number; + comments?: string; + createTime?: string; + tenantId?: number; + expendMoney?: string; + userId?: number; +} + +/** + * 搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + exportId?: number; + organizationName?: string; + organizationId?: number; + dayTime?: string; + week?: number; + status?: number; + userId?: number; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTimeStart?: string; + deliveryTimeEnd?: string; +} diff --git a/src/api/user/recharge/order/index.ts b/src/api/user/recharge/order/index.ts new file mode 100644 index 0000000..eedc2ce --- /dev/null +++ b/src/api/user/recharge/order/index.ts @@ -0,0 +1,133 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { RechargeOrder, RechargeOrderParam } from './model/index'; + +/** + * 充值 + */ +export async function recharge(data: RechargeOrder) { + const res = await request.post>( + '/shop/recharge-order/recharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询充值记录 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + '/shop/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值记录列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + '/shop/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询充值记录 + */ +export async function getRechargeOrder(id: number) { + const res = await request.get>( + '/shop/recharge-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值记录 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值记录 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + '/shop/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值记录 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + '/shop/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值记录 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量充值操作 + */ +export async function batchRecharge(data: RechargeOrder[]) { + const res = await request.post>( + '/shop/recharge-order/batchRecharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/recharge/order/model/index.ts b/src/api/user/recharge/order/model/index.ts new file mode 100644 index 0000000..051f0a3 --- /dev/null +++ b/src/api/user/recharge/order/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 充值记录 + */ +export interface RechargeOrder { + orderId?: number; + userId?: number; + scene?: number; + orderNo?: string; + money?: string; + payPrice?: number; + organizationId?: number; + rechargeType?: number; + describe?: string; + remark?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; + balance?: number; +} + +/** + * 用户搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/user/referee/index.ts b/src/api/user/referee/index.ts new file mode 100644 index 0000000..c926a3b --- /dev/null +++ b/src/api/user/referee/index.ts @@ -0,0 +1,102 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserReferee, UserRefereeParam } from '@/api/user/referee/model'; +/** + * 分页查询推荐关系 + */ +export async function pageUserReferee(params: UserRefereeParam) { + const res = await request.get>>( + '/shop/user-referee/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询推荐关系列表 + */ +export async function listUserReferee(params?: UserRefereeParam) { + const res = await request.get>( + '/shop/user-referee', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加推荐关系 + */ +export async function addUserReferee(data: UserReferee) { + const res = await request.post>( + '/shop/user-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改推荐关系 + */ +export async function updateUserReferee(data: UserReferee) { + const res = await request.put>('/shop/user-referee', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定推荐关系 + */ +export async function bindUserReferee(data: UserReferee) { + const res = await request.put>( + '/shop/user-referee/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除推荐关系 + */ +export async function removeUserReferee(id?: number) { + const res = await request.delete>( + '/shop/user-referee/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除推荐关系 + */ +export async function removeBatchUserReferee(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/user-referee/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/referee/model/index.ts b/src/api/user/referee/model/index.ts new file mode 100644 index 0000000..7f9a5f8 --- /dev/null +++ b/src/api/user/referee/model/index.ts @@ -0,0 +1,24 @@ +import type { PageParam } from '@/api'; + +/** + * 推荐关系 + */ +export interface UserReferee { + id?: number; + dealerId?: number; + userId?: number; + level?: number; + comments?: string; + createTime?: string; + tenantId?: number; +} + +/** + * 搜索条件 + */ +export interface UserRefereeParam extends PageParam { + id?: number; + dealerId?: number; + userId?: number; + level?: number; +} diff --git a/src/assets/bg-2.jpeg b/src/assets/bg-2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5ea2d426e7e226a0ac35c4a54a70f87f66158387 GIT binary patch literal 406999 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

w#*On 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

2l^TfcEqK>*Km|XpGxMXA4vS0-) z{okapMa3-BIu(lnxTb8%<$my*Z9%q+QN8Oz`i#3T1E}fOB7&tQfe!KmYz9P3^eLGw ztJ#6O$r4~9gUl<4x~EH&Axvhx3qJ0J%bj{JZWNsPG<~X1Dsh(mw2qc~Rmr+F^XuJj z=Ot9Z^+oNYx{njzLQ{8&k z^T1z1CikkcKs07lva@Ug;86u}WUKkd_49^IE0L4Oq~tW6l=5@u5YZ$t`_2(!U_vNP ztR@GF5)j2eU{%8XbUN{vPA#0OJZCMB0e|7WqS94KZMq~M+lVjRz-Canys`y+)UWv` zxAP-fSD=O5@zTaX26AH5n>`H)IO^ zuAyjT!+Le|5D=wzPlC^FFZkW<63yZ_k3oTS&EltuZ05U{f^9KaX=>ZAo@#b9eiFM- z)%|YXsh|*dYs!l+_IIl{RxL44Bf`6K*9saDrOvE=k%Wv=rzYvjl$KpY`CeDiG4rdK>0=&?65~(11!GryLb>av z-$v!S-3V07SP4p^$&Y$Txhp>Sm`l2vRIlBnIC^keDYZ|PJPU*AmSOa#3{s^ByR#aX{rGewLhyh&;6P!UHO znIxio<~r{9$mEM{ex$K>1KB0U%cKSVX^p?IYqXlV982a=;c8KYsthm6L&|c+YVq}g zY4iig-c>|QB_oL$Ud^trGD(;NeQc^(rJ-xm$V0^&m8D`&3xV*Dv8mbM`t%|{oh$+h zUWLuPGL}b)y+9d6^0@q%uS^TuR13!SH`;%u)!Y|1&u+1~J;-rSHx(g_3&Kfd!w?9V zOqQ=AC&)HjPd1q}@)5$w&kq~RX?#susN)T3om%&Z$#;BIGt*IUo|!X?_V=M!&#$1? z%$!3ICSWwD$gyHrNSBTR&2bU5Wr2`TsfX}4K-KNqXKK-)j}Qah5-!kUTjQ}mp{)AB zhbrP`sGB@@i3Xbgm1{Nvq){AWWggTwVV;H>nP0Z){r1y9)4&8WuE+}pL#TuSAA-+$ z;d#fCGc~Uj$(O`<2hwI>pHNoi>~qaPl`=;hS1`h*#L-J5+T@_-E7Nc?C}*9CC@;u% zELiXqCTF#5rC4wK z#FvV{_yOzfNA&huV!|-(Lta>-%qW0UJQy=k-G5U2WdHKu#Oem8h*#s%tx@yN&JJD~ zv}v-I)hKyiAE0(8Is7BK9RUpYb258cT%2O=S|=~iF6I2*#o(@lNN`TObRE6s3)~VA z9?a$c!D7_j-y(>w;#ju5altk~8x}weWgxH_4pbhqalzD$YJvAc zkp~TcV3%b)u1V^Yd72;=4g#C5d)c1X69Io^bfc=q_xj$)Kuf#?qI5UO6H=YZQ`VxN zq6;ZS~8O!y#p+o5(h|Iw8ox>po z)wxWyZC|eYW|X25tLk^@JnLb1F;Xw%VyW9Pu@{Sh)qr&0!`cn?z9X6sNL+U}}T1nh)n(l&jMgp*6uVR2{9MK%<(SO^=&fGPK~>_7Q%l zYeO!ccXN*SyjTSIPIO2AG0P7$sp+o~G>?5?g zML~AB=MQ4mR9SMuv16tEyAxE}FP7S~irvJw@qF5Yo0WQ-I9_T|)#XdXpGkhZ9DN!t z9sb4~X&$mxqAH~fQeIo1OsQ)qPBQX1u}oX!-(q}Ty=sg}BE(IMTDN5Zg z2bpPrENl*8LIqmkEUKSxX9&L9XkDZvN0C3&z9n#%v&GDZPSd}O8 z;63V0+(BIx74Fh-9I6J9B{7627EUGztp%7jXS9`j4a1%F9wwyS^Z~m?8z(Kx1H;Ho z{|4E0d!$N6Qkg`-e42cZ3+oaX%%ThP-Ii}ixrpGtEa&6q6EDZg6P-HJ4 z?u~B07Zv~0yVE=xyk_+-xx&#dTcQO%8KMt2GSLIRsy@))+$xh&b_D2QZPSi7yo|$> z^x4inXG009W}RPbBAhhKe7V^4?}LSc>Mx43&ZAb#?S(g-WrJ|26eQY9Pb-<%JiTuE zgar`J7OS`|U0Gyvw5x^(WosfL7Ae3jwZX;a#JRyI!!xPiQTccif8enL_6c-lhU%y$ zB`X@=qu+zRs^)xA-r#xs`C1W)BA5l9q^d2+7#?nDr;M*O&460;n{5pKWPh|q<3%#V z1EY*|tBMuxJ367ljAmaSIsG!F3`cdfAg)Xlh|HjY=<@t3i|F*nUZ%N_l@ER>U5k&z z%ATQ(CQoc3Uo#%BTCpYI@+D0`p^;Tfo`M?w_|DKfMWu(A9y7GScLY6B=1^FH`MlRZ z)wEsR!my88-(7#IbAx^OL+VeD*Yj$_?oqlEsbkam>jp}lOFy=9zfafQ#nO`sop3n8 z*GsuPJ+U~X@WhXv5tKBX z7H>l|&~mr{bXKRg6gr5)zpNXXkd_58096mD21r6k$hr6UZ9$jI-1f|h8_*-83d0+i z_Tr!4Fz`tEm6TtkFC+JIjwr{*PA>6Zb%~E5a!!?JLxa8kX8vD$mv#m(*+*;g22S&u zN6IlWJM&W@^GzpQi*zm|nSwYz-J1XTQ$8Q%0JYILfr_!jux<&|^7YG>%$RCj-heH* zw9dz-eUL(%CF&xR9KS1Y!b{2Fta(E0q2Sf9J7rn}>18(N5e1*axSY(awWj_Ddoj+a zt|X^}ReLzJg;?_i8g?5avh81~FN)c*peHtZl;*w3CW7T1_Jb@sL2M_|qgGnJCNUd# zU3WfVASm&XO7v=T%|@48w}pw=-H303!|(vypQO#GVc3b*1KLS=$IMUWZVuvu>2)&s z8sd&a+r;+kFI|?0Pk`5(xPl`jnMctzN<>OdkVS!|z(2ojXFeYlL0nfS#vGfinLsoO z{yr~HyRK861Hym)^IMdo{eGBrJ1oysHA(HBFge1bkb?Wg3&&Ot$JEKr^j5q5YL~uw^~`?pBlD2Yq0Ffu=gL9W+ckcL-Pf-1{=l9@XEaa7p2Op&%Z~{Z zTCrAd&WYPebL>y9G^f5j{=4mml{(j=I$>+Sro_4~v7^HOqi}2mvM%ujOINZI$T|kz zZm~YD7*BK1|93Es8#)$WOgZAKSwE;Kgh@V%_O(lkJ=S|xqxWLl6<_{~`j=17Qk*!I zCMl?+*w}B;D)2P*RbkWvEIr0>y2re3JjXwfqcE`Pra9#=SV~goIHz=|La15Gd?zPg z=D$ZC7!N#TIIZGUpF)D#d^_b2?IZKQs6NSh0YF$WvTAp|i85&=L#a3s&o6`4aO#4& zqp5}CaMz<`LpT!A+-`ab2G&_DnG7~V<64ZJO^{!nj(b|UkiKQXS680}Ro~oRy?S5- z4_zCP7;az6NUaK;yVrajMBgs-Sh(*G$REj=(W zEbwV0h+XFqNf8v`>BCZ*eM!Mi5;r68^tGm3cN4+3!TW+IrMRJs*x6ZDVI$Td_KuL- z+NC_`@u%Nh;cIBiemT1%b@#JxtOL-y5>esCo`K}Q%E#$95_6^Iu8JDxx>YGg)23fT! z8Gr4ZMRHqMM)gp*0tOqFN9vs&PiwG=JIeTRyB!JdRf#ay&Ni`L}v3FFZm7M(*tpkW{)vFHhhX^X7Lgf#ENq?sFHs!gVU+tR!%$gPFt|Qa z@lzvps_@JZ^KZ$QP&`nza5d4OnK6JcmYbKi$OovSxJ|Dhg zG*GK%MzI&*M&`@&1-@(_m0!vL*`d@HN;8EUF0IhP1qlQBBFrN;SshSiR>Vyo49JX7xb0?hU&1QT8mK7Wglm^4 zsZ{h}j=1euy}8YG9AI#~8z(`&^Q9Rw`=iDjQ%XoH*pg@Z$1mKKC2w zVj>j287_Y~+!$Ga5p|7V*s)bE1?va}VP6J2KYcZ=x-qm3$ z$QXf(j^Fn{#j1|a z9wNWgJ3$Zruf`6_i7zn9g6I#z_3RzrujhO0EtLJA&&>UX5K1+JvI#EvKLQj6E5>k!1D1;iQ@Vql^Z;&_ZF+M=vXo?M zqa23Rc1#K=TCuwJF;)GSQv(FW2~RhB6Y+XYFE^WY2tTVA>?KOIEO10#&ax~6hRz{r zC;%0wRxy?EYVyE<(7~Nu8sBYdZ(`ev0qmn#?I`^-Mw}@PbaQm8VsWEP8|DC{BdnG7 z$cnE4okmC(!-T_Qf0;N%8%UpcybJhJ34G2_%39paq^e6=^z;@YfFl_eqpK$Y`Ne>C z9t*;cvkt>MP|RG>Zawfste&w0wASGSSPi{FnA`E$R86)3GCN4H-376hi| z=2B#=E0$nn`eAlZTW_L=RA;f`!Ih{O@p`2q3Joi_^MjsRwKo9JBdT z?#v?zep=P>pfO-Pr^l&SL?m3BbNKpMKTsn6t0gffEcJjpuljvlN_0%_>(-LG*slIT zph?l1tzJT>o7cpr#`t%Y?diZSjUh#TN1(nc7o-8=oN1Bs`KNYaS2%l;{EU*BiP_z=$Vihy$vVBLg?se zBNb~*_8&p43!d@}W%0X;tTDNJ^Qy3sTo0&0&4?h+FsnNkP?O~g%V0}N;N{6)0T)HM z@w`;1)oe4O&lAPF#z}vUem;w5YO1}IZ?me7O{k+Ly$^)UAOL$kUo--XEQ=i8W=4~h zhgdyhP5nQBhWT_wLO$l64Ojtl&QueN+{5-cg|B%3Qu;c|mf9;pXI^{uB3%`{lWygO z*-Up$><6{EK&dvSKm zeU#(-+qz!<&W$hgss0L|?KhRBLaD+pSl~5!zbr?ss?rJ}vuNhXU-!>%sn!4dhGI!H z*LJt)8|{75dpSZfif_@^2OcD`+0s`Ysd2~ZPGad z*QuBPnJ8HeIh`RHaqjPZ(*A@?4%{$nq8E{!kEXXV%kw!(nYnTM3b23|&shEQ!Xkk=z53$D%;!44~S}GQpUl;dA_e!cjg zfgO(>2D>gF5^n3Lug}Hwgnjn^c7Bq73<{MBWlep%^QUgiIh5IEkX+4$J;gEO< zDm=a|_3Y#Bg`hI9RStm``LidSAmA%#TuoVANWLei0FQBc+IB90p_p{!GQEP1N6L0K zUG{lIjENkO4nGasX+*efEP#pg0ehFQ z)HIb9p%AY!{RV3quQDLE`POs4Q=PTFYs6(>Ou z1|9EL{&Yjq0LE_Gsdi4Qnf_p10f1_L8SC3*Aj(%)%*w-K*efP=9&Z_z0UKM= z9W#*4h10`-hu8I4TdfE-O%#lyPYHN8Sl_Dxh~Rz0#g<c-FG`)VIT_d>fR; zp?`=6_;(&azSDCnsg3*S3`N!w#l|hfQM7i*Bz50tc7QN|{kLMp$!_pKnTvS6^wiAD?8HH= z?yVd&is5uC7gC(b`uEP00KU2F#)k(F*mRPgzBmn-Nbg9(B)o@trr!p!k%F~=0w5TX znlVKEezZl$)_phBJ4Oh5e6V`5cEj{^#JO;61{rj9q4!NyuiufBCMe!IOi6;MpY{+0zLIZoY!EpKg%s#+zTCCG$)_mp z4L1I}@;{8JfN>_@=?8SvLu9sAu*yp<38t6v%*{#>2)095Z~=)s`=AHieOEpa606Jp z(e2%yFQ~HW#9j1kBr9_>wMkWJFk0nD?em)8=G5^7Qq?;s6f;l)p37S@yZrj@Bw~+g z!r_BYofoI|3BQ7JRq*Ibe>&DOKCjAo5ANQEWqZ4#hF152EY>?8*=yJY9>dD0)W)%X ztvhLG-d*qayRg&~Rg33UiHZ#kD!wif!PT!`TX$qnCgyL>v{*%~)L{;+g4)k8Z$Q-Fb=(R>}0t)?0=iF z&$|)dYkYPsy<4q4aG7uSr?)2)g@lloPX$A_NEDji$8|A+sT&+GZUTBReA_T`QM6y7 zt?FTp9lA@-XV%Q}Ji;_TkP#t(ICwP&tb^8lcSW7MRt zSyVh$l=k(nQ13L&a~}OEH@wr_Zym^QR4+GpKw|}@#hK-FE1&M!rm=b7E`0DTcuCxdI?K|b=y70 zKkM8Hun;vV*x5pv&D#ok%#iw_5RsXBB9Gu=T(LFsK) z+Tyvuqanr@GQHhI@A;!ZpMLdDlV;hpnp=DU3^d!mTb<2`%FDn%mT zLI*S@-R*RC2kM2*!35{KMnTK)(Np9AaxW-=QMP^cY7{)GT?E+T>#JG1XMMBiIRhba z6m9wx+we$r3J2zV#tr&qp{$Fck2N+)5>>+91_s7pR)yCN9_NFy8#Gl?uk@E z^ktY)P_@2}dGMM9N6y_yr5dwMcrXDG@GdMoSOoYI<|rEdK=bjbtr+*xSPy>A%(qwu zYGs)n!(%W3;ibK+0LjQYnW!f!FB5wMt&d-!!&;&xo;Ku!OF>Qb%wWgzrTjV$0E1@CdI5a|A9f=N0()65} zGwjI9gwyP%bmK-t%lLywhqFU*n#GRuHRdSv(yeAyk^Ag?59a#%=bSAtVmQ7&-!>6X zeG{+(rM5W{s%Dv>`4YAi(xft;#mwDDT@>Y=XBE-8BBir5tdfIYmP2pR*iOnT#{ni9 zA$T^i1-{Qz=77elQ65ma9E!g@(|G{=lge28)}tDYr0G#<9Zy5n@}uM}Be1ifazp;v z`*mhXM>X|!b`h-)e*RmAE z4QmjntO`GLYTeoHG4c;%*^SF%o|fRV-NsPMS0nRaArA9U{L5&wWBJW)wV81=c|m^H z#*lmGQNJr%EsEEt2!fShc*umOwu5@G$ z+F`AuG4KK)1^m&KTO*lwb8+w7dx$SH!YN{10|QerSEZSC^P>E?wu>n z@mp@YCzomY0y{fZ6JXEjZ{kjADir0fD-3Wdxs^fG8AOY zTAOsS`mEQBe1ilml|p?tmvPI+eGhhYAB*?Z85SL^wDlG<>J4(IU6^jLA1g_uBof~i zWo%e&X4z{Tso~*CgonxY+3lHE9J~oksr5}!mkb+JC8$K>SEmKdJ8v0mYF_Wp>-r#-^?z4T9g&hSF^yY5HMNhG!A?Wb3Y5--}p`F7b;8i$FqW4Z+&gPQM zP88B)JgYDDIaiX(QMvZf`CrR&DvqTh&1_myC__XMPYXe|@vx>vutjp@~S|NLg+K5|lJcxEywFkPe~ z5bKtda8WmE3-LD{!BI=x;rNVb)gv%GKQ(KDG_#3OkXIp24+4JdhbQnZJdSsfY--Oa z?cJD({OVe2@C0LC&hJ_|I$A7RP6;f=Sn-VyM-~)mq6Z&)<`V6>XdnB2!xkPz4OX#R z$P59oI0>;ZaoD#b08IIy`eRG6FyCpydi27 zXk@2XU~}qlxKh!d1f~eRveBj`7g(r+pcb|kP|qWjplTSJexJAa@C(w*!Q!mPOlh`W zp=U;t_*-EkqNd_R350r&b83m7e%v~m>rnAfm`CS_dFae^A5&^%StIJEXpXEjQa}aA zTb*WF(KXU&V}IZ3(yYWN20h#y4Vs>ZMp*6FKk?L>SY5;A1ASrqTt9ro2bK!o1^<$! zc8A`rD8`&?b18K$OW^gRRqYjXg+7#;*YiVpg3n8|xF9)Rr)u=laSDxmtIYhp34*@z z&u_?`SZ4Too!ti(c)Af&klncKbR0kx&~8#{Xa6`1d(*uP)h1a`j06sGT)qV|3oXOS z``2Elo_6Q2S4z$kjj41NwKf+(2T zV2kn%%7E!_j6oNLi=S6YOvc5pZim(O{n2x2bL{?MMWVMHZgAAIpc2$B8MfaZ)iK!! zFe7rxU?f1}j-x_+%O#zbC>_92>I_lvfuv@)b$4fZ$!hHVdL?V3g+K~|KLVplls7fy zM9-+QgPf#>yhf-I|0ORp@2)A=0o^hjirZ%U@^jX*B`_8odnjo3~wZN>rW5(ah<*EU%ZX{FgV{gIU2<-Ipox3vjrhd zyIEhEa<|>^E7PjMV#MRq(JnIfxFKUb>+!EH?v-bF_oB_C0HmU6_OFy8akTsqMPO23fH;;ImiOd7W>9#SzO9G zs^K*cU%Tg}G+605v3+t2pb>lY5%{Q#=ysd3f>B;zFg9XQ)uVHL3~zc1e5a(ld^ZD) z+!|}aZWnJbEIM2I7bbF>OV?BuT$VP&0yb6zg ztzU*wVrHGr&OwJQkDOh;!VczDSuwot%}a|)*Dmq-wN z-bXKQ33vqaUl=VN1ioc9+%qt_D0!CsHs?7RrPA`n_+0HYrijb3R47Z`9m~zMF2W5m zH$7}4NcwMJ9kXcPHfW^;Isc%3|FCn|=)rPPWNYy-aMtT~sd%-#>~PTf5*MX>LR;X= z(9(@RDUT(MYH3BBQTDlAhh}&kR0bChI4#PUU}A{n2cfZiBqrhaJ(+CxFw* zY@hLXuLbl>?1!?nPFF&k9zU?6i@;H6Q#hrEKUzxs>P!DS__HB|S2TDfl_A<1Y;~Y7 z<2%rnTW^N)oNWa3Y@u69dtSyv=c|wcp@)f%x zM<#`6evtbrxOC1OyOkQvaW%7|o*$?Z3fC|9p3@vg(^v20P-(Wt)L z%X^VTyz~R(o7(Ln6gySZWZPrKh%d-*Jp*x$nlDCW_fHGFPJ`FBXSEFojeO2mLhQJt zY>J&=`4+{Cu!n0V|7&fT2nb%7+YRSrxXR0=DT6Ifc74ABt$%-5Stf(_4d~%sK2Xnto9xi}XU;)5FNdWqnF6n#;0E6){rntNO8 zv5xr&(>&9X`K>|px^Hb}TW;&&+DrJJBhN~s#!5dhO6$v>YW2Hk<{fsaOndzc+p~Tb zU;~0QO59(CFO!85i82)<2|uo42h=^G#qQv(7W`~TD80B~)ZV`yJ{z_Ad55?UJLJ_a z4u=~4kZ6gPM?;DssY~+<$nO9b|6fFbkF#0i2X@kZgDY@zrthrc?YE+92<4dXn?3p< zVwx&JWew0M#%J_^AW03eF<@n@_a}^ez{XIS1ir(VG@W}^X3kxH)H7#J=-%&u;MK}S z%uZg%lB{6Gmf(L@S1C~6DF@#5-C+%%9IStQ;nF%RZO$lb3YWEhM+=_GX!s?AQCDC2 zVZCi)!m*Za5T(|M?`(9oqSNB4?7oQy}VkkuA1?f>6<<2(XJnt0s5NGmT z*>Fz0e$R(hyo!W<>+uWH)U4K(shBu>H2xW_Zn$Z~HSYU=ee{--2lIJ^K;{=bD<=KK zV}EX}%<^M`Wb*2(V21=}*2MRj z>J7^D17l;?a#Brc83HO!P7ShYu5e+Ug9fNgc`K`1=6W&%S*b}Y5jIJX%&-=FXxG`q z!1B49kh~EdWbiSgJ4RB-`QZe(a=t(hI_QohNqQT6QhnLL_%iqM>zDy?EKtRh&=gv; zklSe`peGQlHrHMm0zC?_*mFZ)YFG@mJXysVcFgiKABW|u{hDUP1riNIl0P9yPM^qP zIVvZbPdwH{MoWP$=)e#fDeYqjwotO-ayIAMb~|8xXNumR5>LKy`zY{-<@pLtpvm19 zC;QDJdZy`?nIPB z4eW_R$Ts20L%tl*Ga5xjlpkA9w6x1Luc7 zxc>Pq`~S}OW_vsS8@p?;9Yu~8p)CW+80mnA+Qgq2(KZ7M6OCs-wG%X|FO3q(V(Wev zp@@E3l1%~&fV)$RAbD;Lrx!e8;#8r*QA1g>(C32DYGidC3tt^WlA20q1GAz*C{soO z{@9SXz`Z6}LE*i7Wp1F&qoXZ`5GCJP&q-`iwq(A@j(PnNwi9;hmh9YOnC-(m+IuCy~_x}H%`;2aNP$)DF&-?v)J)c+=i`=xSrpY;d8DD2uRc-*H9Jhex z{y{aW$EA7pJ$#qF=UrI^2-wTulKUgvPV+|YE4^$MCtJxxormMhqlEq6pfwwIFt-JV z$Pm>{@mQ9Zb8TQLI}p#VT39CxfNQomW*04wSIRW+YkO zJfG>~Vz{2p^gj*0(DLyFwHYk78K4xA7_M(4hwC4DEE7>UaT)JGr?WZsN*5nKY*UuO06BmKt^AF=GPXMIbRTPQ4$Fqdz7!Q2a8u}y!CyOyXoz!b*G`&Ex8u_FHwPj{=s?h=Cj+?0eY zUWr!UjAgU38j40bo^h8Cn2EOy0HpfYZS2#`yALt9H>6lp>bw8`bXq%;3X2H*VfHmh zO1Ee9`Xll8HbFFhJx{elUGCRT{R;6GF1bDV^8n)lzxm#mkIl`<(;peNO^>ax%f~vY zz4xZ=SlN_em&T?eA7JsN7^BtY_Pq!pNA+O-MNEy&MKr?iYmjfql;hoDntPyldL@wm zt(kMN=&+B`{A8ob{CjOKyFy|Y#}+*+3^u))Iys>5U{&+=f|b*KNx!Mw-Wk&5-2#x_F6Wb0Lg))|>}wgb)|YDGhQr-}%^uZ4N^Qy{QZ zUGc#XTT<5`TI&g3lKFMN>D%Rl!6NXvk(Mw^2`jM|{qIi_)wn_@W1RJ%e|#zSqQI8D zn`SBph-4s*Jf~QDG|P=u-e$8P*MMn++MqHE2Qh&@H3VfhU?j>g-RPo1-l6iUa3fpR zwoNcOB@JTr7D$wiQW%o&HKH_NFZe^}On@u?dYhjT)gk$*GI5^dGItw0` z&Cs2K(z^M!#z{%7{yDDY;*Xj+`X9`R@;j&v4$ZoEJlgGqqUfew72j?&VpO%C zpF%_=3M(#&pd8n=6YtFo7YG>pFvVWUel=W<)}(xEeQ+@$m|@Ir^!bXH+rheEf~3qX zC|4@msw+CH!lclOs!Ze&R-mqc>{O6Gh z=gqD8hUc+UJFK$n?}ohZ35nO^$ZtU`ISv*yky-sjY-e}1tAdK9Hc<@HVfDO*V8m&P z_ui1=+dub%x`$*sSL`sS2yBF0{-wuGEeDVzZ{=w@7^^GB>X|oH%5$`pEg@+55DhUVrQZ0-OkWH3#mWr7XiB%!;Up^?C=2J56MPuqRi~M#*zKbG_&fAb zS+)yPOncf{^>Mt{6ZLHY;-tX0V_{1@*6^-rlK&=7BKdQ`nO7qwa4)p~ zKgJd{{ma)2;|`93^z?4stEt;9R=54bVt0{zt*o30!@B=0#IS^%7)$;6sxA=DDyJ%d-VH6RL)hve4@wRJTOXcUCHpTo?g}UttN(vGB373@cy2y zElXZZ-}kO_*O(tE5yzjuuaEkzTE^9Shr{`gc0~|VQwe>^wVcvdT5UG;0+gqu3zTH5hyw0$_H zcHl7340oq2|KudV;dXYWflYya5YzFz(8ck~L){~x8QmKXrqK>dsu_;~>NJqe zerbwUvzz<(CjnNjCPe-G7yN25O73cP22-~#mzcYuvJ<@8@$eud?iT($wsD zK{8Vx`0x?J9BD#=EsXD*Kya)G9^t?(U_lR~&$C5mnQZkt>++@%9EZ|%8e@}4PlL4g ze%5H59GR#bq$pw)r`85jw|vH-5i|Jx*FGpX%N86#9&tQx8`G_ENQ9nk3_-EfhSk@6gXG36wM(!{1;i zDCAj}=_2%0f#NF;4$L&JU7LC7#93H%x25U>-b*p7ENgM2QRRQ)1vP}SK4k$$=q2Zd zLL`HuIkhSGF-hzm?DYcN0(rone5fK7H!w*fY;Azs1u$25VSu$tJD_TI69ljAyxN?`PrdkKV`+vRn-JKM(zcB%lh6nOTpP6T6$?p11)b*c5hI3)t#%hQNc) zE$GJ*JSA1BAFzJuVukEx0~U3(-fj(r*%&nj2g8g=eA?As%k@6q^X4`4KF#yW>XCSu>d5 zQsTCiW#WcMTn@#vBTJMDl*x^fkhZZ`is?qL7_tNVf9}jh=M7rc zc5~*DXUyn+gn0jtO>>4EV+cy0|JyCV)p_pKbyv-68_vsg-=wq(pu|vbnVv;^X8%muN*X2{0O6iv$~9x;vP&sr0caFdS-wm%^V>t|YLzpPybP8PB4KO=-Zl(8JBJ zjPjw;u<4KxiQ&4gsrq=z=k|))$bZuQM4w1!;L^~;bSC8a=`X)xKna{_ErM~l%7VK*ZqjwyCxe=OV`NLyv*lYiZ!?Q+3H? zbG*giZo7FJfMy+X&^O@Yl2s;QEF&ec~-o;eB z!)SBGa}c#<01jj{WWFcyiX;sfmlm4;vI%F!K>aW6s8Z2pdOmEB5yWAwRRuE0_sKha zQo7n89Y-MG0d$#}hBjUx4?+C|*mO4(+Fc=|3P)RMoyg|S*`lor6tMS=?G2xXnAX-u zE9%(KXmw0!_>rPTD#I#bI5u6?Aj!SrwDGW}rJ`kgVs;u)-8MH6BNMFyugq3y36}Qt zDyo-pam~qrtc;f*4p--XRP3BQWX#iK^51$XLIJx3$I7sduUj8%v^1+bJy@3((Jzs; zoRdn6C-$Svr$U>2EJ$AUM*o!=n9`}%S7*0Q5oC=%mKL4&{Ha5dM*Roj8Kre}kC8vcU#`G4P9*QN%yb8}x!`j>8r!m#g<*(GH{S6M z^HqVgF48`ov*_XI_R5L6%i%V%JDVMff>RN% z7mSpUP6-4)qbBLg#|Z=j9lwIAkp1b2qW+pHv1q`c^3zp`s%@9DT#Yu>a7e*Pi`EZ? zIj#{JIGw;Hdpsa7;y@fe;3&+258iCLv2(1_l_?O$wFvB z0i03u=cA4D?Jj#kjb%&u!BqrW_nu_Z;Jhfv1A2}7sXoIJC)Mf_h!u5U|*AB&W=Z9#-u^9_WpWSGh-0qm2wotcE@f&i6?y z9cTagJ*NhxI;5BQ9J8|9hgmz=wb3-8~x!yn1ZBgrm^Ps24qL+ z!QF3X|1dafq=O#OAsK*Rahh-LURdAn^p4zuC1|WCxF<(kP>aGdvG+gR3VN~@Ko8i* z=3GWaP(FM*yxH8E2&UYOov6c2)m8agLYwx%2MV?H5df=bU{DbI6h-SV7?k_>r`&v9 zV8l6WCFvr@T~oE2MLL>1f;7HfC9gdA#cPFhWH`JMB*5K~tTm-r0FyMKnsFxvm~L2d z?a&?iVVBl4-|_OOJl2Dy$`U>P%%Rz|7_`AO4GTh+D8ueFZH(?);#C)3d^4MX}jf@QwmS@Nz z6_`=A&`6~Bf5lvx=g$~E%L(!ShlMVezgzGJ2M_Uyr%SNjf$~)ijLg{sd494n(l|8JHPG~g2QntB5hOBywsEtz2(pAnFJv&3 zi=Rtlp{PspeA5ekcS#f4Q`^s8#VFQ)4)!8;6KAHHg8Fm+m}cc^cQLGg&mTbrBu5pr zetj7n4BDwpXxOL8H7+?ZUNV@NKT7>jIb0|gAk~h!hsi@zoX+WcjZehpGo- z;z{vyV*O@Gjv;tWov-OwqPq+1pTtheQL;#e()zPQ(;_skn;T7xPSoamM1OQ6yy_0gdBJ#O`c zJ}V*>2~pgr*@1P*5`75D2lj8r2&tHd%ogBW*Se*rN64j=k$GC|{UJEB_!311&Msx`JrO9*V5PTmoXi^=%9_sy%|p%0G42tF zY!r%Mh8-8n0%4K8>a4_br9ibRlJp#wbDDLmJjB^SK;1(d#Z72lW|fK5S#5TFrSlOt zRgoqKNYGK-6TL?zm76jTxs5%UzKa{Z`t`WCS4w_!#K77Kd|og}@q?*Va7gPRStAf$ zYP-6uW%$a-##!q6f#ki9u*vrZF$E?S4vvQLV>sv_1Y@z23Ci${93W1#HR?#DX?UG< z)j40AFM!CtjTDE6_M__B${yVz1G;ie#RcN#1|jRaF5mEZl=fG@NDSE0hQ8W{_a4<;-Jmz_nhb!`}RMa8^=XhwW>J%$UsX7 z@7jrdqZpDu9(#|76PNNLHchnZ=X|ywL|t2sYFyk{{-6k-!VOAT{*|Se?!n>zuJRjU zM{p@<4LGH-iQy9ToZCbx#|=mzH)q~rg=VpW#)AH1P=HBanXrTvZ;?y6W#V$Rpzh#D za(JTr;pR;vMap5i&$-@Bt-3JhH{=wgY_BP+052mB_??z;( znC{AeE@EQsa;cG|p~MNOX3G}*JR#dZunhN%Ann++|Jg)>ohyxaaKbF$h;L^tyHsx_ zPj#PwWJ%_$**(33_7>&@*DI0M2&uQsVwP$1%Aq6S2$H)(r&g%~Knh^<({D>cl>aLw zwF;KAJgs0(;!7B7Wp;2KA|{bjx90{pk*)Z#!{X$6@RvrnH+Fqqx9w3=TP4lrz$GJE zp2oyw26;Cle!It)1R=>x3LvMM>CQw-L5^^KvrVpwQ5=`qnK|S5X5OGmPRAP@F|U5W z&C-{aRw71OKPhJ?J?+jZ;x3;hwf5EU0l{`S0sTE66=dRtUdp|Wu8TaOhfr~&o-yHZ zufFwshyUr6lpYBZ=4CYNavkis=n3alJ;B3L!``yWdC~5|+A;>Txw1Y>;;OuPPE|sR z*~Q97ipX;t4|7&(gtUm!S(~eVzjjHq45$|m2g>Dilzm+gdg!StlBRRd?#A(4Wb8&) zq$BVu>jEGH_!h`)w9>gzZ?N1)SRnA@Z`-T%Mo52;h{d+v`pt2o57V_eU$Jk^#`{m^ zOUG12FQ2*ZJ6&k4L8L9vKL1KWHbWr89?UUrJjmOk`w*Yl-&yuajeA#GI7E7rtCT*N z&TDol9OhS?d86ZUmDlK}*)u(DHB3AzXVvWNA1J+bqM7pEuCQ_`GNUuS+Cg=#{bq7^5U^xm``7LM?)#ue)H?%a7nOT~ z6eBNT-X?F{)43MIuk}%pD=K4kPd z(JkI>F&G=0NQ){HRFp8t7j&2%r)Wno@M*D6>0##niD$}|8HY4)`fgA`vf6UKEZpp! z!Goo56d4HMc(CtHjJaPmYU>r~P|<(*n@Ds?`65=XH8)~m_q3tT4$t$B(cLv_3NNU0F06BkV@i&M z1AH9-ga7`-WC)7tU73{AQV#CwJZ9N1V(u_7`>WSK{<0)K*PmC?d@+v9hHgXO;_aKS zrM5?+8guvR1vz7y?{&liJeSETO) z-_R+nKA+KdS8|n$0nZ102bs?4-Lj?c_8?O}SPeQDRoJ9%=2gDc`?8r5Bj@|jPFY=+ z)XB)y+$N{3gn@xcyr+`@>e86GCHVt(UVa#ECQ)cHH(v#k{1v93HJc(I`NB<>;W z_}4iaq1yUS{zVRv38F`j;j(WsZ?3fhuGV*9a$=|w*5Yd{J$L7-c|YYVT#co(YESGM zi8dVV)*dQ7w|?0ke4+})0xXNAZ+styNNYbp%_9ou-cNR0qNg*`jNn5eKg&Uz`DV9G z(`KPD!+w7ftNhRIziY$zb2#2@KwLT`)R(x=%8q|bRfhJI()DHe$CFGgOQ#kjnjtdA zs(XHwyAB0ExZ;P#AAD-2c9dodkZTB-~8QTW=SO15E3xf`2n!N+Ed3BujN;Nw~M8w!sv8-HUmS6SX_XK*CNY8v9JkM2tex>6Yv23k8Ro^3|Ol zt?x6h6v!LSUZbG1{E-h+&9&NNoKBw}1t^Opyth}VZP7w0-~>7lOKoF#I=*|rkDc0T zem{0pp~e5>g>b~6GNfqhI;>a4v38zdGdr{sYn~F!txvnP%ZO6Ene1`OW*Ssofb7hy zR@{6yv9Den-EfoJMj#%*k*wg#A8ljkp~k9ABN!(C73xurtyOEC{1=07F{}2C?&Rt#$#-QP-&!Y(Y$8|_fO^cw@5_3_NE26d3#KAmTl{+(t?cyh_)>8p zu`ydIR&Jp7uC9hvv|P25=!q9n*tn1^8A|r6?ii$ZYUT~;W=&{BC=xuCoXZMMRV>Sz zF+sm^ce->*T79_&>tOo=84+?<>ORVZBLHBODf)7y@xTq8d#k9w3{wMMKVlts9}fr9 zn2E}552eKG#pb;Y>YHpJO*LoA{V}Gwe?T%SM*BFRk^Bp7r%y?0`l^*h_?hrnC8v+n zBR8g;V$f{UE{(Yg~`~Jy(c=%xJ+gG$yub{E6KMBh& zuweN&WT}@V@#-!2rkH30#{}FfYIK`il#um<4vxRWlWC=O+)@x$i;|El-1QcB{q@CaQQk%3d#%-}M+^Z-lKFGasDJZ*|ZgyL`iD$I2Gu zc!574k3`^IR)I`bp5~XP_0PllYQ|}R7Fi|nhIyrpi07Zeji4cPQ<+I9esu9ryCT*; zqkDPXq7Cq|tkI`P?)d`e=)Cgtr~6b7TTVJ8b1l*I@+MkP_wM_^cNrQgIerq~Z+NGd zfy>WTt)}S>!8_IfPAn)c14orQ{%mV~nGcjHMZ}_F?rJz9WVFUya!WF;I^~M`a%X4K z`zLhXOMj`5eG(L&!reOjeBqxTl(MnO{d1GO0k@lK7;`*pa-ATkDbtH1c9XQ?(UEMV zxSs|5ItM=~mzLL0FqeirS&3)bCY%y4R$^ZD^kZ8;MId)rH&M|98e}Woy)1N4C(8hD195U-%CHt& zk=qP-Sl;?|Kl>vTPGH#&W z*DtfnBG~`)ys1E7m_N>@Q*|e{@k*(e);rjGpiG3awzwfr*Ut7FK96RvUo2(5)rgpS z97+&dEj`gWI!&H9YTk{roj*6)8(tcUjJ)B06FzKZJMILC$uQBe%5(PY3w{wol#&s0 z4n2pZl2iN27Y|sq1zPobH+KsD5y6V|n-5kc^Nm%Av_&%?^bh=>nCzn@loptJu72Q%fCgbwjQ0gS%+M z(xV7{PXi06S3}RXpZ@bK17{=kK=gnrr;fHPFEy;54h)* zDcf_`Qs(D9z1lN(RaV+OJGLNCtAl@3B<_`*Mod%tdo+LB_W<*@{S&2Qd8X`R-5q$` z@+}56%)j(1zg63)DlTJMRM*B7gld*yD(K z)k$jEiM)tqm#kX9QB^A90Xd597n&Q89Ds`D5$SZ2@)CG^GdtW0cN|V$N?q>w?upAf zhx@lOt@wbA%lWjK8>bAj{IDlJwT#t|=WgU^+u!_H0WMeE|IU4Vn!+1$9RK~PuzF`~ zX5cW(cRe-KV`50`Yb1-;W&F(6>*4_enb4{!U~GPnz`Yc_71t95J`IevtM^@71&7L_ zSP%sY&K!d0SLW~67oVSKR5t;%#j8H}IQ0i_DBoK1-|0inSnO|!MRNRx?8e#{UPCTMq78RtIO~iDa!q5xMqwD+fxQtbAbvGa|)42@P zYkN16N5vKSl*8AJ*Y#_vk8tNN7IYr5#YI2tx zf9%!I&;2$z)u1d!4{uWDnzuDL^gfc+y0yDExx}QO8bZC(JS(5JD(_DU0h|GhM9DrD;bNI6ss2 z<23u=*{?<+E*UEn3qW2_0cz5{{+`1HM@kBvMyQXTGsa(6F~#D8eL4HAgJ6lRO+``&=>XQ?+&t zIZmbQ??+#JvJXwZtn@UiVh_$7t^H~}?mG?l?8$Cq-e zlG$anh3r~W&INu?iv$cfFm?`GT_}1g2(|LLV%=m3p95h}%4kheCsP5=TC8NBzW?{9 zZO%;Dtf#^AS}0|{$#>bX4i?IBpD~l~Hd)Z!-_+DMp{meLVl&|A9`GvB5#{=|np^JL zWjoK5s@3c6ZZchUXe!ul=UO6*;&u$60W@=Q@KZ2k@XkB)$-wk|d}FjRUeaPO~f zcQ-cv^t9!c|45%`@{zWSs|SbCzUzNjHK9bXgahZ^#->}%n8L}vIk*S-h%b~)!Q5mN zg#*FgM3%wZ%gmRuNNz@hrSltmOAT|gv9|un{e2mp5A}>5bdasMoU53$_;C#juy#N!z+8=&b^;heKPV%BjXU5+r@}KJ0do$qdCc-RI*M{ zbF+cY=C4jvZl95}!+Ds|XJ)s;C2Q6%5y4|!U8UH$;@MOVLrhlwxVhaoc<&1Re=!V7 zUA+fJVo!#t{GhdbyRsO^H$6G`eZY$oFry;gEM76B?epjF>4n~v^L%AahmXD z^_zKivM~4kD-gUQCibe=Fiu6p&eyd)j^m;yC~<>(><-x8VM~Z{jOav_ORYkfzp>Ti zQMKxkm8-iT%@2g&eqI@3e~Bb)1h-?Gm1X`4fG9@`MJ@&5jO67*%c7>0$KSu(EZvuG zq_X+O+!C=|jW-&I1@jz!+L!Jh=>yifGrQ%O;()*-jpplzk;y~cvKg0(p&EQi2KU-P z?Nd&<^Ey@+EG%Ka4P7q3N!|~fpLU{6<80ASZ(e+3HX-gu-0zJY2xI40+ygu{b@r1Io{~d47Y*t}W+4-jR?*B^PJ(PDZ5#pcq;?NhS28h@_>-GIk zb{QK9P&%+C`u-kZP63yM6a$Vc(IvS_n>r4tpmU&s+lE0fbLh-Ut(uB9-uGE5{V^iX z(c}E*Di2op`IsEfWVLEa%}z+V7G<4k#X*BUybAOoJIJDLq!)yyO#6l`Rw6C!5tz!q zB5K0C>D^U-jeC9F!anO$@g8@44r_lxYix4Io#(U;u@+%08wfdS%O#k&&_ensPSsVg zT(Z2(S{ttdR@aUg7p6oN*nZpP67X23uUim|h#$*Kss?5XpdkeHL3`7~j0eRObhrhX zS1mM|nl~tqeMZ4Q>rX{_48^hYa5g+q*ck%~r!w``diwwiAJ<6{jou3u{x#L*MKd%L z_jaCy)mBy z-^-f~OfRVjf(L)R`F8xt|45QgIr!Z0qrf*ti-#}Q3!FiP``%@gkb7+-d{*fUupSJ# zm*o#1Z{JMLaawk01AT5ly0ma(-jEH<(^~qPcYsL<}T_1)8IWqOa@t0i@>DOeZW0DHC|gi0o7eKj#+nuPT9q;7SjiMtR^r=5b9nC^{ou0I zA(g2S0Hm8J!xWtevf1CnUK7Ssy(;s&1yU56YLqD?UK!+rtVs~oG@AgjZhT7SDyDXS zwlQ?L5?Txvksda(t<{uFVU*FbfeTNzJsakQ=*L6YApSV`us@v`nDe~tQ{lMD9B`y#ADE=^^{X z1=q%I?_ghDltzm&!INGnkm4-n`~SLSlzUSq1;2~4otLaCPR{yyq2xq;$}6~dW) z9&?8xQr0A$UEOZE715A(BeK&MOdthMnysncC%kRpbsu;oMHhEAzWY*HX(n{cJF=iU z^7w@cQ6a#B;_x3qeVx^+>c)M9PjH=bU)ti=!h{x=DTj`alAwSEz8z@T^UIUTw%Cp8 zVC7qL8bed?wbF@Qj7{W;vcsxVxyr(n#t7{G-1OTyzkFA%ZilPi3+#vDVAWb9VM>3O ztE-+|W^{l}uZ?01xw6BcnfCWtK>^p#;{z=fAp*V@TWfQZ8tIPm14=%PB(N+N)F9rM z-gu&7TWh*-EIy;uT6kF?3{|p65@y&0eHn6Agp%bJd2DtZ6t{g@Aghsp^v!5+o7!y} zni`ti14)nC>$pT`%Act>Pag>neA$$(Qh_ZXEWhu{Llzo6NUCx zXC!iO>iS}o4+l1MHl;CI+-4v9xKP*42#!u zNTrpJ^pxVY|Fo4biQ1peb0-wt^hNW8fA*-YMz0=%jst1=AxQ z2O%(_KE)2cp$reS>B)#JJNWj?!IE#AkyDQ+@;&@Q`I^RuM09x+J!d&}qvyG57k!b-<(zIFzzD&&mZ;Ls(UQGe$%ZSy^}Z_(Wq% z_e1AR8S!(}*Hvq>+jfId-rT+LS;CCbwb?|RM}C51Vu*v2n*QLuiSpyNb6u_C1YA|# z?9O;I%FPs5Vo|-A4I5=a0yoA9G5E|NllDqwt>yqvLmSFW?XrkUodd$nFTiHB5VdF6L2^%%lyE{nqSyti0piIRD|N0)~#JfrBkcxOF7 zn~;V(PszlRteP$*lj!GuY|8`GFO%^BvUj`Q6f%&5n`__7R>dbyRV@k75_-;DW+mPv zT1tSD0h~Q*tL}4w8wcKq1?-%tuVz+Y-6Z|~-~LG3NX}cQ!g|wpoqa5{0hy*!F(LNI6UMV4(E$q`9FL9u=#GXOZ&X4Z^$0OO?N4U~}lP58c$RS8)#| z@zl4$x}DI}?LNJUP1wYf*5FOA;icU95JiDQKSD1v^Phce*G2>mz>j$Q=AVCmQbLrR zQXG`E_`zR#=}CV(S+SWe@+H}A+R582qJ0Y7m9E$YoeqbI_2RkC)DSgIytu{K()(q3 zzFEX`3+vX&W)K`tA1P1aj(K`HMy=^R4I#|IVxGbd?`N? z1mlYseS|hDmr|-bQFD3U^<$HA+C)kGAfyb@P)j1nf~&_qIETsBW*xED9Ap>?rQUsI z-a{d6EWj*Xcq-c1QxZHaI2!dey(j&c+ZcK{bUO?=_%PN*`Z@d_nLKdJ*n+%=D`&Fo-9gcn~M?6kvl$GD`h|qpQzKQC_!H<>j3w2P+95LOOsp07G*!1 zPV_wMIJGVVK*L@%4rGm&BProS>}F3#vTOuN1j$r07#!*~dGUkG>Fs(` znHYN_LgQQfC75n?>Vb|Q1}u9j13AWduVwpHBxB1(PlKG*VDBHoJkeNXd#V7*MF_88axr^8F;^p)MjvS~{MD;v@$5Zw(fxMIK# ztn;BHnrqvWipU598H@KIsimg=2QpH+yN^lh=(rCFBB~JQC2W&iiW=RkAe7bKW_O$M zb;*VHIM?1;#^0LAw6t)jyuz@h^j%mdKT{i3jTUf_c!PTe_*jQ@9lc9o_&PXW)LdEC zhj6(UiZAN`q{x3JJCs~1D6nL)w_}WaQ{*ILH zibTkt{+=zwZ}0XN(xHfob9Y)@Ur}Ppr%!`H@H`DQqT1(|aw`S}RviMN8qxgmUp6Ar z%2y9QbyBu`j6V0>AR|R|6xobJvaFMaXz$&GWHiiR<6ebuul>d2z8_?t@f8yluKOrj z_xFGoJ>&7Lw*%*~1i@<0izXgk7Cj2TaL<{NlCIFkhFx!F3-HHvN6ZAy%o!>V?VCo( zDn@w;7F0}mbSnohg&G49)uw z_UaU7nw%&%LKv?wk1v$oQTF9*Q)Z@LcTGq@dfSXol$X(?Ot~nHVOP5GuI|T!Aw_}( z8RcC6{p=`bZ>8}>$H@uK+PfKQ%*N8*Tnfpm`X%V4Qo)T+20gpLXZqjT^gtnKJyn&EG z^C=-@&6a#Ad++pd#BRwY7cK}wmefsj_jq8OuBkb{1rB9aH)`;Qc$K>BItPa?L)Is& zmR#JtA-m&P2Ry8(BUkrTA8xLdwXBP07pXw4NBDYGQ!=ucdJ{{|s9 zp&4aq5&+){%G8)1@zEndUkq&U_AQ?GhzPYYwArr#lWhxa{GeTlt+(${#;Mz+Nbyeb^V z82)5BM%LL3PgR>U6Xi8_aCtphZk7tW&ozK9=_e z4O_YoT$pyMhIk~U3DtSK*W?7K*jgh}ds`$k(0nj$YdKlFLzqppCj@K}rjJ+G100E6 zWGVd_5JFtR-fiQTMEx)|>@z7(sdS-V;My_g$*hTJZ~G?O_gS&;Wua{Xo=3 z@>=xzGJ2Y(9z_*pzK231!S(t3M;+#uvM%f_=K^D>O%sC#9*JuHdM0C2g-cbGzD&=w z)$m$JNC;BTWRCUqY%g!iu99Ab{&%`wujCseD(a)AczIBa@PB8qA$Q8qr|MIEvw?N? zX*SI*k3q8XI~mP6k5%t#@m-XPnwa`&(0dV`x=e?xR> z9!tlt4;qM3yZL3pKU(Z;SY&SZGID!L~F}XZ3lH=#~OB_gC%@>MJjFH+^5iPlNQS5fy4NuWc zf8^M**cbA}L-$~-aRKd7&*$D3k`i{G#%*4cLsXvriCA(G_g6@zyDySz1!V6z@;8(c zmcC!)Biz`Bicgxv1rSVS4S(iM$jP@0Zzap@n9Qbq)}gJE@K~l z9#N%If(ijgx>L~?X1Iya?e@*uA{WwkgrpvRWs&j!DLTujw(`9T_l~qvqb=^-7I$}> zDFuopB_Y9KaCZ-qJH?6*?obFJBq5==L-7)tDnR%tPWzCGbRRQXr>JMEc3l8baST;nVm~4Pue!QRT`ycW-AO9! zJzOa`YNd2mfNm#h$9d(R&UOT;IR4_#8;PP8d&8+G#?yc;eFrKt@?FI^8dyr3ctJ@n zpRp@Nv8c#C78ocWRld$4AIkbL3pITL6dQ<-u;@-)aSLpiG((Km{vZHU;koVsw>dlN z40=O}@aKS|Y-3~b?*x-dnG#3@&EuitLA_(DlQzhv{9$|@>U2wGYwG!1-8_ju|=U{wC|){&TU0nN3! z8%u5QmKDeSYwsedbnCO1<2TgcgK%_!&>%ImZ1ygxdFytwu*!>%?S|7!Z$nyN|G-kA zSa=v7OF8b$t_lq2irNXbMJjdfJa>mE5#T+?aN!hu?69gW-buGmXRso`I+SPDH7h(Q z(fJZo_)MiuKCTLi^%?>Dx-Lrxuy>w^9iA3i%u9oPtQ=Fcsc*_lOp$GRVo^nx0o}kLL^MSZEVa@N<<#dUyCm7b2{Uedk!5AL;R>^#6U{~!$2$in@N;b&3=SxQf38l5R z-=$tYS1Od6aM7#Z3sp3dRta#iIi$y|3Y`WhfbWZ_Nx4By6E3@#CrrRs1*;s2XgIBP z#^s=EfGsZwbopb?*VmEQ?8&7;eo})-7$AsE1Pi6Mr(n7-?YinEGB(8N`)R$6fhcl# zO6p+?Jg$FsZbm72D|ZVxG=(|$l_%J;pEZYbTBg}I71P^FFee@qiab|t2}aSkjo~Bv z6lpZGL52FYy)xCA3^+|q%cGXSdGIFvMkw0sjyg*P07LlqhL2re3r5(%g%`Gv5w$Q_ zm0x1x^Q*`Rh;+;=BDj_F=Ywcqi^}QZsWcRs@Nwm>XsfS|+D+E;KEXgaf>DZ|%i+5Q zX_t{!?&sjzKctze)48AY;q(z5<-F#liA0wgxMbSxQg3a>-aDg6-GKlV6bJ9&cso^z zq($X0jKj!Ce6QaYu#payb(dVcIMY`}#{7IhZjS7>HQwx*y!y&sF*z-K?-G_9Mo4f? zyUtZnb^f7SYE|t>LkDf+J<-r!88pT;VAXH6^cX&wLyPaZ4T?R&b&j86S{UW&+#=o} z+X+WaF?j)H)7XVAw&*orx#85NxF64{gd0c${!0+IXpWn0BDflw&3It>Cqe1cz3+rB zsP?*O3PL7aApkMrk8}^Fs*I6&I1jI<)Lp2m87z;K2b11)yX2BUK)}I!EdY!D+Qym8 zwnw?+nMKlK+4X@P+Y7dxM3s``W6y8>QsLUuhKDq6pOVONUtQ)};R~KAds|8_O_N`B z3D?H(6>HDK0?cKz&Y8=gQDME))Q7`|KA#FQg#J!XzNotYW2w{e>SRJaGP{b(()#5l zC^FOfsrYbTa$+DO{was`Q%hcG;sRfKON-(tm=)rzt>dg9_n{HgA|-opKof)T)BpKE z?tgl0UxMSvJ{kWX8n4QN9#~`zv=7bV*H}1u^r<@c3`Q-v75_3dZR2zOv)K88w+9w-rLz0z!&c0&Hx^^6`C@ z4*FC=$dc~O#j`}zU@~vVg8fT)auX54P>?v5-auV%JK?7ncKWr1p8{vPncXIiZ^vTmlP)W? zyiq{>g2mT$0<}P;rH*=bzG^C&VDb8gmyZq8Gh8(n*#tk_%08LS3x}mSa0)jTq*ztm z?!MTii^+Nz(4jCA${AGw$u#rJ26lZ-9m>;^#9ZtB^YcOO)cu-BxS(;bLKm)CZoCAP zMQd~&kj)(~GadQymJ3WiF#3#aHsaO(j{s1IJ1r`|sPb+56JHcWE#{y}St_L86widb zHyc-}RB_M+ck){SCxKFB%d*s$E|@W@_{HLG1*uzk)VR@aMf%#B9w!(M#3u`#iYyI9 zuGbC*=xPf$PoqX#1=!@#m(8IfLeO z>Za1cx5YFO3Ge%QH26hz1WlzUk^rpfrG1oXLz0p0c%ZO-i$Kf=$@byTe->Tm0L6cA93gnGR*azkGw2FU?Wc-%r~lB8;CszDO#vp`ckuKfviYVU?Qzxqjr zgKN-LUN9|Vdp&PG?@;)AsT~r5wx+gLe>z+@2MP)bf=X5g*msmYwVKOxX%2AIRVo$c z+55D(INR|u-h6?eDS>rU%XoycRvjtl+v|Y_ z;oFQj#y@R5s9KZzezrRM{5RdFcaQ#}FPx#I%{q!SSjPK>}jx^KIL5h#p@^&Sx2Rka6@|k>V(AB|1=yn*T%z>?FqbYVrU}M%vW4E%hUB5GEeWZTN^rF=%-GH}64$EJ@z9H)4 zvq|zMNv6ioqAV0scgcus-867TdIKsl*=5!Lj%HW|8dDCl?XW8FR(y+{I+D`PFIExH z*RkO#!(p|q#N)U}hPiKpXNGm0gUB@tvbu(T1K&lfy%F_{pKe_ux!@jsIU#Yo9eWu#H`fl7y&ueBs1V?kE2 za!l_L7%81vX_t9Jt0GS?vy3CsqJV#&j~j<4jw*%zZ@pD)dai+rU)VbWbJRv~t=W~? zykYq;L`RQ}H6`@e*S35s(bo;?i8E9&VqMwFr}Qm4=gZQBE4k>jy`wclI64S7FHMIb z9uI=j3WCT5vXZp<)cn>752R{1px{kgy`n8KbvE*LSkK6vYgXg$cO1v`%fm8iYrog?eT}O_bbVZmH9^_vyzz&zJgcM3d0$$9fB`6{Z@NK&wj;}}K;Qop`zCte zF0|8CPl7`h-Q>pci8zH$@H2fo5$X0HjLTQ{Jri5|18)tDgtg{|(vv;VrtbbA>)#en zJNnUY54OVFu3dsIUfWmBK0`P0b9-YRj{N(?iS5wFkGEkZx|I}1ari^f>V)d4l30(Q z2Us(0G-qnzJ02!UrUQ2U>@uj_X;S+0cV!E~30hJ<4GCaHMRPxM1FtVpS$scYsdW4q z;$XeboH|Wk8V>h%4&wMqcX`hI`zWX-2z4Uchqv<+E&KUkxfy?*JA&u7Gp`@fplzJ~ z?&nKi@ymk*-<#aeT;s@v)=lfg5U$Dnb73_FuV%k=M{MVzyC6QgvTig zbbQVh{GI9S4ae8Eth>0cSO4oIS$_PF*XO4HvUrNyaq2R7eQAzMO$C$W^!_cMS_3i7 zR5YG5HOFPE#Tc!ThLU@$gPv4i-oa^pY}*LBeV+JXkgOL;gVPUgT5oZ3Z%K&g=Or5a zIpS`gzGvfr>UB@FyMu$czYlI>nl8Z^L24($gv0&v)i9@6LGTUc z87anoG))dNJW~l8@Pj--xMPP|zVi@?l4KySVE%ozO>tBwMAo-W8F&d-=7dTMeE#8V zay_UcTSf7)6$BSQ%33CRS?xF^rX*w;{;nR)hF-^%oPxWl%=4$xRE#Q9$>v}zX?z?1 zK3L*#Vf8mM=!+^QRRQmhht^8cpV`VGtl}T{W%ZWA- zr~9Po4(w)lqGRGUJ{e3o=J)y+MaHD1nYrF@G341e#13P}y-WZDdtcn}@&^&7#UBc4 z+w2h>9MFSs@txVti`#XwTYz!&hH}~mC$Il6x8L82TJOL$PF0TXs&-D`2}yrt549?F zK7~>vyB3BHGyN}FY-c*APp>-r2 zWUM+>&QTGy-nJ_eul@gT4367*JaL8CCUr(*;RMefs;~g#oA7-t6l|&2AP&qf@Wg*x zSsAbXdk0z4uGX(TP>%{%H`JGzj+H0B4xJe!3(noJ-F>@bDe_&e1)_wz|57eR3xWrA{S%+1N8Wm}X>|F)HN|%DfpSzyyYFQMe#2mMT;GHgACpiR86$7jWtb+b$ zIOVA!!nm9{;ik4UHd>HmHXVPF zr#u~nnmn?zzt{HQdJJmpOD>-2?Y)y{S0CKe?wZj8O8L$iMN> zv>>&yyO%xfN5tv&6xMQ6;EUDAD{JN$naVZ(D#HQM^7^I1LoLNdzs7I(G(hyS$;B(A zK+z~)rjTM{iDJNCs_x#CHE^1NC+qpDOOq;13uc~M)!JhDhwDenFEUWXhDMcUWxnum z2Cvx->yPS%UKgtOMX<1C<5zU7VO0j7Z`cD|21-E?Zc>x#AN{9PlnNRXpvKEn>}!6Z zXr^TM1Ym}9$A>?PvI{dBUjez03?nnk!kHphr^KrK_iTriYg@HE+Ea=$-v`{=ZL7S$ zc7eD>S04wP;SrX`&7;^CpNBqgyv`day-@abRrO1bsXXV9vfEIz7Pi)5@9@*7^op8x zPqh|SWCf8?(~spEo-!!Ue;yM?O|zh`SqM?Dldyku#;A^_S~ic=t)t^T=F6s)ihC$` z&zxv5IKK9OD{-1ZbkK(BEvvZ~%HN3|n(bPtQy8-+)+O9=({_*Hwn>J@uEWmrI9uE; z%2M!*xZ4n$>sD0G%0-cv7Jg3K%Ntr6At+AWyZMk7)$Qrr|ylFbmUaUX@Ez+ z3i+Ys1t_^EyPn8{oB$o<_1w1vx;FTQoS|ZwNw~27q+PYv;$0jsnGABl z6fcBC{GxX!K15qMQJK4Qxn)gnN4GqjdMf(!f!;k!CA{KFiC*CT4W+DV=2W8Y^P!)v zaYASjl%}xS<~8lC z%+`-m4VLzr*SXdTk#5|Q9ahHVdEG?ypb+2euBHA;PR1z7Cq|UBK_9!)mtMTk+Y!%E zcf9m1)f#o>>eO*#dg&Bj!UDkx8tL8!%6=$e(Xt*$Ft?g#StIkC(^r+}u{Q}2WOmhX zl>vQRL-G+N|DcFB5+gR#p^a4|T-kcRDnimAb`u+e*Wr9?H+;kExU0?%{tZG|0n){K zO|8R)s>ZgK>+G-wCPBE#iP|}xBBCW%3ytaqBh$cW;SP&eR~em>CwJ<(uJ5}>%F?}R zNJ-|}r&7@_6PYV}ch4LIbs8>I-2*4ZhaEVK(Fw5ZnbKMFx9-^sZFC=>G`?%>HJrFu zd4{vEmjmBcPWJ3M0PaMF>uD(AYDR3!%?<6HubAsmIzzwnmCWq)%^HDVx&uYy^W)af zXB;yPls#eoI|L)6bRGWcRdU&)rrko1mBKq@YwqR$Cb9hV2kfa){VvSjMp%{I+h+Nrg8H4%McP?tLD-4ou z%^Ho_q=`jNQ7)B|T;kf#A8olYRyHdLuLuvl+(b9v12+zUY?i7X4ECc>&hq+n<+IYr z#X^n?McbcNw?_m<{ROpN`ntF|gt9pJZ+@BNR;U-FlN#j}@)u}YwDe5MH6HkgmOIn) zla}tQ_%t7rWo>CoUnp;Xp;TSBA)?_E8T8LcY%jp1Nvt^x*u0nnFglV>^g=4940*Q) zo_vuJ>KnskWKJa^&ctcNif0d8TLL~za^n@Q(%r=*(t)64nGZ{s?W}5A$r&Fh5Ii{c8>TS%ADSq`q+x`&i$K`#FCJ!q|vbc>e z9+yA$lWlpEjC9b3vL-3TTl&^F$W3(j%0Uv-T+=!dN1rWQ&ml7zspG}fZj`4#?hsr;m4@k21EjsOk03}?E7uv zT-*a!VM=OG;yMP{U=+{Hagp>Iq5OuVLWK}==9APaU2y(w8mK<$%iSF1)*Fv*@+O8` zub4*7CqdAS7XRN7)0wG4(c%dwZp|GshjPeirRs3&-i8LN7;w+V0YiZ#M2R{YiYic- z@3g7f2wcowJ)-i`glaP@bcGJiwVzsuz0i9U+oMgpLq2j1_s3205~;Z;ri@aL8@5mJ zc7~F&b(uM_d_lst=&Bp$@T6D6)lUa?4PCR>+rZUlirF7ehTYMt5=|yXC?TJndIx-L zbi(1e{I7AzTyz_6YXf~w#EA#~d1mYvFVxyyR)uwOdI2MgvnJPGk1vT_WRdePb1oD!$Pk#KmXYjgw= z1R&k~wepwE-9k;yiubD2Z&jQgMdqiq7-FUu*=`XHK`&nL9YMK;k7)SikWt-6*f@X` z3iP~NK8Tne^hw1$Zd3x?Gd1K*&n;JM$qG%oDo}Ka@lzR6smio*?lx&tz5PZg)iEcX z-u|`H_Je;2&X8Q9EAxhAfq*DKA7+awXzUB{4*8XkW%&;lpi`yf|HII_`h2+t259h! z>pSgd?5+rtqylyB9}TQ`{4!Q+(UGP8IHqhHV$emXp$aQH?uy7hA)FrZLr0fRtV_Cq zQ5l_v3%&WV)Qi*|K_`QKuCCHRq^6*5ICP?~`QugO3mlm#mw6$M!X-Mbr@~ya!0wPq zGqHA&DkcT-%_LEl+@vuB4K6Cb;_~t;HR;fAxmbfDwajL-5si#OkrNwm?|aG*gjXk~ zso4r*;G7S)n)+HV=(L{XTY^g`;L@b7OQt^Rtdt>YC>@+)#8vz|;wmc$Cp|THtiQ>^ z84@?JT9c?6JY^sxRg);&*?lH)WE}6EJIXSFNVSmwdER>{2i!QPZhaU$sU*syvp)0? z@N$LM=$2F+^JzPg-ENk9U}SLRkhs71QJ^2hPQ6z8Dy+UK*l2NHUOV8xj|k0gZV@+X z2L!ruFyAPB(Eeqdqv^-qijQdGB-#yLl3{(g-({bcf`0Ah>PAk-d_Oy|3(Z%uo!V?Q zjbi=Yi#TB5>`SP9CjyshVrbVqlgcyLIh9QG5*7>oV^mDnZql1i0u#j8^GO}qKN#XXK+C0k^-uonr*hIaS(b5S+0S?Se0d zF}vqW_6qs+tWZcvrv6|b>)dl$lib5vNfcW|42K!+g>MAISczJk12Y~qpzD}d#59H; z6kNZgD%Y=q_sK8>8>HFj@pR8tpB>Xgo?B{&~ zo6AaC9>Gt`s>z83R?qhd6M+8@FETnJPRHgBT z@HqHA4Kt&eZ1HEe?*6f7x1l@FGLFXRQ<8AiqaG5wX1z^qx#zD+4EGsfhK8Z}=u@=2 zt?!UeJf{j8pq?ihnqv-bWrHaCBT|+%0_uhp=c;LY(zyi=4&LDxM?4g&XLB{@bk6xs zNP4CzJQ@pM0kYd=Qx(f*85S~Th*3fz=KZPA&vR2Pu884WF5vjh*U%tF&H5w+$;-13)i6VL?PY24q&95NYVMBR* z1=Y5ojC6%26@yE+H2uROFiBeQB4@!D3Z|_?xL7m(@S*zCf7?buQE4CZqpbTp@2LDO zn_b;PZCyP`Nsp`tM^6JA)Cn|6Rh*Vl(?Wg`y$4V10xl#cw$c|`XZImnl^yc8<;`Rm z4>jtb{ryI-?y(~_ZBPOILdh`0>quD~oCk55zA7GGjzc@xr3AvZkFDPDm;ZdwH*I~I z2&9ARnbvB?KB9uIh`p1jD+hZj)QeDsG|EamdEHskK4dZT`ky7@z_i3mMaxb=W$)Lw&OKOg*VHvI3> z#@0HqP~T#w+fq;r2>O6Q-IZ6a43YtKC$F!NgF6Jh;l-!iqazz;neH+wBYYQX+AJ(e z$DMxrwPxOER#~>GM+3G-mM-U=e&uonc-lQ%GPhfeqqxR+owLusJC0NB`eqMv{9DtJ zvuxtwjgmqVjigbwoD(|%&sX;MqJyKGAl>Vff4)dw-3}wJDvdrHA>gsz62+TZqPe7H z($r*O^OJ_})#HnF=25ed7MwQ75>$Ve1T-?=iFn_Qj7QW*pD}sazB#Qy9`R|uS(=Y_ z$MVXx{EhJJ&sWYpv&bgpGb&RY!u7=*INUX3NK^)sqQ!O+8_)Vdv7Nl`WBAv69q;zL zVb=E1mhpJN0{dZ&=SGwbbE~`Kn!RVjrwlUOu%7tVoDGfj1XNgSq6;{_j?DGb8uVRA z+mm-s-te(LZos&<5Bo^Q7a|(*<#Yb7%1vrjcC2+9j0jmrM)o9T8N644hu=E{x>K-h z;yM#wPCE^%uh0^cbL?HsDi>ab zMAe7?-l#iP2|tg92!b+QQ_CqN_%p8|mF=!mMQf+QX@$`O z29tWnQ|aTB%F){g#|uRrvQErGOZr~p3{IlKq}zK`kFv$7+nN(7_FeHHXIP6liL^_0 zd+zDpZqS!q{wrB$X3RjsU>P)&@O!;kCA^<~_Ac%HQj49JmPstB zgCmq(0euE-9nZr|h8u%OQ|s%KOQk~T%KoEul{jRyhy_`>;oeF0)KT2lr6L<3RD(4H zp32)C!OF6SS3JjSc}xRX4cg;uar~I(&FNxD;L_eS-;WZW^H-L1VwbC1fI((G4nv*U z?NQ~{G=ol?3V9KV(Fy;g=G}BPVq? zck2kZs=mna(4$?ZdCOazjYvYV`r82H$E}8s?e{7}g9*O)RchPI-H(0DbI{=gFf4Oh ziSD%VdtKt?`#|(y@Z0$V@#gn`;0xq89B&Ssd+wp`?rUCRXNTw=U)9M^MN#fa9@XD^ zuu!d2iH;V=*LU=@kuq7 z$I#Qkmz%fL#-=4H7=#4TB3YVoY%Ak}e0R^RR@lrb=Ev{Oo>TsC@*n5GA$WUW?!S=; zH?FqgPWUdi0;Jd2F%K+l9Pt$E%Vh9rYRaPlZ!>6FRg%K1DH!Kf^_eNn_piNI>2KIl zyfH@jVf_;M$9#>y)J@_OgXE2?l#W4Yw<KYy`k`QL-z_Wx333;kVD@b|AJzx-zS zw*#9cUpL}E2m4>1y!p@ZFL!@(Mrr)D4b0j4Ui#7d4}sU7A68y~Qs4S=Zv1D^@af)H z2CtH*$WPdYlGazPISVds=ZAn<0)9 zPJ4oS&OtvVL|IgS`#!@*EIOFf!w+yv-b1XW?JJEBD&^~rUX5oM-s zu5)ttCsYD&7Wk9C%!z2S5W|Vh2R14?nX91fzJ94NJ&j{AtQ5LKUg=%)h^=)KxDSlw zB9juc5&F8}vzPVko^K)nnJ!(|x&yeFBY?|ayjxcZb>kt@UDw&l+d@#37Ds@qfJR$N zRM%xgXa45u>**IeF|k-`2bR-|p7Nw$-aL6#WGGfNiD=aFDI#OQ!7xw(amgo8#{LRV z6TJ=b+s>LOekl8;S>;PTmhAc#wBwJ8^)?T}~kcR8T zEZM9tc5q;#-ybAS_$+KkTRyv9z0lhXsk#$Ozi~(jv^dIYVMDw*{R_tsMP-%gr_ca* za^2P%)_9~6J9uWVmej&cDElXd#h?8FqRtT>35C@7h-J8+RsQcs`p2;or*d)4lT8$J zX`uD@LKr2qUc8mSVU&(G)KYG=_g_7%_g2V`?bXyOgUp!~-qUsw`>3Zjo+K*Fc^;lV zB;DWhifUrSxtwvv+vJ12uddp|><0U)dK4id0F4AJRFF{P%4ED#eH<=o^kMT(UHY`3 zqd>xh*=A>-p^AU(=L5v@@xUs5$$G$<|8YFHStW??V=A8`_|cpd`-} zZopK1b}!xCZN!}n1p$#|DG9sNn<2hyd4OVTA}nXjvOyjVtNZ?a-5tRK$%|GvGuWp~ zM(%99T4=Dge1`Y0ES74#B~*PMx=?eV5|yT|nWBcWDb?B+im=wy*4o+&E!(9Wp((0l zrL(zKOd=q{xoF{z3o~#Jkl7nBoWIGZ7W6CF@J9#kBR?M;KsqAl8^^CJt=HFDn=?oI z(l(QqDYALzQl@;=QR3H0&c%+DNn7d+_gAOlT%B9~_L~%$jwaSl>47nCg*H0WWeXj0 z`U=*pyfPpeLEbo1L$R;rB&a0R55kK5!2bd}wq{5!hkPfU;%+^&mKJN&u9{jls?~(2 zULUY^&x$cUsZiliY6$}u;fmRA1fw{mIn1o{=+hF^H8b|?P$F54Nu9h$)3GJ#wq)a{ zKOe|e)!b(vg!#{RZ0%atCFfo`=$d!exD=-jVzb`RW;M?FzB?l&CG2T6iX$RV!bHei zBLL(qmbZ#kAyY8ibR=U9@z-c!01OOu9-yx<%!YDynuYPYaSDSR9cxZC>*r_3j*KXV zh6(Mh>_yDotCG11s3`0P#IQBgIe5|yfZBAzkt^1mlClr3PN#Mz_e5gh(wVxa2{ z^6mI++rXLQw@W_>FAIY4exP3jQ?Ktb-C3Hn$%~hIVN`xbXLXU}nOG|I+6n|xZyAOD z4v|r6u0$8U2vRW0AQV!Iyj>gvUs%DWny9?2;H$P#h6+1ZaIevc(7?(2wXD>t7l6mP zje)a}{thW$PXge=iDw@}-F_*A_;zlteV^nHEpo;e?G$PlEhV1AL*SQ{U!I7KqKpmK zbgXu0CmQv#KAo>n)4oT?lD()o+LG;xoN97~nEK5C?uD=TN>$+dBKpk@!@d#W4g>QG z{}XF`&WDc_omO!$8bhcr^IR_#4mg{HJ)!PU;Sgzhq38)OxV$F+6Kna~~frO6l401ih zucTjwSm_yrnX%#OMfBaH&D>rVpl<~aB|(XZV5~Tp>T5BUgQOfH4qWX&`HJ>Hox(*# zY|OIr?jO%Ce?JQ|{`l?7OrHAoy;LxU78TM=*azHL4Mi67n+zz;cNJwAVrX^t(c=m~ zA3WrXe(t}ppjS-j*BP>#>w%Pg5t1tK@<@5!4-LFVa3zU8#$hqwD2%y--}j@3=IjVM z-2xw(YDuh)5g1v$+P|NLaGi!P8OSmw1@o#kV!n4_8{W6pmS*w}$+k;wl+#}qO>4g` zVT0Y|ze$^QHZRy5tu~M$eAJouv(BvAaMJk*0=1v+nbeg{VvHg<Ka+t)c6|Hp9P7|l1YqS&Wp#(8gONF3tJI;lt+}{~KEX_KPp6SjUDuP+!NIQA z%7pjFJGPw+`Qw>&6z%U3Z#b>^JX}~zX^&(krb1K-7F*y^jjxnz2DSWJ=H}V2+9uGk zlvyg&C9Z_Uzi*%+s$q-WU;6+i>stTthW*S}1B z>_c2oraq&k>8RkUc-2ISOg5Cffk5lIH2Q6&lkVwq&vU&@kSBvuwn`CZXJbs7!Pl+= zQ@5eiQs=GrA~uO%_7NN!%7QXbk!fjOIpX~UF559DTNDw3cTTDSTaDj?pAxbYr6&KF zy~@6O0q*ySz1B?1*jYMra17z9U5Z^(p(g(t+@*l~eLLfP63j!=)iSAQI(U!&&j*;R zM4rQ%UVjWUFl^z}8Drhb4|;Xaid5yF*k67p4ukn5DLD9~ zCmi3%-)&a@c6cV~0xlzqUC2#EX2-7CrMyP+CSO)H@~hQLH=sg2`!G++UlXJ#2|5(N z4>3#xEH8^0RkOq}I!Bsbt@iZ+S?X!+`{f^wW-+}YRc;7$Y*~OgX%BB;b?coDxlzW( z8kpwQBeh?j$8_srvyF(r_ObSXDKzjLlAseNRr&c2pEBw^`qFdE)W}$Sc0_$g4FdP? zC{{%a1UuHt9b|x-uj-b2$A~HhKvYivazGzAyw$3b^E%nwE@GoOrVGZ26H=YE-EWSA zZfKdwylrPJSAJ=4zY&Zi$R5Y4MYDK2F*)bR+8fnLeW4&gi+{`}!gq!1lTDO$U~E1N z^w`Bf#gWi}1pme8Obp)`qPxG)LPW^zsxoYZ3D;Vz^G}_(OvzB@7#I5R?C)%UXV8g# zepbb_5WPwTO3`eSM65Dgz5>7!?x@zRk-M#ra%VfU*@jVmFe&h5#<}`mRV+}X0JzQ^ z+N!QL1P(dly&u1Rwncp8`KsdhsslT8vUk#xNoD{a)!Cy|i>O<5x~D?HtxDfLTuM%@ z{@ZseMob6~A1mmV7YXZ-Z9cmbKZq^9vBm~Z$sZO$m}EMm>fzL2y*4O=9s|6$3&w>G zJ{G@Y7@{sFp`AB|S6Y(5Bb=a1`4)mSMyBZ~r2H*#x=I-|(3v+%7Mc;F?Ii%|ep_g$ zRX%QN%(2B^YG+!3Zr#(&0?yU6!%&T#IOP)y^+MgW06V}?k^XUkx)x2P5-I)Oj;h<# zP39bluuPg2@)E+_aLeVcklZ|VSppPn5wh_}{?H2C>|~A&655*KKz}Wl6`T7{dX|lW z!VhlJNJf?%HhwP7DQm4R$))Gx*U=|93elyXYIE3O(Uj+!opO1KJ)PUyRP@T*Syd`N zc8@5@3RADu@3-Egrd*w=@@L1A+!9V;rT}R=s9|Zw9??a5c2uaF#Wr!xu`U!{&pp3h&sSni0vwl0KpAU#s z2cP;a(@gxT$1IpmwgasWxidmSj|YxtGdt%2WNj;+Fg;S~|SY9-Ys ze16;F?ZI4O%2lC08zKDjK}rerS4Q86_rZ@y>W5NC>GLU#8+SApG|%p+6WOjn$^E3B z+m)XWdi$+whN(s^mRRClmI42hyG{`wNgs9n-iV=-KR^Xj!Zg>AeJAuGsOQQg7NF;3 zBU$dmMT~U#I}7C?q_bvWUs-q|i*cO@&sAw2c1aY(T8w?3b>rQ(o5ZE@csO$F8_7x^ zxBk&OWLI9m)}DRAS!p7k7GUD&_=bH+b0G6bCXi5oD}xs1Cb|qRlb!HO39@06pXz|I z^4XpdS~O|SyP1Mj>p`+jz-#@8bpCMy`x2OZ8#nG45aJ=41f~M<20xxAuf)aRqh?bw z1KlYWrKs@njU1wx+p&;>VmGZ%^1kp)9|-FqIA-9VG=i_!_0F&X8AdJ%9(a`GuX!IJ zkd`QFZP5Za+H>-5Z*oLVmIfZ!;bYyUpHzSNxZ_j)gMQ8D@=5`ch$gyXr^)j(#c}g# zH?z6j2JW*{)rTiW8!;u~u_)w#_U?h*Gsy3N0^aCIpJH&|y?rEAc5%ApW1!>u{s&T27%$|Wn9lyRMB zlbED{(>|aTmapx{@vW#$J%WKo)EJNlo!TwS8Su=$y!dd5_17c`=_vNNwbuq%h)L|&w|<5&we3C!?## zFIg4_6oQO}}k0y_itW{~9expNKY+1cev=hUHlJD(}^jA9uR|Ud% zOkqJm%Q6L)E6VjyC9UA(S)iS^l-uRM<;w!pb`Hs4&Vl$kqZL?7{ z@Sv9Bt07A?U6Dv@Gj@7VT7A>R*KnU*)fJzI{m$OQ6x*)?VTZtiv)i3XuE0(AekYbJrF2xnz$&)u2Wx#n zy0QebMOt~NS+Y$I6p__8G}QZ+DWiUZvb^9>uyU*VHVT>HSbqdDsw`2m6k2}k8nA(i zGgz#ZElcuV7z^~xaq~>H=#1s^7?sB;xe<<1s)rp}=Peq9ZcEMC1nW0s-_%To|6(kZ zG`wbC54U_u&BEcKW|htCcdbY=QwT-085nAVBqFQ&hl9+T))`V@DxtP~GSTeFTJ)U< z*`(TQXHkGV5Vg~ zy^Z}IP$)TzO7+JQ73!v`5CS;VBgT#HlR>=|@{Y&ha?i}=o)2HVZ!xhZ+vaeh)fk#o z-H)%&U4zcVg$-vpCAKdbEmwjS!W#qt4A((z({$n^8|wFI5_e=}F${Ci4+Hi;^Hf{z zl&zFRZ%tIF!0?uFbta91=fW_#&*eVysIh{;OdA^3RRvrraE9ycxPCJTy(yV z^)&6w;s;s=rzph}W&7bb|S-ANRvvVf{32Zc7cZOq{3($1a4 z?hV6}nu1`M&Fsd7S*?QdWvz9N;M;d@5K6QHabi(YQQnO-f9YCda4tg-d$Ic8(GNP# zBVK15S}Mm@lPz3@(il-JJGJUl+XA(&Z#bFBYt}lf6RR;oW^8D|07T;HskW!7jnJsU zh2-sX^P)-wul$keHMhMTZ{76wv1W-5l75?47u5V+1Wn7_vkQ8sJHso4Jp^!c&2q8V zF=DNBXcF~fqb7ou3Z$uZnn0@2%SwMJYDB&82aQ_7Rh6`8489VF{=5C`73+vPk$`Y%~ZC%ScGJaFstBe!Yr;G zPiIb!((lEAGujnx#V7>fZaQvN>BV9WUa(j*Yh;wMs9lM(Qm}8HtmQ@72dTF#9%z@6@Vq0wtuy zc4F#?PpT@)`|7vDI)*2-Efwjzq3sRp>8`s3pE}@&BL)G0yg75rV|OP_1b2YviM_<^9;i-1qm+L7%j%audhL9IKfRU3D)x&Vbv|sVceBL^PFHLR zVEOtvLgI(~Fj=%-R#`svtN6+CIc`wB=xf6&JMrGt{8r3e{~OxGN{{G=JN$NP>$3Yj z`n#*HypxbRZ&G9c$I=!8lvuj&)W~0~&}g=$YsH%n)(*U6N7Lw}L{JXLSTsDz z8%TQF%DeB)!Mig_gLRLEmVwK!Gqo*sNDlsgy3R8nJA|`{RZ$*j>pji%j1$@~QPw;Q zOT<7g-3t?)iJrokLAA{tGMN}SEY`4!JGh7*b&>5Z@&wzX$0XaFm@28(= ze5BqTM>~o5FwHS?`tt!n!jfrb5g4g2I{xu|fSWq*eZ69EkC)7Q9%g7th(1fk#MMD$Y<=r~b z?d9=49cB4JN(h6u`Cey=7HL`iZ$dro%7rd$4>paBXY$zm^ctwH+0RM%hpK>0f?2(< znVduH=6DpbrVtQaQ%kf2TtIN^p)9DT$NfB;SX8UvgK-Ylj=|nx548eM$%dF!ES`<@*SDQ0qq8$R@uQPH^n{Edjs>s=Gzdy zqAm23S@$3WKh?SfLMB@5U~=cXYt9_wzwCC z9Q1Y$>FjJ`Wyuurb+`tXkS^7jp&C@Un&;9~e@~%5$vcAX zluhGgM*Id(itnh>gRIp6&2ogy609uF0y;y zjRM|mg0c*G_O)ul!kno`edPST6)1?G9}T>)>=2mhEK9ZUZItzr6${WPKJ1u2KDIxV zpr{TS4$e*BAP257Od{!*Sc1B6mejxm;PFie+rQ^RE61d4Ex|@g!cD7~+kHgU{jPZH zv(cyFZI+=A$1ELY_~kk|exGfs1`Bs5$LqYTjXZXA|AM1#Z9%lA-^qAZYy}uFDRbGHQt2b`# zSShXswX3aXI+rdaOV8rmkS@leF;IfOI)*@W`KFPYcL_FPrpZayFZJW-08QE?6ON7NX?@YIVlH;M?B zmME5OygTePh5J8Sb@tiU^EjvSjV4mnGZNM^2wOJ$ujlo(-8yU~R(xguX=3Mjz47qX z+izWKqj{7>bo$(Q60N+*4AS!J?bZj4D;A41+KJ+=U;q2tyZkIh>i;>KnGf^q-s)OU zk3dR_{dV~uG1cFGdG_JIqJR8RDl__y@T*gl;n!!50Xp~Ss=q8E7t#Xm;J?!J40fXk}Hn%|WD?^D{5P zPS*J882cU#8;BL*4uVML|4{ebJl~Z9=CN&LpX?_deD1ce&wo+gn;(=OlznHml~wBC zD)>a~Jc)yQ9OIBX9^~T$E}P0&t?R^R9t$yZ3*P8 zc39?synyC-zpa}1LzI};$70d0!%!I!_q0|>WnsI}(Ul!@9%u(KRs=Tg&yDg_w=@sA z@qLtB;~-a~Osd>iP<2ZgG7Bv!WZ$bVudpdte&;YcuhS@_rsdjo@5*fQctH4cOVe4S zi`a7_VGap=3XOZ6-g?UKhaE9LRI)Tm_8JT_5}z?=ifl$fi!oj@1!lgAR>V~gYWh`? z`IbHFDCy$kIbPcA($Kb(=^30ZXxszEoC6CA!mMZ4av=R~fk%yRvn|r%kd0b(4uBEi z+Z<3+WBs;wks;EJw?CC{j~{epYqa7=n#m{D9s=u9CBj#o}23U#UuwU)+eDTGS0qx)1zR=o6YCQ9!<1LJNvlPwR_w#!UmNluWYIBM+)qzVQojqr{R)Es;M*Eqna zvdzgsQ#opaXdeSUNDQVE(~*9qg_r!-+N@g&UzUyV>{WhPzUVSd!ZoH-b8B@kdJ1M` zl*0ROKxlL;`gq>x3T1_}?4QZBnGVWdsyFzoof}1{-*wR9PQ8-;rCKoCP7G+iaA>I- z`AI-8W0Nd*^|Y9qFC?@z$pJuZTW^f!H75iLTq!yhXAIYxIrdpF`00nzf(uSs%DbD!_eXuKEk4=M_Et&8b?+)3B2 zFc@FovOUbW0(bgcnVeE{wt^P2nWyzIm9|E2XAh>0bfNiBh+_uzWwifFmfkMm-f${4 zu7)Th6b<~HasD~+`rqA(DV8GzBP+w}v$6e%*B3^#-bUkrMcjT=LIQgB{eV|Y+&ix! zC#F4382UcBn9mY|!EM(BUF25bBCEKTOB&2N4&tQq;KJ3+OqhSn`(_3!(*4K%=wgw8 z#f@Vu2+k)C%r>e|?H}e-g^rsnE4b$M6U;GJW8M?LaN4}>$E^x)nwuG_`kZJbDUu2F zo2`uaSbI0m7Xeib+leVc-pX^SwbhHi{%t|h^ly>f6arcar( zTe&q$*!!~J3l_j-T|f1@!Iw@YKOG5tusxwY8k_Dn1bq0^>h72QKwxaK+Z;(=(Z#y2 zVhVBOF-86@DkTt_WEyFf^{yPl?LAum0%GA+w!fbemJM7`uQ$b1Eyq8&GE8~3h|`f~ zF?MMRi+q}Klppg8`G<nCqMk(9>*GwD$DFmdLx)zsgeLpHKShf>0Z?l({`z%6d>~ z)!7$PoXr>2iW?YB?hWypEM|Nxj*}>SC)YY#pG;nXbw5I`(|Yvtfy!OU>v<=6JAOGh zPgEzxM6BOL0ogtrIpu z$@ra8=U}7ihrtV0nHQa-KGPUg%O*jAr)2f*$egs1=K3g&3ybVrJ;!5ks~qDDqpa-$ zf2R%+YXm(iK{aR)3f=C@B`up7dm|3}jYkTV4S?dEs_N>>JGipPSZK3uGAM*BQ3w=i zd@}~%0?gyNG^X@1v%R~YPXsdtj%D?+&2#5U1<%*6c%3tgRV7a5J0C2I23g-o3A3ZD zcYF%?Zw*Du461Ne`OmD}uudMTS4lDp?uAcrhv`$yuAQEEloZ+DW!)oBb8hYDEor-lf)F2K zEQW(TFO;t`5Y54+PW%9bcA#Nc@ex@I*#n$IGMbG!1MmzQI935_T+0iQeN$Ca?iY$} zm06{}#PLWZ-?rP)GcLxCI{O}Zd}O8-GKrQL-zRd(B7%kD(hUG^ub?IsV2N-SrRCH7 zx)66jr&8wpNVap9Aj)<+ZdH-TX7g%1#ZZ@T3J5}0NLbr#5=2Spgo-6G9lufsJZ$#8 zSb4Vk(c;PdNFjmwL17gb zCXl4pwTK4cDcZZHyrg@@0m12=aedCKzXX~4_F%p_>I6W(KrNka+y|1Y!kXujnyxe& zThCODlL$D&(haI_T5{ho{KZ7oKh9!(w-c~sb)*AC3re#q&!OV&v1@@KIay@8TnC7J zw>)CZF5ii0^J~y=`;yT&nfRgelu;xu81f@{hp=wCWwAQh#;n#ACtCYg+i2rb4S7of z4>GQ_gs`eN5KZeJbIgXX!WKXwbm&nwQxJuHJGRS~3MPG{50+xw+ZsGRyzhORszhMz zhE&g=gjWk@sy)Gpe*!q1ooHF!b}0JJPN8JmlXK5B6{6oBzrK+nbp+ss`f{Di^AqDx zMVF#i6CC#im=DM&U=4JZu5EC5Oh4GSsX=2o7(z#sch1Mk;oYNE?*8Pkj|ffWgx3G0 z$P8K@A(83l)%!4@)uVo`N(~018KhPh7DG_kisD))#~I`(hI+`an?!>bx34tq)(ZK0 z)B8{Nu*UKPFL3HFHCaVj=TWIK%;SF{53c=W8}6#jZ)h`N(fneF5p78wiN|K&h)WlU z<4(QEK78SEYTBRhTX48IVzGA9tr|Tl)@ut7LgbP-)@n7$Pqf?A-voTy{>G3{^Q)nr zr%itO@B8cgP1*KspQv_$Jh$4UK4%7VTYSziRo6YU&rz0EzUXJ%q~Wp?$kB6=?7vDB zCk|LU^Jym)Zqb(c&}!!W@b*Sy*fDRR`4vO~i?43hwj1GnR%I~o zBm0%lE4%2~q*W7))b@xllR)I^Co2ztIL;9x6p27Mqtvl4@>4SE6lQR4JOD0b-&F7U zRBlv^cxi$6&s(OAuIS{xb&++QAk>>3&!MA_Q*1f=4)6UImU6@KJ^?}Cf$;ISNkK@3 z%)d{R-u6%9XYUY>;?tpXqkZy_{_aym_kMTn)p25Cc=DxcckA`-)I2Mri3WkWo5=o= z>kzYRd~Ww{=#W5c>yDuTZB7ki>;1fwBS3UcFVVOqGID+xnR32V9e-1ZKvzWFm!k)AK(bv)F9+qcRi4`g4 zk`ipvmPT9adoi!v8&J{E`j^`|;WK7>F?Qp`W1(+6O5-v*h7tMmmgPuQSQOCb^PlpP zZT1#S#o<*OaTddp1?CVYz2=6;z%@AdL#SkH7WMsC?6{QWM|lZPMc+>?T>^HTt8sGqcScQB>9%Pob&sHxOT_#ml*Ia;^^pSJz`Lb?Ns%}bQlu=MJ$a|tTOW+=~y-^&N|MQmnL#TZJIJ}H* zx@=0H`1_zcx!&xd6Ck$7D5;Nt#t}i8OUsO_6rzcv|F5in)x>#OVnIchlYy6sE!-zK z@l0lFu3LSkst_$wkNKvFK3GYK=azURT`q31TtjXzjEh-_hifQ!=@&j)T>xgpV8(0N zV0#Bf4~DHZBP2deG`t?^iZm0cwW)ZjI}pfvH#rvojw?T746M%vcoX~(NI@e8VvbeF(ALr}L_#>4!T_6>%l@}2~b?r&xf>niKK z3!brNs`~hi`+XKPPXwLk5+ISAF{>$1e*K;4!Q)qxX<9Zc#9 z>-kz&RJI21(e8sgs$#0sALzuHP50*!k(>XTOa^Sdh1mb_o6)?l$jc9Sa#uV4h=OWE zR)<^pVnRYz@g16Bkg{0|zG-hNW(@#d%}v9KNN2yMAhMD-5F!!Q%TAK-#8jQOL4lh{ zHUIsv_Tnrt_ABAG@AhBb)y@st!Bwc_4qi(@15PNBRdjBSy!Pq2}& zf=JMfR=$n7iN+R}@L{-IGs4`X(0LqTsyi9pY3WzN8PcxyrbZ4ceE2P3VnIn`QXw#* z_?#lrX$_Y_=E+{^|LgmEA4e+AB{s;OJ0TdGtz5=m8CAhqv$RLY4@8s&1-T3>crDPr z2~hEnhym8GJts}IL3CTduc_4EvlizwGG3gxMr`w(>pK?(C9&OZxp=bgdZxz(4$;)W zYY$PuOi&vRs1$lm!|_`{CT-p{HVnn(&`!ybp@l$u5EDY)eI6_pJt0_>0zfO?>#+xSBXl}MHa`fF?Q9Iydj@(CDjsS?t$l{& zc|%LvhV>l_A^a{m>*2oLLp<-`=2ttEHTrp00)*?zh*seLNDt5qaTAaSi4Klf!W_iy z-@Y64#ete7*Rj5BWOYZ&QziZUn=&Q>9a$ujSC`%k@}e(qDv*q8!P!sUy-{X6jC5s- zjJ3fWi=tHzb$a2Jrg4<=uql8nk=I7F%@-qpdvS*JsbPD4lop=7cEP0W4`M|A+DrnQ zXs^XpKdRks;(^MH?+fA&sfy1YwyJ@TKjdZDGIF7LB^f~>FRk)|mS~hwXf!t!i_X^3 zQJut;YI7K~5KQLu{%t z)Y|b1Lr}&dxWNDjQwyE{e5Ob+g_LAW>(hbFTJ`YetU`7C~~NJXw{3vY=9EU8v>pw|o$$jJDbZ+tGG@RbHNzBDVx z@)}rf={HN#`BQI;;*vt*SnO#1=ddR{!oUf#fZ4Z>qb%D5Jky~@T8J|D-kNdhc=cgm zjXCqYzp$NdF43h1I=sj>#)P*wp|qd$gW>>wK$eEZI?ZIl zGx`j&ueNM46&zRkoM1>x$g_2M;a^4@rl-D6Il;k=C&!8_y6TyJ ze%@#~lnP^$@tyGIR<6?9;$ArcYb9Ea5-gc{@lK{#i|d2b*m28ep zb9g#<&!dCALk zdH&3vrcxIG-78===JRgl$tvKr?)%!LxWbM4Q>8w8xQpI+V&Y=nQg-W17q2h1%6oLZ z8}|trs?aBPI4o0LPB3gNPSfoUVu{`+sEs&HGT$u~(%USWuFgc0CE(q#k9wW+-BJ$p%2r|=*``q*{GxGlGc{O#s_q2)HFtrQz`ZZjT4Z*iM~nJY z51PMQ-&7DePKOlC8hhUiNvVO-8%p*lG_-DsL%h^##e|9+L{2KcG;FsCk4)T8|#rio_?UsQW{ZWVXg!q&?`UiRGXE5<$_d~ANm`b?5kYkSA5 ztWR{Lx^>;fpMH2>UIb~C|A!PDD4T6etgV;DZIR*(?VDOj?FI#7B-&tw57J3x`z7q? zkbBpCnNN&5rsgN_IWFsGq(m;Pmid?J^f7Kox9C?LNZ?8F^m1FNv)mvG@N6$tM3XbD zXKw{KFF@#7qlCTJKutQePer>6F+Ug}s6p%5W!gUpL2O;pn6hffIc)?9U zRO^MOMHT+~4LO!RTo3lGH(!(|iU9)63|Vm$LVic)WuDXQ9aVE=#xwxKtKp6V!dt2##IPH*c&R*{;d-mt_h!A6AwFEyX@B7Q$W)s1H3|5`2_ z;yP3IB!(?{_uobv!5gDlA1WpSDj}+X+6)`InQW7x_mHQp{hf8GU~x(+^jH4e5Q*fb zT8RET;P5V`i_}|;R8`*NrbT?|#!-WeD zxj-*Q*2|19hSzlU?{%ry@&&%TKDE~FsAOb{8;P*jD!1*`&f#L* z;@35xXr1Dx>zhsCu4aZ*Dfrf%@#Zm5Ltt+ECQlg`OK>Y9XWI7*_y0aJ;d$56RmNw^ zic67Rl(xOhqvX&h^FF-WSIey_7xVf;;(6Epr8U8!l+Nv7iUMAyVkxs^CvwYlP*Kw| zwvW$0%ZE;aKhQbK8W2${3h|*!5xGAg>vu9X#2Sa=rq9G(-ZEGEmA2Pi5Suq+z>rf8 zUZ?Pppc->cVHuo*2;Q*}`oldbDI=MwlD4@dRk2|Vqm0iNuI(LMt2=?tj;$(|+drhv z_OI7JZ8lVmR}u<665luY7z%xO?`S`~H%qHw4z2j>ZMI;2$nTbTe{g1Y3>+I48VI*) zR$R+;#x&#ZZ#^rehAsU_l*6H%J=jZe^FMEWNqf=3x==Iq-EogLq+E&ixN9nN_9VGp zm0;KwTywLgG1Xe*jqUU(KQ^xNWWwD3@rl=xKs;M%)41H0)@&<0ElfTnQ3WnK6_3OR zC%5jI9D_M#Nre>t-A>N6gQd_cZl%2l9^s^aS{l!dwXO{^15iWF_qZ@SpnfVYGE9H( zW+~2S-X*<>-B4=QdSm4asc`nF>*QK96AbXNQ?zAR$R-gGEB4%-8a4)>gO<|#FEqce z?vPV~YmDdC+SY=-spg_PYPdqpAuvDXy6_|>iJZkD0c!|+YTT|L(|$D6q_%wMkw*GX zS1Sq%XrAA0hS z(}ZhqF#--hZ=tS@J3bBZ8230cON#8;gwN2kx1nd6zZE!>n5F@Lus!d@6a7*wmqh1M zwW=d6Z0$0zjg9@_b6U0x?fQ|^`3H_E(PmTZa-PEKF@nTuo}#Wvj2mX}p6U}=9NkX; zhLWkJIm1-fL@+Agwl&$>gzqeBQ{^;bM{u*zn^}n{`8^^Nr9*ISE~bwt?$}IXe%|^I z>997iIYS`gA(Y|hSLAn3t7os4Ha%pXu-T{MuswHpZXL590QjG%f8Fty%XBK>euaZo z@T^ZRr2iY{p25B8OPn372)&Tjob6Ogj~4osx_B^w?=~-iysYvvvi!mH1DJVhQ5>CW zyDH0DYos5_?knn&1j5SKllKsZPVYG_2jgT&M^f(;NL2z;rj2f-=q^fY5Ume|}mwkr-7{>>H zB{@JsuF0S7OFvmSN7i)3{dlgKukj55?pb|i2^3>ennb_7OqGjCNx8I63u2wGCs6RP zx+ZQU_jV1}O5NQ2IkzUCG28E#g2%CEmB$2x{K)p;%m6WT_kU!yaFmv-@3meMsQ{Xw zJc_3**~E&KuA2j|q#r;n6JJ-ST(hMf0ir&zG_E{JYDgqlXMJ371-Sp$`qs`-MJ`CwTfg+KDr>+GJ zm)a?alMdeDBk?I76EqC%4ACy>=aGCwHs!KhJ1*wA^7=ZV)v=!WTP+_` zuO@VbZFck{uO$gcdhmb+^YH6${XWS186CLvIcg!QbhRT=6Jtrbh~XSRPnL@im2a~y z(lxR|G_QJwa~;>D;((E`5QwG`}ir`c$gz)E1p+PI78{SPH z1BPWi5!$rh1#Zv|gW9y;gd2bNi5JhXSv}a<^x!qU=ZJnJ5aPd-)|{Vk&`tYyO!mVe z#{cb=@$D>8@Ei%-?O_&|RwIXV@O!vb%Q`@(fJgI{;?2)nRaY$@FqxIPvW7lSYxid^ zjgi`f-{rBA0h4k@Cu)=mJrzS2b+$!?kR+&+LS(g>Orn$yo!PH0{foa`VgU^G zm;p_ExoFa3h6}2Z{w`TP(u(L$O|TH_g*agtG{P44A?CRLh?_G1r)qmf&@`MBa zY!9|~WW@QASanYDL-{$MYiYA&IlFMKi<1kS+VVrSw)&*uUlfJK3w^pbDQTMOUW;m%-Wwfgw2=7Y#|2i7vi za`Tx%@Dcq89ZsyMtj=Km8CNyW|2_W}(@&P9)BwsP@#pofjNu^Ph zEUz}_wHk2HhgZ=(Pb)+Zrfo*0cDQM!2rm9m6^f9b;tr?2sF7lMF|%I^?_pFY`_9p!r(Oy@N2)Gm0`cYf@l9Tz+>2nsX#K|8yd^|Blz+xi zqP*~oyTnwYNIpKrKvYz*c4snP>5#S^HGf&C6QgK+^ILePm>#qs-|g3I=U$UT26vZ(8vZq zs{p0-#fWUr971TI1cz%|3dy-444Ioydi3r${h~~N_h9hXFV%9%;znWxb9N?JmN8Ai z2^$o&LPz2P4dZBfv*QY_QF3?^n}1Ym8c}e3Fs_9Bc`M-)=wgm>H*6xlAa6Q|w(Ddo zaEFK!(_1KD*vd2Wb{t+_Aecc{Mt;T)lDSi#|6G-vcx1*5*^E18igb;gQIDLPf|sQMy#lTI|a zZ}oB|kX2J7=GLO*A@m+=N^<$s`@8~bh2w+Ikp?*~_^p<<79&_N2IT#86~B*oJg`bP z)Ms-N3o)?F2c`qj$(9w0F?9CTUT>PCFq$sBFti3Cx^u8Lo>>X+?_QoxhUo}{()6pF%JqXut;!khp;Cp z)^{c~vPNxiwH6pwp@`R66o3GLvh?)#X8D|h7G*aN6ZUXvB+J%3UclZFS>DdnPG69O z*U2;p!?Y>($q)73&4{HQ0z%U8e(ytybfOC5pJuXn@yA~ZRcV?)L)qNtHlrQ7oKoUq z<|8*Y(5ek>;hksNqIecb*Ro>i{4=fP?ree4k_=VXZAah-+9D%OoZc9Qo(gTv9$J@J zlVE}>gBzT=4Rq~G@%eiq65Rizg=qrW2Vr}pal!JMXRJ9E=p zy1RY6G19X=l$5clk%!X$e0|^kZc>=KfL%#LgXQGLSdl(UOKEjb4UV#7x=1{29^IW* z6P<)-&|-v&P{3qGgL`wQCgW}4JA7yKcx#7Q$KoXenZc8R!Gh9kQDW>s%NSfco`K$d zc@*npNSv0p5m49iA&x91@p<%ZuE&o)7rCk+TqmPUq7?bW%UV4z)!=G@fgcdURpVq8 zrSF^y*N+}_S}r*h`CLRw^T-dF_d9^1G){$@x}q_+IYgoqy~7ayok>xeE#7eF)R3z# z@YEAY0h2&6jY9zJ*3m(|B%PD;LW~@X`1>TnGrZ;Q=dk|uW)~Vdw$FD%?<%F?;M}U& z`!Pd6m!qmm1YoAY(59YtX%6YKq*E=;Gcws+XBa}q-t#1WA)J$!%1RTKG+VUpV#6O!*|-%IxtJJ}DNUlc~~NSyfxF zJRT5S3lX|Qtl@a@qP>s_!swK_Xk%o$&PO(c#gMl4S6AX&7R?HJw!)wlVoqYjj0H;3 z-$tEk%x-Y{FEi92@Fhju3l+9@|PT8)NDxn&`Rjzf_RZC z57@dNu(^pew$5mmyZlft6PgaJ9K-y0i?nde6n2{%1llZyOeBrVSH{HS37HPbdZ+E@ ze&J8A(X&iXK@7vyHiW)>ooaMpsy5d>5T5zmW`>?z zReZp#{=C@O&zUoq>&!vkF6{=K_Vu{Z&s#A!x2-#)g>whO4qsj(!d)#WWW&?W&87LK zcx!P8#wNvsYuE-j0$vX&RL6a)K=Zz^tZ}@0REhgIivBAsL5D^3)S4+krNWDz4je9b zxpVbNp|~>&WEF+fQjhAF@&j@N`YiCm%3>Cw8J`csx)=WaC6ia&Nk(|V=jx$9v#hG! z`sL@XV~+DXogV!)_00748IQ8x8)vV1E(Io3hHW{oCnjru-fAe)egHxSKw(LiFoP|t zIQ=qq$WqKYe38)1H{$bpFz@FrY^t*zC}uEJB8I(KMJp}t6o7ZGF|J^QsElev%uB$Z zFtvMmTMDy9Snf8HN1tR)&KsS1FXe8&axhf#4GgXGU*b=;X2$z)IXer}E|`{jqhT#V zuOeSF6K+;*-GxM!?7djnop{ZZ&o)O7;1^?3H@f3KUc8z>1|SB;1*FJp<44W{6D;tC z-Aqh@BV~G}2WEp>PLM1t`H^Ds`N1Cg-qN;@-(v3I%;b@cZGzix+`+<7+dY?0oLW{wqpIgZSTt#cVl!7`sVHaK>oSzXEBjEb|tS<=DN(o zDjm17)~?YCP~xP@bHg#Ut|+gIEDjO8{YiPG@rN>OLan`d5=M03yTrTb#?{fH+wnNX zj}~+wVd>3TZJ0@g!i$|r46(kB8OCYld?6^KWRfdpy~-ACh76Mj^iNkDY6%wWybWn6 zW@8xsyp_)%?Z0YLbnluO^a~d-j*`A-X390N78dM6uXwZyil9e!dVp~hhSl-(XEi;?si4-A z@cWw`@@o$Z@!`SW{b8M93wG|pBS=@y(RF2fwv&er8_f|%LZQ)3$tTCmZ@rnzZdE%+ z$g!RZGLJUZUv3Y)-Xff;5N0KJfHtbb3{@q=ylWB6=?(t@zfa+xU>7#CW~R)Vky!6Q~^U=$mWHJvM3%{s8rx0-qu$ZWzeoY zKl>5)jkc!!=v8k?TO&M%bWVfhhx&Gh!dwQR0p`aQCpA( z5`2K=c+vDjc97aKdVh=8RPi>4$Dv4|>hN&;&c52lQobuiqW(91%p1dA=4R&VpUU0f z%FLr*3hc<)j)B?j;oGMgWm(U$<#{Mm?X-_X6(Djigq^K&2+;a;BbLCf^0)HYMN6i{hzIVGo4 zaM!13v()HlCrZ;$2JFl9H#zuBOBj3MM(owTH=F8Ru|#l-%bbeq508<`)_Lq1pQj7T zb@CjuVfp^AWWGs+sL*Ooxtr`zi7~y+x}8AsYNjZ6#}MUM6GFf47CcN6O^wL=4;Ka_DFX{i2- zkf|Ob6B-=ifF+)X#0I35$hG+~iiGZ-;JQ;RKGFY#nLJQxt7Ut><1$v*Dr2vMj`TznheVL+i zYy|2z6g8CymF?;KTDq!gH;8%j^VXrP37M!GZF8V``e_{(&~P@NoSrecp4C9H3yMf zR-@xV%*kT9sYIcl5oQZwa_TLS+y(t_i(Y3+P8L~AvGt{dVMKl)Q&q7ns@*D*?tUcA zwk6qxvAudT@tZ2S4>v}iuTHkyN7Rs(vUIOOT3aQ~g1lWeK9GVy^Rgz_ERn#$a3!dS zSPbFWs5ssoCpRPLBocuLtP;1NN)O?f%(ENqM`D^4=>8fEi>(iL9ijRm>jGJjxyPl{ z_7ASQhjM3ccQ@P*%}y=`%GFzZFTU89=TpUUnJ!X(MEWPgkKv-7Y@#*aZ;sb}#zR6C zQwzQ;WeHtt1X?+PEJ>Rgq3#0!QBR-HjUO`#$2NAS{AKsRs@ua0Lt%kMlIwitjYf;y z{>253FnJ!U;OPvIX+0V9G4TED#)L?$ytCF#hvQwWZUp+wJhD3t0j=#QPh&pU9251>b$|OMd_RVG~56(^_)ZiXx<9T-M+= zkK$z1;y4#9qnYHZ%}(P_33|pc|4?k46)480@1bUYg-DMI)$^qGyHHuyJUGMy-a?^M zyi9gwQgLT>&iq`{tbJ0HNqel*@KiijADxW?k1+9XcI05&v&U`RhTEfRjrx|dO{Jgf zkRg=%`3O-l!^3 z%l0;PkBF*?J9_6TJI+QEn<}r&gKEuQvoU>k)~jo66|c%Lc!SJuZKvfRjE0+yuVx0K zC`O#LZaOv=jA>o(OW^li6mEx)Wu2D^77C=fhyTv;FEX@}QP!M9xrlUuOPA|^y#{O5 zAlD?C6H6=Fk0m%=Tm1}^D~rvfV*Q!0CnbrA*1egK)8&|l(1dmJOY(E$3S+1jh6U~& zO)CnE5$#=t=w%V{wAu@Ypf7a%m6E-hQUu(N!B4GSOj)HS!$%w-VPo^{IYu`1c63wI ztEUc|gl83&1x}n-AcRC=%20NmmuI%SIWs=?DUFhPVGbwo^33Bo^}+(x+?3=Y5|vBUWoh>U%9#Q~Joo_V8i+ zE2#+=p@WVuVY_-Jdg@mXdM||*4w`-y>tA=0d;w2vucus22xeB&hPJ~4SBL4!-s8m` zg(WQ>sZCcxYJ^&=j+uZyVvy-~m-kK92EVlJG>V;RJ07y%?G%4{#m>#@N3+$hjt=~E zP#u+8x!9{2vnO;TA`!9P+#HkOOB4?8qXvexwAvKBYyY7^o4_sA?@5IHs)04eF%d~O z8!`PCls>_sZ*K2^{BN(#m@HQfjnK-)mhgw;o67nGBnIgCv|h1X)pvO3Q$m(=NTd|v zqnDzK>z7mZ!*qQuyJGjrEddXfkSSU)UEkEfI0T`LRkOgE4$9FD$D|+qi{O>-^r-;a z_Hkw|Z{)9Pfa@X3%8Mpwxb_vk$xlgGtrjCnPgCf=+hO7n~ydd<5B8XeWVO zS}i1XdAsv_@z`t`Xj<~K+24i(csm13j1uN4ZDqUE&WBCLsr58M_Z#B$OU-tHDEV>M|0y%vdI~^L41vaw)E>M(|4?LX& zM&^b_+xVRmzf8Z2ucG0Kj)g!tqR2F}vEKJdqu8?{~Z*V0bZ^K%2$}H_8*xUeb>Y_}g&p z{5%^C){DtrM@MLPa!O02I1VC`LU!>&Sx3s)NRVhg6Hk$puI?8HA&!Z?r)$qe_WCQs zmj5`|=lD%E{H~Eidn<$80IKlC5awrAaOeU$e$k`_hq+Rz+l|jJ&RBotCaXDahgb~L z20WLpP3P@=Ax((J0y{JNqXhs~rBut0nR_sGZ3_OUyy{GIcz|1?C)_uy)mKbqb+zvi zStO?)+4Lm;JM<^7Fggy4)cGx?E> z`A19;o|*A&vkG;-iuX-}RoRA|X9pU%qa2#ghi$%ppQ{E2KXWR1;kGcYsZpIZGCAFu z<|F>k2%Ac;Y4h~6ekX3XorSGRV8zvzVXM!nC6hFuO`6T(}Fsp%vHP~9f zVKR@ovfY%VEpOk~`c_4?E3~EAp(K1`tE|eu7_KR9WkrzC_4u~xPw=3`m!u!*50xGK z*X(r=v=pr_mBjJMu(B^7v_#p*#(|V7@7s_H);MB2Ml#==@c*vto;VjBUnzJ9V1c!N zr0n(mx#XU1Q&_~%{FKTu9!#bFyaj2HeMhPROJ@#v?H%v6=X{4v75-xGx20*K{$AO( zzjaK6_XnR1*M&)9KFrI{Ct!rXdL2JWvr_GRa{y;YXPO!_8!9@dR+NKdeH=J2BqF5; zXPk;w)IooX=8ua1wpW7(3rpmN%bQs^i8i)S_^Jl_otFoVknIn8`%N&zL4>DfF8o<) zhVxOzFdilDP*K9StPI3+k2%!6=(UZ;0Te;1M{4*^C;rbk@$9a3C;wv2H&VOJ9DjV# zxlA?q_ey%cy^+q*FYD!Tvy%xvfk6Q><@Qxyjp-oT$3{)G;5 z1f4$lUGZM4LzzRF(@=4k$lsJYx+h#Nu$LY?id^O_S!c1?W1sI^)E7Njp-+Rf{$u^Gt$rRWJZ$?0~XLY1%O6X{9aeEmWd^%1*PV{nG7davhr zKIvtRDcnIWbay@pOLosi&gPoGS=a+AIfBZH(P+%}e8zcc=JJBK2PR`RJ=6@SDrDz9 zh*FhW{L$J>@GYatliG{4s>kf1mfve~yPMP_(dVr@|-S9p5c^6t1C^h;Yt z<8G%RdXWhL8(f0~BzNoe_KAuW`EvN6*^WQjOroFY1aRY*)oE;|TCK{=C|V=(s-BzGcf1HIa1+H!T!zv03Z#h~1niRKV^%wS9_P9yAclnGX~*c-Jzu=V!& ziF7`*__H+o%WQ}@c=~Pm1t>Ip(Y5){?ObZ{fB0{1J>trm9h}NdG_$qfmiT{T$Q7@?$ zgC8d<8snRR9#OVGMAU}lhjlm+WpyB1QoiA9OZL}_r4yuTf_6k91HlI=z4G$5Gj((X zGyC<0hr96f8PG`AiF=38tH%Hv032gkMY?KDCv8_=9IIS5eE04$8m%pz>!0JJ=PB> z5m)efJG*%>zAJbtbtm|2v1ad*io!$a)m1do_i(V7y~=3$I0+ z9V`|)ZT_crpF87SS&h^&bBxVkcR~`S?+P_mRm_xTfL|0T2U)l9dRvq74E@o+TNN=< zt#=}jy&+1J^QXtJ_WK41Qtv%2iKbk-1E2MD6$;YX8ykS5JL3GKeyoSB0SK2RdmJS6U{b?((095zQCl2z3><7=1@K*onjtRKAsPf zHFX*yUk`a0sb7gyHTTA72Drso+tGG(O)xIr-z#2|?LgcWrS7|^)lE2eK(%#jqBg;u z^(SVoo(LtC4yNT~x9x95t_r{CkEZDXH!W?KoKc2S)Up}0412=wilF{xZ7s=MB}TQP zsupc{kbgW|VNQXXAs>*mX6HHA*j-7{q=qDa6<|J>h}_<6u>v}| zcyYj-!F+pE>1Y%2=iec;0K(}Sli?-k8SmP_IW7$&a^s1Mlbg) z$ja15DBBrQ9vn}3fV^C4c^;t#C+#yheqKVo>|{LiOTR>u`}VJEqAIyqEyaSBx6EOB zW{+!AM1Cu;U3H3{a43+#Wp(i| z#>78U>Q(DVQFT3MO$gxPhCMoDhA^v8nSAIKkA$914P+Gzq@j1cfNJX}Y{giZY)}2) zI&angKY*A%dp~JszWyjzy4;7Dl-lVco?Zi^#VFq&kFysJ7k1M8A5gj=%zGl;=6EV) z^O6vS91hI?V6~M~PhSvqGk4_T+&oDD`Qo7nBwUlIT?q#JJX&#Bx`FQKLI?($7y`Y` zFXx1;`BG|t6zV1fiOeZnz(rkZeF3IRv=kVHyLag6fhg=|0NH4M_gy=J*zKy$ygDwW z3&<>?5e!}EEnTWyp&whc)kzdIhSrqstfhMgr8Bi87mab!6^pMLu(Fx3sipkacxTpw zGwBY*v96V3w&@%-S|oW{lva9J+c0)`B`Wl$sCMd|0!K|d2OkX zq>|T!`5@pbBd;wR_?;bO%Jd#FhX&*ggu9@yrVD<%_~GVR5Zq&2P95*ex-gt`i|@u5k5OH$U__XH51}m!Dp9lLM-Xxw&=-%9O&Xyyz$X zlp>~<;Wp%YpvdtedclIdZedjLC)0HG4q1#VfrBl}H{%8=4QC%Z!rnhjqkr7CjN{S` zbHX`g>6rs;K=K5W{C?Yf@9cYDnQ1D|(ipR5&uJKEDSqlC<2fzM7?=LZvGLJ8n`IgG zeGAc8DfMN`a(SCQn|b|37j5PU#@Qju+xSy!>0mrXm-%WffVv5Xt^vFQ5_jPFc`9qHNOd%cDcb+$N ze8971UB-l#W5ioLLX^8WQX$eHg`)p*ZB?)9+qr?NKf#w;kLR79>IOl-yme~G6 zRk^kaHTs;&;M`I(BI`Tf&wtV;FL>DeE7bf5zmy}t-CVAHg#;75NTtz&ZugK?Sh-d1 z=InUMb>l&^Wz#9`;um?Q*1>>Hcm!*skGG&+XErxK-OMV|p0Roz$3sZt_~sH@(&Ct5)^#gxjl5N7DF{YL*D*nnDXc{7GXspvkeRn#F7z7UDm`@j&fiQTyfWrt?RLjY1lnSa#mNt zZw}}6ulFz09PJ6C4w0>ZJ<4upkR7X+Ml;@(*Cpm7Jmnq}!Gt0(88>;xW4TbglxlDL z4txQ|BK2{^dZ$*(`ugyh_s0V!Oi`rIstnzzO+7wVOEB}y*yHwS%wEa8*XjXGS7SRk zr@s{@8GpJ5eaG;d{dG-VETt22dGW9;O4ARmBj2o2G;5C2Z%ddrHMT0}a6VUUkf~ zNj8=3@rS+mkn9FeV7~Xm9vERF?;}g%=g6xSpD+4_6!DnZY}GDzt$E?HgZ#pJhYq#( zRjBIa&DDSgt(|+~*VDu8SQIy(9-Z0s2q!&gm1bgLf@DNLS;CX#RAo9+Wik*V)RKdp znNA+56E+gHl3&>bA{Ujjg1twgfBPT4OfsbSVK!MV5S3+TE2P4&;4b)Ho=%iB^&iij zJ$W`*Ck(Pp&yc?ko2U{gqX6py9=HqifmgRHusSkd40)vhis?<(xd@wU{t<3JU;LN>g z+wSF1=(+GpB{8}Dg3=+KuB|a@tl|yB@Aq$TxJ39AYQ*87(+`~CN851gZfBmnJTT}2 z2RzlgEcDms8(pOfnLggb0gLCIob2@@LtDO2_kXr$G$*hn&VT)q=GoUrL8ns612Yg)zTxCJrw- zzW`=K<~xJX>P2>Xuf5(EQ-7K)uC-nLm(X*bNf>01T%neY`Ao(81u18lp9V_rr2xdC zXDJmR(Zo+0i&~s;Ni(w8Iqk@^11R|AM7L6oWC|s%u{#C()s7=`mjB2ru(jjChlj{J z9MmzE56<%F6WQ_O$|V6dAEG>H)An;4&zdm@1@BdYT}pxeEDJ|*x5r23G2U$Sy40o; z_CB!8mwFa0bPztRal>Gtz{9+0_U}%U3hN@KsXznigIYsRz)>M_p(EQoKLSB zw}f&8M9u1N?^pi7d%0ks5X)JVdX6|f(yDDbsq79xWr>RYR-l`l4 zO+5iV$zOdU)c43TZc%z46B&0@U=Ve4ZN5jcpALC=M$KlAMPyx-)_T|sUP6e$^jn-y8Cgwmvd)zFTB|ArL#R2B&noaUKBQ3|P9C;PfMoadyPU_g{9qNzJoCt3Obe zI5qtu@A0STSwxcIftQ zxQP)$e31N}O}-x$YmM#hJs^NH>&oyg!PP^Xrei}|JXK0`#j z0$KZcP?Tg0s1WTYtl+J<-`~s92`TID!n1lZ91v&fK=)&dy`WWff=lfj{NRvzg(Bbb zoCw`R!Y_O0MU3T;9jF<7(ExO>@5uGvPCWc&x7fOSWKB|Q5KTam0x4Yk;Y<0luAWoM zI~ig8rMC=I6?4CSpls3J>?bXWl)S=t=i>H#^YyQ54rhF0?86~FZMWljMs@qnAu73P zh2E@JNdVd0)Iec>1a8+1ueeXHg1NneKI1G~7YPJ} z=-15Q>NWxDx6n_!JfwzJA-sWK#*F-{UduDv^-ZPux67{IB6GH3+o{&yj<-EW%3qGB zWSq=TuB}U0n?HM$l19b08|_$_#u}QL=-uP8Vp*+*_f|N4_)JPMvsT8cveF61G^0To zGN0>A3kS4SP*nJtcj9F7<4ae-_+a# z>xF1XIP-;whb-0)F~*bOB?gGhTk@7M*$ONXYY=9K!@UDMFMGt;Dg-yB9A|q*+V%wK z@X+JdoyB{ruYL<%sgPDY)ADX1ay$n#joc4j7W`jFrtA*hoO%#MLzD9l-JmE@(4Xsa zc_?*uZN`b*e98g{1SE3SwHQhO9QB+7dk!E*`81D=P$IS6tid8iaWsj&(6buuv$Vw! z1Csb)R|_mPT41AYySuT)Cwmxhd9wS6Hd0>HmN&N6Mi}WkcO20?&vX>^0m5s==Zz0b zrQUT1|DEfU2vya)B%i`MJBZYXw`BXeNsrmTmO+h&Xq@_f}yN{SWs4TM7(< zEc-{QvmOVMg1vXbM=Cgpp2AhQqeUZUD8??*nQ*D8?%d=rJWJ6>oQW$cM9p+06Q5U$ z>VXNf+x-VKu}|bacHG<0CdiM}$co;+h@4#%o!yx9cQ(YhV2 z2v%ur73qiFNQ0KjLH+k9$N6PeMAj#8(xz`#C+sz4uEfZztxzamVrshUI<0E8|0v{W zzKg^#RN5=l59O~2eZlpfwaX{@G~%u1v8-%L&PZ5_aqjkjlaaKTvye5J2Lf}WtnH0dcKicU zKUpfVI^f@jSLSl(x8?(?6h#I1s|myJt9E{QPPi95S)4V$>5HDK*nV7q9o#ryMJG?Y%=~k)TMCIw-%ZOvazX#2!q3

%?0u&~&Aw>XWJ-0ho8Fcd1W3X{e_yA8QrPXy`mk@O3maP5X6C zm&5+Tob8CdWPrlWeKA>Q2$|WZTFr1Ryl1a0Az==IF{1XM!q>jip zPTv~^U(X5$g*++_(mC;7nvY2ryZ?q4%+VHF<@n+v!VHv$o}oWq27lkniZpnEMgGXm zPqwKH+FrhhB^XC#Lg?h0nym7JQ%=&fh>>T_cJnr9}odLHB24GLy z`2ifnV0`&38h2xsbAR7|q)C5QzJA5}?!uX2>(Kto=qqX|PUEXLUMtwP%_!F8ul!P04YDdot{z*h@;SNhcK z`znXe{q@Qat9hMew7AI(58(ZNkV@tj2AC*40ricX;d;I~OjJ3`E0yxd1e5GxO!tCA z^Q)=N>-tOoh_fX5j%VRDFKgDKfZ;z7K3TIDLNKnp%e1Ugtt-#^Hscp}{}ZWd_v2r) z8NXZEe-@Fgi1a&b1qK{1}_tGrP-Ja*TJjknt#3!2_fReRaXVZpF(BlZ@e+Q`7k1ld+`fXPD`f z%bQa^;N?8I*)^Unl`>!jB&bN$mQ%HwvrY2zY*;%>iGf2x!-3E5uQh@HLexfE?{Bd@~B+uv`8A@}y zcMkINxfS)TU8sbswtRzP?{HyS?5HcB^qjfpa>Nbv)+7!^<@lb))c@iH|`Zbm;zM1Mh&MEGL z8IdIE{k3l@jIRq;RA;6-95Dwf*K#(aJkd#_7KZhVBhuwav?KBHpNXRW!zRiokbFh9 zCAugk`SE1g%&{nU3Ne3q-@`i@R}sF_D(A|j+oEx7XQSDqZX4PPs+&F(!`>=cm1L=^5ZY>j68;cY> zlrSkdl?w%2au)TK5r4J@sd_m(W{fL2M1_nKE@0!79tpefWSP0IA8W1S zE_Fvx)-l?fkHmZ62>h!iy_743g)+fW&hq|;^QL3uJz=#{dXwx`dk(Vy z@OSK4m%>9+gS%6+ID9x+$T#7N zz$7?6>G4HbMtysv4p7+{9|rVN1UySJUh!YcGT$C>P~Rpdf^_(;x+E5pN=$>PeBJ3GL~yb) zYII;Oc=f*am|6NgJ64*T+n1T-ZbSLsFGn>>k=c4Y^R+4^v$Omtm&LBjZ_ELF0P@*h zf!LVPjiH9mO)2K(m~>wW%997e@8%%?`R8{oMF0Pmts$LB|B~f;-B9Xs?|&VfCy}rJ z=VQ=U=$|ttga3Yv$wR(d$j&;@`&y9#{!`q%s(}Fi))ktD+i-es18Y%;(;&zj4dq@W zmgE!{3djRJi+T#mu!@>%U6m?Pp1$v$I-vh*V(S+v94yMKe3AXWJPkLY@a}$MyDNs1 z@je>6N7IWN4Lkni8@KA|g#hQKL?U5EC-=gqx#EX_^Gm^GH`9~6Z?g+jxA~1!Z&2^t zqR@^>LKRldj66RhAY7Yu=8W**gkGNQ+Ea-#1L*0E=l`G4-0*i)R4zfw9@7M!Pz|Tb zD~(;!1xhV|gF1(GK99LSrXviGw=6V=X}9Jw3p^k!Hh?YZn#w0)&GZ0aiWmc196q?A z(kPT4ylmDe1<gZaGX>M?oN?2+ybCU^If>o+403gRB1``8?%b~ z7T%5zy)Tx2FD1I6_{A@eZA8Ic>@Ws6l^iGQa zji}LYA*&+*saWc8ALfgZn=9Ouz8Rv}Td+xVC9LdA`Qa@Mprh%ryqYaVX8L?PzjTxxuaRjfiwpvHtzHbNwZGoW;B7^( zRJVN6RSe%N=mCo)hLHszaD!XvX#EQQ32R*#fPp`mJP2RB3oGW>)8SnyJOnCXW*)6Eh~~q@1x7lQEJdHF#A$R-z5>}TXz7ahiE~6 z4t6X_6KiLuJzRr?ORrH7KkPSe_RKAiGE1?DQ&9#t zw?CG%N}m)u0gT>)@cCo1PK4|cA6!eW2c*I?TJLf3554q~8;{TajQV!u7MPPoop~50 z%k$yz7~gezj5 zU%QLA!I9#cJ*fCp_v;(EChZmp^p7m=&oAq2w(n*Inaql**=M(Z*s^4PUPJ%2 zSJX1S;Vwz4e35G!aNhpmue1{0#l|(pp&#!I8b&kr>zyigAhA7r=AAYg3B56nL2NZ5 zRdVjdqj4WS%VU1!2Z&Yv&SKRn^`_L?L%tx-C8IW6txJIOoUG^nGxqhX8+I3W#6g^7F$Hp5^Q7P_2wri-S``MZ=;#)?Iun$GPLS& zC@dQcsD&F)`ZyTip^`Bcn;NgP-2gF`~(LNr^lj13huY(J#oK{gGac1|>78DE;% zz^44_DPx<|>0j6S#ZHl{kABu@@W{eQf=zf$nOLXyALlZL-13KE)tkWnV78Vd@hfL= zcb&^m+AeehZp4v#e}Sg!Y8IH7t<+CU9*@`!hh&Zax^^cD`sl1{uxQEnShqF0N-}sS zN^5>q6%Vf9(HAM&GEObnpx2HO$li=2A5qUtunKh+auj}a&&2R~y}qI-v9#da=eAjY zWkm>c_sfP$tvt6(hvM^rS)?a4?}ny~6G=HiKwDmdWBGYMi|)ox_NG@ZR(75!<<1xF zc;&fCU*6SJ5{0K54@mx2YDf~7y9H3H%23_5D!ZtaCqwl$z-&!2EZw;UzVIQX5FWw?GV@+CIqjmz!{m^U)Z2l&cx6;bBIMFQT z_*n+Q3<*w1DmCQ_Oo_>S!T0>}!DERUx(stpcSm>Lwf_4)Cztbmi__Pjq55JDBN!sdRV;abD=LIJ87n&M zx>b*dIXhBxwKa#CHAz{2jfJOVmf(doVMV$aU9VBT$DgJe$BWk^>2M`-xQU^HFf{#) z2HiY>DdyuRc4IOolW7`>3N%UhXY>On$(5>)fwvHOAJ-MKA>8 zafHVyurCR&gf(7nr9Mc>DMXLJOv|EW?HwJ z5~*u1_P_TqK{(FJO~^9R#OCmGYHRc(J&d9k{BHzaTa#v-Jv2~3ZTe~irxl5OiW5Mc zN6lPp^~?3g`T>ml;C*aM;!UE!i?Eo{#!-&dR@|ziEjxT!t6a&KhRXEN@vQdl^f$g9M#C8DCcG$@N zpP&JOq4L*k$4tjfJcw=xDENQ?&kXuuq)lQ8Dh_6Pg*%q1FaPImNvSo`-MYSg<2$c#Kx3 zpHe~{AY7kf+T8tCcEH4NYi4>C7?>L-EqPf!{r%!~MlcoD&Kq1KMmuxy(_bB91-GU= zw&Uc2tfGTi$hs>D%FbvltMzgD+x-O`x7_RI4imc(E##=r%i{~@TUKZf=V}n#ff?bX z3?JI*z>D_1=g@dgb|OTd(EwS$uDS7vc31+vX==VjGcbd57Xpnd(tT&_|gxTX=6%_9vQf!9R~ap(=huHGe_IdH|Yksic!Q;X^7 zfw~KvaX9(>ibOYcD2BZX-Ws`Vh*7jRL%yHYrI?zJ;OaK6c=`_(?_U~;T^9`h07<+2 zwnS?8zap;b|2wl!6r1^}rWoOo)0yrt$_=?|OAApy$0=f9kRY%82AkII7nC-|1MASd zoN7Ww;r>~mv7A@G$Rmth`VSk1X9QW{fNEujvq;M;$bM6DgDz40;e3d%$5sp1zG3#u2I#E|+1zr)BD$4jkcYu`A~I z%)@ngOj?@9E$WKY2NvZT+#E;7iExYFAK0d^!QYYVeSfBzPxuIi7S8GvM91og*cGdm ziEB&p;nOXLgEZkJ@oWw9c>Z)tV|U>5){BYN+GA2;9r*s;LvzOqkRT+&N>1Yft22M@ zT`=-gEeKXt7$v^cxgw`acxDrEd~Sf<<(P{hXfLasQ4L|hx=vDbUVf$5h3E@-cpAlu zq(su}Khnisk@Y58!-tquOF0_ z9b=Q+Q6RS&zAjbz0h^)adY<#wNSmC$)u-z9M}M5xnhYWqc3p5uMY*qHIBgPPxSEO; z8HUU>3-u^nad30EpR+YeB>5nE53B-;h@55X$dafg|8mxb!g;gGG@IKdsiL7+2<2wm zApR&HLIkGww1ES<0n9fCa(HQ)64^64EK&H^wdm!Q1=>e;th&E|mEA@Oa<$SeWeZR6 zX&ll$V(J7T&q7 z>bzIFS)EzN;@k^4c|VB5gdEDZlMC=g;87%Q(QYHKRI@fUtHU*T*&{;Ud!LeNNN^FB zCFQkbyV|7n^gPd@?bCwQcJjF6$$}wX1H2B0F-x2cfL7O=Qb1~b01tn^`c5RSUgm93 z#O*%In%ljmiU2Y=bL=RhM#=G~UY);Mug~-xOAxER@NrZ&+8D0%AU(81zU)++Y9C;c z3DTbTTk99ZKG)XSb5@!AUA^k+M)NZG{?sT67;bm()*zhejF$+=ZPo4$80-qMi>w;; zdGd7=8xmnt@tDZxUzj(!&kA_Iy{45>IPwsFIX0m`i_`f}uhrj(xA3C6)Ne*0w$d4E zI%u$Kd-@NRiq8aAxFK`@MAzVfD_Ygzr7WFn)M3}gAmlM)%#UW}uY(2bO6#ZBQ}s3V zhvULslr8LT*?J-HpTQrJI;4rmY{JPZ834gNEVY2<0>#k;cY1ou`dPgPJJpePpvD4FUlk0&gNq-T@fM?^VSKTwxK4rXOO$rUk zO~hk~ayh#bE%WWT`<6Q9&C-$48;Y7vu{*06C*n3BTKhZmBPZcw^0a2u%K22xAoJif z;jN>Qs6vw2(wS!M?n&wH8m8qe`nGX%j@9df#fTgKnrC!Q?2=l<(604Ce-RT$5g$q< zS#T>q+9A)jTYq(C4ep`m&GKqDJZf{=%*D1)OMcQ{ zjp4UzEwfWzb@r#WWQRWZOYCjQHGi{zrlHfQMMiweZ!|}8U^1qF$C$=U1Z=NLIu2<# z!~I#dH_>uqL$d9iT3S|7wAvQ3=1XfsRef*Y%6m*@^uEPvu&-r~Oa9sd0@_%8)C!X3 z`F&LmgcrQO%;B(n+Z;tHFY+_2(jsMlU6YH+)O(I>u@}D)6VQx(Nd=jO3(wa_33NH$ zwVrk!o4FoZsL*VjWu5jhhp<5(W_{ZJ{kY0p){-Muz}JrE00Rq5E}t1ChODg8l#1-; zg|SNOm3Z)$=SQiGtC?P?YPJ5NKPb@rEYl;%KNF~!UEk#BVS27yD<6>qaxF^8A-}#LrYrp72Qv#UouMe=d zjDB5XNI|mqbsl|d9uO0cYA~)HPy6p*XVe@7oX1KsKvj?wS^Ba;+uX|rU!7L$kQK8^r2j=-J68On}zT$JA; z!r2k87~uK!xY^wSSB$hri}sNO){N7b&Wb}=tq#XE7*1a#b4V#+Yagj(meZJyoKj`= z{ra82Gk;Bz(~n@$?99t-vC|RTI8=iYa{*8m@NK2f%R&_WiXnP3f5c*)@g@n5`qwS5 z(x;4e6o6hD4eo`w{LvfIH2G7#rTbz7D;@HCfq>xSb8J&y@W?BA!xmjvEtESA;nULb zV*4}6S(&&KjVml_1QF?O%0Hj;&h{x={;>bDzOw0jRJzcQKAiPPFVeb_U(wsaO6M69 z5eb_=Wx_HS4~{6lzcap9x9WuNF#{uJ)*wCdoP?9um3&Lwl)niFlXCm#-t6?zLCW5+ zw|^zo3;Zp=siVj3s(c|Oy%aiAY;tt(fTb#j_I8n%`|PJ!9jW!#Dub>E8XS7YYr$xs4 z<8jG0c)U6WEox3d)~T)SK+97~M%wc$AlTyPN}VWS+(ka=gdsRKXJDYt%g}Q^!W?f zy;={m(|E3@I^QS2vI1QSIZdli#@KyZzxR2wu-#u9t^yJV#`bBKF$fI#e1#ia_G$?7*VBLBAR!UQ`sIWL+QWBz>EVxkPr}T8f!XYl{U2|HwaqW!EHhByS z-11gbUxOVl)O`76o-kP)|`Kr3r_;!d)SgJlKD+Qcd$P031c{#>0rcgK$cmU*z;L_NPYlO{@X zS*Tgb^0F(n*-NmrtS!duW*isev!vIz;iA%xySIO@ABki|_SXdzGRBVq+UI|bdk22N z?rved2nm^`Ko1fCl@yrkQ`_Sb3gK^SQ&Racl1FjVOL&&Ez0hw2C)^bIp^uV8l5K{PI7 zIiYiiLvj+ zj%md_D>9aNIWucHFCD&9MSqIGBB~Mk-uZ?wx~ddZuYr1)jC z(i3@CU%I?G(_Lh z1+f7{axy!i7-*ZR;i^N)o{O%18p+g(nACOdbJ#P{)&VtiejIUZ<+J|Hcw%a-&I1ic zYqDPOm;Ji7plxLr$78|wL)xa#IagZZQa@oeP`gUB;JeIQyC~WM=Qz%6x^vGOUVNX& zlqY~L4K*4+UjWwOEy4H72n`<-?9K}5cwlBl0J=o+o!`_2I8@)6gS|4^=wW9#f;%Cr z3)*Y^h=yMeK{@et+F*>J_Izh4!K8@}D|hU%ejH0l)jvD%#67Mxh$}k@3&rpANd+%w z>6(dd804emEE7B?kBw_NLTU}PG|M>q3+AF|8p0tUPnvK0I*{kmkv)pE{lD~|7T@#7 z8*V7g39+tJ67?S@DCiLP?)RleBt!gP=x09{<%_4NypmNf%MVFfgl z0BSdZv+`H|eeqG-$cdf-wBdR~LHJTXn0iS5KswmMe-q*V#4F_?;9Sifh$!(=oUQ{1p^TWmYGC= zrvK|o@!nU>iJf*MEw|hHMT5}lclF2VyI-1~5d6LGFUN_$tMg-Kx>RoR=sfQ)21z>FNs|Yua1V^Vg0rARj6o;Q!dW$BGHpur5-avCIT<`+W9YZJ$~cQ{@bSR=9?Soh(}xvd=#*Ef2SgktiJrh2QHn?8ZF| z@@!CjM+GkGi5H>V3Cul@w3GxMi9Nq0ca!uC-iOTf;ws9R7F>x&=U2`p5^~VKP5z}xK&IWyPe`V>Ubr7ushz+(hweg z)uDN|gsTml21Q7Y|8WKlaE)jpX|K%bJo}uT>ZrJsokjh1&8G3l8POKqY)(CBihxB5 ziC@*&pXHfRHQsW#0bo4TX=@rnv2{|ybq24?5(WTPEL0GByyrtJf%p^rg5#_y%6YTX z|Dg!^jzR^giIj!u#7KG`uZ^7;{{cM`t(F#{=NV;}YL#`UtsM~Uj%KfV$#=ndB{vR4 zW7Ss6=VmuJ6#_5+T-4MQx5MHoV0>;%RXGtOs29D`LIT}t%e*aL!^0IwR}XVxl4c^s z4D`bM+VZQ;@_qGy6^F*Z`6Lic@0IaX$%g?A#EkD;c*{DTXw{xEVO!5JKq|F*zeJXA z{ZcJPwL~dR0Y4*ZcsEG7nK1(Ah?`-72&@0w8WE?9+ zDbFi$tXl5RKx@@+@=lkme3ATMZKpOjgn0~kpB+%UYP$46F`ChPCFZzH;_ zKq_X2=T!v{5BpSOMKVIi;A5AB_gZ+wjPGOeG!@i`P0w=zc;R;<3(Rxi8UY{LY&Tb* zj6-k7tg{SAO>W0l4&vC?K`D-U_YDzDU9&V)SCe$fp-AX3!jGP5tlATi>Nt9z)Yr1R z(-rV#^EpPYVUtJMC{tOps}uXml-ts}A*nXePNM^wsvn1K{? zoWdo2*)?k?bJWv#h&9}?3;L_a19@?4t=`W~E|>jrUE$-3N>hqum5fognGen}qx`S@ z2v`u)WViOn#+(D@dm)laf@6MNOO=>#5Dllai+mEMU#e*JnVZF(f^&!dn&?D`2$)sO z@5JmnKV1KRw2rQGg}#tpH?4akn`E-6xHWPnb!3o@U3oH|^xwP}%@>XeVcE+!4b7ZV z#foS(7M-`uU|){4F!r_zvWv5#aZr=it~tgAU~Z!pawMtAj9`l+K7+seVbH}z#q&Ys z5vn7bZu(@woaId&BFa~+b0mCj#KR^q@CAT zTMCwM_g=60{~oCP@4QLm^?!c97M)@IeX^OZK@F(As0PE{M2q~< z3xSsxrFzd2QAdxb&7nInpN@Ra`0fkB9;VA~i#ne-Z;a}Eh&li*v%(vQDLBxG1=AZX zuQhj`00TIg1fX13m8BjAWRHuy)OKyyp~=NOV&uMi%?MqaNd^HZdC+4c9%^n4%CVMW zwO6$BkTS7WAKkA}(qbe#ps3m8Es2#3T^Y_EFZ?fl3a3x-Yw9N%lt@x%C}zYJ$M=O% zzOQ;F39~Z~`GVL|SgE0!D8-L&8%;l^wO{9vEPwANhm~Km5H3>M_t_DbpR|j)t7HKh z8mu8Y85O1KMJocFygCL-eSCfT-fS8D+VLKZ+y%G0t*X~k;H}g-X zOrz9J;pF#nPM>^-$E#D-YOQ9QL<8m4L5ra2=Nb`tAo=WKB(;T3@G$8$X_UYF!qTrx zvg)GID1_8Rkzr0u^-@t=mH777;wkHdKI=aC-^-p8Rq!@GsiJY?%g<9SF6UaIhi|2D zuwkZ36`!PH(;kOW!Tu|RnArV$XO+P)uPMMyNQ*T;G!5D2+jQ)thvroPMpw?7RmjpC z+U;Sk7L+}8! zmsxqXcmK#4KJp0Hn5#Bqwpn_M3=m7W5H3jIw@R{xZA5+U3Z6j!wtzq7@OK8PWUMZ~ z9wYi6?(Z4daQ5%PlCt*2LknkeCs)JRrZnBRsYx%Z@fRXvWhKy8{TE9wmdyOclr{7p zvO50ZShI7i?Ph9fp*LC~l_&&MUUUZAlj0M+5AQc*r#T?D(Xnz2(E3iukc zf_rKNv97&^RVDzK-&`52xv92DU z^3ZARMvu3NcO8vhYM_)Zv9TQTrR5PsrEB2-C_3*zHuwI2_c_mLdpgu9ZLQ+zKv7%l z@og0)L?sfn4~p7*uX9?X_Az5SL=s6P8armq6hTR1s~SOK6KbDde*Y$a-gk0;?)Urk zx-K4!sam=(u0_UxNxn^G@raxBQ;DYXdE-2;MUNTTZ?SjD@fgA2 zmP$5p90yKQH-#L_VYgq~kch|D%I73=Qv;9Fl4fItAW8e=tnCro5b=^Q@P2Mfn8y0E zHZFmdbgmF7lNgzXWyT57g7z5E#TZ9OCGRzsu(bsbH5Sz+qSdu#ym1A!<2J}U2?RQ2 zqcX<+;YG8Dx_}mEvPq1B{44J-FGs4862sn}I z@|(v&3#*N51+ZewAf?wPT62Phq^0UUPlfoqhJvjNeIrBuP{``BOnco9`F2|Dn*`Gp ze``!^e>(us;q2}fk6e$T?uc{~1^3xXhiKrIqLeJkEVZf`cQ3}<@_jt%ytjS?>Yd6#kh z!_dJEr`$I!Y_AaB}EJy~zYSLcmydvwKTBNO`1}Fo<}%o!6J} zlbD?y3jAA--u=UK>9Zov_>Qq=oq=E~`evS`=SNo|rJ95PN|VWPy`{V(+pT43>&)uUCe8H-xeQcb`*wp0(5GqGV{s)MiEEGm&ZKLkiLFjePfn1pV8CJAE9Jt$5FqQN|RTP#v`Id%=yW3 zgWut~k&O{kP5j3;ik|LH-lvE!L%V9>j{CERhfs_=fxr#qjjw3aO!bEZCOkpv;4^;= z+#P0R+)7Ke*St@adGaCgr>JE7zgNmoWgKzd14sB`)sp|;KAs4!8(qNxqxoMTp7Q7r zcILuEgZ#FRjGGIK(R;tG@45W{tLI(Opzaso%gxPMrx^Ms&l8Oz-X56kaLCicLA#}} z&duqeTmN49M=^TOEyf3as-DN$C|LxWiv18nU$T8_M|=7Pkx?~DzR3>X{oV<#W@GJ(Xrgo!-?qg6?sN5Gbb(BEX>`znzQ5u$bSv2jQRG z8>#hTM7D@_1?vxaqQk_fj(Y};P8GdS?P4@1(I{0Cp5d8xBu=2mnNwO?ik-75D|BfV z=uzrvMW4Uk+Kwq%y6Tm}d&$(cC2OqrojGvl7*TOxKL?&Q;vxTAsbhVO28MvcqK>C@ zO1r0f`C#Hcb3Pq-9Ra79#4aMl)3eKNSKsrk5l1gWq_-^M||Wo zpha8ss^JCXKKh_s=`ytrKC~JYXg5CUinx%DbqW)##<@l8U2|KGQpThS*}2GhhVE->h07+Zd25yln_~0_@U5cm%Pf#zx6Qkf(L@VYm)drE zX@)&b{WL?adN&w(ThBf*aarzysQW4-wo7@XYRRXeMN3ZL-z!^~*;@Y2i{1v`Q!~Ds z9Rjib@nIXdBgLL3{sF|z@#4aO*{M^}xm^xNzR-hW-ESvTe=K2AG_}=C%|lKb&E6hK z{V1I9WtAhTnbTc*_VU7l0Jn6`;ySsbGD*ZLduVnfI_Fi`A^hh!USH?klXQ2RyC1s^ zZyAIzkwR9{T(7bDW z9o{#{33%2B;N=d~mn(OC9jZt9s`V^5fjd^&V8G$I!L;#_HiSEuXY&hFHM%+`@k2nE zNiH=d2Vumyu)cAzy~bxpI?K{E8gIJTP7ejsa_O64(NI@sH2PZOX`3?qR5u@_(7m&B!(EP}9A_ zuGLYbG7E58JU#!`@$=goqb`Zo(RbQhB#uo+EidZM3InV3$G#Ytv+Q5OVxOdm>)5A+ zC9bN+M+EORxOoe;sBITdf-cfi$8Yk_U=?av)5U*B19)}yU#AP}=$M_Bbddj(NSP2O zk-!Lso#wpK+WC+X?tSzGuV_MVSPYFtrlbj}%^j->sDB@3h5J*6(SB@uz}uL#MSaeV zPK~KP_F6OXc8gte`yK|hd4!1B(L0#Cj8;4C+^HM>*halW(&%4L2uwx)nR^v1m6L~& z0ddgLTEf~5S~G_Pgd18?P|O=B;yqdljs&b?oHwG} zu0JP8=^mz@h+a1@RyvmhH}wr1#VACpzteVe?qNlY+G+E5Iv;qzQHN8fWmh|}VR@tQ zK5CI?HmmLKgDNKutGv@(m#OA>u_M|KzgR=F5saDK(dxY%+d9KbmX4E=7%RiDvW&er zL?f?G)X$9oT12}&vK2_1G~f^~n)oMqFgw7zh*2~`5D8k{p${wtv&nk*#S8lVCfs~q zMWnoPZ$UHw+dtrOKv$02q{mzO;Ak6@=XCyI2?-4?%}@v0U?zOvEwtfdkWW3+86X0VHQmE z4os^?zHdtOwu#SbidU8W!hCWy z>de7K$Cm9GG7-WY)3S-oTN+aGrGIE@#i^}BP#?OoTAM?r4CMWL8S6;YmVMLI#}~9S zUHWU2&XLH|G+(Zz-SE7-OaA=uuqD_y(i*D^{7BJ$L4C>o{<4s^#xs-gwhs`rDsT zhCgPM1J(y~vQx!ka~ZVcs`qJpto>U!mpd$^#_x+Z6=%FIMyaT^Kx9C|C`XYHkzf34R7XKja0X z8Ih#`Yelqqzwxl2TQQ(JxUrHgcF1K_pBk<*BwZjK@Q2I&=&yR~ZE{&ab&9*A`-noW z(bMAW_naeMm`XU86eI^@Mgh(98QDb7>KHzwuo%sQ!MleKC9Vfir%O9OX+hIQ5Zt}c zoKt9)uk+~p2x;A;s0-_(jJzx=5ydhY;%Rx;4jq;-CWAssXWIz)Ce=6Hw48CK&qexM zWAg~5=|KfBbO|j)*z7lIa7LT>+nD(RpA32c?}{{^D~5dg>1WS_JI3ags4#7So*^+A ze>(+WNnBUOfWvR>qK)j=zB#UcJJ*VMbSJNY8aSZl8$M?*d~r;kynfK=mc8^S6}tv9 zPmV%-C1A$KRlF{Ma-G~{8R@XJfQ*RJt zzC-7<1{PWUAF7$d;A|#T!vPpg2psT;Y;N0lxUcq(iUYkB1he9GWk=-fW4v}(sD|+U zg%##|LW}c1EQN+djP3N?Y+||8;XTJz<*LTf$R7UUn(G-QCQE4%^=(aza5*R>;ZVVy zruufeAS_T}$d86y+Reqh#I`+L_B>c1E`!E8gQ7D&oja!w@A5}!yX#eC9fQ%X>_);G zSu)B4)(SdumDYqC?ajPs4EfQ?wOZ2`%#N)i;drh2Q}r;QxcB`Fd7Av<9`i^y@D91> z`t4VF*DA5#&hC|Jir;vQ7qrn$`0{DUV%eUPf4zrr#Vi~bIne4kMTMEZ$s%?H92c?G zamMU-Var2w9bx|am)L2BbEj7OsDs?(uREmWWjf1vewg}`7(25)@V^O>8k}0)t9cja z&ZlO(hwTDAg+~2Nq?&)PJdQp7PEPQn&)=L%d>Nw$x`{UHX3VU;tFo|q=g#ivXq{Ty z&6B&UrR^nzlj}jR2Km$HPDOH-3TH{nhpL71>pge-dcYde1a4IY*k4-{39TX^_gfJA zwdWyoE!G-QhYl2Z9E$hQ6$^wrvcAb*L-y+M3a?L1{&JA|XgIuf3wN(N+TbNV z2cmVN%hYR+WodE$E_YZNsUFc8Clq^_n7MT8QW|6yDpsy#7~fVUJqY#16qGn6c{&ue zigF)PYUdC>0BZmrLS<=}F6HE>2s8#ReJ10ud52m`VFiiNI?g?N@FgOjwyojn$wLA0 z2l(6i?iQ(V*l=mWBkP#dojfP6VQ0|InF_g0uG~zX%Nw4Oa@_ng1eZAPrT>-rr#kc< zDs@5HBcit>pB%MO&kB}xZen4iq2q-V*G|an#k7N{9T))uXHV=frWaadfY&MnwyBjY^GJ?%;p;SzgZq1CTQ*1@x5 z!Nr6;vbNECwv4QoGwjIa6Akr~%g!>H6o)*0Ah*cv;9RW^81)Ub8_u4ZYz5pNM7=8u z6fw#BVPCU9GWR^IvbES&hm8D?9P}Vjt5jIw#A;Y=3xmVy2NLSNxjOYse>*g!En0=- z`#V)L*Zs)`5n;z-FV9Qg#VTs6t@$lxX@;7^zYx4wX-NrbO#Gb;nGi#1GoOa^Lc1(l zuzpdCZ}fG8B7s?JxK?HLW`vs6jKbJiadu)io5ucZe)&-ON8cI>C)~!`#~g2IwD|TA zw+$+4kKcvmH;5H#YHMVm(Plr=^72-e^PHsbG%tnx!0Rp=kL7NLP2J4Z<)7Q0^d3d` zLfUVfiK^ywwGBu#R`w|XatC;ugI1Md6OJKZQi7GF1~*1!XFGT;li7vynXY-9wp;6K zXWDxy2u8|Lwk3bEo|-E zTGa@I+5rcXkMAZU5*%(vr`g!@r|tW%)|!&_28y)X=urw(XL6y&VrlU~xO=CQfcBAs zw)_E*j~G83#|aYf=kYzthAA`*e&zj-F9zbn;D4^@abeQ^du!`lJ+0)|Sv&0{0iD)| zHBH8-xMxnYE8%Y-&}2bm9vHo3}psy5g@ z@ry;(R_E8x*yU@1M~9lYrq(^V&wGZ+(ynxd`7}YpC#t9#sWPL0(7_+6($~`;y{}$+ z+)_Fb5Rhh=&;aeW)%>yVBIygi&h7{o1ZnEn+=OS%axN_(Uwv^9f^)HTuByG&!%d-`b zHC0UC2@u$QDgB?zU?s-gcH{JX=mtipbo*wmy05UdS!s`_^>w<-w>IxaL9;IE1Vsr%=l9Q}ekjJb!V_al^d-{!jAiY&F~Rt$R^#158SLjZfFbkEu^o#yhC zo2ymCbNRp(ZI%)l)^=d+VxP!|_B<9(UXXDogs@yyC!(&TYtp6%sU>CtAnf?byL-c0 zq9L{Eht;y9Zj&J{H6ScfJUwK8$6aQ`~ez&y1udBd36jxU_HAJVoDQ=-EitdrJFQ6jyGGx5FUKck z+iYyBRnl?8${2FqCUQ+&F?e+g;YPacK@U%X+(}hF^pW}5oH}zX@!&h`7w)~goqhUuy@&ISSu#|HFAr1AZbbou$${ZWm@{o(7<|H>qPMqRr45 znN3K!-6u%SJ3VxG#JH~8_BbLt*R`_VwYtlJ@7K<%t$4MUc9!xrM$le^D2dR(oEeo& zquJTLd-t^x(wahaWPPZlBY_dwbX8fjK?ya!CYrnSoQts@Ofc^14k6#zlSK<3i#z4~ zQ3!KG8gk$Ci428=4l#!V>BWadj5KUm)~j(7cP>z&_`Mu z(u7CFh`732%j54&UVrFzvo<+Hc+{hsgX!t#FzAYd-TR@=jQ#r!sMc48-V=e8YV!chB>r2MHUZ*|q!{-hqcIWI5DH$;C)v(7UWD zRy^Mj5VVq%7_CRH`4cT{QAXJpmR@S%qn82G;)^UhibaGqe5^iDSFJ&t40sij`9tx9 z;}Te9&&G2=iG^mzHF|W8KIs9BbDTftiAhid5f~2Ke9ybhcm?qme&(?dkmJiBqD8sn zp>}Swwl8-#kn5B0X}ayWtW~LSY{SKJG)^iAYfg>|zE}92>?&Sk9c9 zuh4*;k-baP(Sjaj?DtjHG~LLtgug4OU5><%%1R}aqOr|uAjtb!wi(x?AEB^ZBYCDu zq%%n&@LcweXhIE0u}0`HR#8{JXEmRq^)rP?)%|@Hn)_^`4^-(6#46-9y6HMa zHK-=VU~B{gaF?QYMSoUA8JL~>KI|iSsAAH&`}5;LKt4%Y_B87K?uY`g?@e#JO?Dp2 zHT$kuY~W5Hdl|0Tz7peW%@e$#dz8_!cTJ^u*FzBF;2Ndu0KsoONzg%#+bWrghacvY zSUOXyIotu8Z_M<=oijtHL9=u&pO6UQ#{w?a(co`1?XNxp!aM8W2);kA zS!8WY`Y_@&2*(CsAm-`+m164a4H~_1ki|FYU+Kv9SI^69if)}Yj##5q_9*OUW zPs}HIK5CU60#`V!-x!Ji<;wFbUVr}Q%R)f*-+%tHXz9cq@MkA2;EJZYY%jN;%(l9O z81RjX46ow&48OSRbo?LxUQrM^%{y&$jt-WpwGnbWffF%aKIzGqMOn~XKG*3uVTOtq z+6TVrevT=K^Q|0DKm{?%2a%pn-wvaU2s4SsS*+Y6;#e@lo!B+m`BONE5dn+hZ?LvG zzpIn|pHHmabByWyh*a?(uz$l|Y~s6bTt?20Y9G$ZK9@3zRoPs@ zs0uc{IyX7Bg^fb$Em7jLa2IH-Y-M9kn0(*UMUZDmqw>qv>^QM{6F2h)YPXz#Y0Kvt zlm&Xjl|tl9J%aF$N7U#!PE4vB~DkB2O0Y0g&UYIq8pTU>g#kC-gnGPj6ZDa?j>l2{gK+G*ZTc`_~7 znh7UU5v~dg9n%a2IXJd3c8>Bn{V>O-36o}}Zc&t1>kD&yu&jKnJ!%VDY{BjmdC`%` z0SiQ=pGUEq7>#gYkNRG}9@Kme%pB+3slTN7d}S+Ek2gXx669`fSu6OpHH?);X%Gsh zFHtO-E3>~-AJa6BWIZ{S!v)K3juUP+UcUiLWetg{N+bt{+UIEv%|vXvr6M5Qj! zIld@V3g_(JxHGs!k4S))wrq8!sWVxhcGLiafEUvn9lh}dv?i6pmeUfFkMvhU!?9KG zRwRE6%!$q!7DOh_QH$NK{e;Q?QzAxcDpN=(~~F?m{s@e54}S|YJ>vy`YG-&y`^WcC$?-R z>@yx$RKmy^+g2RTUbn%(JQ{$wmN9GKvCQ`o`{%t;D-+=_>f- z=`}!a6tp<;S^e70gBKHqrb?JfNjBi#iF0&6Ucrz)&^_84v~f}2GvMplzs&W)Z_F)O zbC{vU+P8z*sAXxZ)3G#V7 z2+dHo0neXlLXB-gbTXtu;w;Y$|MDp;foZ1_S^|JY#Rs95TEWY14$0ES>5uOwz!S(6 zP#{KnC?vA<8D`b#k4bjvuP$Q%Ia2j~x^10_X=}(IyLC92lo^T}ST{!boWpc%DNoJ? zl`#Ummb+c4Jp(hpM;lMPUpPL$Z|ysRlqE3p+@1pICL*PWtogQZ;g zXHt1?$A0l304C|pL6_W?Jyz)Wuv*_c6jAmi`*GDoimNC1a{z4w?sZxQi}U`Bm1ZSL zqCNkIMU4?P$$^kUVy-&QD(%TLZ7Ul~10@gDI@6y|U1&oHuOizzzNaTjSs+zYUDx-e zsqQMX0-VeuUr4&mk?M=-$0pB#V_gFVs3y*UBgcnY#2SY6gcJJY&d8+M1) zS}Vg2oC~%^<}5$49KiG_xgX_%Jic5i^b<{~NoJX3}Jzv!~fDu(pNceR^MY)R7S0iR$mMdCKn^ zgiOeBQ#+is808brZ~1I*@faDs6ht2C&+jNXHf~q*@Rn|{Khiumg+lvLtuova&ySZu zN=tTzV?fCS$8$?)KWt`FZ6zPyBs1CUGg5fblUH*lGh*WMdVKd+F$wfiXK%rlo1mJ> z^QFa=o{F6^NJ^g{?&EF@AD3(%(u&41`{tM)c*D0}RO=xB+m|K3LG74`CJw;nSDYDU zKy@E5V(GJDW*4GESLky*kjrzmSxdo7Me|@}%b4D&I^q`Sn7b7Lpov$cj^7z04&gs+ zgFM1MWR<4%RYt3(GpHZCndg-Aq8rJWgla6LD8&}f{ZHR<3SYq=>yEfVRt6)t!HqJ^ z6c6ZIWGlEP5s;I)G}f>@YxL~x&UQ@NlI}%((vjh6IG;sblx&l|m)UrmnR4xOLwv?{ zY?@28_PyQX%?fQ0Hu9%Vr<}XvW2E(jVgEb&)|w&4p-uMQwli{u0x3Sfw3YJU z(tg^^v6t9Q9WuZKFM1NK1JR%V2|S8L9oC)+wQ<9ghLPT}37b&{o&`%vx8LD7>Bg@| zTB1deE@$L(16+C4*=_`$iIVqE%u<2{=-|k~k1>mam+wYD<-S{xz%8YYpfvIXt5<8V z=GIetjxf6$Oh@M4utNVNph>P_7sBds66G@-J|6h@%22L%Uj|~=i{{sy!a)QdlQk;R|?y>gZm)O4YmcB^t23<9grKqV5|%j-S^o^R4Mlxj}2&5-A9QwsgSJ{gVo zXk#S%qnr10ZCJ^=1MT$Y)Fw}~1;g}AI6sPfOA0jjYxVvKm3{9L{^7~U!qd-(LLrsI z$+^K5s6(BKTx(@V9n6abi1$NR!2p)|Urw1iUOWF@>0iu9ib}J6KCgPtS0izI9fr7e zDxA@dPwz3XlX(#}%B{u;CnCS)IMhC$kX)J#7`o8BE>OVS=gn@l4FSx}s~bRkogs5O z4%`EbG@Cc^VD~fr9BQ_gv@y3H?q`~P{I$z_e)lL75<}+hi8!EYFC-4r@9=Ar$)T3& zl95aJu$G;^ zuEqUAI)d-!r9NSPJL>7iOCdyp`kLZSmKsbHeeCLRDF^nSpF5w_#$2{TwNDEsfxT17 z{J(J$(l2C0D7y;x8TQp^iI5X`SGb(qLDr;my>=R!p z+yvwlQi-FWY77eDo3iR0ndR)QUw`I%bNN}@0=N3Gey|T)2i@QB=pi<{Bi(J~*w*Cp zp~Z5Gwk;^yLExqG9uLci*>#{4q0T9PYfrW7JGJCu>=h#staDND-EJp0iHgXw2Q2D7 z)yVFrPDW37I^Qk0Q|w*k8kxr=*{DF}vE;oWAJKbD2nWS%o3|$et=eXKS`^7;h1wGS zX{DhOOEDjAGc*}csh3#QW?E!Zx#S+wQN-`?xs%3buFk4#>TjENvy~M=y^(RS7fHTT z;e`Rj#V^X6h$*4-D-R$2h;J)ek{HVS|X9EUR@H5jDF5NCtimJ^94ip|2Os0LY z{DRd9aOg`c5Yk-tn@72>GF-&xTU(Pg2%aPLq)Kc5Xn$`({^r-zg!T2Dj~b66IIAH8Q^WmszMo(Htm-AK7$ zylgjl*^0Qj2WjbODbrJ!=t+^KJOT@uv$V6@zA1|5 zuwNRaXbj~gI;M4c>Kt(An%LCBdxT!O=ypJx>{pO7@{yQ+BJNH>pvvc%vCq zQh2Ckg$)QzVw1=TbsFLNS~Cs&)!MLX8l8TIV7NS}ocvj`JMmbVkvHo?ZF1ge`>$RP zecn2JKgCXZ2$F65|AF=YsRgYW@bOu4%VGnvjzTm+i-V6PFwyXob4e|6;ngq=pSOb9 z^%4`M8Q$D~Vy;zEb@B-Q`Az{XVb)VE<2^6Vm62d3pfPb|!qjMPSYltsYI*kM`QSxw zQ-~sie>lp7t@b2Jn-VVbSJkUWp(c5>N09}6%7kNirOvLZ(y!67W=j;Z^bqUEZhm?) zARGGRTNy0xM1(6!4`&S(YmHe03>JK<)&LphQ^&vj;n&sf2O)ra+0>j=o1Z!WnMY;XiOI{B6;;6KN0a1gfZA15r>| z;m*dX2%zKF$1{y686lrK)VcF<`JnmS+UnO?8ykMHsv7-Pm)}aJYz&Or?}&-rT^*=X zO}A48`bVb=>7I+JQIW0IbxdX$mLMb@cRK5PAbzAPjaFej8OJ9F^aMEoMRhLoRGT9) zELFk$NP#1F%exWvYrCCx8HJei;xcj#DMvxrVovO|I2elBjPP5;YxoZrdJC(ZjB&Kb z`Bfd&7L}|xp%yu=b25uWp<}roQ9NeYjWOi zwg|POl!Vf83jJeCb_g+NiUuwSY7=Faork|+UI=}>^nFql1pI3H{^CwJy~IdDU1g#$ zk0{@_#XCpL@p3ax#X6uSpB@|e`0xH@KE&k!5RcFS`%C&+O~8V^?X_WTR07v@&$TE8*-RY5hTJLP%T!ot-J z@5|=@G(8v`o+3L7_}*O_kY=)StF49kckVgK=NCX~G8vgUb`1#Ui6Pzh^}93;DMs`A z#vKn|Wc2f>Yi{{w@?_%%Qy0}pr1Nl%xv`P#9s1#eQlw1!=Zn8$sPaeuUdbQ-_X?S# zbQe1_>CwFyEW6Y_7EL$yMF$uJbR?XRsioy-nit5$t$(j5CUU+LWSoJ@`5Ql5a30l^ zf3N&?%tk*wbmgh)ozY3to7e-ruS;F(P%uZE(nIUHuSGm@&IUqE=0^fG^Rgy?V0DVJ zu@fo|&d**5$ZY`>;|rD2WLuIPV%F5*#`HAz;2^PXVsiBJv)hT?YHf^I+zShH%UC|s z4!5F`6=-esyQ(F}XCs>bUSS2U5!f4BJH2f}nwvJ$vHrP+?r*!=L7AFqBohxyoJFuB zs_pB1aVR}H9jlm}^{sE&k1o+vBe^{`q%rUUAz&F%S=N(0p+J}`p*TL+k;ol4Dh;@tJK7hD;pX}Nb80_O zB-iTD$D{5Np^|345vDDtbblVK9fOhM?l!W@STZInvOcZhqoK< zgmj(Rr!MZ2OYW|?5|8h0H|!cti@-c@bw!kF*z8A0^e_~psBYQ_I^g!ssDEz~Lx1IlM=wBsht53MvCuZoJ@!gxi)EM~s+pFNB=+X`kM z%nl9Do?Ed`ZpF4Z1~Tg0qKw!l+?RuYt#Xcm#v+9rN_$w$BX6f{Ls}Tv{hfbK3A|un z|2qfEUcA$_wX#)neYo%3-hJfoJHLm-g&}>oMv>3c!f#o*csOhg@M*~Vfarfli%A?w zjesMuTsAbSoxNdhmIY4B&c(b{CR@9pYoG*g&&zlma=_|+_V1Pd6yfv?%L&Fbv4NH$ zC2sEf_t)xNZ;EdGKAD||bhoGxqXwcficB%sh$pj{r316==$eE&YXO)m&N6M;waDgz zJ5pd->#CNWJDDT2Dv?bahmY0m&l!m04MXq1*8^Vy+|UpjT_&qxnWx{xqJBR=$W`&c zeb7c0%?cZgLu02!(AnnW``;($3t>F|?MO7SEwC>IT2XA>PT`R0@*U@9X&G1Ni&oa! z_5R}gV4qkTzT5SgQL^|q30YLyBD|+j?)gUFi7#g#uWd0aD+`XZ4s>|@L+;pU6!WyT_(@M2#e1|s zbKF0DeQ&8lCREd3Em1mH1^EyeaMex4}V*P9ujK5^>#Wjwf=a(eeSv5 zLjy~Dg62rFov@|Ohr7oQ^3yYUcfs_ zMR&LgZnS+8Fi#7SFD}abk^dZ zEKrz6Zze2>OCZ6B(rRA8@B{T3+Lu9}8NtfU>CMFS@xilvbs5?-t)n z21_5w|DZ|-kYP2XL^05p2!%w@O-0sNdzxa#vyR|hV*C+cj^SoJ?-y>aW zkTu75^3sYU{vu*2?HWf)n{NP~(Z;1H&_wjGi^2P$kH4mp9&bH;&>dm;;_5&53)e`E zGx=uzzaIbbu0cW30GaR7m6SC_{_yhaSFrZY^i;)EkG{dzr&@P3xqrivV&{_%nj@m2 z-rn3b15B|5^e(PpYSGQQ@seFmMM~BFdxhl8IIyDP^3}U}63X(7$+OV(Jcsf<(ng23 z>bh%+TY(P9x-);HbWO~R5}K$YD4c(TJ$%j?7PtAAK?KZECD)ii?^AltZOj$*g{q=S6)`-pd$TG!lnD4)FA}cNT_2;k^+W~V;wBkq61Hs{i+fc{_ zB5T$1;iKqDCmee9!WgH^3Q>z_;ENvEdU;l(H=5h2bef@qKJ3J-VH76*|A(W%Jt%nG zm!&IUCAY;{x{R=*zoN(u*W1{!!Vaekv;k+1d~ZT&c*7Z=;lVo};n1eQci!)*P&4G9 zH@M+UiO8Ob|7qVs!A0n1)~c64yWNtp%I~o4w@3Ir6no~Z@cM0*Q)8*aIL&7|@b&Q8 z>MR&wBs#z@iQh>g!p3C-?L^rFLf?%3?2s#vEB|t*bUvn-G`qEMw#@U>b2YgxVk20z zd~IJ@qR9+VQd%82(^!Y*jS*7YD1>~lWQg$6M&epLJdFB`JV-K4w98$jFNKolY!s`h z6Fu?KCSL=?*_`yuM1=ROGcu4e9JHt*K_T=4xaD5zFNaC^qXI9; zv42TqKuk3-b0_+c$wNh`w#mqS26uIjle4}WwJIxbsTyNZh?A56G@=K?8*Sht@IxgX zO3kxq-I7UlJAAP6M4|P9{=mWaAozijotK@FAp*nBlQ$VsX?qoP=&#OrJr?xreJ4gl z%(%9=1u4F>0I`7wKG=?6rb~0n;7OK`ZHw!krl*P{o1baQ`t~eIy{SSQgA{EM1#z23 zpK_Dn4Q6UJ;F~2L>E?&Dku>{K+?IG4d^30vw?Tc9MkM#(eb_F0_T;O^yum`m=^N}b zC2xAVf|8{bVJ>KimP!BQiR71X*UX1uJ3d6_X7t5}dUz81RD5v|LN?p&>B~fZhs`AV9%nXAt-TqNW6;X{F?P*2F%6r2J7O4J_)8g)Ki~b>!K928 z7<;#y$c6l02Wq`9+E>)C)df0l-6dk+^2#(q}(;fkUSOH@USJa^^c-;cBX1E#L5 zaD6CFx$?VhPDx70J(~pHZw~+W+n`WBPU#uzsoUsh-v9~x*Y64cO$_|~=vujz%<#s( zQQ?F2sfC_xS13^v;@Zhj(cLTp#7ZgM{BRmigIhLXze08 z=!2G9R4SF@P^64C^0R8`YG|PahQj4B&6Md5L6{61@8E)cCX{1sV=hxp&z6nd4y=J7D;vnK(PACFohA*Z{KFfb>&-ImVo$RsW>7&P zv$mC`{qlKu-aJ_Kb{acV=36!xrX2xw27lNjX{oTkEhJ)>3Of>?=giDD(aZ@fh^h8( zRE#*Lk0g`1$_Tc>Nx832N<^(JYNFldMQ&N96}zF6GCm|cnsvi)EL#aGImpDE?*wiL z1#CI#JZm(k&A&yZcNr`8401__zUwyUl+AM`r8yuvF7udI5%-XE@O|DULvdGe{(4qO z|GZ+5hV0UInvrCG1xEdazP)s0-5B1Ox5n)Evi79Ze_D!Cp_Qoyud6HH&60az2g17X zvbilQlh<)ny{O$$JAk25424G%7u zd1*&MSNk+8qo^h$r*I>l^{yr1n*+O%3#mx8aNL2nGh?>CgA5YER}%aOl4WK~a1WwQ zr6#gAZN1f&B$YE%xuJIbr#hfhKm;5_{y;CB^*e}}j@r_f0z7nSaSIVufSaP&o8H5_ zEc1=TRhznApV6r!ODpNwNgMs;ChE&-1^H+>iy&}Ov0&tW)X}Yb>w^R9Y&W7YHlx3R zv^tQHG8)0MojTVl0pcJ3jLwkWZ{q7>=T=}LlR06K?jdYw2y;4A)3LL+WqDvvMiLve zcENKAu`}v^YZUI!w4BO*uo4he_JVMK zj@LHi>4rKEfG%$;W8^-dzgot9Cqs?LOC(kem&^=_JvV{|l-;Civ+D9nK0oBzGxnk3=z@RMzpK*O_A5Z=HpkH=l&AaNrmz8MRA}OwTyzYlW zb8yqSRXu0vsaVZyGU~Su2q(0YCbPmheceSS9Vb}N@Rm6(X8A}5W{*mgVAQsp=!wDV z({lq8-#1pnFC%~S(Y^e$OYEpsWoRM}yJLEB2hfJck58L5ar5r1Xml{3a0ifq^6B8hQui&TK?pby2kSL49z zj_7|s#cPSHl&bK2$i|pjNnGfxam}bm&RBbHJF5r#V^mu7RlFfB)|-K|b|%!iZ`rqa z*gtjz-HnP|e*N6x25Bw92ma-B&k6plJ9uTY2JM`|)oSqilTWWjgH_P*g^}U!)Fzvg z;_NaDf-|41Z=8G5fM(?JbLeX|Ba04nlU`r2eDFOneJj7w+;VdrpDyJJCCsAjHkx)A_+@y3>3K9am~9xaS>gDji&w(sNgBOH!^NXD_$1FxRMI zdZ3Om`^{uFP|hnNnaq(`1>T<6BEotAk^1rViQGc}@O1scU zcaKz}#b;Zi4`ukyf!;Bz?Lw04pE5W#8dOv*=47ES79w^3o4l%yM_Ccr5dOH>I!zGNaPR3K6_H9t%n_PxbG!$ zr%gVridwp7Y&v)T?-ik>l8F7{`Pmh!)B)xM83>t-HV`%AUki9QIs)Lz!b_OyZ>ITY z8$5S_(5u2ppxHL2cQkkG^BzWUfC=acUons?4IL}Z#W)NvY0&Y)`b;SG3qJuY_qJb6 zD+ASrM%mJc4G?eBnu0$600WKIm^#%H4Ri`lW_1``ltnMx=6w!(H1ZuG#sN*k>3^$Y zxSCC>e*JB5^3|jN6M9T&nwpTk?sE;TA2e=yiYsdlbL*b6?Rnb0v}}Ek#=Lw>HDkqa zgQ68p&Tfh*)PT}7!XoaXmhTiqnL12-UH0hzsnFyxY9GYfO9#dcXz6P}u`%Mw^_Atj z0}Go`m!6i-Fj5XJ?=6uR9@VD=cZ$M&|6nl~9yq*Rq_*BQf=wT#QF_f1DyZC*UzR=$%3;HdB(~h0{B@V=RbZe~9;0@S!(USPre2yzLpgLO1UPL}va%-X`Q(1jYeUq(l z@U+pVe{)Dkt4F>j1;gJTjHEv!zYDbW5S&Y!|C{S3<;WI$^ysyOnAn#GM{{b$i57f(_3}scAToTixr8MQ@XW%qThns9I%$-JDYT#45{*YXf{|uFf=IVnL z&nJGI*v^U&PfDfveBkzol2-o0{!>W~JTNf*C#gh6>WLYwdZf6^wlOq9 zjLuhsA=EbzF~*x@emKZF`hM*1&cwHZZ;kT{vk<0eL6F0p#G-sBk7Z)6KXm!Gk&t6| zGV0mnpK(%4PL<>K==Jb_uY9Qbp{1awke~<|gA>Wd(tjL#=-%RLLSoqfMIRi48B`!9Y=vM(IXkj4@J5T3R|bdNdQ~@L6csq;zhV|veq8nro>iK>TgN0=e|8ECR0{X;jXe2JyxJIaCf6YCF zledw3K_gkAY)2lK<=8&C-kuWraC+8!(OI~TB>Wu}}%Ybq8U=d1H%`eFf@kiTZklsful3TgGNZU z;o#mu8CYbzhYyx>Kyg3By%um!$j+(Hq^p`mKf$h4H}hCd8wDk(4wjY}UmHyJK8>iim|pS&x2i;WxG|eOu?E3HXkc z6TdD~9hkBzSzP$qyQHh|1U!~`9xccd;G>m}?-Q$kY%kmO4%zucSD6D?axa8*=;aO1 z_w&#J4AtE`6-+L@pJ;;EmDnS2aI=8p8tQgWBi$ap7;4H(*YCvlIyR+CdbP0=JBn zVpm(hwvs&KL>|FTmzhnHBm;BPR*XUb`(m!bpH&DBQq(JFX5=;2M}jbY#q#Pv^!z(H zSvn;$n?#+GyB#!(20WdAch-AaV$@+u8FulJhW?88`ZKM`i_=MQwz(&+^VH7+1G`B|FWOY^MrH6Js(k}9?`3C7 zO1YnV!nqdrM|9{->9tJZh$-Il)iYa~+NK?>q>kT)?nUDxiC?yy%Xkj*Cw8fd~lG-uA; zQ=2&Hoi%%+L7H{?aLLg&Sjv;1v$x?7a78`dpzsv`or*fz%2()D1KbPZZQ4UQ^s+Uxt~dJ6o>8|-JI8ICden63vXZBGjKny&(!eR z*ed&3cj&VIH>m=S3~0>4MX$=VJn8-bZ{)_)IoGzX_6cIYW`o|E91$-*OSOYDoNJxr z$yDY1qBUJjri?+$0doz1`&jXY_T>uv*ruk3ePi&jeh4dDRDDpi%56mH$ z_W@IZVM*i%<}Wihl;EXJjV#T#<7NUqKDPNKtZr8oBQ9^7DNg;hGnQ1i>$ce0B4=9Z ztzGBc1(atkaaOYLIu7V4H%it$5Z5j@oIG1gmR({{yZcDiP%A8yd(aT^k29&Y zSvaqrbVkx6Z(c_d}-GtFpCf;kv3r`RjFuTs;RHR9ER#hJQA|?A>ygY-8`nhIge>b7Yguzb7n_ zD3jncq{S06l}3eMZWWD(=hhisGr46)keVYUE5Xf+-O`;>N*yIppi7_RvK6pua+7@u zL@xDgFD$P0Ey?2j*Hqm!GW4xrw~`#N@8hU$4^ee~zb9lvgV!h)mUPPNVuPm14+ z&Bl(jIE^j7oO$^8$VXYSL$GGhSdgKr;{(#ouSTZo*P67CHNOjSP;aiQCUYq7{{OZU zxUuPRhC42?*cUrsHZwzq<`QkVqE`MC3Yd8$dL$qq&C}Qd#+GJ7RK|Wn9ku9ZX{Xh& zFXloM{l7t(;&Z=tav>J+Y%Mu`>V{dNy$A4~)RgU_A#I+WUNkIPSRG=z5q&g6m?l`M znm_Tfn`_sq#CodlXw9jhmuD)?HEwat02sEg_~ z+o`k&al@9J?8!DBs65N}FGqwoGkg~E?k*vJt;=gK3m#bv#H@E|?i+KL!0mlo=>fe_ zHKxozcXX~iV|GRL#_H1EURo(FE~{4>5^V3@eV1Ma6qp|X=tll7s;={A zZriR#nB+a8>#7`HlLD=~Tq_gC2^fd)y;%9>a6Xv7x3U$eY5&**|F01@oBA%rz4Fh zbSC-^#wEr1;CV?CZBGT@4tVSn(+e>zJwOU`j243fXA~FbmCX3p>I-Ab)SFVx{f9>pc2WtuQuLN zIvCXJ>ZVj}Z|W@Te1+FxwJ#xQ~x=P^o+^$d)@If-y7MhCPBQspy7B9`z>MZaRNlcToHbS#+ zzfFeDS%A}`XJpnOrA7-(7s;fj0pUa7Ckna&cKU{{TJ z{zACdU%SEXm`!?W;U)!$p1Pi2R9}SE*qp6jf8t5MV0eX@f#JD-Y=c#1Pl>PqWzfXVeY4yljw3&ujdRRjz`_`xi7HL}+=pU|I z=|A@)ij%3;(?nm9(BdgrwfJ*_PyYAMNG<`~VtA=J@)m<4uvVnG7@G|0sDD;xq^DXc*7a!wGAH*_3v}=<}CSY8W1yLt<~Qm=CeD z>Fo?BU3zsm5ir2TT{kbSBT}#d+}?5L&Z%MgDQXiS=f1xY{~5{V!H+n!@=BFA)U6xQ zn~SaJvaR~ca9GDq;-7mHR~7OvGq1gLs?Wb9%CeK(h|<2=Pwg1~=>d*Pc1|0vl#rQF zig)g6(Cr0c>I@FmH{(~G2q)kFF5>(W9-VS39G=?D=5LYqV3H0WBy&bg^|pq5ibf5O zHBwVFutiws=Zo22itDVEsIU}E&gz6*YTQZ&Qjy6|sT>ilHQC|3qz`mpY29(lQx>~N ztrkdWM1JX@EYUAk)_e#X?UF5t<=*QH#lX{w6oIHJ8Ju+`>M&XlXB1 z7aq|+QBW(g+*efmvM5NuYH}k?5{4Onse%c~d$y8yAYn3yDcU4%(tXcOF+gAimd1D7ji90bvK8wv` z9Y*mjYPtWktwA4bP~@{puRYEPs1xtWFn1h12C)1BDRmbeMz)X1RVn308{FrIqa(zTxjmA9ELU88;(3FqU~v3OLU}* z7N3dv_Z4XhAmG{{Zo>-P5>5W;HnUB4>WkeHv%)$xPn?Z`&afh>!GssdzoRnB=y`2C zlbY&Pp9tMWP;k_}!*$sJ`k#mLoEsNmYdJRfJM#=wJt#jU@$snduM7bR3UO`%Qs;)9 z7TUFI?Lztu-3I?v31q}PR21Bqg1f~JwXP~Cs+|`ofpj;5R0#_i_cS|Kixo{whaL3V z^x=ae$HNpMk0mp*X|n5p8P})aaqop}!p0YO%Cei39H(XOvY9=(D8;~^U_>E&$9?s! zI@EIEwCJ}M)E&+MHCc5mPSAf>W&*)9FLeI56Cu;KJ@(SRrXW(6b=n1OzLeBeC=WVI zTN<3jcj!A$O%87Y-$B7m5&zNfVh2ziD*d&inRxAZ-^no@tA`aeFE_%#T_Y7z9PweC}xL`dv2wNQcsKPH2C$adOW!E_Fv)^*jrv6V3$s7yS&>hs6=^E*H>V8+Jk*DnL>5?T*;K=^3yD?l}u z8ux4)BX>2E&3`m1p=g))Y*$^IuHM(D$%wbvr{f{jGo`TTT4S# z?LC8G0Y2BCmfyPK68oO7spjbgf5(_n!?XQ^nO*-DF#LSbd@q(7AK!Z_c{mpeTb=kyqgi z=}`R7A>dG4A{<@^u)13rKYpI}mzZ47^-@(_emhyt)0ZS!IMO|W4KE<;L3HvNGxbQE zJ~OH6ASmE}T3d}~MuPnw4?0%r5akKT$L6NMo$a}v$`xKhddtl>qWBQLPLGmk`ce`P zh0tj;B2=5!kHGWTdf98vnlQt?-SsIBz25e^`wjl$rXv9ZnWFVB>zbiBaZV1=Hd{+N z<1v-8MdX>n8q>(w^u?eCSf{(7l86vvS?Mi0zff9;4;Vvug zy$l9A$-Re|@X|tj(2&dIn1BTX={h$z(`hod+IoESD84Rvu}HwuHgaQnTf%pN4_Iuk zWANB{XD8N6axavZV=+TXOF@YP{9|H|9;Gu68-xTN-kT$Cy2T{^BX)lt9T25d9JEuZ znle^A$w}wv3(P-VLgMCo-URFQ(bit(b;lgj5f2!2uR-ttHx1tLprWGb6^O^M#i~>vjz8;@EWk{7rSk5V^RYmNiOcVx1@8EII@% z6ltm`x^k{{EgH)@93n^ki_{uyAtjxcHrEhh-KK{){b;@ca_JDq-rPvnbB_OL@Zlt> zO`)b>dsEvu$5wIM9jUc zuo50$SLZa{_tFwRT1Z`5J2{8b28g#WJssaL`!^K*HLT*@S8X}(9ly!`_J?7aWYA`t zg3JZSDcmw08S%ys$#8&7+@nu^V>{L++09}!c#b{eRB$-9Ht;t zuuizVQ`j@`mw6wlm-DT#XB@+)AG%Qx8}{3Qp?vIoQg=C~tI^Wdw8>=9D{*D#P)4_) zRw#2>(R*g5qxdIU4&VM7vVk|5Tg`|S$Vstv9>rPUqew2L_cJ%gj|uY{k4*0(K$!JG zeCUWJx_hp8$o*`d!HyE3oC0aL-n;kH9Sk?acsaaYl1^HLj;@EON&8DzEVU~n?*ypd zXks?ZG~rjL_FbveTl|jpymad_-}}6fzQqu%N^&yTqjt}tMf~tTnn%gi;$xXjy&dWq zQ!%p36?oi>Ji=cpz(t`=MmtGAQ8~gucs!Q(Hss2Q++N2B?xl81MFy|^6EAaKP&*nE zWRx@Q(akBOv_|SVBs5w@VS@J=ocXF6TWy2<`sB+{ z2hle^1XAio7r7RoJG^VGAioP!Q0bH)!k5Q#QL#g&pOI83zmp9Kr1AhK=XU01D~s#B zBbC+%(nO3WW*$=EwA6c+zz29H)caWxQYPyzdzp}aoR-$2Ej8awFilm)11 zFrt|*L`L#!*Q^rvBg^gQ8LlASEaFMVtN|`rTC+@W!b`yirc>ffh-NXhBKUnMj(zyW zxxNT^WX^8EfHi2m6m-KX)|<5rtSYozskj=WNT3E%Wv;P zKHSmE0yJN5^^a^)1Cfm2V)nMO&DYWXM{R>E+qu9*+pSqI2bEu+m_F1QiB8*c$x^1Z3{tJhLE=1FAijg_N+&t-(Oo+>mvq{RTR#(CA>l=vWu}Jj#&? zER}2*=n<8U4aZ8K50OzisBC=qC}I(wRf^+Q2cFETL*wuwYvt1g%V#CP|V`L=r9S84+PLTaj3&!+njXcFoy z4fFtJcgz@>WdZxg%oVt*zaIxxYU0Tq>S8)Nw3nEn_6Wbd+OK&^7PhmNi9t6{DfPUj znN83ACR=W43AYk(YF$wNn%HJAsKI^cQODFE6QB>LQnd|6%&YA9i=FA}0(TsBIh7%4 z<6$xL@eXlO?o|F!mXt}niOw#E2x` z$sdKrvtQ%B5YU|HskA1#stRsf3=b$7qO<@-2y zuXW7tM%EqY#DF7_npIsjuj_Rth{eMC#K-cL>rNj$OWt~`WTgGI9onTlQ<%6@6lf(T zeU?4KEXQp6!Jdw~YJ_+99a`oRT383O(mGu%A@^G`i&FxSjQaS9vut@8KX2CR;vfwN zzrY&>^tt*!3dT2}LCOw#++Lk*lzg6%Dn(p@5Sft~&1;G@G`7em+w zd;Q6EX-liORV4-jUI?w<*xsQQ4jJ{6Zd$TkGkX+L5{4dK)H31O8gNcc_R;u{M!rO7 z*zpFn$CWD2F~zjnp?q}jj=5Qx&>A1y{Md*4Nd$PfFK6mlh*c_~G$M+p9wde&dyj_< zN}op3WKL07bofVFfdUWW4vmxo#}yS`l&BhEa$XV?h39Cc&si;Zc#~5NqM;)mm|H>h z@O{FeudK(zh{ErJ-05pN^lkin(|X%IZTazvQ2@F`YC;IZ-wPa9*L~U_-_TdVNcmLQ zsFC!c5#EdyWLs@!fDKF*Gq|!ZRWKtH(q~FcS8HoN`?DKBw8!Bcfwr0&me;7gg9C>~ zLhg}zlmyZ4Oj}gUGrl>OtE%c;HYOq{VQpm|bbe?1j!#=o(dtwRx~U^d=-<8ED(gxy zK|;mTh0lUifQ4A-^cI75Tyuv{a~QAPm1DMK9N6leU|md$C`t>Zk_)?+Cs>v$QU1t5 z*vA53^Mm`u8rV*GMT>&7)dOl7&%O!gL?4P(gul8?zDo1pN*t1`b9M4g{a7Etg_jsv zGg!K`-u~@wC0W$5BGN*tykn}B-uX-JTv@l#Bcl4#>SFo}{}^}M z5b30Nxrswit8&)I7*{_)J27j8MZ-&Q#*0%?vyLqUe%U3>4!z1xBf$MHAxZd(5iCrG z_r+uQ6-ecz@!htMqOe;`1XSlg#@{O6Tz~%vwG4T~*|yYb;Q6XEjOp69ch?+PXz6q- z;Mdj-D#DY?A>WSgWXyg_@D*z=xb2b(n7RR)O)2R^nZ#as*kl5!h>kFDyxX6>DjGVs zYBks&qEV#XW-2a_Jz<0Ac_0p@8moL)1anfm&e)e_VzO;Cfr-H>O|q_n8=_xxn^ zHBX$9u)gX1FBNnyEvlrWoxhbkn6k+*{dUEzC>Gmr+dvL_&QgVdIjWP_*RUY0Fr;2* zMjRB>gSqc%I7&1LVO7*i_UyhhD=RfxGr`T;BnH|?Xd(tcTTqy&V9%N)3^?CTHk}6H zOjiZnRPzD$iPCwB+RgPX8h7@k9LSRF4ylp&1c@_RC|=eDPsYdvP*bU-382`HOZu3m zN8M8Crh}3t54NG?GcuF;7vC5x(5OhZ#6OEXIBVNBTaZSa7nrkSLU=JgxlOT83D-@w zXV=bS<3$hlEAbqf1@#Yc0|zDt#XTGa!Q6FWDgN&^Hk0ZVW1=ML&A#qecB8{!xJ;Kv zY==Vk75DlQ#x0}LLR{QEm-$pK9T_L_C*cOg8StqI)(FIzecj-5XMRzU{l%{!okycq zy@Q$snOW-;GB0h-v4)aV+GxJvzpOMXctS&n)8C$n(BiQlM~+-Rfx%+q>zhtQIm9u) zKJ3NRIA-EDr#fq`e&QSk!!Szi7ba#2;=u>H;Dv7M*-W*HHOWA~e{xv^y|8*wB=qY$2=2-liT({@9XO)tg}+P%)&~O82iB-{|&^WP{rf7xn;t)+fD>Qx9D$t>!zmIP_j${lFQ;!Y|uCQmq-jL zOlqUPX1Rnloy$L(XR5bIQg|qj>%sY-f*Eduxj(J6fsQ+jzl|?#eOD)kTSRM(tNN!V zSbVb3FmXZt0|yrm4+jfBri!@4V^LxfL1+r7P!e@#>4YnKsxVm)k80<@vpdOu){(n% z`}ZTW1S_yP-7T6Q!3%dx;6fjhDr`zA+#?xwxxG=2jHwSZHL;qK6~R7yCP^J+LX%~_ z<@a?R;Jgh3(>IlGLRYSq5evBMRJP2MeVK?n1p1{F#Aiw)x4Z560 z3;NPh!(9|m&3ElddF`K`kD`DS;p@y(!5_nWUfR)o%x#6d0+gmR4wb)ome_QQ=E{5S z)>jYm-rpO8Qp7fbxNcu)5n88UTJTkAvAA00SM-|7Uoyx#H)$+2xUBzxmnV(gKbA*k z6xZH0Y1oCeJ4^lJ(yxwxe#<Rs>20s83c*@*pQsc?f&MAiL|- zfr&6!yC#`*z4_ClQ2p1Ca{ouKf8Fi#4+^J6A^2v1>DVz?t~EC-EVJ|$6ZgM+8Wn1~ zx)8peTtGPLt#}B(A=Zg!<-{~e56e7-69$8Ea-NMGO?oxW&%MyBaG<8^O%e7l5#c?M zG2;h$!+m?P_rXWtK+NcJBP6`rez`)F=r73M?_GL8rg1HCyCo2aR)bmzmq zw{e8|z7Gd#Ha6B%X``60{S}XQx8+0&3G5bljq4pNGtMEjl8CAuIG2vNe1fip&NO1R z(7Q803By3mwJAxVZ`8wHv?Q74z{e{whHOk>$ z7;vX!Nc7{fw&5|1VXP`Uhhn!zyX=d^WNbZRVYDhvHaE@!Xy&dtwh5(1rI$&g8+>SI zF3!joJJr&56p@t1woLYRmJ@CH76a<{A#0l177K1)b^+&D7-49uSu3Ws>awN@F0kR^ zjdwpUZDWE`o0q(W{}*M8due2m)Y$JF9i2c1W*dP@xMA9jb&5!B`x`A%ouoVNmDjxi zOv3|p=P^b4W%pHGoel-L#N(b7EhlF)&JH9zPbX|(gRwed@Vn-uDDxNT?74lCX{YvK zD1LNZ-(bP?C|qZ?WMG{Aue|hR$fOdmUFLNin}wv-a#Hh`b{9b}GOW7|fhG|QUA}0} zplu{bnHlL3_+g6p9mXg3wP+QDUcUk}1rW62 zKN_Pl7PDTT3sCo0{{3B;vp9kU<4|^%{^+L|L7q{x`_}IGNx)#`j(8C@3%4u#U0wq{ zQFFE*h@jSVw%_>`*d{IhT$ded>%#2v3vsVQi*=J@mHVx|CI-b6d<^(BI6`r+d%V^3 zqtne$6a{C+E&J*t@$|{@#D4V8Yp%R_zUJ;ch-lm(-!h-R9u}yVz%zDcst|LVjdV6tJP)sl_+b%!kgb&kx1xQjJ|bbx{M5`QcK{ z?Yhst$gq%fv0$UIbil3N)x?&Z`n?T2;ze-{&=erS&42EN8unOTKRL~^rQi}WivM0rcdsF}!*m-qR zdYKeV271UntTjHP<6E9l3=>~9hhWY4D_Pb>OU`3SSH-_P(#e!Td*M4ASr9)6p2ceX zis|u&N{@s)x?;@&c9HZ0Z24zU#Sh3V^Q<)K#f^f%TA}`-hb-^N7%*by(ge5`vZe_n zoIbLG8wdQIvVDQN^K&ns;#Chh>pjEhE;9 z>}y&Yf%mO$r@TY!aJcJqD@+!ccE?*>1;r z{()bImb_BNas(bkW0fARS=+;XnQbPQT}fl})gOFW%;fvm!m*NgW@mdiY6u%cf7@p$ z_#)K?f-{Uqo+44YBQcY^O9SjBY{`+_C1%chmSTzK3_yctJd2L@sMMup1&{FaC*KG&Q%0#ny+oX%eO6@?-2t(l*o*`hfe^?duHpF;bPHpgG zo^127trHwZ4i2HS;&h&Hk7G$07sZ}lN6gH71x+)-&RS}bak>F!MUkx>Vz3ogCj*P1 za(q)x0Xr_dbQ7jde&sm6d5aVIZ`*R?mkJv;I7lP^%u;mr5aIk- zx=UBOUqIsyTF!Y+O5=t!TU1%fc&78I7xIsNUA02pp#H+FbCBpt_r^(}uJ%gwV6(ZT z=eep^99n9*zNR}_=2!2K*I(?1hys8?hY{vp__^dW4xs?J5&|8A70|0<8|AIMr`1m$ zKCth$fOEG+C+uXNN+HxrIMH9gkk@xT`$U$se)&hmr-)XnbK7M9n|^I z6;<|85EvWg{?kkzbD;5g?2Tb#RvO#|vw2^#ZDDiCIEZ{Lbzv9P%B0vzQGiF&!rxi-+6RNKRl>f34@mKwIb zJH|ue*|C{uE2xnMCYBMLc48Yq&MVDFU0_0jL*vO|pc&a(+Rv=w8Pj+}rkp3SLEzV6 zbEaOAc`9&o#Tqb&{*rWq$47K!h8Et|Hr+tqdix4>MA_G?NUW*rE8m~aBJE3PQ7|Q9vZEexL9P0|Lz;p`s9X~lFKrw0!pOvt$xf{M0!9i z_H0m@bBwMga{TU-Z_6B;TEw*r-X|=nh#__lGP@@+#6P8y5*yFU3G1wR7P}w`i9NZL0>(Km>#>t>AJt~MT(3ic{!f& z4i$xSCOwfw@CkT?hQb~xv6ePlCMV_PnsOS-nlXO==|`M)hJ?48F$jzySE?xt#g)$6 zN0$sy)GRVdD#7-}jN?XP1U+|8I_=8# z`ls3No^tL$yRg|-Y|G?(ZMig7$-4+t%UkASJ0aaC&EPeI^7Ui&6GgdZifuWw-$=?gaoJ;ON#@k&|sIj!(KV8$u|GRiA%*Zci zT=T_%iM6_>K#q84N6Fzfp?5<2hgt9g@Xd9}E1twJu6Igle_bV7fv<-2k*{1mi>58V zdi=jh*Xt_}X!xGqGp6C+y3zlThN+OR@ruW9Nai&fngwp`t7Jm0sMx|s^@flG_K!ke zt{6^7-aZ!Ud~=;>9$~^m8}u&e_-e`F-C)$85f4uf^2-M+`9#<2rOe4#RK-S8)$HUxLu;f;Y^t+e&_s>G2)NS@SiP=~k@L%d;;3GxxLKFL&^ zmR1t!oCeCKxK-eSY~67v?H}7*_p~@JZgZh7`5Mv%0C(vO)#2zRuiD)u6=wcS=&q5^J0eHANEi@Mk_DeG3{-;t=F`P)R6H3YE{f%O(j> z%((6?fVz)BfJ~;ghPZC?6k$+9hVVaoE2U`efyf9%_J=Gt!{)D8$uT|Ys#*nd`98VF z-MeenwROi4|AE&nwbUwMkiLGyjDt1)RJ-iMS-b;&WeON?@I0$Oezc=JGA=NbL?Ag< z5O(*#$D9_6`18K_gt+S6FI;^5UXP~5|%SrB{~t`8mdnfdPmmNHA<7_bw*${ z;KclDMOFiQe!g0C>~k@>bwl5cmE_Vs-}~0U-a*qe4@9CVY+p@gKqzyhe*RuPaUbd; zq$ijBnR|4rkM>s&lH&u}5asOTVPSqaZZk|VoI#$L&e_rX=M`lfN7X85EBfjbq;qD< zRiuG+_5JoCIzAyC__;nacRz2g;n^BR>SP{Vx4PtPu~B((J7RhrT{Xf{+B@w~=M9OE zq&-@oD0(+9R&10CUpVXSBB*k)Xuw|h$3E=kP=il$`REokqksGEkZ)W4kpI6zTq z%Q;+st4W(sYHfE+?An%|`K;r`25;_GbfysMrPTjg%BQ*DVN%g=8tX)L>b-POpxQHL z?86dGYM&&|R;w;SSsMH4XY86qMAUiBq3DL=hOChF;>-4@=wydq0v`hGY~4EX5e0Wm)xr zC23Qh`!v`_5A}viJ8AW#p<``jhRG?lvXsZLrl50A@a=f5*djY=K4wx!@n!dCSzf>Z zOajWX>uFiG%iYr_0ZT|c5~U^EZ5TF*~(N;VTuLt1DuawBwrubu*`xj%mFZT}W*_{y>$yH4W? zhO50hqC0boQ~u1BJRpQ+u`bv0`Vh3JuLw_884SkCXq$N8MF0JpYk} zHhT7!Eg|I9gF8QHZN5c#TKYWmy9#(vF5FN1qx|e1ka0qV<&ny>x|jAgl;&3B$#gEI zWLUUO)N5CrS67pMn@N;L!2;F7uG?40FkMYlYnX|75EIQw^fGVypkiXyi@n@6IRCR8 zZ(+D~IvFmu2fzv$;*pOCFS+|#!3~y}N~`vie&vwzx^t4|!k%QnFE!0WOeuMOD;~Nh zD~>shG961*JrGPVt?&OmSQ;<6etq_%N^a?m_IS+o;F9Q~jp11H(H5Y%U`gE{lg>7{ za4`I-$|o3*7V1y}yIQavc=wlyUWnCUSWo*;aj^=+mYr7O))@|j^0Pxt9>4jzO z*T z^8jUcrC-^opxr6&h225@^=8_)Sxna1OJ9M6CVX5$ILSjva@k~&c3g#Aa>b_-78N|2 zf5s=8a-g6@UyoBsVBcC=Hn4zxDDMC!5}y3Q^UG@1_Vi5?xBp&PR_x&k=Wp0AS)Bam zIQ0c=H(tJp`wFhFrYI@h8~2rW|CP)dG3tDAXQi7$(ykDnITB_fWwD29(%KIuxOfBj z2Wlpym3cd?gTkhR==>{RS~@~G{ zl ztoyQMDtz+)!hV9RKucwe%K@5(k2>3;6n;?(M?k`3*#K^wT+rPxV<##q0C%4s(N+0* zJ)wce*m})CC}n;UR81rwvWv-iw1KTN z)q&%@(mS0~Db$s^9cdW&1<58+bCx1;oO zIRxTV1bd|SlUJ+Gj#N_+h^Uu?Pj9&Z7XfeKCbG?O?WW4&oaqJjpfY}qN@AuEDMLor zwkBcgdt0qkn`vHV&S<4@%SF~QudXus7I4ovcg=S>1QoVzfDas;WunEbklYe;b)j&t{8jo~W9es{8i_wEvS=le=6mh3om0Sl^+ zZ}gD7Ini)Lr0y-dC?gJpGS`wO5ad zu^eAoGoN(Fv(H2hMRG6gQ9oA>?+|27p>s}ncSTBb@td7Gh5CrW{y~;=%f^vY#ra!$ zy?d#RBBvz`0tON-MxfL)9^T)VPoi1ssbRjtI*n!5^RIVhM@v`}jz8Bczv)wO7MPT6 z7x#d?^Y|R)JG_5ZM4HmElwe*P)N^*^ zJYlldE`utP{k^p?Q6wtPwNjY0MQ5WAW^(_Z(0VNKc|K#!VhrMm3cpR4g&5czs_U)~ zFAKwlWgD1yYc)tJhGj;&loy&AC*7fotAio>VL1t!FSv`f&Qc{Qyz*g>CRqTlnDd_J z+vBVM)W7+qp~kQ$tO~Y>{_gN{)^g4al3V4i{9zaEXRv!j51XYt8Tv)F&OS81X!!jh zrLSEgmsD&wvR^qf-Dt7i=$W@!pSm|+rTqp=LM*hrL}L#*5k|c2fuoz$&2KPjYDgFt zRUPrBa%1m58tnZZ(L`Zti3;tN_mGKS%1cXqC@(^pNxM=ZZSFssCF*?{%O>hdd805| zoJ>e2c)DoUm-~1#9MxUiT`cBguuE~lN2LcNaoK|eZoH)JvG6?`hy9man{#oKCoP0B ziLt6fTWXa!+`lf#C>R%9+*nAp-xeh2oFAs+qZRa*nX1y15#37;CJSmZM7GTjbkV;nQnbwlzvPF&y z8FZvI5MSMI(wr$&2-N)y0d8&73MWYsp0}vdN7q`KlpZ4^O|?6E{Toselcpa=VVnW?{4Jp@~zgnp0M)j5FSNm)v^v6#ZlU z{2kX8kTUpP;wq@OLsf24rY$nfpLO@d8+^B6V+K;o@E?togC8}zRMP2SIQBIa91H;p z2d)maN}qT2#*sTZIeHV)KyL>AicsEnYMuIdi^M#n!ZQ1BSU@-+xfyYR7)zmyoY!@L z!Irzi%Pn<^J8ApM_$} zalKLrwp_4WG5h2$*7Un6ghJ>|YPfpL`uN85?Z6*&--T#<9-X*dQFUgDzaM}8$k{gi@nimq zFCWAQfW7T+_Uo1Z)%;h-e0A5<+or$69co`QPTw#)*Yaq==sK! z*;FH)%SaA|z#ifZ&{VRu7s=h6RXP-}{#>eZ%bqTpO5ZaAZ#l>%hC5>fagPa^`Tc(# zOS>p@BkP@)!KPbUWP|T;qdG~jpwBDU{OuP*rtt^-XPhtX^C*h!99E0J=DlJ}qYp^# z9!trlkXTmnpZ*r?2f%Ijk-_+U_cCz1=0?Sf5<$hCCzBMp0BM9~L*`yY;)|s9CA85A zjLki@}#c>I=2SP3T1ebS|l+r zZ%wNdUu>jxi<)%ztcn*Qri+_$hVWZz&g=AVd7J$-{l^KSJva0h&y7r!i?#Z)2$h}Y zz(-`j>Q-&|Df*6iw6jjtl1o1@Y$bz;EHT4rKbT3T46=#dBF1@Evp}vM6|3E~IN|@b znl6o}#-ZDxdSdv%eT=dm1gXC_G`v4uNl#Lg*^}6+nW!7MyY0`3cH-ypON4+nDkeCZ zIrtrP2Am$20DFuF&oenwGSj}+9)Hc{KBNoERO|7jHYG|gv=by6L}sapfB0RoxGKbQ zu!e!NtA^rDBmD&bQ0^}qD!x>9*6wJe&*V;=2gu!eVl3B`EmB*?isSzP5kc<0Y~XOP zhLW?}Z4SDWx|WAKr#Q8B^EySg^4}EI^w^IS*2Lr#^10>s82NBfjwTfPYT0_84_vyg zo~6O!VTY>aQiLln>8Y`^ADBxN{{XS0NiCH)bei7WHK#3Ebvw!3_cW*Rn74K#qbpIS z$&R5{e71Ud6 zKoN8$!7r&ry~W5~0AE4QfB+X9j^qOR5I#TxkfzUZ$Qpq8fy3@D1S;HeO}E@Y7o7=x zbuP?Ea$jO^upp#+jz?mK!EPHTRoDVtoPdjVF3foxfkwlS2FUBU;MSdt?{X|C_a4KI zN(JD6f{{DyVJ7eB6R<{i*2Ohkw<_(G?%8=Ty@Gm#Y`@4O1tT@83Jm}vC54JkB0g-1+MHZLyf@;Ex*an$c{JqgYcS{%}vZ0EZPyM%7IFpTfPnqfiiTZ`O^ z6LG;xF>D4dLuy;-L2v_04^S0vV?Q>1EJ;H>ZEs=zOhdMpYY%vV0hDEwPxcr*4yZ zn9>AZ<%5cEtzCK>b8J=W$wo4%Cl#`Cx2(iw4~7`ah* zF=YTl(#Y|692RFzzGs10>@-vApykumb)&zb=75d0PX6s?YRWq8z`ma*08d+@kCivwqKKQZ}z z7Fu#^?ox|#ZpauLlj)7_NT(?~8tjpR!fdB5m*{3|4wb(AzKS{iDdaK9oYTNYr+yP2i8ZNzCZVwy)8ow$6zK&if^ zq3!B#de}MEbW|uhy-Q!0>U{lbE;S_^ zepxl#`W&Mbj>&Pd#ZaLc&Q#qyOHCQ&PMu5ZPRYBM+==kv`fRao;la?zpmoVv{!)Av z{H)hB_NG1>sKqH={-;BXEy0bUZ62jjy8O%LO`Iki)g$qp6cl2gVJV_Qu%TXq(#*rNJggr^(3GNTr(V<@z>L%2CjGW_xRj4@PWJ&~)4kcSwzDWS7LzlZi$N zXe?x-san@U5XRR`+lQu{3@y{X#@ZTDZTBR#9$u{q**tO#MGE*DvdtY!(Zt4I3}dE^ zU(xVzLYkDcG$z~7=)!DnXis`)%fp^GMQnq?sATjjnVn_eI;(k?7y^`LiA%T z{I>1$KOx1%IlFRNQn<2BE8*5}IWh8=nA2Av6oJ_4QO?7U``a%^awAY!*)b8Sz^j4kmSDldfrpr%$P{@`P6Y%QUZMscSpY_5W}TT=35@AsSOrahC4=kJB(d1;gPo znb3YsTui^7QM&ma7wnr86-yUM{{XVj(reb~!&H)X>5FHUGGnyc-1u|7uUl%b=N$6{ z@OZkE<-BCk;>&aBJV9H{$5d}y$-mU_X0>Oh(@f1bE$59)HSA#B*_%c!e2-hpEKGSe zSe7))3l(fzY62y@gp0ctD1;~?Cd`Ib7Wx(y28LTEPBsXZ)GkNJFfPYR!B&=D@roTu{m3Co0Led6reL%(Tj)t?wl3z{ zX**w2Lj6s!dYtVJm3p~;8?LNv$@@owa>>)kVSS}G*RlBSO@G9~{mXcVg};|Z zcxMGOTNStrn?i|%EaLM&z{7if$nKLIn-DO z!4WJ4zJ=tf?BKW1!jrrag?gP3({qEne^!>cCkVIO>46-lfJx~hGbi-n>y@iUurSOl;eeLOhn9n&XL_D7tFhH`ha*%I@TQgQJpe%1wb#9HQI-Zqg<9 z1mr9!oi@~!j5#WL_OKljUs6+F5;5z%bu9*+LQ8Sw=u(E)M_-n_x1p|zwXd+m<7v`^ zg4RZ2T{Rkb)qk{?xsL);>XUuKIyii>?_)Y&oftjLp!!|R%EN70^+~0%Xs?LMjVDpc zNoZ`L8&2G#8+3}xb|zoy=`vxeIMR|^8DkZwq>WT5PE_Ac!n3C4CVEOv__cG~gIx!S zLJeY)mj|sCWRb%+Z(pW~hMdZG!?caw9MYtp2PR{s6R*Si_1{8A>}M}|9GT49##B#k zqnea@px;%jxjM6TY*Y6*r7dMMyN{VgX*v z#Jm%biap1%LZH|Hi+xFP?k(&T0>j(~BEXD-kFXq+U2Zpe5o%|#79lnuz1SjyKs~@F zOP7*zR2JpFx{~8|h%L&IIS9*0oVW>umDq#7XE{mV1ZWTDg-U{WWCCm<3cp6QmxEUkr7btI1loHIV07AGKXT@ zQZ3B4U|tugl(eQtszQH}85lu)ELh4vk(L&|r4cWOP?o04d&b42BKpCT13-OO=Hv68f(puNzXuG{WQ z-6K%govvTGiC)D9Wqa;m*;CjMw>MFnjFG0=nMM3alN*J4_v)suX{fIoa*IZ#>H48J zs&>%w>r%^)6CaDMa%#ENQah*eIa=3Ky=ADDaCT_hdreP;*yiTu=rz(=g3m%T>!zCB z5~d;adYrUs^rhkAs&D$yZG4-dDMcsNSbF%YD(ftEWwpms8NfYTB4x-J;&_ zQ(9|mle%PDH=!?Q=vS)HqT63WNmz;MWcvh2%FS5c3XQvRb6K`#pG&$V!g+dhXDGvM zeT}X4TIUrC){DO8`g;Cnx#qQ8XQrH8ALdBnXRRwrEc5Hr=#|#p&Y11-E|s%f9iOr2 z;p+85-_6|e@AWoOsNpN7YW3T1X7`S}ob{=ungB#1-7s@Zjf3M z=3c=Dv}=|Yi3gzynl*bFHF%{Wr)|GdwzmC9OntehOIG5}c_y!Y4)+%od+2JM6#e}U zk!PCtVthCZ;%7QCi}Wzrog#Mf%_cmf+%1S*jWO~WU(}ITX3s3kP{R6)voA0Fq0rFi z?TyToh~g~lMT<-_xo+94y;gdYPLYwCdX4U3)v0f(G~8MlTI6xmrM<%SEE<0zNpr!I zO(QEOxptFXw1am-W-^Cj?aFb?Fa&DC=A8TlzP^I%l5kX8lH|Um=YfwzyL9Fu(<|T)N*5eOLCnk009QzBHVJ!cOJo60uUo0mn6QWxEFI7 zJxg;JxdKSXV<)i+AOm25Qq-KGvjZzwn~rrJ!A*>!@1coSzTjuU8?ksqdj&d)a}I7> zgi>-%%kB`iw?s0zInV$l%eW10Snfc8+i+r?kc+rhR=8cqB}7)aqXTQy*2;)Y%0Pfa zn*cKEGmF0FtC_{vqhcu*s9&)f3P1n>p#zYJE>vG_i6+*>ld>>!y8zo}AaW1@s0Sfv z$XjRzaQ#foAg!rGOUZi}^PzbGaeYZAW?|G3oyE;!{-E1v+}5S)Wz>Mn+z~SU$R9G0 z6kUv=ezag`PxFOkTYWY)+|ILIXx7@X0^^ee^)l+SDs69MBJQ;?dhA`6p!sFVS+4q- zUg(D5mgw6Kn`&r_xt{`BhEul&I)?Qn!7>)$fs@oRa0A>EfqShA45$tH3L<>V$t_@q zB}C+?5CQBxz?_2H3&1J>03fgg09$M53MV!#iLfA|z!VIUyRzKG$};J91Ttx; zwATEXSk6@(m7c~b+>ujnU~IH)zNF|}4Z)@a`5E*u;cd&b(;of6wxviNr(*jRM(o?= zt6t>V>uol%lHFX|saO)p(SYfBYI;VnSf2;N#f&$-Eb51wN3=wm5i zV(C;@h3m#GuVdnP0^E5uZ*{Rq--t0; zW+t@oRMVYpW}Dr7&Jp}QHu2oN3C6t#Y59@2bkW&_!seKYeRx_@s~`4tJ?vMEspByY zrYfA2+OxD3g)H|hoRW1TPyXjm*u=+f)ya5{rQ}q>=JZwTU@LU4(7DYz-dkRN8c|F7 zqS5yle0C0{NXCY11s1pST3@N?C{?K+;bSRRk7v^(JY6g5vRCE#yRVnj-i4oZ%w_Gi^&%*AB5I(PChc$aP`NYFH^hJiil4+kH*PCktfs^FAIs!Qvvcjm=V_Sv_g!eGITU zgc5VZ%_q-El`JiKiN7uBzrf8$Kc;3qH2(l|<>v_}tP2WqsdX4XbbTM;9Z5Cixm)^C z>|i`MiLHl}p@GC*^W_`-{{Y3qC2+@!z7wV?wC+V1-C3WY!@zjTtEpkDMfR06zr3sV zb(v1`h8f%asm3haR@3nF+l+j^4!fy|nw3c>B&~F;V>&WPSp5#4?B6kKDa!zj0Fxxer| zJU{HpN*~6@Qc~xpmHzBSEeSayUyV8~Nc3=dd&I(Wf5^B#_cQPq;rPqr%u@dV zcBCTBb^J5oT5?Kxr%PY{Q5MU>Q=9QQVdd4ejo*cw(z16yVU|tcxM@=~lWYF~%0J*- zJ_o@x+l@?LnXZa;B-MurUQ_h^hL&AjKkTQk`zFubc$F)<6)pbjKW9{Y4@oYShi}qS zZ|)~k!7-2abS0+Csj~5d^ZI@zh``p2pYY{w>MX{V4z#E%Q>M#0Q8P5t2FR^JPcIwTGO0=G`c#I`P@YzCeshjDc~ygT2Qm>-HzH>eMHrieJ><_ zr-9G>ETZE_Cz`gl@*^vLrr3C&!@hN?WioPlB&bC<@-u94KPz08hsJnLt!y51hLVlf znP+C2XY5hLHx+p9yPp^Slw^>`b;Br(WwqLbZSp-TzB0g5R+bWJ+h*dwyz+jYYiXKa zPPV+?%sz9+a<7ccTww>(7^Jm660TQ>>UXB?-YVzovhj8Y$yFW=ILl_|4NPfx#{}ug z)4?Se?`p6{@p^jGxwhqPlG70p9X}|`a_K`I2~~%~*{hmr<#j4!}UG3HS3C_#J(^Z_6L*KReBGiu0)l()PFIf8cSy4`Nh$ zoi}TLM8ClOTECCz!d()=!v6sL)Xblc=y@uChlkFp`x~rdgtt3CDTjwKbBk)5xBHU+ z00Wk;O{;RV&l^81 zo?B8g>9c;lEZq#3671bMB>Tc&;C`2g{i0TLg|PT3I6L2}Pt!wt{i9AXi*Uidt`w!A zcTcu;XXliBF^p|Z)0a!b9CmTO9{{Tj@oqZl$pZ@?(U*Kbi@WwWcF1nQE8250O_#ddt z_KQX}ZP7u;x|9C^0%E^tl%q!UVM1-K7gKiq2jTX-Z2Wpzby%k^hh@)8IY4iNJZqKDPu=j>hfT{{VR&u1%HKc-l6D(rKTmL&TmQoK>(-ULGDNb^{rc)~^*u z2&v7z9I2#n$%ZdoZPJ-7S@7okJ$D=H^gcVsm^#wJ(Nc@G_h|iK@O)zmQpq2hmseWp z_daZYON@5+BF|MlT<=Pc&`hE?ef}uKf95F5{%yOKZx~;G3dsQ(W8J#CiSoEUzwMiqzm-=+% zzbKaLo(9{Z%Mw&XC+VB zrfYZ8hKpbP_@eQXZ_L~nP`-!XRQ;dk(5R`r9Zt9XElc$_NA`J}LP}G@)YFLB{{VTN zO70(@N|TFMMlKpN^cubd%__^OVDSlm^4IvDej~wor70-O1zk6_>4=LHF!5+#wBoP+@&?{V zPoU{NN0wGwML%b9EVB^T_A~zg!*SWTd7UJ;)b$~NsH$3Yq^;c=F*tcbZS*w~D~i?$ z893RQ#*>rLH|!0tuuHMEQhkk)p!*S864dCY9d#^eJNla=2APXGRo{TA(N-_9`;UO} z9(F>L-Bf4cG*ePuhw8txY;4vG6GwF!C-pvdT%N__BfQ5tKSy>xFZPRDqXR-duk3vr z#ZKRs^*#gkkB*$33UXGoTRCU-wa*^iW6FAbGtYAT(-}7EOVr?;wK{PUyqU(+ySeYh zO;xP6+^~F@G?|@)R`xv)G_bJg)W};>jH%OZO2_CP8pv^YthSv>RHZ1sQSg|3D#iMr zyZ8eYN%&(A1k!Q3XUz54IK)KGq3Fl>*OWu!b8iphsNm|(R4S;(I=fvTo7bk{Qc0iF zIhG=fa_aqUS<`=G`Oi1$c)7T3bDyNi`SFR{rL8$BGcl)<*5usH#Fjq9cz9)i_brQV z#*v1lExiSpMmqxYpyt45LA3>ajaa!Y5_*_R5qQ}eDo*UgRnlzAH2RZlv5XtBf}82F zjm>G6+O*VmW)Y88gzC^neJ?xP><3;Sr+50Dj;6^T zbRFfQI;gc3tKYfKT_RmDZ$o6bxrHeyZf4|`?HOr|wlvRiTM-EC@9b!G`rextNh~W? z>3SUQtgpG9OD5YiUsI$*oXdPM6OTF?>Qr-j?qPcp`js}MDK!XkQUEC~E-$DQgMGji z50Ff%TI>{8I&hSnszlQUx{k_KdRB%k&}zQ#OZd_@3)Uq#l1?Fs5rlnOI30j)V*vQjVcYxmC2%<)2pX* zj#VA3o3SA`7jvHnqH^vc9*#BMoKDONUxrsas7+O}l(jo)^+E|krIF6@)}8Rrds=GP z_wIT(U5_>~YOh~fxxG}W{c$;4x2~3mYs}^RG?Bj~s~T{Vd$X4j3YC?mC1VOTWrnrX4>oA;aM!s7^cOokp-{TuAfXG- zB-?NV!Ma77lyWG^=Yu-O~F$c>Q~ z*vFJP9OzYE43_AZ3E72a{{T0kWoC>UyDtcW+u`&qR+@EEPkZez$a*(a*> zH%a_R=5JKlwNB`h17!XrVD>LvqHA)$v6zKK_Aq;f^%8#)>~sPRkSZ3{mx5}G!wS2j z9twyRQIjxQ8FvIqceztB<(B(_mjiKqJxH`8L(!RBjrS@F$7WTbf0%(8Ug)bs6{;ID zO1m)AN=oNcmD4=ha_N!X*18irKhEyBAF#1a2g6Llo|2_w;5q*U${NMTVQ0$3`2ox+27~ zYf~HDna0v-HlugD;K8du?C#f&=9NY}yCZu=KsHBoxzUQ33Q+*nil142XW@B$f z$EHdqny~9lGYWH*rtSKcH7?v`xx=f^9UG|C>5{w9 z?S)j+w`|-n&5)N~ z`W&uTmbE921h<#G>*!9FT(|r)ESi+@m|)3mB$kz9vOWYD;R&`fSW!pcsxz#mspKw!0QD z7a$YZsDKNz)VvYuh_(Wm#eGZ*b_T+1nGurL*ehFXmn+?v@nDh;MeGVCi){x1eo_a> zsa%DN)Tr4NV&CdxamgBF9>yzj$OX|asRtls!5by)V|#=gu8efKUgY-zkaMYcKsX_F zu?jCGMmrU6sRqsm1Y3F(ED3zdO^jUi&?zOWG2p#-+?#~y009mHCChS)dowt*ShyQY z?rV$gWzB@mSi`GJ8P=R+(?+0$_0Yw;vB>18x3PCIxo$yi zuy0ck5t`i2=D6-`TLz9w$+)-_T%E@rfC`Kp{v!3HfXj^mud7kk?gq`pv?o%sEy9B1 zfuKaWe&G+00A5GP34c(70tDn-l6Gb;S7;+W1gYFbftZdsiBeAtCz;h;%|+9#`-=C&1*??VJpr(<4;f2v0EhC zua8idV#W`vRDOj^_II62r~N`!e9E*V`X0^$_GO87mL^mwuj!L=f2E7YS>*i30fd!o zN`zMC*N3R8TF*zZ`z9B_cpMF1Hl{wDG;62JOZ9Bo`-j4~Ik#UiU2p!~FR_`&GO>Aw z* z#6BLQB(V8Xl$S1)VfwPgV!iCOtv?USURj8n>uGD-U$Ngq!x@c52Mjf7DQ(kDv-CCN zoD~+~Ln@3L{+Y#njB0q#Gp+F9Fm$f}0NImbD?^p^`Oow#GO34!IAJSwt=!aNzPCDX zzq9Pkzm5u%@8|yjf$hBK#dw6gj4Y%6?GN#0nw7j;QC_E=PuHq2{RO6C@#&&qevd6JRehRE|u6}oF@^w&+BPCZ|9=Ij3S_`esKDEI2bKk+<@)o4M#J2R%G z7ov-~o#T%Xzn{#%NyO#YFNS!$+LKY<>I&u)ej1DEo?%V*N}|{3eq&cK%i4-~xz&91 z!o`L=4;gh)!s9B@;jf0{ojxI*TkZM`ztGBcoZF{XT)WCfbn{OOVecw9Cer0mzuf%F zrg2S9ah?Khe09{==8kPrP@Ot>Dr!;Jsl7`X39LUzt>bK(jHIY#K4gE|aE<<48tHz} z@YrlMp_f}$(u~qyWAiH6y=vGuD7-X0x3X4~JgioEiNwiDtm2$imrQIq%&bRuC%ArY1Wf@+?=Wn&+zlV44Y(;vK^YbZ9 z%V#RmBF(3U>!*pw&qbqzOM;Rk1X1JMEjO9_OtyGqlHK}H2Z>@No zb{e9dKLu4sw33QBYUAoqsTz}_)FrP=d!8O6HpW+r{6;FJOaA~=u5r9a@$_Mh!_%i45|!iETFHEl49a-SE@x7Wc}AT@t)V-|bS=k*v$>4F7DATDt(+>#L*-Eaf+~&r@y$GsP%qUe$PlcZ}=C{`W08*-*_cJim zJsd|;qdVfMw75pRE-rAw#u2F0Uh&-X>QCTiRHW1+*&(6y*?h1QN!QG0MaiWkp|bZq zc~S7a99p(_iK|B6nh~?V(D%X1QXecCJo4_+Fn`h^vr1Z$=uvE;v;U>RrCCV`UoN8-*&X z5e#igi~BbRWY3KJOs~1IVk$NHi^fx@(AUM}{Vh?!;uN1UsdI*;YOkln=6D*7c^OP8TXd&;n{e5-T~7%rb@EDes&P@y%=uMXR@I)COM{kYnPKpY z5l)YtH6FT~FJDr{Z8DR_9sdBlu+Xa+$19|xf6C>#(=7K1D*j}0JS-cswWjtLRL~8#4Lg{~Ye2l6|J!B@fg^n`%=y-<@7`UvP2WQLR-&@64X<%VSIUWw2 zqZ@geU+jE4sVjbFX?TYw<2P?oYR0Sd`r4WDsMG!5gtF(P<*S}XGJRQo9?zAb^3$y- zO3F^gr-+@Jxu~S3>icN;qK!PVtp}80DmuGWYvO_PFA|!ZlHb1vndV9E$=3d6;;e2S zt`{9nnv$zRHF}k<^s#@Js`iQGDLb1TX}G1;p{+9de4jhRU};vRh`>S4Fde7HB*06<$C0`>M?bupXShN zO;z>Pvs|L49YPr^r&8L@R&3ygFALPKgp*7D(#L|T&ev~4C5UR)WYm!reO?zEmqx2~ za5ZHMXq8K9eK&@)JhBy3UKXrsxvq)zT`$!9#yF|2PfIS$DpRcqb!wVtn>BC8aP3H> z^!|~I)RJe)`2M6Jlv14ANmStK!)DWXN;2ucR8zgrkNu?PlXwh0AL^CWQmu=;;|GRdqSmOE7wPJimoRODzz0yRzC;B?s>Jb6&qH19JOasPV#!6LltHt zMp=!%rzNkK{uR7lKNW|no{EyXHcJ(TbDgsq`}{ZL`K&crDt22NJn42jcMcss!WHt@ zgN^g*@u-*fPA%BNv%^xM=HdK78k4rLan$)QK1+i6&#`wY#vbpT2~9<2G_~GN7O}dv zGPOCue(}S}TSo{j51aFB{{Sg`)o;o zd}vD>hp9InwK{V6PnA`dF)FIB`F@4moMY|v^)o!$o+6$eq~QtFjpEf-lV4I{>E_s) z^=U$-CsAtLtF`^-$x5~DeyuodvF9%G`iYs9{{WZQQLCM0xT#ulRU^MmcF$U$hOnpriimkBNtjvvkvSXicx`qKsFI zvlV`*VPu~Ui1#HpOYi6VNy8|7Dvaj%T}%6obU$c#YLRND4uZ1T%HMQ;d0WKwF&L*h zm@FfbhenXH_xCcx=X5DngzM#adeDoziqht}%5Z*@gz?r_Q>jlcr3U$o;i^}0}J=Jj*Trlm{%;e|N!7}PoIW*Jpl&BrgRP8R&Ct?b9ToFA+#>%(}OcX$Tk zm;V3`jZ|v*My{^}p?~Xx{{R#6syNK6rK+^CN?dfz*-sOcc~x7fi>Fy@O~vW+5tdhj z^vbwz1UkPQY0_`Br4!D_<$e#I6A{;pohe!QcBu8!Pt^SWSgbtKm*eYoz52hz-&^pK z!&CC}$0s*w)0A51_4N~zYsRqhD&a8wa*B6-&$aN!gmPSVTT2mBJ*7^(m&HlODaH2H zpEXANhQ_Q7o#O@q_jl7&X?@xFRh5REZ&_+ zy;n^*xAaWvsrxd+^#1@48F&8GJAIFn%kX*4Xa1=0^J|#Y>H8j>D(Cd+N>amlkylTm zyWi?>on@Xb`oFUoxW0@=9Y1M*iOK%};LjSL_LQ3Rk!lGPs{<2<_)nbxA{Q*-Ep zy_L_YcuKuj__Z;`X0yquK}r#nXLo5{_dYkHrEQn}PNC|w@sGpH@(gE(ag;TwPTuLG z%$`?PKgzyMAF$W))*ZvkmIYM54r<3g`e&5Xi;ZlWn|nQBWAt$p_?L#>IRB0D04deYx(>#2yZ$ zZ+JAwu+v}4&)h!;;Hrr#b!k$6>`qJWZGIi_z9tq}tEc|}$V8m)ev2ABJMnm1g%pSfd&L21SQX?S@j`9Sc7+SpprF>c`P8*LNZq~xrZ3=Tj55DkGq z5OJvFTnYg$6>daO0X^g?B8R=+Kd zhHbeoVse(a!&gh}Iv-TeoYayT^GQdr-iH0(Ji z2AczRmlj+OM+Tc*8@g4<;azqmv% zpw$xBU`uLU%VPAq0f@RSx3B^YfGBbcu?VNRNH;1dEs4nj#3?KV3vq1*z*2GmRUvJl z*a^v2{)8_87#@HKTaIo31-JnYKmkBK00auO3vS^=i#`=#? zZFfO$Zb@xP$X3n8wAXVK^)t4FRvZ^{TFsOSv}iG*Zbq1;XW0&Y3egh!l@)STD{FFa zPA)Vys*;Y+a}Ktpd+JS?Yh6jCmQ^bCZee{;(~>o9i=zCqq)hkwiDFM!=-HByo}z~OKwelb}~{+W@k>(Fj?J`RiJXya&;{N zYrJ70npBh-l{!*qY>B8v4^l zJ$ka~J;-dfjGLrj=Iyb1q}GUOJ;)@kwMLo4UxeEH#k$a1R=YJ0H??JUvz=4w$_GU41!PPHl*(*1pin83+=I`iZd%amv zl}TRqG?_^l*q~#{K~UHL1otlY9^%^Q1+jWcx74@Pjp>E89_B=2W|;C$O7~>otOJk$ z058}F*thIX02bk{!~qbzfyfRC#)Tz;A$ib(_5&go_aGMJ00#y6kGWR*fsZ6MHDeGU zv5@1`2u;hlw%`nuT6Zwy=%cRTTJ^rBJDZ(1@-VfZp$5L4340@CjD1Ro*);}SdVv=D zmRi_bvmg_lOS2pc0ZJ|0w(JIUqUR)%Jqp=gCl7>9B8m;Y5SnQH8}@hL{11p|VyBD5xJsRrVGC(>x$>SS z%jxC$t!ywkg*JE={Em5tqz}956Xq$VB>JeV1J<2Vvg%HVXLhuA3Z@D-F zB(+9;Hf9lDQ#GO>rY<*TPh%U{Dm$y(mojerYGYuD?k)wjDi+kF>{LZUhQ;l;1ng(k zb6+UQD}k{+3(n-Wg$kP(N@bhuYv)iG8?kY@Pyz9%OF$`{A9EJ=5ovBgv>2%)B_tQ6 zEwyEey7V(p16bXgIvw`VzFTZ;YD(>mk-y4mUfUe=Z7^-FTC)pkWZM>h`h@9?gRzyh z5vMuHD8;wgBIsfbij73tao4f3mKn~hAli$YvTP>WE!f*h+uZKWGKpoCrA~OPJ!vaz zMtw_D)ylHmq2S|*#AfkT@BaWcjX#Ne#*MscIBKE?#M1WiWg9YdNhI3Q z@;aT)tUPODB^nTvblFMtfyrqo-r7D!_C0KNQBwq|#@tk^IipGyY2xa}6>PsUN&9_E$|4g_(qZ6SpWaLhI`8|B7QSyyx8`CcKYf1Y zX7I6B-qp)|8H2AFRIBIH=i+kL)uW~79uUAk;APHsT3VIFO<^+FQ;&Y6zQ-Ob_JfadYY&H^7+ZdqCVZ^$xQf_# zOAkZKt1slag)FBVQYw{N&|PoyEp7BOT(dq7wDt2J9cOBbZnu{o_F$sV0>6!MlZ@q4 z7ha=#DOG>ma`=NR#NiW#OiQfXlvSY9m$CAg+BNW%oh(Hfw5PvKSU9^HiL+aWvsc7e zxy{SWmEU&X+~b~ciIn=4M;G2M$CA37Z*2_l{WGeeIdrG|%)O+`=yKfBwM;}IC{DV) z7s7d7GZUQQo)$?@Hp**95nnCC)VlK0tt9?u(_-_i-w%b1oou%Y8#cOAm&(^Q z{{W!)nalXN$Vqc~P2cr3KLS3hJVqHs?R6&q09I#(wWw~li1P62c*8cW7b)gSoR*3- z=`wVwm}Jo5SL#;v94-bgVuO6z_JtqtDHJON_+PQH@%3=|$aBr5jlN z2A6>{nZx7GVJENUQ2ziE;Jk0){J$oz2;nnoIHx_~6qAq8zTC6QKA#_m#MG-+Q*)DV zmS~-Nk9jlc{3(%Txz1}GE;lrW5*-~~a<;Fv*^i7e90p66c{nW2mNpM}3u*Mw)K{eC zxqP=d^EkD20M`>glF6Ls@CbaNaNd3-wDT)JIVZ{_+QBU>)=aQJHS ztx8J~9;Fz{?mptRnDUb@NGrv*VA|lbos){&(84ip=8#olcx@*qTcBqzCn>@8RXq8w+-jiggWIOwF@tqjxutGoV8}?K8;rWtbK-6;4Iq} z4>mYYg7&RQM=sA8E!KeolGtktyo1~ zPMjR9y-hfn;&2t!3bbm|sMXYG2NulQCVV$ph8T=A=}DuKSca9h_cy#;>Ppj2=+}tC z)JaOEI+WAft_@t3to*I59}Y=P$+=%sDs#W)dKkKGdmAaZ!8a)U_Bv_Lk>)niN2!X=JNj*ADFL*`tyLTrQ~w zs-2*dJ~zkM$yCHphgy_Ux-L^y{tBJyG(p)aJ;?U<@hVG1 z(TdeJ&YWc|J|7h*P{l(NOuu+K~WhfVrz zeTig+dj+6vElfI_lF-a;t+GwZPTL7SmR**H4)S(N?Uz!5n%3xbzT29loN9E*HSTR{ z(YrRr_LtXT)uAuja|<~zHhGHs1vS{l)+Daqv83B)RBT651`*X0pc`hY!sbp}A8I0;hMf^smdzxz8x;EX1o#xwTS6;eE<-*gP+fa?n`dV+eohIA*o0jG4 zmb#kh(VI_4XUQc_NxSS#9GiOO?q0caa^0t5smr+Hyq!I5ZcjGnJf$xB8ak!bqa0V0 z(DM`CKT@fsYom%Yn$`ZM*wt*DNVBpPx?Yl$eWhb`F;yb|8r4<%RA}X=8BPvX(mS&y z>}N+PdNi{XLEUv&E;Y)oyl1)a`w}2{5rQZw;Gc>sE}a z)l+NwqL0-)88tiwNi@3do6^VQ*jn_|mZ$0e0JHo=YC6$Q{{RAKnk^K|8+E_^H`{!V zpYdzM!wE`wiZQB_c8k*I(4Q0gM5^INgj3x!(dus$#WSZIF}#rYy7;`0&1$w;SuXVI zo?a@ZML5sMSjtoWUZ-=)#a5q~_0Z&Vl%?u$#lAb2t0im8r>BaIIyh+5r;Uw9*W`=U z9CY(cO(;s7D#=27q-d>1P>PhfH1uBQc%P>mMAysH!{*qUQ;St(?ZbCHTm@{yGsH?b zNJgz&b#&;o`JXJJ@9J-(Qmr}lLQ;$G7h_$+pO@E8rg0i7Fu~T3N9L4WjZ|?p)qae0 zs#0%?muHDbFvP?1;;Tpg`!_sAY+XnywWU$56PE@rGd(&}r?pQrmKvg!3iG8cy5Q{5 z)VyJt(rrT>TBL8JocH|?mi$ccwUtVC>s{5(YPhajuf3`T$BIXh9~||F+inTrCVZjCHLqu!PneZ}56?`LDcV|Hw(TW+Z^+|MCWZ2|Grwq=Kr#%@i-dKNK<nlV@@K>SG3H(f z|ATJ2Bh&W{YR>PS4dlp}qto}2Q7=Rqz{ai*oogB9j2Q)fG5t_v(*vGdL&cF48^Fi? z&!W-|e>NuME7CvPN}(u|50I)($y6{VGIvKeA9w3JJ*9WC-=?QTVK0r zd*rSS$gdm9i33laO>>Ygh@2tBUAziD@966DX;3wg`^# zrF5>I5}5CIHT~6Ky?6YI>tn5W-%l&Nbi>b?DI-N6N9ky1Crj@JxX7uajJS8o$y^QI z4DTyk2HrQy30CAYv}YL6H#Q*!C1OdtNfuwB@_FtNb3x7R&8RvRaeNPlrJ1%n(-wfl z<7TOv>&3m5o6nC3V0}+YM~x@?7oV5hB?MYZbEm%OxVVdv%sstp@g89GMz9ND(?Zts z#w-7&E9t-gcEOB59{JyA4;#vltmf`I_q!E;y?QD*?I|#qo;dT(IjXyKjZxd;SE|LY-xIHaaA>oy3TVc{(r8 zA%x$1n{1J5bf58l)$sfjQhztG#Br2+Gj3J3VVt-E_k-qmnR{l(Gyv}Y1zZ| zKfrVEr)wsDWQ9%22E{#TQ;|3c8}F`k>VkrnFOB ztUsmtQhU&4K7Qg7w4#>V${_G&*gjKkR+nl^8{2kJ!Y7T)>LRwlbS~?OJgCVC#B-8r zVHv$^=MAdzKsqxdT8@@xOx_Fj7`9)Rd7h*J;gbUjA3r^|)C3Mf{WKko#2w)}YYl8% z2JT{B$-WI-8n~Q@jFM8HeX)$`wqu!8;Fi5^K#0w8OzzrZ%l8>IhIw0af<*18W~M{O zi%hW_kd}xhCH9O71nTK!W?*~?X68Q5NNHe#xIqRZI5U*>dxbTc(G-w-{S97w?a1~j^PbKyfkvhvUo5~OMN{qkd zVl%NhamCcweJPO{sQFkr%UkDf&<9;pD6%^w;s)el#52Uqq0`HLB@2CrMYcRJ)R|@ z7;6hFK_AoI|0_Nb*U4KIN1)8e?JRCD` zrl-e)da#jkM*4jy8U5D%nN*cC5|piJ=7UTkdrnQP8;Bk3(7k=qgW$@~0CskbpFcAdO9W-0DoxGJpVpg;OkUm-Ai2l|1Fjc)A z?@z&GK73n$F&8NNTFv6F!l;2mxPwZjdPOF#z|{9#8>tiLBWdvQp^8bLi+;!S#F`Bc&b(0caVV1zdLMA-N6(L7l8G}0_j@J^PX>b0 zU4m1;LCqCCjmXuR5UM%imX|*n%3u#{=oUI&rukWZn8OgTG%otQqcMp;V!rVS-aD)N zu{+P}qIPrxe7)r&!R+jiT=Q#UBlvj$>gcsY-u~S=%=R%&gPuTD8CAekI&*C-Gch*< zT#Z42btTY@3-X)1>V&_FIaG^f^>H#iET<0_=+Hk$bzh&?Z6F+TVOY?dr`O_nrRuc4f~vwp0fz++6=2I23M_0%jpw+w>!3{hFYYiJbV73?Pu3QS8ohLAR45P z%QFI`G_TFx1=PmR+_Tf3eexasfEdd_^90Wb=E(RGwA;Sw)#x6 zI%QHtJm?1R-_5({3Uq5yoZ7lYi>r9A%vM9JxMRqU{~ZAOdd|Qn7(=)XGu`dz8ROIzOE-b4z1QlWtLYn+QP!)#Pvt zDlRRMuH@;(g_y{>&AGa|c#}TlmK{5vWqnw+ZU6;uXP>Gn(QErQ{0Ps*5;ttx74HfL z!Je=xTRF|92X$O8jlgb18UTH-j3~t7b-dl(bX}xW2jQ# za2v6abm;13^xwgF*-<8!R-dD`*7C0HwOthEo4>IuxFc%N1#XS0O}3HK4!M^Q}oRX8v8 zAgfb{86_bdaV6jycu{j?6fk5%qPhdLQ>UuJN(l~oKbWc3sWva!Q^?XJ^vssL()!S6 zuDY>s=vphg83pF`shP8sRf=pKQCopK41@|8Y+q*C$gWaDac1e_7w2olW8*~!=R(m5 z^e&^KxAk_fU{xdTU$GTaOO-W18&;5SUy~#k#KH^r?-g^D0?8Cs^!JD~uIT%Z z^?MfF2*c;!D@%+9-*bD6yYo5kNSZEsD*P{)@*7U8DPHbyEoDxK$+`?uPb!T$jH-$&J*M<8o)>QU6(V} ztGR@yZA`8BbI4(!S6CJD|)k8U~S)I8^6DdW??Rj7w!NM!P zO;Pw}HXLIYi2s4+>5-Y3x5TyWaI9Wd=AZIg{`1Di#~!N2dOea&>mO-T7;STL;8NLaP-QNHpRd z(t0f3<%5^PbKBG`kso}_QO6!sdYV!vD&l5rLuhaY4~QCbs1 zpz`kmVcC{nPv?l8ji=`Uc=u1%2Pslouf2D4U~qqFt#gft9k1x7hwh161!!#X5ARlA zzd%~6U}sq#wBvAg8K&h^aInTyB7C;YhO8sMS3sieRVi(m4l9Hx3?)2+pYjHz?2#m`>nliDH%9it_C*fi09z+qZ)^hyG^$>+*mlCyPtxQE%tx-cpaLU5` zs#u4AjZfF_iC`6S%@i|jue^-vX@i4F zjpcYUCCMzZ#-T@QmTm_j4z2Semv?UvHYW$vHnO9~(e-I4s^$R1EXecPVj_Q`M2XiE zgGbTqXWyUnPj3}FGK9%C4pGF!nOxUScP&B#Z=W5=KcbC7g{m8~@k59qLs}Z9tIQl|+*PIE z;uRu(pi4a;8%nB8gs&)sAR@}CA4zBO;WDkVA|e`PK;UW~4HHOlk<&L>)cJ?kUPc|s z`qJ5>A$yVC*AiogD>}6Hdi)}xk2@7+A&L7t#_keAf6(Fi^Y!%c%eFZ9+|6LI?lRrv z`C+ukx=I6Zg;?1ot#{Gscq>S#ATGwQMNmA73M)VKXnFK+{D6P_?;jjhD^T(fQ{aQ( zP^)7?it&G5F&4T3DIk<_I*pYLdc+|7{nbp> zOye!umVt#lOn)$p+GU+<{4^lmttmZI(o;6R^{9uZ5&E*VBK{CkI68Ks8kJ?uLjS`I zoX04ESfL!v+)w*gQ+9fOt@mA59@7fcyMg~bQ%&L@`!gI9zfTx#-pSMYA7E7amY-m8 z!Qo75is4oSYrx{P|5yqYF`NdlV!?yglnhTo2w906+4FNdt>?&=Lzs?8&)edl@5Eor zj3<4E+e?nTf}oy%b=?Q>SAV&u1GYj|;||@vUl*sYFIevJKGPt4qBEoOSBxzT?aqFj zh4{{XtJd`R@SEp#NX4{ar+#3aH?l^ded*AknX~#{M3N#(m0OYMz4VoG*Ek;;GurLn zMsH^^9efvdM@J+Je)D-bu}KlVkh~wvc#~%F8@E}wsVVeVDoAwo1MY6paGPEW3Yy`( zN#C_{nH3j0Lu33K<_>bJz}$1vW}yVHwTBGwaGQoplLr$ZN`AZ89W|55>+3xh$w=!)FvjW5_xvvKJ12m|}ZTX^uKZ4%pKz-;YIV57K zsE``rv%=e(_8mDk<`+DOSWRqy-b>u}c;w%t@}3tLO@0u$C^<{Aqd%#{?N|2cR*w2Tz1~2F zi890#i?L6Z{kfKkLmRE2CKy;jA~=oHtb1f3h>)J_9H_63z8ZGpdi0i@fvuOENVoogn_F5J$EitsH*W&73SG1GbAG8dTDFgV5-v3G4Kr{VIN|!?)>O>dA2bwd$kF z)#8$K`>q@IK@7wd`K{&#-q$K0e-X5cv-?zpa(hMQcdWg!DtkZkW777YL8nIRH2E}B zk%7hmt_Ov)D=3>&*^JHhixbEE5II3qAjJ3GDl1>fdSAp%_NHfk4&>faU6cOoiJZDw zMTQeR7fC%oAezp3s1PYUl`@8o&e$NTqBh60#0~|xF%!}8O$z(`Q2CeH7om~~j(xvy z!+qvV`o6W~%H0on1f>`gsN97JZ+?;9=?Q4K%W5vfKIKG^B8iFXCK`?Iz#~a-0G@z_ zCB*|;i$4?|fnQ3W2%0{yrjF-W#V6x`Ie*)C2ELt|Y5Jgn(s{mC$H-A;Q5L)KMU6dr zsE;owrb3ut(lZg2m%7`Qcti7CrnoAv358?|Mk!xA@q zq2Q%Vm8MAIAdIkU#Uq{?w;O4~KK;mDOsun&bi+pI$=RFcSeeo)T zGVzk+i|gB8w7Wu6fX_tRlJ6aj&r&3`IFIfJStyQ}BWsAozPveU_s6F%Rr$FEqq>O~ z7r}x-JeV}YnK3SE{+%J$yYH1&_jU}k>>oaDc^l+c#kK*#cj&?+wfPSq?NmOtzLL7 zxTRW8;8YkeGf%TYdRH(fSnk8ydnWIF9If`{JLr9A3rz-Wmcplfo?p^kk-wS7OT+u` z-kUykl&*aJ`0-`cLt9#IM(LZL38x2nvjL}Erg{Hay`SB9x#8-#YZS+4m+G-$khZUJ z#=t0jDwN`QdRJvuc7R{HpPxi@hs(6+&l5g7{bS~SvhI=UA>jnPi=+9S>R=ZRiwzmN zpNw{sf@Jtx>qU!wN+(BF!bAiOxZs~R-vB8F0HV>nP zAO<9RBb%x)Coj$B&W5u&WBavvGL_3+XV=U@qZr~l&6dbPZf|k4b9vCLYY_8%%jZQC zpT?IF#()I*D|!>7x6{KI&f%jZH zd(U5}POA!bOm+_4jgI-j`iNeIGS<5(9-c_hDhy0n8%(1@LDkn`w0y4QjqlTp9+8{VoE>} zTZ@%AGHU}C4JFFtk!v{vo$ZSJb$nC00(*|BP5}?Z*AB$RYD7s@fX4u-tx@8)Ynn<~ zl?X@~R>SG{*7(%dcyRMK6*$BTr^a@l5yPw>;0hXr%sYo3-O>j^1-oRoK+?p0CA+bXAO1vv`eA7zoakje=3hy!bdwrP0?>9FL2hNgl3 z&F$5@-x{w7^qqT%UC|MOi{-P!*O#TBt@RpW=d`NCKFDEt4Wzn@`QO&Wc)yDSeGNun zDlc)OVJ*3N1M0_-s!3zgH`7-FCc*CGS6Ob4O{MD zv^MJScgsGhv09j5g~@sP&CprE*2edrh}yKt6!O2~Q;{$U37b0OMB#>2cZYb52IZQ& zcu&d?pQa2u_3%9^JIcSrCJ^m$^U{0?Dziu#jga!yXbI-^$^Q~eyyG`z*E&&Z=I*H*a~{@M3YM3#j6wM}5u7S6tBX!;QK zy-;0VJX~#H0i538+yE4y6_Td+cB+%+p8^WNUV^~4?3baCh9?kGhRW>~=}dCmkB`?A zC$i(s=$r`j=S-m$dKT_H(au7nxm&_8b z0i?-9t}EXd*{zOT%koy?=VY>~DX8HebveL5N39FsNMNE%{?>Ax?>SnoPt-Kh{K$}w z_Q6SA>m;H$amjMspT_B+5G#FwV54+_{-H+x%5PMAMSd zg`OG$|hx39CnV<^3cO-`$>52`wc7{6<=dfC zg<7cNJ{inXJqKBR>9$+oLRac|aUMZe+BUPe;kh1qQnBcuN9in!A=l;NSL}}E!6EvQ zZL@W5Gk2%>w(JLS2M|2KhePp+>P29-R{UZ3BT7*AvaCW_nKpJfyvTaxBg{KX)RGAidBQ<@a9F>iNLC~t6f(DN|l+3dkc=O_Z7~o1L_n~Up#r9 zl>Apo3T)pxVG}7)4ahCa178wM@3Y_O@h3_dvQW*xXOd^abOwI9Uhdkcen0=DKwSeg5So2178J4`O&Af*-QL|y-4~KAnT!gfo1RyJNjv+WI#y}*9j!EJ zpJuTf*t%sbXK~&C?)5u8-nf9<=~#G>2-;h6096@RSD;8gfdoY~wg!}Kq?A?}8~AfG zpy|w#{rC7trJbl1y&I=aThu~q<~EOPQMTB99Vbz=e5zAHVCK1T{OeA0bWEEC3PJ%2 zexByw_~{tUt=Vb_M828j{gHtV@Ys%b=_3UVVPrDh_}d|UIX_@lYnmq=n8LZs47c4) z$vGU=&CW^g4eIds61ZQyZin-;pyP)+$|7?zA53j_n1 z{yyNk(FzZNFK17mGO3Vb)lUJDXj1==SuDm*y+YWqW8!OgKwlvR&nYt+C5iOPWn<8;t|&u zB&W&swckkxeBGNHP!v>c5usiYN9HqTq{emzUuH@Zt}!8|8Yg7WmKDgms6VZ);ih~> znV#UDAQ2XXXyh5iy!vGF?m z35(j2|H%2_5K3TyQ{{KPWnN4GR_*RMY^<}Wh-|4*yNK18|$e7 z@o>ULnAmK~Us{FM=M&U$Hygnu`DCoS0Sg5ApV{no8x7;tRElqb`D7f;IB| zgoZW|gPHa9!Sy4T;u_1leKLRQVWJ-d9`bw&F;1>$*$B8Y9J=)MPfVs zC%>V;mhgjpy>%rfvP)HM{ZcH-ri}mNwt zbCMeRP1Yo;4Gjtl&?!*GC>`=LYs_p&W>05F>9W+CTXD@EKC829Ra!cvHZjOsrE74Z za%`&FYuQ_s6-r-b0b05@8<(m{Z{xL4a!o^ITm9mv6|q^(n&(mzSjCc+eBJ|Z>-EuW z3j8sSQV=7KJhVRncGNYe-@LqT;w}17lB<8BsFg2eu_cE~tU=fljxv$bu^U84g z3j{yt!@|Da1Lu@M*G(jXjf^zt7C#mx?mMF> zL>&42=5|{2`nH$(+Ni@a4Uf!PiGjBKpgO67!E8fs%hj!E_JE4+L+>1V5Mnc4$N5Y( z!BCKz$p)#4f!ncuZU0oY-S-s6^xVry<DkJAV;`xRN?yR#q?pwL5>O{0~ zg4C%*Vrt5wpuhYqJXqf0F%9yYbrC~c;OBA9n(rM@xo7gG4DZWb-Z#L;cIKJt9n(J{ zF;a!Ktyx25r_D?U>p?0kk{PrsjWw0yVlV`c7Ly^m(Pbjypd-4+3#dF`aaeAWDMp;dZMFMviX9n+vphrO z3Z2WK|QKQL>l#G1Wj<3fy0whZwT4Aoe z?Z;s?6GarTzDBR~<--b$tP)0wJ$Idy%k5}z*KY5=c&5ade2QNzmBFXC)VF5Js%`Wr zLt!7rZ$UmpMwO@HRp0Db5k(s|@+`mP_5o7mUI-tuMth{LtsLsw0U1y7{#~$26LvxZ z6N641#V&VyZ0W^${f+yIe{kif^HRIwlq$G-E9S=TM07zg^cKR@vbA-S6-|33!{=&~ z81ec|9-~zCf8yHhc$CoB+|}FNG-ig7kR?Iekw0Ysj!B0gZ@(x*V~*`rn6X@;_!Ikc z1q#g_NsgJ<{{zs3aNNSI*5zvq13Wf}BegUZ!OqU#h;#vkJ&s%UIbbJi#Y)i2?^s2T zV>X(JMDO3bAzJDFe!cq9xTaF=BS*D6RI!jqdREgqPr@FuanuFM6UMYiMh|z`1 zDDkl9&a6C}aAZXIUF7T5$!o>)YwQ;B?t5;eIO_Af{n&4BiIhB*(6Ddry00tMamc2n zyy;q!D*mJKAv&tPz&}>U{UCHm4h+PHNe*-k#U{c_Smp=xGb9oo^ytQ3!uKfCE)lk< zJy~+I^Iq751DUqYB@)sXN`=eoa+P_Kv?S8V!Y4G46WgI<*4cLAU9Z}Q5wr1gG0hC` zj>zF}Erf#lhWC3sBpvIjS?Kd#dB1iczA9MYr*{Wc>%CQN3U`@tIR=ZfM^qE&UVi|4EnL(CxNXKi&Vv(-bYXPFN= zIHYvkV7qEH2hh?R-z$Hi{43LAKi1h+a-;13Ko!?ssA!1TfXqfQ#dg$fvg5T(EC4w?+SbK8CGnrA_$ z{t;aygtXQ1l95qgWHa3r-NSiDM2Un7NVaNg#dBZ$eSV(KmMO{cEz^O^H*E{oe?37z z|9+b|{`kF8A+1|_xD|7ZO9i64yXuhfZuvPYL1kKb$!hDk%OSZ2R;P%=AK-1(8>sg@ zjyJme0(nRp2XpKyn9%w*lI63GJJq>Vn861odW5t#S|$6KSj;zUIU{1rZ!>u`Zz#Il zKaG9M&L)$rLTh>6-gGpa2q?_6Y#ub4l|T-Y@6A|b1WT`QtQx<{Or~+0#Ihz9-E>h1 zR$iZ+I5{z8Z_{w@6TiL&{BhRVait0W1I*_V$LbkLho>y5+)FlsLl^_rxRr{4DjR%# zeUl1>d|`MYt3-i!$)U20_^bBqOIy*d^ArozgY`<_Zgh}aH%#w~|k^8}>>Y$98GIh4lIGuE5e8w}GO1Ib;CO;ZZY4!=U!C!D$s=y`5Wqn72`LjV|1!d$iR-`NuV^u91k`ih%(D>^xFTp9}5)er3d) z^SF4idj5RmX&gpx|3LBua$oD`COA40?AiWM;^n)~FI@p7_SCBEZ(hYbzx?s$7lO9p zMFXWdAU~Is>YH{qg*!lZDY>+H>18bgjK`&m{U1P3{?C7a|F#~XzL4Y(KlLVk!Tk%t zt@Qa06@cP1;O-L3YU12|HapCt{kv28B%ew80sjDB%!wNejCv%Xx@H%;tTV}Nf zNu_lD4(E+u7IN`meS+}nYajLI8%&20x3=TVkh{=+z(+v!i_cB3{=6}wMZXb#+=s?{ z7k-gs6WzuqlRWL6`R{Xk9<+@A-iyJ-x4-D7Xgb!AB&qfqKdoHw(mV(cB~b%$`WY{39(sAf{g@|0`RE!`up0Xz6@2}!w-y%@6TnBtCl{WiE*@+ z!m}~D8wJF;0x}RkKVov;e|#a-t$%MeW_n8i6IXRtFkF=;D=*kkztyED0o-ZCMq&mo zA8egT+40Dy=fEJmOr~lbIbf;r(h-GZ;URjyMhV1;GcoU~5ku%iIG1>d-BOa?cS7g5 z*;w-P&Rx3QwK?n$(*Ba8tv0qpK!DQNHlSOVf2TKu%^OWV=Px8;hHp}1*iOx;*Xcf# zH$C=@MSgJ@D*?&PjNE9o><}FzR}y*h|He`CiYj3Z$yiCX3T|hZ#(Qz z`bft~*t+Rb{SP2AhVQMz=y|WzgCfUu2`D+n3#O{yutklL-B%Nt{R5hEyHMKu;Vo}R zvQs1TtMsnX=^FQW1e;~D&c3~d9Y5A}q<)b*I;!;z*FgvT+NY~7yanSmRAUN^8e>2V zjI=?*KxqTqxDA!YNwV+1bIy&eooX(SPLdIEVZ82eiGac=KI9;A;N__98PMFh^SlgN z!c*gfx-cECCE*uv=avAT4;IB0ZiXv=&!1a@lZth>#;*O#`RQFi)nee13 z=-k3_JjM$ejc=oVpp9A2tz6s1yYv?8`NsGJlLa=lsri)$(B<}r=jSIkkkJh8Mu|;5 z0rHj4^=YK2`HBd%2>6z?Bqm1BDyF~fK^X3uuQfa~r{yYxy+|J?(z?R52{_9^v86qF zpMa!(-)*C(L{ZpiVsO6@#%Q>yyk)abs=1XZ(= z6-$z}?NU)fJeb*W)ixE4Kb4c#H+21)k((aG!=eXnj%~J0(@>&`La5KY+&{JX*?mYw z_*i(=fd|2rg}$N3SsstC?R6gubvOU6N-;9z;CLkW!LX{oWUgM+)x~@o74=Jnv_gb` zvm{4F-1pU51-#!4$z}I`A$M3VWr?V_^|5CVwi&6`t7Di7Tk@C1V#_4wDC(%+NiYeg%&leSuk z%=$sq&4QwshzR2sy9-?ntYo$+(*8jzq7<6iSiuy@aqtxjjluW!RSvME_acI&uDH;E zHT35>rC9qqO!WQWx3=+ka12(kAvjJ+7*?oi>X7`ti7M0b{1?H^4s!32<-|HV1n-v zRj*Z*)Euj54Aw%xm`{gqu0(ILRGAIXao=qxDqzO57vdovt3vns+Riy*{jcTx)hm!A z|KX8BN3jIMAZ2M2&uy^Ac(Rxf1X;|7AD79q@|#1J2)D>Su~!;G8Gv}zbuuSwkdnKM zZtlbX*)aEwvGQmXAMLt$=ikx**$hvOCNi;>KXzxIBwK7Pb0x24@p_>H4q;3|n1824 zA?^x(|If0!ZYf<_N`_lf6#6EP_P&tBW=s2MY!thK(oN>*!Fa$pG8=j{Qv*YB(e*WV zZ5_7wKPQuHRB+p4C;nHy4Q^X0(Dp-1y)Cxf^}RjssIrSHxY_8dii}76EsOYy>6KFm z(~7eW@{30;JE+8#pMQb}WT)l#6qcl3hHEj-vwLHe7`MeZz5v zva-AaoS=x|9+y|#Wjb2EdNyFu*8Qa!dyi0?i8WGXP+xl9<&hhI9X40hqqy}B+2^$=ZTicM15dChda z(eP$J)r1w+XRD&uPT05%I|v#j*`lh2;d=M3DgM#<8Fj*v0vQN}G3nvb)X;0L5gz;> zz+NiPMg_~-fe(|8$x|nLOC+*v4Sh?mOq*)UZz`N z_XSWA*1?GHjw?>K-bbf#VGnwP$xT2br*r4}hTAnh!Fo9-beGd03Q=6dAvIw+!18aT z*>eQv~>mG}{K)FpLgpnnayldX%9PhB;UL^Ul=oo;Wq z9UK)L+aSxs2jV@7n->cvd)_ba~ ziiaVJTt7(_i)UD=>j)Rre}Z%l`K zMPsyEEbX{e-#26c4OxK$BrE&7um!K# zO02b*#DSJgSFKLnNHC%K^AfJ3I~_TYG#zvHx$QyM(Ii#_yqS1f`ssg zA>uu{YDR)_$}Ve5%^SN4@#WpiiQ&&*tA!{-A6#oNXXtd~cR;>V`EIL%Xo2lZrMf&? zPspTkRF0Y^C04R1tkOxw&_6^t%14#2O-t)iH8eS*ZS)ZJL7qn^-0Ul~BZO0-tpa?T zeHNk`A#2OWY$%4eoXbqqo@)d49M%PMKp0hf!M*5i+ryOZkuXqJIygps5z>YmjwAHOYmlZ}meTP<86WAYBn!#` zf3IYNZ&wH0+<(s**S=uMQ_b9p*r3>F|7>`S$7IXOvz@)dD=1~I z-FQ@_`S%7bH$B?&G_6?h*$CO+;_r}(xmF5qtKj!zIg>8>U09%%a^J34T$1CZC`+ED z%p7y|X)!EwR+_t!BRi9R53M0tMaux~sr9**VYK6Yo>y1$dYr$@`c7}O_Dt*L1oGgYtIKx~C* zXM@#n{}N986`r41$f6NTYoj$r;plFnU{0@G^tIdvCAedG{%-_inqgH%ZKt+vw0&Sk zj3D#xoA?AO^4A_TpkRrcGQuvI=O%Cx4f4<;0M{$itwx2Q+k^^kX@=~+uiTj z$V9#1XHBukACg4-cz9Mz;RlCFeFhaZ%XH{UzFu07+py$8G z^D(+18*z~96kA49*a;_li!s}BEZF3cM~7;Ib77g&B_;T>a&L^9KqaqNOg&fn35!J_ z6C)y#YLu3vbJzI|%b&*Ydvc!xVccZy0HhHyH>eonPSo5peF1V42~g1zv?OMA{!@W5 zmtW-mu)Y?m6T-l|v)xIBh5AW5!ambXST4({Qw!xc-E`}1-Ba&yDl2L-{Q0P_)^$Sw z24SChUH4|F;3_Fw@xQACUtn=-hi9$Pmng8nZSDsKXl81(h?~+=^`GL3d97dNNCZEd zeWW5;0&sEE1Mcs(sk_6%bQ<1t5K~24MWM z3usL8*arkhkS;}gk`ama?q-%$`6TYz0C3>fN5pc{pNCY4{fD#{uy3Ea0f3ipsM0@^ z)=8NI)&NYf&kx^xSb=9pZVcG0Wu&GZ&RSXeeBb?ULN~zZXYLv|;6d*_ zqY64kfh{#hx~b#}k@dJ<;ZlJZmj_(zYrPXR%|ubJMh`s7^^cW>m7p5x29WJ}T)IZZ zFU1I8BIe`nSRVYxfv`OIC|p{dXZ+|+{QGTubt#E=Qf|*Lr9AOD@6=o=o;+qYG(_a? zhkdJBV_5HRRdkXSi&=_xhcb_}CqXUC7jY^v^4(}IX-2^|e$S7L*8$qcyTho)(*+HY zOVx`DvT-am5zd%P-1Fs9B(tGitx)HKrYZ%+7D?l z4}0uE2+QeN^GvdT2{7x?fV90j@Le96_Jn|9GHjKZ$aRY9#JK`%ST8}hBr>Z!Q7wS= z?aJIHd)K;tzD3zHxIyQkRtWMK$XRF6(=Yh`x%W3{hwifCc+tW2J6!Y$%Xv`j0!&zSmEg3ecbtP&xvkp}8=wyC! zbK3XPjdfV~yQ1*^(8O6qJEC)aib03h!h@1fFbBltTy%=mq-rljNBrje-6Ub);9rou z4IbXa@Tko<;2_Q~H#GC74U8ue1Jk&wb9~)kx+kx-)z291H2v&-M1xkT$3|;`CkS_k z2naK1L(P8wePQ_t@v*PvL_h)xBTZYPJz=%4`6!?M6j1`vCuR$i&r~Wne(5%&%2-x{ zD3!S8x_nu>KO4m)SxGQrNzxRQXm-2UH$RG~fUomAxd-!pzJrIC`FN6)7iybVg@i-@ z6R!ST)OuO!@;0ucRRo8D7Ig&Bs~!iC+PEf4V63e?07hn>Tyxl2bBC=JBs^rJwNbR4 zzw__mL*Jvl+nxvzl>#Y`Nc5XtC^yBFR$Rd4*K~+DJe5B-UMy#V zYff(ps`+M>sI0p=ml~eWe1XRKiPS~Bx}>s(m=1xBG1Z+Kbn`Ju70wZ5@!A1jUFxX| zMiadW>OwcEV(&EyP#b>892ApH0bVu~m>{^horrE>ta; z;?-{uboYIip6jFB;8;tpm2pt@#fPJ@%*@ncJvXQwxFNYtrh-L7fKgbi$K3kT z+43&J6NP+c(z{y+$V`Q8^}Z!DBlt~_!-x2`%FKVIasp&c=d+cyjSt@xs1s-M?y1ML zRMybXB;AS5YdosR?|}C!HD%M1a<9}m8U0=rgy9&`&~#c^`i+!3oiHtRZDJC20TNIv z@Q_^GyUoj-G@hJvbPj<>T9wsG3x#O|GS-(={iD%_s2TGSjS`;+s{iS^Y_z5phRjlw z=+1BM_O$r-<#(Ublnk}Ittb=iaFr(4j~pB-mt||R#D2|`)#BsNrY7TYMCWr;LlI#* z2J{D+?OJl@cMtUONfnt*$=Mo8Ua~=)1U022Nr_iNLylE%0f=HG7T$K2?%(fjgl zl<+%P-Pj~_??3$7`AZ#k;N_7YIkmbOxQZ{JLF@p}_vgj>E#>z1`S!O}SbH=dt(Kgj z`IiCe{(mvs7vF>oUN#z_zt?boHRaw?w|5gV5`2!m728#9Q)lh`99>`Xxck?gBJz(r zmKrT~0k`svED#^gS7tAkMatD&Jg9zwoQ^&lhsm3FBKuA|fpco-wEeWy*{vUVQH_A+ z#h34%a!SN*9vt4k<1#*qNv*FOp$9#-!DVg0e=pPLT1My@~IiP$bMC_U#=qW7izPu)|~ z2LHU=?fG;^&@IR1ue_1>;J(Y)i|z9tQ!qJ2w^zF~!+cdgZh0AgJ%N5KLAxI2P*!;h z1lDKWK;`0R?9*;cp@^Gd=eovyZk`>gpr$>{nBjcEUviG2+I2+IUKiZS$FR%jVtUHi zFV(G$V#n<)@7eo`Z%BKgq_QSsS~T{EQ+dnp`o8bpF#SAZ@9O5^~$JHGchG>~kjb-hok{QMYPa3j)#KKL?i3N9i$zfQFI6>LWk^ zHOT^9QJlppDoY@P*UgA|q*bvpdL@OaHVB#1CVto9rM@&}4oVLUnIj^U~o zod#_Nvo{z;8S-7DV7;f=3QiN06gzbFf)er+fCLCtSQ)3lBW?3YF6J&BsE`4h`>?@Bn>jT~%SUA#j;4o450iS! zks4E{kp7~1;6RhNSHlTJ_rk**kq7cy+LT6)gaEJy5P*2Z?=>7xHo6yyaKIkgsZIzJuZ6x>$ zoamJ=!1nNRYVAS2Kj2jhK{uO&g+C+_{A7;ch8S@d&YJS39QK$ zm6kR$)Wa)%=QMmKmAG4sP~#iPA@^zFUx%4yr3 zoYk=(%k9#jufW4xwtcL05tzlu!+JF`6i8ZQ(GlvSGDK{T;6%Y1E|(XF z7+I$9;B&qBI{|)0+NKfE5t*hhNirRbld~w-qRS1;T$e>~dR4~|>wR}<*VQL=nE?V) zQoBf&Qtk@t-WZRH7QfbA>Y5E>#GG>{pz*OkeUu0wcvygi`yfXi791EUt3z;)x9D98 z`_L43N>22YX<3NGH5|!ZH{ip29=^xE|YImxd&W9z& z>$0_8j2d+)U0W{BaMz4km}MUx-7R{SM7>ezD}E1^RZZUiMb#=b-2GdAJin2PyTb%-Ze%{Fm=@DlIy8m3;gu&6}z_SbO6!Uh2{L zIH!K2sF2H=1vV?ZnJk-~o0(4Wwi~$#A!BNDZ&YQoBL;Jsl@9_oj+`F1w_7(vzG~{o zJO4C6--p}uHX_3FKZ&tz7pSbvCC}A>`GM>w%y#N9ew&ypRhZ?{t)@cy@X0Ql46QFX zz-06(zb|qWg8E`}3X_WcUvxS<{IXo3P8ppmfb15M}-?i)VCXVo`d=K}6!Q4&1ka z1nw&}v#QIET2n|kFUWnnwK!V#jn`=p)8zJ9^=xU-^e8jD7_lcB!U+4y7K%UHWcSL= zBFqM}pz-rQewF?3Sk2nsZ$}rdU3*u*QSG{|JV;Hv@wD!WK5O{iwnCXbZ9ec$Yu1i< zm`;ve*Uae46Sr1v+y-aDElGHpvE2r_OPfZ#sL6ii#IjFr%hWN?4{R}R%DZNo`A`{R zu194LO58-TdQ^t!h+UN_$0hid-E=LiFOt>bwON^t)AW|AJp)^?-e zO;mhh_jAR&bHmT}qT}iuvTbBBTbDS8!bNWrOP@^buKbqRezA1!FB_*1=nV_{M%c@= z@Qfe&QwE7Cw~_QtW?lOfUAHf=U#SDEh}coD8YREsx1?$21CumCoKTenI|`m^9mVdac}H<>$I8Y;IeTfP$hH3+__+EV)F@tf3^!{+7(c~+m> z^P5`^BmdJ%dtKeJf@yVnWjC-yX*+hc3&F+v7Gs?PAWj!b@-$ut>70||ITyBMq-}Vt zURzCRU!_~&6XMq-17pscOIj9NcOdX6VGdNwfLze;#cjqb?Uxlm#&KOt%)meX*krV1 zWjxx6!gJZ_#W7<2qg&2JXU|Q&+6XbAoiBez)BD`6nRsAwXQc1o_Rfz0#MKh*h(|Xs zU9ujF?=s9#MZ2>0#8OVpr77}1s^LqO!AmJS zCxd_F_LAxPi;mxe-yBBO zR7h`%r4ok?Nl+aFTTsTs{O2K9RQoibWvQ!-4jyC)jIlzv&==0bzGhIN-*hBsE$<5+-9L?Gj0(KhG^Uq=F! zL(l;R0EYtV&~>O(Ar>(wgpH_x4-@SA%j*o0`>f}MMjA%y&P9wQFbTUnAF$Vd*LN;O z?#AqKZ_AiV7PTve1~bOv9A+$LbyAvLo-ikz71>hu;1OZbIc`$ZBVR%kcdM%GrK9et z7_H=E46#xA;#p<(@i@g|PdFrNtxIQ&M-CDR8^C%bgZ5Ts@)A`N0)&+8LV7pgX7ViTfGMV5R|6Q;N#s6(fzi&ByC54&-#0dM1e3{}jSM;%G@FADbiwa3KVL zgQaSJHTtL6k)*o~MjEJ@s7(>8>Be&UG>)wiWT`ORFKPvUx9NRN&AD^SAF-nw_Oraz zi7A<%8?YCuBbwiR(h#%dF6_xuzhGe~CDjEbG3Kkxmo_arTyRZ~WYa}UGdH1n=?GL# zD!bn}+YcvXnoJ=ab2V9@WwPwE?jm7%$YeBW6W#1dA#QoUIll5Vf-jRVYH3~vLmF(iO2d@9D#Q5@1tybn+wt}xW-FW8Ql3HGF)KRuP zcsqZRE=5lpHXdkORBcTQYx`GEGj7b`2YEaCQ?x$Kxxv2N!S%|n#rAS_P12rs83;Ez zXHdCRuXF!m^$)Fclbvvxf(9GCC{pu0!NkASkj-tc2-G6Pg4%lfQ|~nM8}j>K{KI#5 zU~)Xuc4AjAubw+oc_f{1cHlD(2-sCwk}Qhwzg0U}OZ1>*SXft({gZ9(BGzyuqA0kh zxb*vVOhk{?EANPp$9`0rc-KF3Y1i4md3&52ELecP=%jJxclPkLha+!Cr=FfE$hTL~ z6#PHn!G!a_5A1RtZO-4?`p05paPxOUT}~zS`O??dFegj?^VgOM*B*we9U4!AeCb7+ z(>H`F;hs{BnvQ45;?jM^>Q8_0ILn0w{2SY%elyIT;O%?%`+p(I;+c=nliS$!Ty}87 zxy#wr@4b+<5$1^&T}uQqv~tGwGk+3agIF%7k6rq$(ZRXJ_fVBa1A0m(DcEMxDyBV|DH$ zjjg|H`5W70P?G9_Q?&xe%kp}3*M&%Y#CoFhgPQZ0kyqrFu-2WIeY4R`-EtVPnjmp{ zY0~C%|2rqA;Qp`D>Pifi*`1zM$`+(6L^r;tx7C6p&eoa6jlYff%+X-T72q^V5_G$? zqsUqqqJy*g*vE?zq4bf+CNt~Pu{OEc^;Z-8;};ts^EOYV31U(baKVf3$FiKILJ458aFcGVf6R+DVh36aQ9UFBC%LlQ{nW@NvJNS&V% z6aYj8?Q8%K$*^7E4Jyz`MRF^U;lgR;@PeNrXTYB!dm;YK5C)(aX=$La#^ReH8vz$e zOe|`(@gC0=H+eZ^L7r3zh#(+(GedReISh8vx!;o?br-Jml* zkl&g1xQSgBc=0mvWRmoy!eFgO*A+G^eO9r(Bhv*@a%emS=2h zeA&J&G34IN;*S|z~ZG>`v*kY+n}=A!1yJq zXP9?~J+3M9A6&U#UL?C8(kqU&w;8}rO5SD1X~8Tm@C8QaJiTnE5lY^BHeR+y%(`x<_W!0;EE@o4&%BTMB4x!4|0!<>C_ zxg{P>HjI`Q)>GgNW`K{&s>t!|NbAYcp>!Ax@a@!`FZK5sSG5ZZDlIBC<67fszAexU zl@WH^lhxs^157buVp$59-Sh8JfY zr(?5x`&_AJrPO2Fmh4nXu{Bn6TW+Bd0QWQ1_PMw2cEYdiIs&LgZNZb1p|W1$h2}1M zYRIcwKx=Zm>N?)S)U($t37U}|X``@eh&^otne-VoXA9&Us7&$7^Ac0EajErS1v44j z=}Vc?SseV3DZe>klD-)czuI|4f1Z|>1U>%XUFn+?lVJ6#6b75WFJSKgq5BsWL$5V{ zyoZzkZ5DV@x0M!^6y5US$*>&E8tx-=%mn27OcNq|-2;}loSbRZVb<-lUS<0NtiM$E zZaGW!8Jc~JZYxw>KMj&?+4-!g750dAp&jv9E{|>d&*B=aQftT`|siytCEzo0=xXx_@x((bcq?#%hglGvbA4cFv`U7lNKwqE-D z#nd@Ix{LgO!1+_Ilwaj<|8D*(=eBLg=W=}CA;SAkYubHRjVbh7`#%H!#-L>bzMcKi zy12P+(eV2_F*Ek3*JUpKY}$^lMDg0E#NQA9GJ2gJW2<`gkHIp*rm!z@>hFGZ^xyY( z-!IR}lWij0I;gxn5n`e?qkE}g;y0%I53^WTMJ=#{6Bnj=SZyx&R7C}pCA_;DhQG{u z)Av4aY+>vb0o3x!KiFV*_a}7~ICV;chkD`u$?+Kxxbrl1Rr06Xa7yjv5x)lyXW#u@CT`xv#`6< z$D98TnB4tu>X9od?(zB&B7mT>dafT9A3xuuVr?kr+czPxJ>#}Q3fJXVbqF9|ikLks zgd`gYfY2S-kW$A3-xwa1W?3w|$qaZd>L`o_Lm0pl%<3(2-v$5xgAY z92kHkswwpPHDV`>cV0XmMziWsSmmD~jn4?4Q^ckf4S;>()r=R>59`1>12TyfkQ7ZU zz;)pr2&mvqvjb80Ah&oc?=XCL%Q+=#f?r-{QBrXs6d-GhutaJNfeh#eh7d!Q+b;sS z*sF$g#KHhFMEHO42-=B-scztzT4EKkTe4j9cOt=&$KDFrkl_K#>vp;bCS8_n{uY{< zlcgtLa*S~Z3I+D007opE5rNwQy8x7pmo-DsLIAp)l8k*`*ifiw1@xzq9c9JVX|m8A z10@=^`i}p$4?xBOpwvKfPi}y}d5+(Zr|1?IrmM4xYF4}s*~WE&l_mBzOtlI48gSYj zw7vO;$Rpw))f=1{>zk_@k+D1*#v`y!ymM4(r$>IbBq>-uwgH~8P_V}KBD#E3b_fk&(NL{3e{0ucnDI|a^wdkIm51}J_24;yspcH)O2 zam%^FmWrm4g7$!iM}KkQZDbQv#CXVY3M|CFYscDVrK7SVQy(+nEH8lxNMU`FM3RV7 zD(M_s&^YUM^h1ag`Lw8|Tm5n|rM-W5YR};2)_-14Kc|TIWK|<}8tRv&pClR9qc_l@>;Z8x; z#?}l3xO$(}e(_CbYixQq?VK1?=B&h?))J(|6Qdtf=hC(ZlE#*qFI&A0gxz)7p%H|+ z2loS7bQ@Qq6qjV5)l4&4Z@<%sbJEhIj_@qN#2iO1U)WWd~~ z-Q&0tD^Pi{7_856Ip*s${(c^D6&idzMapR##;DgqvLB7sFD8m_i)gw>&87dv7Ce9y zEPxI|hceL?-S9>>AWFjjy=gM?$?b2ZFG0Kz^^$irHHAx5s$(n_QR=J&DKNZaGd#c} zON7q!(8+48h&4cDy3eQCqUy4X=c&Ud9G%rIxSFV`gU-q>rTL;uyH^_2OlcBTS6SvVN8nfxe&uL0BZZgSgq9?JHdKl1t&Q7UY!;D(K6*SgW78va!zbO$lbu1Nyx>>G zJBudq1~=`gDgBy~ywg%VA7*TIuU5PZLw&m;U#0Yw%Q$mb#tEA(rq(|UaqI58qk07< zYMMWD=+r*|AG^01naKzEwk9Ow$keWSZb`jfn3A+4*NZ7&ZObSVV z9;)9h50op(tY}#&R%c$3ed~@16|R)Nm-C3=ZGB5i2Q6yf_K$sKD!1Um)~VXLzlZQb zKOWu6BkUxW``YiH|IcivJb%#YQJYrI+nx>E9UVM76klMzH+Nqt2MES4Iaq|B&E%XE znp)J2Nj@JTF`u=UA{X*+X|=>36TxG%y`XWardIpM@CVU<$3zOgZE&@}(7~Z^2+o-8 z|J0sP|1!1iw%kg(;qCg)sbhkc`>#%5?#n~{N9He|`JeSn%yo|neFZ$GYK^9?aSd2=uKx^Sv6Hc0&7%p()tNNl#!MY3RbjgHlCg| z9tMjVpizL>2|R)fA)(YEogq0%XrZX7KRBJ@ZwB;UL_<;i;_QaPW^E^i5bzV!p?N(o z5#Xo6I$3EHbU<=Wb~Gx-Zj9m~BO(Cbgi?|KUNll!Zp(;95|k~#B1vN@z%;9DP8je= zDyf-5Xq@A9?KET8+S>?>sH=R00owc~DK0dS*66mH`Kq@Ev;)iUhhAx~&d<_zak_;Q zN(Dn6kdZlx1}I4so)foTm~(r7Q%+)DNHgTy#9g=-vau77D7yo z(9sG*;9J;UY$FF|fCh(x8M;w~Z&)CCjN&4s}FopqtMV zAw!@DEq}=Pmz53_(aHAtbOeD99fMp~nJH@w6`;%N2BaAATxCEDpKrnJX9f~U4gq}i zuJkwOPC1JE3qlpva}-MwfC(5azjP>C$L=f%*8P!FC1iat&1qt8*l=|l+oj3N zfx=$SmP_~>P^hQ(+<2iB1tKo0<}M5FxD01057 z^5|YuM0p_CkGw;p1|>cb=&^J)sJ4%5FfiSHVX6dzr!jkCrIV=C2bpLKbc@U-cV)Q) z)FgQS>W?yT`=|pXgjVp{i~!wO=afr9{CXf43}8W8Ng2b=bVoM+-skfqBW26*>~KGo z7mVYveI8y#ow@8hv7>%2FY!pi3*7qyzapX6$u(3Mx`6oNkpbe{S%*+R|WSyC}Drd&}Da2O`I|+*?qO{YEYdV+Y$%Q`ENV(rtUJ2qW3jDmV6& z9{`7g^2JoI9zo+NtY~7^UQj0|C-u}{_fxh|zO2P(Vp%h8HXh6qj6baF(1_s3??&%^-LR+Qg1 zwQmMEkjYMNJ@UnoIi^(iL^)LG-Qi2#RPrj7sY~Lbai>=d)R#(S%r7OCZXOS&$@;4X z)&_E~q>j6XXfanL>k!g${r&ZO377+AW!uy5SQ7zL3%VSpu6Eyvt6SK-h0%fRW}Ba) zbp`kUk6Kix{1)sB)1#eLuB6g!#v%h=&=p)Iz6A6E#O}#Ksbx%`nW$PNG?YVpvceMJ zM+*9WZxJ*HOjFRi8b&%pf|kANWXt*!@kslg6tlYQ{{Tnz1C_B~ z*uha+R1cIR9zr}4ff#AP_S7ZCDWK{RB2m4i54h8O7^BZInvkXmzI0Bls4)Ij>gZC5 zVtVEUj{Z}^#3%il+Lr!7Oo?Gj7c%I6xq`zcT+f_t<8 z845tv!L$bnYGfgu5G;Td8glgE3R}rj(5zYllwT15!r4;)tM-@_I71OzTb-LhxVt?) z1l`Wk0X)al&QlbV8Nv&k7fhm4BuZ>X9L^Cgpg z19(g2L|%ZJ3^;`)QJn#JmZHoGb!;C$Nau()$=+ZXGf>k>#aAOKwPgti!DsM9xDt10 z!X8qjcbFno8#>*Gj?NBe$CgxYJ8~+O%7y~Ng;K6->h^NLtV^{B07yPo#zPVrfDS1B zD9NhDmmMHYWxPg#)@Z~KB&r3F@fPEB3Y>^G1B(#}l|4-eWD=en2Wjqo(Fwphv;nYj z?@BX51Hs99!XM8<*`OX7)-xk#4|HM$9X8<6s7jSxOtCJcSBC@XmFsjgxERQDA+*g} zbl{Sn7CYaA61YhOXPN3`Fl*I1f`^IIP*w{~oP4%AAs*w|NkL^$eESSBNn!X%MX^E%D`(L&Qnpn>G<8=WS0@#y3>Wk^q=b9hbLvAbZl8 z33&a_D(;JByywQ%%#1HToDEb{#u?O`>x7Ff-Z1Se zt*Z37C5={6%q#ao>Fqt;-W$a+Ry}hf@v<^1Z8AXHK5eo_`v(4)1d==n^L*jJ*oPRse|9HjE@8C3o6Kn=@e>xJr$Y=a+y^C}@T zaTu!NB|Doxu?wRj5kxpKAiI|{9f%NKlKxp5HnsSh65w+IjtP@2?Lf6iv`HVDVOB>c zuacpWJ3(a)_zEpa`@;DpQh#Q@sOQ`Mcr7=K&ElD2rV<9TLZptFeI6`01&6{ z@NmTu02;IxpMG6y;`(PDHAMI0&pfJNYs`haDAr)(72=t}wn=V)=tU)UX)-*j`G{A6 zvk&gMH^QXu$J#B>9oGKFM>6xf2p2uZ^` z+o)iI!B#Vvl_^%lO?#V+v0r?n1B_Fc9ivl76xU)Kx4a5!<0q&)PEoO$Gh}Va zl6yHD>Rn5sp+QDcOg`A!MLCu)p+x7{<~io^$1MTeKrS|K#ldgiZ0_EwH!M|!J5q)z zXqzYwFq4V?JwEWEscc_2wO?>aU}v_96i7=;5PaS0EJ($4m$y8!|Hsja=&dXstWSRO zNYzb4j#ltVZcwwnuH9fRV8w#)b2~j9aA}UmTjIa=V!`PiGI0*!)hhv17-X z{45EKJQj7)gwtzEvOKJy3WZ5#V|zuU$^bRctl$HO17$rgLJW%}-##r!*Eq>dWhycP z15T9kD=p_jtPW6jJAq^ELrr1Rgd0=u-|~nR*1B|Ssr^ukB zaxQsns0u_K3(`S9+vg%m>{-0;MR)=x8|pw%1)Hgo)$y|Lsc2`dD-A+tGYknr9flSa zT4&>Ao;f?Dg=ik@KKJ`l{Mpa$-siqHbEZK26JGQtob7R}k3JgV+N9;uG@zt8=Y#NJ6_yxmRNK%$h}vbT-XoMLvc+wT-b|d@X+Rk z98u^!NYqeezO#C;7&wOW@8iMZ!-y$3MH?xmq5rnRD7-u*@M=;gW?-xhw@nE}vpiS8 zwGpgFoXW1st_D5K{7m=MeP%A*?U?Fb;NB@EEg78(V!?(gv;O0#^|+=l{F$8IUmPJ8 z_exq3LmmdB0DNnHV6I&Ydg*Ec!nm|T0SfR)q?R8E1>{q~MUQ(!P>OsixO$Od1udhQ z?;=l-i#fmx{}!<4F))MU(JCfLfwKz<*cbz7GLxtLMgGDb9b5$l8#^UDD1wGaXosaT zRsu|+q~bcU;?xxQ@Hx~-S(jo01P&LPP;@SuypFusXXQ<)&g`C}BN5BRHLz^(yIw$q zu*D3FJKYDW%?OZdb7f55UPxbpN=6$@O=$?mbqX&ObYbMZRRU!+sJX$x^eFQVJp8}R zPjGlDq;$e{G71*~8*E6{v;?k(b4nv70>M#7a>sj` zlk%{Tv|~y29(pVE!TJVO2>8g!xY#Re9oWF&`XVFV-6h9f7Z}9J>22^kd|G5^3Pg}s zoV8B+-sUOHBf;rzv#J%+NS$1A@p)TP&{87w3MSr2S}U z=xI2cce48|ZFqf}cB3!;a(J!-K1oL9y;S5mNtt+bvCc$txr(D*anVC)o$6DIn?#$} zG5z(k(#+cdk$Rs?q#RlveYowidZ_E@-prFHfD6*aq$bxtXwHQjUL%SRc6oNTl4)zGN$!ZTX(CzbSe$-U_Mp^>SqZWR5;-W^FX_{vj zB4j2qGADbII)Asq{7bVK@d$eN?`X8_6OUKA&-%Q;!uHBi=629qcU}6kP*)erK6o-t z4F(!b3p@Ul!k3&Z>nqKUJULwtZzzp1+1GXJE2*>}vItA6O0ZoF5ZK>S$=QYQAKl&Y z?l8^~&~qAZb!@Zk(81fFlWo^>AFo6tDd{hv+kA|B8!T43LR?u&;L7W%=`B z5U0fp%AS5SGuC>>5rn07*jam5)s|*;Qg4amC6zZgp^Q^$RkX*{*$)N!I&No9XZdheVQ3mrO*#5DbY!hi+o>$mklEAex~H=tg}GQO0yDO!CLRkmu!G@ZwMSUo1elYNfo{! zvnQx2RQ8l1{lU}O>@663MYg>0%ZrxQ)Ue8Mvi=jiGf(XN=f-@Z?lFzm{{H@vxX^tV zf(cbjehH))=XUbp!(4!*6IXWt!Fq=n{Z8>lu*-(uc{z=z9OYAzXp`m<;=O|uqSBS`QUHoYHk#{C(a}GI3q=U2jx0;I5`Rv zshY+*{y3VOz2!Y}FXKgku|oZ-Ho=Qz9xTOP3g^yxmFm_#SrA;D4>do1i0N7jM8$IC z?-ceu0QgqHiF5{A5|9P}rF5_^Isji}BQ=#{bNtAh6J&{I0Gd_^fU0;=D+BPE%pZb8 z6Y2qhT8>1$qzKv66x~crxvnw=Wb6SDei~Mh0UFHT_Y*29Qx~Zp;^Rh`Myo3(Kz|k& z8bKHwvXS86=OJKUwXH`D0&YKwjqR(h3ySwLy-v3Pyi#C0!E-HT(iDu027q^#8<5r) z=_gy*Lo)(&(7n)9#4urbn^;V3s&jJ25YBKOcxFdznT6AC^SQqx=s)E&_709=B`EOd zKVPMvC=&HOWFlqRcjkJIQGS2A`I5T4ieDk;CZM_n)0}ni!QXk{XI137lvX;WW4BQ4 zd2dnOs^bQl1(}|(Ug_PX@@>^m>f02Sqt;huda&@(wDWTmE94Dq`*3UH2xlzSYfX zd80L)B*hZ29~kX=rr4(bV`F;5_fsYneW40oD3@e56(QTy1*&t>+{rQG4W!YFN1&E ze;93u3eAVnvs<}RV9A4I~_u#{atXFSdHPn^cXO4DUmJV;R$bfgpTrLtP z=l5c01`CyeI8`54y?y3NxY(l3{Oxjh#FZAw?t)y8eD5&P36(&iS64^$nazPzJ1NC*IUhJ1~C2{$7J)8~4q1UF-g^pt5^)O#|87OA!I4YK@ng-*1CV zL#|6nMCSshyQ~gnhncO7h`l}And-PF8zT*%waP4mXtlhcf25rN@nFGx>@ z*NS9x-)~mWu=#poTXTLB)?L$wpnv+OWBr-ZWBc?kDtj2g?66$Je-VFHNY8$V>cydP zhVkO4?O#C61+OU$@Aoo>WREPW=NDRpUc6^d}u}ZIW8cIL}A;>PLYW|7i16!12mkzEGnr7N+ z^E#D;ZqX4fTTnBhRADp=EJluGaf^wiI-`9hJ{>=c+}UGCauTJLNp}s*0|UT`NwQ#e z^6@ebpwL!EyAIe3Vu4zSpgm|F*NgN?VaOi{NU@Uu2sbO3zA50=&GJ?aW=c|e7(L1f zN~%M*N({|~vGNp-FDRIWaX_(>q2No?WYafOYV1ZxCk!f4284Xb8hso9gIJ01Y@=#T zZ&l@P@hdv`CyyOqHNQtI_Z9J}VrcFqm?v;9!`lNA{qyxYy zr*uJ0uZDk1g2E?p|Ky7w?J|dmxj)4Y`~(ph1xL3xg{O0=o0B)at=dTUxIJnreb@;q zCFfpaQVKb9c=NW>`z$qNqo73f9hy@q16OEXSK5vA>}(BZO%xkGq@}<(;_*i6Q~Lp% zVjRFO$H@uyGn02!f-LIVwjCIm4DXT$=(QsCFF+hK1vUjSwym0bSye%Q+$>Epp2^~c zsUd^^YtH!X67XRGI<^($ckh9>Pl|PDfZH~{2vRE_>NuCWAXf{+`iw~h_^c1!dvF@Q z2_NF{pVlc;8G2rN;j9?@IJ?jx>8`Lq``o=6RiQAyry(|OvV_;2J#~pQ?*_*#2C`>o z_ubFjUq_C729+Oz(Di|Zag~9gj2C^{jsxXV@^_euw<@Ttk&WNj)WJj+An1{8bc}*iS&C5Z!lJ4&O8|fb3F6fGRspI1O@3eiY(z@Y3Wfwg z%m{@S;v!N9U_pZ}w4z9@C{{r9CWvGP3;}gW0yy$bs}Vp406=oebpbERb4eV4Wl0rH zVrz!2qzM9d}4pHo=M8H79 zNHCd#8h)FgFvQE>$*DE@UJ)i(r#=(h(WWB{>=i&PSzgDsi5}$uY?@4l z$%}YF%*Q_ryRCn`c|3~M+Uv?r${(wc*oV;)<9H;#at%FY8ha5+H2TN_`$=M`-+?CH zScfQkxb0(X6WQgzX?0=1?u9a@O`GT~BhIdQH$+mk{pc7pbf6*oDw>wLLz=nmG3uCgly{V<969|VVZw*=1W>C%O`?e{&nmerpB zWI=l)R%bUjy-d8_NDC$8RrTTI3i-O&>Z0w_&YEt6!?Vf_T3qjuE2;Ap=H6vz!rXco zuS60~KVj8>ejG#3(0QTxZ{nmH$?i;7{o`jBzDX+o$Po?u;&O+*cEuyPC;waL!|b7M z;T(?}nt5$)H-fcK_*}6l@&4o)HoO04@V`>G%MvV{>;9azj$O%B{zSf!=@N58Lf5H8 z^X;f-vO@vvdE@mY6Qyt6$4{k(E!5emH8via@Rg!gXrg-1TXCZ9xLJgNoU-nqM?rr&yWdBTfQnmYhGoKW>QyDgHUtQum z^3o~v>a?}=v-^l;xyv#-LUsmEm1gQ&JF+H+nIRQdXmouw>8}sTUu6IKHu)g5rh`=0 zGTCKT;qUQ*`}L((yVH0>^0o6C_L@!(B=dp_*DEhF!ou&5$-Sssd1upf;o)PxKQkg@ z=2@dw-|M-vIfBHq!Je9Ddjdu@^aF{q%tT^eO#{e8EOL9M*ApTeQo6MFLF5}rZM5d5 zU8qyKVaexZ6N{=J-GADCyPWsuo9axH5J~q2pU8(Yu}>F&H>}4Vo{;!)v*-4Asr1JL zNtN)2LgI%CJnW-8vOkJ`;(w`jQ87kI$~JFmF`e4Or4Ced$^BxP?IQeA;u` z?ZLX8N>U_y#B;zTE#eVjbx~hyE9y&CLr1pU7r!vq)GOhr?A|nz^cZ-%-){V6# z*jKbB%qCy*)~k;^S61>{tv{xz_upWwMJ83e?eQF(S(uj!Iv;t`A>f(~sXEN*iFMf0 zUoIKzs)1A^qISp{H~8&4=D3slu0flcPJ0#|6MuNOGUW;NId$7J=Uu3O`M=8B!QLO* zeho4AL(WTbu?Q~wMdy`hJ}LUx$E)F8f9iM}dqEIc`mg!$E`jq+{UVqCyp1zoGU42+ z6FGLFgf?GsZb>Lla_VtYk6cpOeqbP?W(n0&oS+7CvxX|`xKcXbOEdrDz7qXWI-@#h z;85ta6=H8-p=DWD`Gb<{*PSR6ducmZdUtv*tKfX%UBkeL(!Z8u|FU0+u#%37ks5qJ z)Kb1|k<~9-6j}E~D;Ht&H!C8{{=@pf0fy=&ZRnTf8-0In`o3wme}GC$)f~>rDM5W< zH{djBXEE^d2(?ohUNK;6&@1xn2ID|8k%D+P=d<|=^F)0ya?1NdX3T?6l5r1P_&Q?c z3-FU>92wMTIXNQ0fc;z%{Hf*dW=%Zhk>w_OS7mP(5I zqVf5@zyHAf;jZ^Nuh--GcrK1kj##k}8y zyaz&PkzOfFl5{p$w-c7))QscaFUf`x)c8E5I@J*)EHlldevl<(cPdoqb_RHbu2=?q z5AB%!2qDHS@zdJxt*c%rBz4>pfYz)>!AV4&L@;+U8%nYhs@rh)J+cgq%=Pr!uw64G zDPRT-RoE0Ni}qAljy8)V&`ZWSf-LpqCZQsU1!T^4y>}68(|fao@haXjv_I;##63yB zdDR2q?Ih3@t}`MYAcie%NQr9AlPDlYr-TCW0fO7Bk-$Y=iJ&0M2+|mvqOV&aLjC5w5=sDP~uaGbtkbyp~m`@r5nsW#fZeNEbS zLSh=$#4D(8(Z2^~N&=!7f>*+Uu0*<>c84ccWwRNXGbaLL_VGtkzAgmWAsrkOc z71pr#K-sDHMkxr=0V@EAmJKiq1PBW~McfZj!4kZAg*C+z{Uz#cCkr1X=wyl@P`7nc z2l>-ty9;0%fE*f>izn(unx?elK#VAWzu~+P>!M0(XVPc$vB|A;4(qpgtXf%*3eDtvqM9XBeSQbhvwM=NjyL~@M8bfol6pT z&?cxIa&ng=ZB{08V|%6|ATXnlK6o6gnwIqmH+!!y2`jvSsDg+UW$+geHbyWTXg=y&2dI4d zI#)@>{P__k_?a2|(%JhRZMkBo9Od>Hn!8f8Zy`s;eINYtvxDn-ZQmJ-vW*@|Qcyk`#{8o{EDYYcWfxW7#;eDmELmX^U z%l{A0f1p+m-+w�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�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 literal 0 HcmV?d00001 diff --git a/src/assets/bg-login.jpg b/src/assets/bg-login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26baa6974ba14fc665d0450d1c9aa101e07f8fe2 GIT binary patch literal 66953 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

(iK{r7oPrJR0WB8B2 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%0DQu~0zza?GjXUvO2{O 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 aq3ErY@aNwsUp)R0038hjb^J}osQ&_rn9h>` literal 0 HcmV?d00001 diff --git a/src/assets/icon/forum.png b/src/assets/icon/forum.png new file mode 100644 index 0000000000000000000000000000000000000000..b8dd2134eba975f0a46cbce905334182aba28afc GIT binary patch literal 2979 zcmV;U3taSxP)Px=T}ebiRCr$Pod?V{MHPl05_`vj5ygsNiDHYf#)@4KTWmqGVpl|sMx#c9vG;}@ zY!NKjuxsoM6)S>@8bw7k_J&6D=-lM8|LpE;xp(K=os(?-Ki{35IdkUSDQD)qvl~Sg zZGqhuUHejb3IG-kf&zd7fQ4IN;ngoaKmowQEwJ$FmmZ)1VBr>6c=byUPyn!S3oN|) zr3WYgShxiiUj5Po6aXyT0t>Hx=>ZA=vbMlEfI9-$0`>zg4eSYABx|j=qugo0FM%%u z#{-`Q{?N7PTzh~E1BU|l0j}J&QVUK0bKoVwOM!o;+8{>&+#7fjaMjdGlyqmYz}JDt z0iRB>OKt!-9C%)e;w4S11#XrCf}8+wFW{}M)hY?PSioNNdrdFo0)Q(49|tbkpzKG0 z-vVa$HKz)`W^a_9lx7uNb!{Yv9^hr}2YU|zmjONs?31cRNjItmo&h{PF~`vXaNV%& zm{@*Ewjm2V40u&S-lGCQ_v|Uaxf=>TF1Q=N9Xxg?Cn#Bx{NDl>4`&^&4*1*&aHy@5 zn*g6_G2W;E_ypjjFDCls4*@<ZAzSB_RXaI28-~oe}xPEsB z?;oR8y=1g*0T0B~b@y)yA6}isMgf4Qa&#fO*-(`?0{1WNwQ&pRR6D(Hlg1)~7q zX*IJ>mnC~`yy~TZl?9ymy&_@`H_&vz#bgu!IIcU^RHbavY#*Gl233nI06&hXGZ+A8 z1O5VdDtBGFtVOqPrumlWm+nfdDu>l<0S^X%UL-TA%H4ot=WFL|Yv$&f`vlbwGV0w6 zZ8yjh_z>XL5p%e0ds4P$nzv$K0IpxDqD#T6ZDI&`A@JBr#tsSRo41X#uAN)tp88oA z149gysmkCX;Df;JD!G0Y&`D8b8Vl$ld{3q5Gb6)-Nd^NTIfH3zvB*;E=4G)n9m(xi zcOWD=gGDyQG?gv@n8xnelv)6gO;b#xNCCh!cF(5N0)T9qVj4vX0H(2fHl-E-WYZMW zC{h40joq^;wE!TSrkF;N0)T1ko=vF*0NFIfG>Q}eOk?+KN-Y4$rYWXTqyS(VyJu5s z0YElQF^wVx0Mpn#n^Fq^vT2HG6e$3h#_rjaS^$tuQ%s{s0l+kN&!*Jb13(%x15R%Q zTrm(O8Jhn3flVNHo}t#a4m<}kXi0O^$f4U(rg=%lW~2NI_#|MowB$~kl34>l>Jx)e zW1>+dqcSq4i%7g6$&!r~lfGeY5-|#@m~I$Hq5B3@!fxhL?BL~GeS%b3|FFOEb&)x9Ha%OBe^ z48P0Xotic=%l{2Gv3SiL9~bZq;2H^5cqQ=ggmfk`p5D0nHu)xS&9+40cPZ_6p<1nZ zx0Rkvju=8h_aEiiIc3mv?U6^ONw~sgtRhhrd~iL*|HqQDI$-5YTA_iOfy>m zybZ8>Zxi{7q&rQKM*uHNNa!#j&rynaW7$tr5(1Y4ev+6rHQ8(dP)BjTZWxKE{HnYV zDMh?y&T#5;wj_4Op1RC5Hvb0^3f5{7-woH?CEwhYQlUBb0M_4IE$WtQ{@&&5U)i&* z7jSubn?&QUlGS~M>)C8#{Gas@VC7u1zaX+~`*RrgrKs&Aw*s6GRCx_tR(iEsSKop< zNW$#<_DJjUBR~cfC$*c9*$x5g#&Y@QB}cB$okYn~Ap7VLkwHVUE7>*lH+aKl>TRUkIke({Iurm5Fy0(q?E(Ple6CZewDYK4 zCfbD|WamJm3jn-(=mM3hMfrsb0Okh(sr+JF-OmP|T&->a!2AI4VBj^8YI#AYtE#g| z0l@qK@HODtm1?=?aS31-?_>eMyZ})5_17L$DFB!c0GuS+#h)iqC2tFpS9ljG0GI~= z^m4kh>CJ9ckzKTQYrFtp=L5jqM>n8i;{JqdfB%h20l>}&KvNC;@~iy9Wfib<+Wah< zrffy8zmRmZOX&f24jQ@u;EBLs<~kYc4g(xd>ui=;ddn;f802Y_;4Kpu_0uEjwi z`e^-ce*-=g&N+D9eCG>1>i}T)VSvNBc<`a=`q=zTHZP50N8P^_uAS{&(>eg$5Abrx zs_X|?Xp!w(;Dm74biL#*N98*$1HHuf#K;>514nPa?u#$6?nt^lwG+PHQr82R;jhAB z&GpQW3W1uv3oI}8vOwMKp&okuSg#zzOHBaKwdf(us(9Qwc9rQ6J<7ZF7V!SyQ-SkV zl6Z@F%=O#JmQ4UKXyUbz-2N2Cq91lDsU+@e0q0`Q$*N+Ml<^XSqzM3KTz6;f@xb8& zNfrhvzL1x_x^I_59KacYNW(~_LDB{QeaQw^#KiDtL%Y3Xa_ms(L6w@x%Q0Wfs%pue zzBXI50l@d413aN2BX^@@;xKgDrHZ#%7U^$+2LVR_7p=*{-nV+GXYbNd0AS`#v?$fW zjlOYy;3UQ8v;Yc^DtBSy=v}Fn7d;xa@1`>Ek?$Vi{$C@Qd@kRThx|#S&A(CspiUku zmaC_){3bY;Bxo8ub|ordh?!TeN&;b{`_z3|iCIpX?2yn7qbbn^02X>E@T?A`3Nc0X zUpuq)cJiTdf3f_H+dD8kHhy*aG@9|Yn30n{eF4XeU1nDRSibIHZ?TRoO}gkO*@D;9 zC+}P(WbTdU`YGDF(S)qBN#gJ;qgfk~RxgG70AN+nErCY`4!+ny#1w`89ca}YUWSNg z;+`_*b#YaLrsNHo9wO4@K5Fvr@~NZMtm(Ktmd%<_bWD(5j?z z0ZAuwSVOBw;o{KXCQ6Y83rqn3)!842@&4#Ia+q-0QzuPyt$y`3yrhyv5-czk094Hx zu1mJ6NE@fKC?-xcW&4iFSHe6ac912(6w6F9B>?scr;c{7nEtrny^FPo6S%!2KiHe- zmni!X9dSG*095tZ8v555*PgwCuF$Hy7cdCo%#L+0$zc>fzz{<|v}U|^oY(uc5-Hf^ z;H%2-0V7`}eJ;|&0#o+@?#$`**t4R$=L_TsJUMLO)GZHn{Yv>>q^AX@27qdNQ;1)D zSF!6iSfa=P3*-O*djY+4`*f&>Zd1qoA@}}tC~m$T^c{ZNU2G3 z0f71*5Uy_#40R&=mB*!Y7!?`80yzO-Rh<=Kv^$9_ah>mZ!@jKHBbaKQS>y=C0)R{#W?O0%0Bp}9Z$ZQg~h&hxFPTf&XnFuY+*Y|(8f4HvaFV7!dkH>ZW@JgV%Ibr2AxBM4Xw>?CaqzeHb-+U1ooqpQ=hg`TtdNIaD%z|8Emcqd@hc90>~n+gMElXSifSW9knsMO)Q0N&1!pU5$Xa+92>qt zWeMC#5xqhn?nf$ReC)EA3m>r%?AwYZYW#F25!FY+?__QPnJ=Hp!hay>6ekhQD-tvN ziK+Qa!4mxZ3e;V4%vd@*--Z)w-mb@*h*_gB}U&v%KMS~04C z&0mgM{CUqxQuWPxqyVPZh?t(ba+*vNn?>lePJ5zTP$Nl#T{c78jhD@OuhOQrL{C9w zlV$9iy}1s|1(Tu*q27J+9yJgyo3RpW?RUn7e`G-CXO_@=VIsOKPu*Q&IUASO(=_bF zq057rH+cWp1KMpz7a5DZK4CvYY$Q0NeG^`nE8{nHVYe0XF^npkFvDhMN9Z%=0t(i;371koa$O`KPha z?>XJN@iKxe=+{5F6SqBqv|TOv&G`;K#awYD|6ZvTQ~Z%UyY;KsJC5!Jo=k8no(805aM|xyR)c$-a##I< z-?uB5q4JUX$y7uaV%*qqFII` z3%ZLAtUcB~U#HwKkQ>o{Bnm$35xaZ0nEwV_((UCLxM0b8P#tK7^akejUTsU7?vuO< zR>_YkWhL%1BBzOW*qlOE>gb|Ad3P#C0Egs%n&zqFQZw$dC0DXO^}1m!!{#k*xa9|{ zWrVT3Z?ZTvEN|kSi}Xn+Ci@=y+5Ju)m1L2iXMS-|BS$#dHLlBos&DwAe*samES{+P zz~TDCG&bj=#@oofv#tz5t7pGu5`n|?p6keB;*KeT?uVo2^P2TM4)IsI`wRyMBj?1% zqP2OXE@vhQ3I)kH*6E$dcA&K2!e3JOHvwI(Osvz8?OhJ2vL9hwa zsQrDGuUG+%gj&AWvfFlf9O1K9jFmJm_NrbH|L%Qh<<#W)VqVt3wXsidL3Io>j8nYb zKbWIg4R^w#nB z3ydHmy&~^eR>4}`$M#mu=AIuvq5^!Mhvch617<85cCibFJ-d`}M#@ruTz-z$F?@c3 z%XA&{u^WOtl;b#>MhC>#94tG?5bZkpGM)WC`lqM@+G(5jrtNsa){R*9S)QP;`OlT% zv!>IfI;3>%zQ*a>#bmlqVu4n}^U&|sCR+~o|H*!zPialCMn6b;s~$bgFCHh{#}8u!syG%buOZU*FRxBoT!!gNWZ$SF zjDAjOyj)>n`fN14ti{OHks_snhe(cE^f~3A+#vS?H}p zPe(O)656Y-Ymk>oLKvz&0VS+WrZFa78h--tgn z7m+=FU{7enu)S8zT)A;=^SOVhAs5hnwOc-vokS2d!7KdxbfTlo9T~HINUKSUnkESk zLM4VAQf|{xf$pXv$|m3V#NxX7&+i4$?Y{Y}`5l>SMd_*|4M1J}vi&mRg6v9bPVJ!x z2Ru;*?AQHUo^@RJx14Qi5l-*c1&F(zjlX4+ucD2CJu4`2x%}V221V%Xsc&6AR@?g|!NJ4m{7la~>DHjc_ xdc!n9rc++X(g~S$L!0wz@Y1ILPznLTvdI3I!8B^O@p`)i&JJ$&<+k*g{{a|L;uQb@ literal 0 HcmV?d00001 diff --git a/src/assets/icon/openai-avatar.jpeg b/src/assets/icon/openai-avatar.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7b46839fbb534396845e4e0fb99acc24aa3750cc GIT binary patch literal 17990 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 WMN-V-hi8TW0000V43gf;uum9 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 TwB^)wGy*hKbd{?Vts?#lXwpl& literal 0 HcmV?d00001 diff --git a/src/assets/img/app-ui.png b/src/assets/img/app-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..09256bff68153c687ddd90f67c679ad49c38cae0 GIT binary patch literal 19578 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/circular.png b/src/assets/img/circular.png new file mode 100755 index 0000000000000000000000000000000000000000..12f22efb331c667b900f045b3502818a05a3b9b4 GIT binary patch literal 2374 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%0D@=6&x^7=3|6jsNHw`aYL;_Sd5r&pIh+&Yqifq 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 S3p!Ge^XCk8vd>=o>wf?#G^&{Z literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/src/components/ByteMdEditor/index.vue b/src/components/ByteMdEditor/index.vue new file mode 100644 index 0000000..5193689 --- /dev/null +++ b/src/components/ByteMdEditor/index.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/src/components/ByteMdViewer/index.vue b/src/components/ByteMdViewer/index.vue new file mode 100644 index 0000000..22e95a3 --- /dev/null +++ b/src/components/ByteMdViewer/index.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/components/DesignBanner/index.vue b/src/components/DesignBanner/index.vue new file mode 100644 index 0000000..1afeacb --- /dev/null +++ b/src/components/DesignBanner/index.vue @@ -0,0 +1,173 @@ + + + diff --git a/src/components/DesignHeader/index.vue b/src/components/DesignHeader/index.vue new file mode 100644 index 0000000..a79c789 --- /dev/null +++ b/src/components/DesignHeader/index.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/DesignTools/index.bak.vue b/src/components/DesignTools/index.bak.vue new file mode 100644 index 0000000..d9539f8 --- /dev/null +++ b/src/components/DesignTools/index.bak.vue @@ -0,0 +1,256 @@ + + + diff --git a/src/components/DesignTools/index.vue b/src/components/DesignTools/index.vue new file mode 100644 index 0000000..a63cb33 --- /dev/null +++ b/src/components/DesignTools/index.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/components/DictRadio/index.vue b/src/components/DictRadio/index.vue new file mode 100644 index 0000000..175ac9b --- /dev/null +++ b/src/components/DictRadio/index.vue @@ -0,0 +1,58 @@ + + + + diff --git a/src/components/DictSelect/index.vue b/src/components/DictSelect/index.vue new file mode 100644 index 0000000..eaec11d --- /dev/null +++ b/src/components/DictSelect/index.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/components/DictSelectMultiple/index.vue b/src/components/DictSelectMultiple/index.vue new file mode 100644 index 0000000..5daaafd --- /dev/null +++ b/src/components/DictSelectMultiple/index.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/components/FormSelect/index.vue b/src/components/FormSelect/index.vue new file mode 100644 index 0000000..f13dc4c --- /dev/null +++ b/src/components/FormSelect/index.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/components/IndustrySelect/index.vue b/src/components/IndustrySelect/index.vue new file mode 100644 index 0000000..ab49a04 --- /dev/null +++ b/src/components/IndustrySelect/index.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/components/IndustrySelect/load-data.ts b/src/components/IndustrySelect/load-data.ts new file mode 100644 index 0000000..88ef030 --- /dev/null +++ b/src/components/IndustrySelect/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { IndustryData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getIndustryData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/industry-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/IndustrySelect/types/index.ts b/src/components/IndustrySelect/types/index.ts new file mode 100644 index 0000000..7c49435 --- /dev/null +++ b/src/components/IndustrySelect/types/index.ts @@ -0,0 +1,15 @@ +/** + * 行业类型 + */ +export interface IndustryData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/RadioGroup/index.vue b/src/components/RadioGroup/index.vue new file mode 100644 index 0000000..1deca38 --- /dev/null +++ b/src/components/RadioGroup/index.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/components/RedirectLayout/index.ts b/src/components/RedirectLayout/index.ts new file mode 100644 index 0000000..6c4def6 --- /dev/null +++ b/src/components/RedirectLayout/index.ts @@ -0,0 +1,21 @@ +/** 用于刷新的路由组件 */ +import { defineComponent, unref, h } from 'vue'; +import { useRouter } from 'vue-router'; +import { setRouteReload } from '@/utils/page-tab-util'; + +export default defineComponent({ + name: 'RedirectLayout', + setup() { + const { currentRoute, replace } = useRouter(); + const { params, query } = unref(currentRoute); + const from = Array.isArray(params.path) + ? params.path.join('/') + : params.path; + const path = '/' + from; + setTimeout(() => { + setRouteReload(null); + replace({ path, query }); + }, 100); + return () => h('div'); + } +}); diff --git a/src/components/RegionsSelect/index.vue b/src/components/RegionsSelect/index.vue new file mode 100644 index 0000000..47fe28e --- /dev/null +++ b/src/components/RegionsSelect/index.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/components/RegionsSelect/load-data.ts b/src/components/RegionsSelect/load-data.ts new file mode 100644 index 0000000..bc7d756 --- /dev/null +++ b/src/components/RegionsSelect/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { RegionsData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getRegionsData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/regions-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/RegionsSelect/types/index.ts b/src/components/RegionsSelect/types/index.ts new file mode 100644 index 0000000..ebf2eca --- /dev/null +++ b/src/components/RegionsSelect/types/index.ts @@ -0,0 +1,15 @@ +/** + * 省市区数据类型 + */ +export interface RegionsData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/RouterLayout/index.vue b/src/components/RouterLayout/index.vue new file mode 100644 index 0000000..e304b5c --- /dev/null +++ b/src/components/RouterLayout/index.vue @@ -0,0 +1,26 @@ + + + + diff --git a/src/components/SelectApp/components/select-data.vue b/src/components/SelectApp/components/select-data.vue new file mode 100644 index 0000000..7375365 --- /dev/null +++ b/src/components/SelectApp/components/select-data.vue @@ -0,0 +1,166 @@ + + + + diff --git a/src/components/SelectApp/index.vue b/src/components/SelectApp/index.vue new file mode 100644 index 0000000..2116468 --- /dev/null +++ b/src/components/SelectApp/index.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/components/SelectArticle/components/select-data.vue b/src/components/SelectArticle/components/select-data.vue new file mode 100644 index 0000000..901b7c7 --- /dev/null +++ b/src/components/SelectArticle/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectArticle/index.vue b/src/components/SelectArticle/index.vue new file mode 100644 index 0000000..f91bd0a --- /dev/null +++ b/src/components/SelectArticle/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectArticleCategory/components/select-data.vue b/src/components/SelectArticleCategory/components/select-data.vue new file mode 100644 index 0000000..4a6017c --- /dev/null +++ b/src/components/SelectArticleCategory/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectArticleCategory/index.vue b/src/components/SelectArticleCategory/index.vue new file mode 100644 index 0000000..f91bd0a --- /dev/null +++ b/src/components/SelectArticleCategory/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectCompany/components/select-data.vue b/src/components/SelectCompany/components/select-data.vue new file mode 100644 index 0000000..816d5c3 --- /dev/null +++ b/src/components/SelectCompany/components/select-data.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/components/SelectCompany/index.vue b/src/components/SelectCompany/index.vue new file mode 100644 index 0000000..653d4f3 --- /dev/null +++ b/src/components/SelectCompany/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/SelectDesign/components/select-data.vue b/src/components/SelectDesign/components/select-data.vue new file mode 100644 index 0000000..6e7d43b --- /dev/null +++ b/src/components/SelectDesign/components/select-data.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectDesign/index.vue b/src/components/SelectDesign/index.vue new file mode 100644 index 0000000..f91bd0a --- /dev/null +++ b/src/components/SelectDesign/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectDict/components/select-data.vue b/src/components/SelectDict/components/select-data.vue new file mode 100644 index 0000000..e67d672 --- /dev/null +++ b/src/components/SelectDict/components/select-data.vue @@ -0,0 +1,142 @@ + + + + diff --git a/src/components/SelectDict/index.vue b/src/components/SelectDict/index.vue new file mode 100644 index 0000000..c0401da --- /dev/null +++ b/src/components/SelectDict/index.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/components/SelectDocsBook/components/select-data.vue b/src/components/SelectDocsBook/components/select-data.vue new file mode 100644 index 0000000..094c2f7 --- /dev/null +++ b/src/components/SelectDocsBook/components/select-data.vue @@ -0,0 +1,152 @@ + + + + diff --git a/src/components/SelectDocsBook/index.vue b/src/components/SelectDocsBook/index.vue new file mode 100644 index 0000000..6b38e23 --- /dev/null +++ b/src/components/SelectDocsBook/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectFile/components/file-record-edit.vue b/src/components/SelectFile/components/file-record-edit.vue new file mode 100644 index 0000000..e9aa785 --- /dev/null +++ b/src/components/SelectFile/components/file-record-edit.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/components/SelectFile/components/select-data.vue b/src/components/SelectFile/components/select-data.vue new file mode 100644 index 0000000..f750423 --- /dev/null +++ b/src/components/SelectFile/components/select-data.vue @@ -0,0 +1,339 @@ + + + diff --git a/src/components/SelectFile/index.vue b/src/components/SelectFile/index.vue new file mode 100644 index 0000000..ba37cb8 --- /dev/null +++ b/src/components/SelectFile/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/components/SelectForm/components/select-data.vue b/src/components/SelectForm/components/select-data.vue new file mode 100644 index 0000000..8395752 --- /dev/null +++ b/src/components/SelectForm/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectForm/index.vue b/src/components/SelectForm/index.vue new file mode 100644 index 0000000..56c26e2 --- /dev/null +++ b/src/components/SelectForm/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectGoodsCategory/index.vue b/src/components/SelectGoodsCategory/index.vue new file mode 100644 index 0000000..9ae183c --- /dev/null +++ b/src/components/SelectGoodsCategory/index.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/components/SelectGoodsCategory/load-data.ts b/src/components/SelectGoodsCategory/load-data.ts new file mode 100644 index 0000000..88ef030 --- /dev/null +++ b/src/components/SelectGoodsCategory/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { IndustryData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getIndustryData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/industry-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/SelectGoodsCategory/types/index.ts b/src/components/SelectGoodsCategory/types/index.ts new file mode 100644 index 0000000..7c49435 --- /dev/null +++ b/src/components/SelectGoodsCategory/types/index.ts @@ -0,0 +1,15 @@ +/** + * 行业类型 + */ +export interface IndustryData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/SelectGrade/components/select-data.vue b/src/components/SelectGrade/components/select-data.vue new file mode 100644 index 0000000..20f2a6d --- /dev/null +++ b/src/components/SelectGrade/components/select-data.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/SelectGrade/index.vue b/src/components/SelectGrade/index.vue new file mode 100644 index 0000000..7446ba7 --- /dev/null +++ b/src/components/SelectGrade/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectGroup/components/select-data.vue b/src/components/SelectGroup/components/select-data.vue new file mode 100644 index 0000000..c8b4098 --- /dev/null +++ b/src/components/SelectGroup/components/select-data.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/SelectGroup/index.vue b/src/components/SelectGroup/index.vue new file mode 100644 index 0000000..de3ea93 --- /dev/null +++ b/src/components/SelectGroup/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectMerchant/components/select-data.vue b/src/components/SelectMerchant/components/select-data.vue new file mode 100644 index 0000000..08bf6c2 --- /dev/null +++ b/src/components/SelectMerchant/components/select-data.vue @@ -0,0 +1,157 @@ + + + + diff --git a/src/components/SelectMerchant/index.vue b/src/components/SelectMerchant/index.vue new file mode 100644 index 0000000..81c140f --- /dev/null +++ b/src/components/SelectMerchant/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/SelectMerchantType/index.vue b/src/components/SelectMerchantType/index.vue new file mode 100644 index 0000000..7d02c65 --- /dev/null +++ b/src/components/SelectMerchantType/index.vue @@ -0,0 +1,72 @@ + + + + diff --git a/src/components/SelectModules/components/select-data.vue b/src/components/SelectModules/components/select-data.vue new file mode 100644 index 0000000..198b727 --- /dev/null +++ b/src/components/SelectModules/components/select-data.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectModules/index.vue b/src/components/SelectModules/index.vue new file mode 100644 index 0000000..4537fe0 --- /dev/null +++ b/src/components/SelectModules/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/SelectOrganization/components/select-data.vue b/src/components/SelectOrganization/components/select-data.vue new file mode 100644 index 0000000..341e6dc --- /dev/null +++ b/src/components/SelectOrganization/components/select-data.vue @@ -0,0 +1,224 @@ + + + + diff --git a/src/components/SelectOrganization/components/select-organization.vue b/src/components/SelectOrganization/components/select-organization.vue new file mode 100644 index 0000000..d7399a7 --- /dev/null +++ b/src/components/SelectOrganization/components/select-organization.vue @@ -0,0 +1,123 @@ + + + + diff --git a/src/components/SelectOrganization/index.vue b/src/components/SelectOrganization/index.vue new file mode 100644 index 0000000..33e7b8a --- /dev/null +++ b/src/components/SelectOrganization/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/SelectRole/components/select-data.vue b/src/components/SelectRole/components/select-data.vue new file mode 100644 index 0000000..6a4df98 --- /dev/null +++ b/src/components/SelectRole/components/select-data.vue @@ -0,0 +1,150 @@ + + + + diff --git a/src/components/SelectRole/index.vue b/src/components/SelectRole/index.vue new file mode 100644 index 0000000..86f107f --- /dev/null +++ b/src/components/SelectRole/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectSpec/index.vue b/src/components/SelectSpec/index.vue new file mode 100644 index 0000000..515f516 --- /dev/null +++ b/src/components/SelectSpec/index.vue @@ -0,0 +1,58 @@ + + + + diff --git a/src/components/SelectSpecValue/index.vue b/src/components/SelectSpecValue/index.vue new file mode 100644 index 0000000..6b7f8c9 --- /dev/null +++ b/src/components/SelectSpecValue/index.vue @@ -0,0 +1,81 @@ + + + + diff --git a/src/components/SelectStaff/components/select-data.vue b/src/components/SelectStaff/components/select-data.vue new file mode 100644 index 0000000..4756bd1 --- /dev/null +++ b/src/components/SelectStaff/components/select-data.vue @@ -0,0 +1,144 @@ + + + + diff --git a/src/components/SelectStaff/components/select-user.vue b/src/components/SelectStaff/components/select-user.vue new file mode 100644 index 0000000..09db656 --- /dev/null +++ b/src/components/SelectStaff/components/select-user.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/components/SelectStaff/index.vue b/src/components/SelectStaff/index.vue new file mode 100644 index 0000000..ca14ec5 --- /dev/null +++ b/src/components/SelectStaff/index.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/components/SelectTenant/components/select-data.vue b/src/components/SelectTenant/components/select-data.vue new file mode 100644 index 0000000..67d42b8 --- /dev/null +++ b/src/components/SelectTenant/components/select-data.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectTenant/index.vue b/src/components/SelectTenant/index.vue new file mode 100644 index 0000000..5e311e8 --- /dev/null +++ b/src/components/SelectTenant/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/SelectUser/components/select-data.vue b/src/components/SelectUser/components/select-data.vue new file mode 100644 index 0000000..01f3c6f --- /dev/null +++ b/src/components/SelectUser/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectUser/components/select-user.vue b/src/components/SelectUser/components/select-user.vue new file mode 100644 index 0000000..09db656 --- /dev/null +++ b/src/components/SelectUser/components/select-user.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/components/SelectUser/index.vue b/src/components/SelectUser/index.vue new file mode 100644 index 0000000..44d7b2c --- /dev/null +++ b/src/components/SelectUser/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/Simulator/index.vue b/src/components/Simulator/index.vue new file mode 100644 index 0000000..cbe3f05 --- /dev/null +++ b/src/components/Simulator/index.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/components/Tag/index.vue b/src/components/Tag/index.vue new file mode 100644 index 0000000..97c5f72 --- /dev/null +++ b/src/components/Tag/index.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/TinymceEditor/index.vue b/src/components/TinymceEditor/index.vue new file mode 100644 index 0000000..aad1e50 --- /dev/null +++ b/src/components/TinymceEditor/index.vue @@ -0,0 +1,242 @@ + + + + + + diff --git a/src/components/TinymceEditor/util.ts b/src/components/TinymceEditor/util.ts new file mode 100644 index 0000000..ce05a27 --- /dev/null +++ b/src/components/TinymceEditor/util.ts @@ -0,0 +1,248 @@ +import type { + Editor as TinyMCEEditor, + EditorEvent, + RawEditorSettings +} from 'tinymce'; +const BASE_URL = import.meta.env.BASE_URL; + +// 默认加载插件 +const PLUGINS: string = [ + 'code', + 'preview', + 'fullscreen', + 'paste', + 'searchreplace', + 'save', + 'autosave', + 'link', + 'autolink', + 'image', + 'media', + 'table', + 'codesample', + 'lists', + 'advlist', + 'hr', + 'charmap', + 'emoticons', + 'anchor', + 'directionality', + 'pagebreak', + 'quickbars', + 'nonbreaking', + 'visualblocks', + 'visualchars', + 'wordcount' +].join(' '); + +// 默认工具栏布局 +const TOOLBAR: string = [ + 'fullscreen', + 'preview', + 'code', + 'codesample', + 'emoticons', + 'image', + 'media', + '|', + 'undo', + 'redo', + '|', + 'forecolor', + 'backcolor', + '|', + 'bold', + 'italic', + 'underline', + 'strikethrough', + '|', + 'alignleft', + 'aligncenter', + 'alignright', + 'alignjustify', + '|', + 'outdent', + 'indent', + '|', + 'numlist', + 'bullist', + '|', + 'formatselect', + 'fontselect', + 'fontsizeselect', + '|', + 'link', + 'charmap', + 'anchor', + 'pagebreak', + '|', + 'ltr', + 'rtl' +].join(' '); + +// 默认配置 +export const DEFAULT_CONFIG: RawEditorSettings = { + height: 300, + branding: false, + skin_url: BASE_URL + 'tinymce/skins/ui/oxide', + content_css: BASE_URL + 'tinymce/skins/content/default/content.min.css', + language_url: BASE_URL + 'tinymce/langs/zh_CN.js', + language: 'zh_CN', + plugins: PLUGINS, + toolbar: TOOLBAR, + draggable_modal: true, + toolbar_mode: 'sliding', + quickbars_insert_toolbar: '', + images_upload_handler: (blobInfo: any, success: any, error: any) => { + if (blobInfo.blob().size / 1024 > 400) { + error('大小不能超过 400KB'); + return; + } + success('data:image/jpeg;base64,' + blobInfo.base64()); + }, + file_picker_types: 'media', + file_picker_callback: () => {} +}; + +// 暗黑主题配置 +export const DARK_CONFIG: RawEditorSettings = { + skin_url: BASE_URL + 'tinymce/skins/ui/oxide-dark', + content_css: BASE_URL + 'tinymce/skins/content/dark/content.min.css' +}; + +// 支持监听的事件 +export const VALID_EVENTS = [ + 'onActivate', + 'onAddUndo', + 'onBeforeAddUndo', + 'onBeforeExecCommand', + 'onBeforeGetContent', + 'onBeforeRenderUI', + 'onBeforeSetContent', + 'onBeforePaste', + 'onBlur', + 'onChange', + 'onClearUndos', + 'onClick', + 'onContextMenu', + 'onCopy', + 'onCut', + 'onDblclick', + 'onDeactivate', + 'onDirty', + 'onDrag', + 'onDragDrop', + 'onDragEnd', + 'onDragGesture', + 'onDragOver', + 'onDrop', + 'onExecCommand', + 'onFocus', + 'onFocusIn', + 'onFocusOut', + 'onGetContent', + 'onHide', + 'onInit', + 'onKeyDown', + 'onKeyPress', + 'onKeyUp', + 'onLoadContent', + 'onMouseDown', + 'onMouseEnter', + 'onMouseLeave', + 'onMouseMove', + 'onMouseOut', + 'onMouseOver', + 'onMouseUp', + 'onNodeChange', + 'onObjectResizeStart', + 'onObjectResized', + 'onObjectSelected', + 'onPaste', + 'onPostProcess', + 'onPostRender', + 'onPreProcess', + 'onProgressState', + 'onRedo', + 'onRemove', + 'onReset', + 'onSaveContent', + 'onSelectionChange', + 'onSetAttrib', + 'onSetContent', + 'onShow', + 'onSubmit', + 'onUndo', + 'onVisualAid' +]; + +let unique = 0; + +/** + * 生成编辑器 id + */ +export function uuid(prefix: string): string { + const time = Date.now(); + const random = Math.floor(Math.random() * 1000000000); + unique++; + return prefix + '_' + random + unique + String(time); +} + +/** + * 绑定事件 + */ +export function bindHandlers( + initEvent: EditorEvent, + listeners: Record, + editor: TinyMCEEditor +): void { + const validEvents = VALID_EVENTS.map((event) => event.toLowerCase()); + Object.keys(listeners) + .filter((key: string) => validEvents.includes(key.toLowerCase())) + .forEach((key: string) => { + const handler = listeners[key]; + if (typeof handler === 'function') { + if (key === 'onInit') { + handler(initEvent, editor); + } else { + editor.on(key.substring(2), (e: EditorEvent) => + handler(e, editor) + ); + } + } + }); +} + +/** + * 弹出提示框 + */ +export function openAlert( + editor: TinyMCEEditor | null, + option: AlertOption = {} +) { + editor?.windowManager?.open({ + title: option.title ?? '提示', + body: { + type: 'panel', + items: [ + { + type: 'htmlpanel', + html: `

${option.content ?? ''}

` + } + ] + }, + buttons: [ + { + type: 'cancel', + name: 'closeButton', + text: '确定', + primary: true + } + ] + }); +} + +export interface AlertOption { + title?: string; + content?: string; +} diff --git a/src/components/UploadCert/index.vue b/src/components/UploadCert/index.vue new file mode 100644 index 0000000..12bd096 --- /dev/null +++ b/src/components/UploadCert/index.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/components/UploadFile/index.vue b/src/components/UploadFile/index.vue new file mode 100644 index 0000000..ed26080 --- /dev/null +++ b/src/components/UploadFile/index.vue @@ -0,0 +1,142 @@ + + + + diff --git a/src/components/User/index.vue b/src/components/User/index.vue new file mode 100644 index 0000000..7ea6327 --- /dev/null +++ b/src/components/User/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/components/UserChoose/choose-search.vue b/src/components/UserChoose/choose-search.vue new file mode 100644 index 0000000..d4498b5 --- /dev/null +++ b/src/components/UserChoose/choose-search.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/UserChoose/index.vue b/src/components/UserChoose/index.vue new file mode 100644 index 0000000..17ff8f7 --- /dev/null +++ b/src/components/UserChoose/index.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/components/UserChoose/types/index.ts b/src/components/UserChoose/types/index.ts new file mode 100644 index 0000000..27e3a37 --- /dev/null +++ b/src/components/UserChoose/types/index.ts @@ -0,0 +1,9 @@ +/** + * 搜索表单类型 + */ +export interface WhereType { + keywords?: string; + nickname?: string; + userId?: number; + phone?: string; +} diff --git a/src/components/UserSelect/index.vue b/src/components/UserSelect/index.vue new file mode 100644 index 0000000..7acbe43 --- /dev/null +++ b/src/components/UserSelect/index.vue @@ -0,0 +1,144 @@ + + + diff --git a/src/components/UserSelect/types/index.ts b/src/components/UserSelect/types/index.ts new file mode 100644 index 0000000..27e3a37 --- /dev/null +++ b/src/components/UserSelect/types/index.ts @@ -0,0 +1,9 @@ +/** + * 搜索表单类型 + */ +export interface WhereType { + keywords?: string; + nickname?: string; + userId?: number; + phone?: string; +} diff --git a/src/components/UserSelect/user-search.vue b/src/components/UserSelect/user-search.vue new file mode 100644 index 0000000..6d8b298 --- /dev/null +++ b/src/components/UserSelect/user-search.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/config/menu.ts b/src/config/menu.ts new file mode 100644 index 0000000..b075425 --- /dev/null +++ b/src/config/menu.ts @@ -0,0 +1,121 @@ +// 请参考开发文档配置菜单 https://eleadmin.com/doc/eleadminpro/#/config?id=menu + +export default [ + { + path: '/assets/server', + component: '/assets/server', + meta: { title: '服务器管理', icon: 'AuditOutlined' } + }, + { + path: '/project', + component: '/project', + meta: { title: '项目管理', icon: 'CodeOutlined' } + }, + { + path: '/customer', + component: '/customer', + meta: { title: '客户管理', icon: 'CrownOutlined' } + }, + { + path: '/content/article', + component: '/content/article', + meta: { title: '文章管理', icon: 'FileSearchOutlined' } + }, + { + path: '/content/docs/:id', + component: '/content/docs', + meta: { title: '文档管理', icon: 'ReadOutlined' } + }, + { + path: '/task/index', + component: '/task/index', + meta: { title: '任务管理', icon: 'HistoryOutlined' } + }, + { + path: '/appstore', + component: '/appstore', + meta: { title: '应用管理', icon: 'AppstoreOutlined' } + }, + { + path: '/system', + redirect: '/system/user', + meta: { title: '系统管理', icon: 'SettingOutlined' }, + children: [ + { + path: '/system/user', + component: '/system/user', + meta: { title: '用户管理', icon: 'TeamOutlined' } + }, + { + path: '/system/role', + component: '/system/role', + meta: { title: '角色管理', icon: 'IdcardOutlined' } + }, + { + path: '/system/menu', + component: '/system/menu', + meta: { title: '菜单管理', icon: 'AppstoreOutlined' } + }, + { + path: '/system/dictionary', + component: '/system/dictionary', + meta: { title: '字典管理', icon: 'ProfileOutlined' } + }, + { + path: '/system/organization', + component: '/system/organization', + meta: { title: '组织机构', icon: 'BankOutlined' } + }, + { + path: '/system/file', + component: '/system/file', + meta: { title: '文件管理', icon: 'FolderOutlined' } + }, + { + path: '/system/login-record', + component: '/system/login-record', + meta: { title: '登录日志', icon: 'CalendarOutlined' } + }, + { + path: '/system/operation-record', + component: '/system/operation-record', + meta: { title: '操作日志', icon: 'FileSearchOutlined' } + }, + { + path: '/system/tenant', + component: '/system/tenant', + meta: { title: '租户管理', icon: 'TeamOutlined' } + }, + { + path: '/system/setting', + component: '/system/setting', + meta: { title: '系统设置', icon: 'SettingOutlined' } + } + ] + }, + // 账号中心 + { + path: '/user', + hide: true, + redirect: '/user/profile', + meta: { title: '账号中心' }, + children: [ + { + path: '/user/profile', + component: '/user/profile', + meta: { title: '账号中心', hide: false } + }, + { + path: '/user/message', + component: '/user/message', + meta: { title: '我的消息', hide: false } + } + ] + }, + { + path: '/register', + hide: true, + component: '/passport/register/index.vue', + meta: { title: '免费注册' } + } +]; diff --git a/src/config/setting.ts b/src/config/setting.ts new file mode 100644 index 0000000..0bbf1e3 --- /dev/null +++ b/src/config/setting.ts @@ -0,0 +1,76 @@ +// 租户ID +export const TENANT_ID = import.meta.env.VITE_TENANT_ID; +// appSecret +export const APP_SECRET = 'ffd6eee985af45e4a75098422d1decbb'; + +export const domain = 'https://www.gxwebsoft.com'; +// 主节点 +export const SERVER_API_URL = import.meta.env.VITE_SERVER_URL; +// 模块节点 +export const MODULES_API_URL = import.meta.env.VITE_API_URL; +export const OPEN_API_URL = 'https://open.gxwebsoft.com/api'; +// 文件服务器地址 +export const FILE_SERVER = 'https://file.wsdns.cn'; + +/** + * 以下配置一般不需要修改 + */ +// 接口地址 +export const API_BASE_URL: string = import.meta.env.VITE_API_URL; +export const PROJECT_NAME: string = import.meta.env.VITE_APP_NAME; +// 不显示侧栏的路由 +export const HIDE_SIDEBARS: string[] = ['/home']; +// 不显示页脚的路由 +export const HIDE_FOOTERS: string[] = [ + '/system/dictionary', + '/system/organization', + '/form/advanced' +]; +// 页签同路由不同参数可重复打开的路由 +export const REPEATABLE_TABS: string[] = []; +// 不需要登录的路由 +export const WHITE_LIST: string[] = [ + '/login', + '/register', + '/forget', + '/wx-work-login', + '/token-login', + '/home' +]; +// 开启 KeepAlive 后仍然不需要缓存的路由地址 +export const KEEP_ALIVE_EXCLUDES: string[] = []; +// 直接指定菜单数据 +// export const USER_MENUS = menu; +export const USER_MENUS: Array | undefined = undefined; +// 首页名称, 为空则取第一个菜单的名称 +export const HOME_TITLE: string | undefined = undefined; +// 首页路径, 为空则取第一个菜单的地址 +export const HOME_PATH: string | undefined = undefined; +// 外层布局的路由地址 +export const LAYOUT_PATH = '/'; +// 刷新路由的路由地址 +export const REDIRECT_PATH = '/redirect'; +// 开启页签栏是否缓存组件 +//export const TAB_KEEP_ALIVE = !import.meta.env.DEV; +export const TAB_KEEP_ALIVE = true; +// token 传递的 header 名称 +export const TOKEN_HEADER_NAME = 'Authorization'; +// token 存储的名称 +export const TOKEN_STORE_NAME = 'access_token'; +// 主题配置存储的名称 +export const THEME_STORE_NAME = 'theme:'; +// i18n 缓存的名称 +export const I18N_CACHE_NAME = 'i18n-lang'; +// 是否开启国际化功能 +export const I18N_ENABLE = true; +// 高德地图 key , 自带的只能用于测试, 正式项目请自行到高德地图官网申请 key +export const MAP_KEY = '8191620da39a742c6f18f010c084c772'; +// 高德地图 安全密钥 +export const MAP_CODE = '7225174a116c1c44e1bd7a177d1787d5'; +// EleAdminPro 授权码, 自带的只能用于演示, 正式项目请更换为自己的授权码 +export const LICENSE_CODE = + 'dk9mcwJyetRWQlxWRiojIzJCLi8mcQ5Wa4ojI0NWZqJWd6ICZpJCL0kjNwl1NnhENahnIvl2cyVmdiwiIiATMuEjI6IibQf0NW=='; +// 缩略图前缀 +export const FILE_THUMBNAIL = FILE_SERVER + '/thumbnail'; +// 文件下载前缀 +export const FILE_DOWNLOAD = FILE_SERVER + '/download'; diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..7af0dbd --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,20 @@ +/** + * 国际化配置 + */ +import { createI18n } from 'vue-i18n'; +import { I18N_CACHE_NAME } from '@/config/setting'; +import zh_CN from './lang/zh_CN'; +import zh_TW from './lang/zh_TW'; +import en from './lang/en'; + +const messages = { zh_CN, zh_TW, en }; + +const i18n = createI18n({ + messages, + legacy: false, + silentTranslationWarn: true, + // 默认语言 + locale: localStorage.getItem(I18N_CACHE_NAME) || 'zh_CN' +}); + +export default i18n; diff --git a/src/i18n/lang/en/index.ts b/src/i18n/lang/en/index.ts new file mode 100644 index 0000000..743cea1 --- /dev/null +++ b/src/i18n/lang/en/index.ts @@ -0,0 +1,14 @@ +/** + * 英语 + */ +import route from './route'; +import layout from './layout'; +import login from './login'; +import list from './list'; + +export default { + route, + layout, + login, + list +}; diff --git a/src/i18n/lang/en/layout.ts b/src/i18n/lang/en/layout.ts new file mode 100644 index 0000000..ce9467e --- /dev/null +++ b/src/i18n/lang/en/layout.ts @@ -0,0 +1,77 @@ +/* 主框架 */ +export default { + home: 'Home', + header: { + profile: 'Profile', + password: 'Password', + logout: 'SignOut' + }, + footer: { + website: 'Website', + document: 'Document', + authorization: 'Authorization', + copyright: 'Copyright © 2021 Wuhan EClouds Technology Co., Ltd' + }, + logout: { + title: 'Confirm', + message: 'Are you sure you want to log out?' + }, + setting: { + title: 'Theme Setting', + sideStyles: { + dark: 'Dark Sidebar', + light: 'Light Sidebar' + }, + headStyles: { + light: 'Light Header', + dark: 'Dark Header', + primary: 'Primary Header' + }, + layoutStyles: { + side: 'Side Menu Layout', + top: 'Top Menu Layout', + mix: 'Mix Menu Layout' + }, + colors: { + default: 'Daybreak Blue', + dust: 'Dust Blue', + sunset: 'Sunset Orange', + volcano: 'Volcano', + purple: 'Golden Purple', + cyan: 'Cyan', + green: 'Polar Green', + geekblue: 'Geek Blue' + }, + darkMode: 'Dark Mode', + layoutStyle: 'Navigation Mode', + sideMenuStyle: 'Sidebar Double Menu', + bodyFull: 'Body Fixed Width', + other: 'Other Setting', + fixedHeader: 'Fixed Header', + fixedSidebar: 'Fixed Sidebar', + fixedBody: 'Fixed Body', + logoAutoSize: 'Logo In Header', + styleResponsive: 'Responsive', + colorfulIcon: 'Colorful Icon', + sideUniqueOpen: 'Menu Unique Open', + weakMode: 'Weak Mode', + showFooter: 'Show Footer', + showTabs: 'Show Tabs', + tabStyle: 'Tab Style', + tabStyles: { + default: 'Default', + dot: 'Dot', + card: 'Card' + }, + transitionName: 'Transition', + transitions: { + slideRight: 'Slide Right', + slideBottom: 'Slide Bottom', + zoomIn: 'Zoom In', + zoomOut: 'Zoom Out', + fade: 'Fade' + }, + reset: 'Reset', + tips: 'It will remember your configuration the next time you open it.' + } +}; diff --git a/src/i18n/lang/en/list.ts b/src/i18n/lang/en/list.ts new file mode 100644 index 0000000..f809452 --- /dev/null +++ b/src/i18n/lang/en/list.ts @@ -0,0 +1,17 @@ +/* 列表页面 */ +export default { + // 基础列表 + basic: { + table: { + avatar: 'Avatar', + username: 'Username', + nickname: 'Nickname', + organizationName: 'Organization', + phone: 'Phone', + sexName: 'Sex', + createTime: 'CreateTime', + status: 'Status', + action: 'Action' + } + } +}; diff --git a/src/i18n/lang/en/login.ts b/src/i18n/lang/en/login.ts new file mode 100644 index 0000000..860f1a4 --- /dev/null +++ b/src/i18n/lang/en/login.ts @@ -0,0 +1,11 @@ +/* 登录界面 */ +export default { + title: 'User Login', + username: 'please input username', + password: 'please input password', + code: 'please input code', + remember: 'remember', + forget: 'forget', + login: 'login', + loading: 'loading' +}; diff --git a/src/i18n/lang/en/route.ts b/src/i18n/lang/en/route.ts new file mode 100644 index 0000000..248e4b6 --- /dev/null +++ b/src/i18n/lang/en/route.ts @@ -0,0 +1,96 @@ +/* 菜单路由 */ +export default { + login: { _name: 'Login' }, + forget: { _name: 'Forget' }, + dashboard: { + _name: 'Dashboard', + workplace: { _name: 'Workplace' }, + analysis: { _name: 'Analysis' }, + monitor: { _name: 'Monitor' } + }, + system: { + _name: 'System', + user: { + _name: 'User', + details: { _name: '' } + }, + role: { _name: 'Role' }, + menu: { _name: 'Menu' }, + dictionary: { _name: 'Dictionary' }, + organization: { _name: 'Organization' }, + loginRecord: { _name: 'LoginRecord' }, + operationRecord: { _name: 'OperationRecord' }, + file: { _name: 'File' }, + userInfo: { _name: '' } + }, + form: { + _name: 'Form', + basic: { _name: 'Basic Form' }, + advanced: { _name: 'Advanced Form' }, + step: { _name: 'Step Form' } + }, + list: { + _name: 'List', + basic: { + _name: 'Basic List', + add: { _name: 'UserAdd' }, + edit: { _name: 'UserEdit' }, + details: { + ':id': { _name: '' } + } + }, + advanced: { _name: 'Advanced List' }, + card: { + _name: 'Card List', + project: { _name: 'Project' }, + application: { _name: 'Application' }, + article: { _name: 'Article' } + } + }, + result: { + _name: 'Result', + success: { _name: 'Success' }, + fail: { _name: 'Fail' } + }, + exception: { + _name: 'Exception', + '403': { _name: '403' }, + '404': { _name: '404' }, + '500': { _name: '500' } + }, + user: { + _name: 'User', + profile: { _name: 'Profile' }, + message: { _name: 'Message' } + }, + extension: { + _name: 'Extension', + tag: { _name: 'Tags' }, + dialog: { _name: 'DragDialog' }, + file: { _name: 'FileList' }, + upload: { _name: 'ImageUpload' }, + dragsort: { _name: 'DragSort' }, + colorPicker: { _name: 'ColorPicker' }, + regions: { _name: 'CitySelect' }, + printer: { _name: 'Printer' }, + excel: { _name: 'Excel' }, + countUp: { _name: 'CountUp' }, + tableSelect: { _name: 'TableSelect' }, + player: { _name: 'Player' }, + map: { _name: 'Map' }, + qrCode: { _name: 'QRCode' }, + barCode: { _name: 'BarCode' }, + editor: { _name: 'Editor' }, + markdown: { _name: 'Markdown' } + }, + example: { + _name: 'Example', + table: { _name: 'ProTable' }, + menuBadge: { _name: 'MenuBadge' }, + eleadmin: { _name: 'IFrame' }, + eleadminDoc: { _name: 'IFrame2' }, + document: { _name: 'Document' }, + choose: { _name: 'Choose' } + }, + 'https://eleadminCom/goods/9': { _name: 'Authorization' } +}; diff --git a/src/i18n/lang/zh_CN/index.ts b/src/i18n/lang/zh_CN/index.ts new file mode 100644 index 0000000..282e79e --- /dev/null +++ b/src/i18n/lang/zh_CN/index.ts @@ -0,0 +1,14 @@ +/** + * 简体中文 + */ +import route from './route'; +import layout from './layout'; +import login from './login'; +import list from './list'; + +export default { + route, + layout, + login, + list +}; diff --git a/src/i18n/lang/zh_CN/layout.ts b/src/i18n/lang/zh_CN/layout.ts new file mode 100644 index 0000000..7b3b59a --- /dev/null +++ b/src/i18n/lang/zh_CN/layout.ts @@ -0,0 +1,78 @@ +const storeName = localStorage.getItem('StoreName') || 'WebSoft Inc'; +/* 主框架 */ +export default { + home: '主页', + header: { + profile: '账号中心', + password: '修改密码', + logout: '退出登录' + }, + footer: { + website: '官网', + document: '文档', + authorization: '授权', + copyright: `© 2013-${new Date().getFullYear()} ${storeName}` + }, + logout: { + title: '提示', + message: '确定要退出登录吗?' + }, + setting: { + title: '整体风格设置', + sideStyles: { + dark: '暗色侧边栏', + light: '亮色侧边栏' + }, + headStyles: { + light: '亮色顶栏', + dark: '暗色顶栏', + primary: '主色顶栏' + }, + layoutStyles: { + side: '左侧菜单布局', + top: '顶部菜单布局', + mix: '混合菜单布局' + }, + colors: { + default: '拂晓蓝', + dust: '薄暮', + sunset: '日暮', + volcano: '火山', + purple: '酱紫', + cyan: '明青', + green: '极光绿', + geekblue: '极客蓝' + }, + darkMode: '开启暗黑模式', + layoutStyle: '导航模式', + sideMenuStyle: '侧栏双排菜单', + bodyFull: '内容区域定宽', + other: '其它配置', + fixedHeader: '固定顶栏区域', + fixedSidebar: '固定侧栏区域', + fixedBody: '固定主体区域', + logoAutoSize: 'Logo置于顶栏', + styleResponsive: '移动端响应式', + colorfulIcon: '侧栏彩色图标', + sideUniqueOpen: '侧栏排他展开', + weakMode: '开启色弱模式', + showFooter: '开启全局页脚', + showTabs: '开启多页签栏', + tabStyle: '页签显示风格', + tabStyles: { + default: '默认', + dot: '圆点', + card: '卡片' + }, + transitionName: '路由切换动画', + transitions: { + slideRight: '滑动消退', + slideBottom: '底部消退', + zoomIn: '放大渐变', + zoomOut: '缩小渐变', + fade: '淡入淡出' + }, + reset: '重置', + tips: '该功能可实时预览各种布局效果, 修改后会缓存在本地, 下次打开会记忆主题配置.' + } +}; diff --git a/src/i18n/lang/zh_CN/list.ts b/src/i18n/lang/zh_CN/list.ts new file mode 100644 index 0000000..0b31ab0 --- /dev/null +++ b/src/i18n/lang/zh_CN/list.ts @@ -0,0 +1,17 @@ +/* 列表页面 */ +export default { + // 基础列表 + basic: { + table: { + avatar: '头像', + username: '账号', + nickname: '昵称', + organizationName: '组织机构', + phone: '手机号', + sexName: '性别', + createTime: '创建时间', + status: '状态', + action: '操作' + } + } +}; diff --git a/src/i18n/lang/zh_CN/login.ts b/src/i18n/lang/zh_CN/login.ts new file mode 100644 index 0000000..d7d54cf --- /dev/null +++ b/src/i18n/lang/zh_CN/login.ts @@ -0,0 +1,11 @@ +/* 登录界面 */ +export default { + title: '用户登录', + username: '请输入登录账号', + password: '请输入登录密码', + code: '请输入验证码', + remember: '记住密码', + forget: '忘记密码', + login: '登录', + loading: '登录中' +}; diff --git a/src/i18n/lang/zh_CN/route.ts b/src/i18n/lang/zh_CN/route.ts new file mode 100644 index 0000000..eee1ba9 --- /dev/null +++ b/src/i18n/lang/zh_CN/route.ts @@ -0,0 +1,97 @@ +/* 菜单路由 */ +export default { + login: { _name: '登录' }, + forget: { _name: '忘记密码' }, + system: { + _name: '系统管理', + user: { + _name: '用户管理', + add: { _name: '添加用户' }, + edit: { _name: '修改用户' }, + details: { _name: '' } + }, + role: { _name: '角色管理' }, + menu: { _name: '菜单管理' }, + dictionary: { _name: '字典管理(系统类)' }, + organization: { _name: '组织机构' }, + loginRecord: { _name: '登录日志' }, + operationRecord: { _name: '操作日志' }, + file: { _name: '文件管理' } + }, + link: { + _name: '网址导航', + add: { _name: '添加网址' }, + edit: { _name: '修改网址' }, + details: { _name: '' } + }, + form: { + _name: '表单页面', + basic: { _name: '基础表单' }, + advanced: { _name: '复杂表单' }, + step: { _name: '分步表单' } + }, + list: { + _name: '列表页面', + basic: { + _name: '基础列表', + add: { _name: '添加用户' }, + edit: { _name: '修改用户' }, + details: { + ':id': { _name: '' } + } + }, + advanced: { _name: '复杂列表' }, + card: { + _name: '卡片列表', + project: { _name: '项目列表' }, + application: { _name: '应用列表' }, + article: { _name: '文章列表' } + } + }, + result: { + _name: '结果页面', + success: { _name: '成功页' }, + fail: { _name: '失败页' } + }, + exception: { + _name: '异常页面', + '403': { _name: '403' }, + '404': { _name: '404' }, + '500': { _name: '500' } + }, + user: { + _name: '用户管理', + profile: { _name: '账号中心' }, + message: { _name: '我的消息' } + }, + extension: { + _name: '扩展组件', + tag: { _name: '标签组件' }, + dialog: { _name: '拖拽弹窗' }, + file: { _name: '文件列表' }, + upload: { _name: '图片上传' }, + dragsort: { _name: '拖拽排序' }, + colorPicker: { _name: '颜色选择' }, + regions: { _name: '城市选择' }, + printer: { _name: '打印插件' }, + excel: { _name: 'excel插件' }, + countUp: { _name: '滚动数字' }, + tableSelect: { _name: '表格下拉' }, + player: { _name: '视频播放' }, + map: { _name: '地图组件' }, + qrCode: { _name: '二维码' }, + barCode: { _name: '条形码' }, + editor: { _name: '富文本框' }, + markdown: { _name: 'markdown' } + }, + example: { + _name: '常用实例', + table: { _name: '表格实例' }, + menuBadge: { _name: '菜单徽章' }, + eleadmin: { _name: '内嵌页面' }, + eleadminDoc: { _name: '内嵌文档' }, + document: { _name: '案卷调整' }, + choose: { _name: '批量选择' } + }, + 'https://eleadminCom/goods/9': { _name: '获取授权' } +}; diff --git a/src/i18n/lang/zh_TW/index.ts b/src/i18n/lang/zh_TW/index.ts new file mode 100644 index 0000000..50057e3 --- /dev/null +++ b/src/i18n/lang/zh_TW/index.ts @@ -0,0 +1,14 @@ +/** + * 繁体中文 + */ +import route from './route'; +import layout from './layout'; +import login from './login'; +import list from './list'; + +export default { + route, + layout, + login, + list +}; diff --git a/src/i18n/lang/zh_TW/layout.ts b/src/i18n/lang/zh_TW/layout.ts new file mode 100644 index 0000000..cfd0bd5 --- /dev/null +++ b/src/i18n/lang/zh_TW/layout.ts @@ -0,0 +1,77 @@ +/* 主框架 */ +export default { + home: '主頁', + header: { + profile: '個人中心', + password: '修改密碼', + logout: '安全登出' + }, + footer: { + website: '官網', + document: '檔案', + authorization: '授權', + copyright: 'Copyright © 2022 武漢易雲智科技有限公司' + }, + logout: { + title: '詢問', + message: '確定要登出嗎?' + }, + setting: { + title: '整體風格設定', + sideStyles: { + dark: '暗色側邊欄', + light: '亮色側邊欄' + }, + headStyles: { + light: '亮色頂欄', + dark: '暗色頂欄', + primary: '主色頂欄' + }, + layoutStyles: { + side: '左側選單佈局', + top: '頂部選單佈局', + mix: '混合選單佈局' + }, + colors: { + default: '拂曉藍', + dust: '薄暮', + sunset: '日暮', + volcano: '火山', + purple: '醬紫', + cyan: '明青', + green: '極光綠', + geekblue: '極客藍' + }, + darkMode: '開啟暗黑模式', + layoutStyle: '導航模式', + sideMenuStyle: '側欄雙排選單', + bodyFull: '內容區域定寬', + other: '其它配寘', + fixedHeader: '固定頂欄區域', + fixedSidebar: '固定側欄區域', + fixedBody: '固定主體區域', + logoAutoSize: 'Logo置於頂欄', + styleResponsive: '移動端響應式', + colorfulIcon: '側欄彩色圖標', + sideUniqueOpen: '側欄排他展開', + weakMode: '開啟色弱模式', + showFooter: '開啟全域頁腳', + showTabs: '開啟多頁簽欄', + tabStyle: '頁簽顯示風格', + tabStyles: { + default: '默認', + dot: '圓點', + card: '卡片' + }, + transitionName: '路由切換動畫', + transitions: { + slideRight: '滑動消退', + slideBottom: '底部消退', + zoomIn: '放大漸變', + zoomOut: '縮小漸變', + fade: '淡入淡出' + }, + reset: '重置', + tips: '該功能可實时預覽各種佈局效果,修改後會緩存在本地,下次打開會記憶主題配寘.' + } +}; diff --git a/src/i18n/lang/zh_TW/list.ts b/src/i18n/lang/zh_TW/list.ts new file mode 100644 index 0000000..f24c25f --- /dev/null +++ b/src/i18n/lang/zh_TW/list.ts @@ -0,0 +1,17 @@ +/* 列表页面 */ +export default { + // 基础列表 + basic: { + table: { + avatar: '頭像', + username: '用戶賬號', + nickname: '用戶名', + organizationName: '組織機構', + phone: '手機號', + sexName: '性別', + createTime: '創建時間', + status: '狀態', + action: '操作' + } + } +}; diff --git a/src/i18n/lang/zh_TW/login.ts b/src/i18n/lang/zh_TW/login.ts new file mode 100644 index 0000000..5cd7b85 --- /dev/null +++ b/src/i18n/lang/zh_TW/login.ts @@ -0,0 +1,11 @@ +/* 登录界面 */ +export default { + title: '用戶登錄', + username: '請輸入登入帳號', + password: '請輸入登入密碼', + code: '請輸入驗證碼', + remember: '記住密碼', + forget: '忘記密碼', + login: '登入', + loading: '登入中' +}; diff --git a/src/i18n/lang/zh_TW/route.ts b/src/i18n/lang/zh_TW/route.ts new file mode 100644 index 0000000..9a619e8 --- /dev/null +++ b/src/i18n/lang/zh_TW/route.ts @@ -0,0 +1,97 @@ +/* 菜单路由 */ +export default { + login: { _name: '登入' }, + forget: { _name: '忘記密碼' }, + dashboard: { + _name: '管理首頁', + workplace: { _name: '工作臺' }, + analysis: { _name: '分析頁' }, + monitor: { _name: '監控頁' } + }, + system: { + _name: '系統管理', + user: { + _name: '用戶管理', + add: { _name: '添加用戶' }, + edit: { _name: '編輯用戶' }, + details: { _name: '' } + }, + role: { _name: '角色管理' }, + menu: { _name: '選單管理' }, + dictionary: { _name: '字典管理' }, + organization: { _name: '機构管理' }, + loginRecord: { _name: '登入日誌' }, + operationRecord: { _name: '操作日誌' }, + file: { _name: '檔案管理' } + }, + form: { + _name: '表單頁面', + basic: { _name: '基礎表單' }, + advanced: { _name: '複雜表單' }, + step: { _name: '分步表單' } + }, + list: { + _name: '清單頁面', + basic: { + _name: '基礎清單', + add: { _name: '添加用戶' }, + edit: { _name: '編輯用戶' }, + details: { + ':id': { _name: '' } + } + }, + advanced: { _name: '複雜清單' }, + card: { + _name: '卡片清單', + project: { _name: '項目清單' }, + application: { _name: '應用清單' }, + article: { _name: '文章清單' } + } + }, + result: { + _name: '結果頁面', + success: { _name: '成功頁' }, + fail: { _name: '失敗頁' } + }, + exception: { + _name: '异常頁面', + '403': { _name: '403' }, + '404': { _name: '404' }, + '500': { _name: '500' } + }, + user: { + _name: '個人中心', + profile: { _name: '個人資料' }, + message: { _name: '我的消息' } + }, + extension: { + _name: '擴展組件', + tag: { _name: '標籤組件' }, + dialog: { _name: '拖拽彈窗' }, + file: { _name: '檔案清單' }, + upload: { _name: '圖片上傳' }, + dragsort: { _name: '拖拽排序' }, + colorPicker: { _name: '顏色選擇' }, + regions: { _name: '城市選擇' }, + printer: { _name: '列印挿件' }, + excel: { _name: 'excel挿件' }, + countUp: { _name: '滾動數字' }, + tableSelect: { _name: '表格下拉' }, + player: { _name: '視頻播放' }, + map: { _name: '地圖組件' }, + qrCode: { _name: '二維碼' }, + barCode: { _name: '條形碼' }, + editor: { _name: '富文本框' }, + markdown: { _name: 'markdown' } + }, + example: { + _name: '常用實例', + table: { _name: '表格實例' }, + menuBadge: { _name: '選單徽章' }, + eleadmin: { _name: '內嵌頁面' }, + eleadminDoc: { _name: '内嵌文檔' }, + document: { _name: '案卷調整' }, + choose: { _name: '批量選擇' } + }, + 'https://eleadminCom/goods/9': { _name: '獲取授權' } +}; diff --git a/src/i18n/use-locale.ts b/src/i18n/use-locale.ts new file mode 100644 index 0000000..5c10eef --- /dev/null +++ b/src/i18n/use-locale.ts @@ -0,0 +1,38 @@ +/** + * AntDesignVue、EleAdminPro、Dayjs 国际化配置 + */ +import { ref, watch } from 'vue'; +import { useI18n } from 'vue-i18n'; +import type { Locale } from 'ant-design-vue/es/locale-provider'; +import type { EleLocale } from 'ele-admin-pro/es'; +// AntDesignVue +import zh_CN from 'ant-design-vue/es/locale/zh_CN'; +import zh_TW from 'ant-design-vue/es/locale/zh_TW'; +import en from 'ant-design-vue/es/locale/en_US'; +// EleAdminPro +import eleZh_CN from 'ele-admin-pro/es/lang/zh_CN'; +import eleZh_TW from 'ele-admin-pro/es/lang/zh_TW'; +import eleEn from 'ele-admin-pro/es/lang/en_US'; +// Dayjs +import dayjs from 'dayjs'; +import 'dayjs/locale/zh-cn'; +import 'dayjs/locale/zh-tw'; +const antLocales = { zh_CN, zh_TW, en }; +const eleLocales = { zh_CN: eleZh_CN, zh_TW: eleZh_TW, en: eleEn }; + +export function useLocale() { + const { locale } = useI18n(); + const antLocale = ref(); + const eleLocale = ref(); + + watch( + locale, + () => { + antLocale.value = antLocales[locale.value]; + eleLocale.value = eleLocales[locale.value]; + dayjs.locale(locale.value.toLowerCase().replace(/_/g, '-')); + }, + { immediate: true } + ); + return { antLocale, eleLocale }; +} diff --git a/src/layout/components/header-notice.vue b/src/layout/components/header-notice.vue new file mode 100644 index 0000000..c29b967 --- /dev/null +++ b/src/layout/components/header-notice.vue @@ -0,0 +1,231 @@ + + + + + + + + diff --git a/src/layout/components/header-tools-bak.vue b/src/layout/components/header-tools-bak.vue new file mode 100644 index 0000000..af0d920 --- /dev/null +++ b/src/layout/components/header-tools-bak.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/layout/components/header-tools.vue b/src/layout/components/header-tools.vue new file mode 100644 index 0000000..763ea73 --- /dev/null +++ b/src/layout/components/header-tools.vue @@ -0,0 +1,325 @@ + + + + + + + + diff --git a/src/layout/components/header-wechat.vue b/src/layout/components/header-wechat.vue new file mode 100644 index 0000000..e804665 --- /dev/null +++ b/src/layout/components/header-wechat.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/layout/components/i18n-icon.vue b/src/layout/components/i18n-icon.vue new file mode 100644 index 0000000..82984d6 --- /dev/null +++ b/src/layout/components/i18n-icon.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/layout/components/menu-title.vue b/src/layout/components/menu-title.vue new file mode 100644 index 0000000..168a697 --- /dev/null +++ b/src/layout/components/menu-title.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layout/components/page-footer.vue b/src/layout/components/page-footer.vue new file mode 100644 index 0000000..e063d46 --- /dev/null +++ b/src/layout/components/page-footer.vue @@ -0,0 +1,14 @@ + + + + diff --git a/src/layout/components/password-modal.vue b/src/layout/components/password-modal.vue new file mode 100644 index 0000000..2075b7a --- /dev/null +++ b/src/layout/components/password-modal.vue @@ -0,0 +1,146 @@ + + + + diff --git a/src/layout/components/setting-drawer.vue b/src/layout/components/setting-drawer.vue new file mode 100644 index 0000000..5586383 --- /dev/null +++ b/src/layout/components/setting-drawer.vue @@ -0,0 +1,745 @@ + + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..8160aa7 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,345 @@ + + + + + + + diff --git a/src/layout/menu-icons.ts b/src/layout/menu-icons.ts new file mode 100644 index 0000000..5adf784 --- /dev/null +++ b/src/layout/menu-icons.ts @@ -0,0 +1,152 @@ +/** 菜单用到的图标 */ +export { + HomeOutlined, + SettingOutlined, + TeamOutlined, + DesktopOutlined, + FileTextOutlined, + TableOutlined, + AppstoreOutlined, + CheckCircleOutlined, + ExclamationCircleOutlined, + UserOutlined, + TagOutlined, + IdcardOutlined, + BarChartOutlined, + AuditOutlined, + PicLeftOutlined, + CloseCircleOutlined, + QuestionCircleOutlined, + SoundOutlined, + ApartmentOutlined, + DashboardOutlined, + OneToOneOutlined, + DragOutlined, + InteractionOutlined, + BankOutlined, + BlockOutlined, + CheckSquareOutlined, + ProfileOutlined, + WarningOutlined, + FolderOutlined, + YoutubeOutlined, + ControlOutlined, + EllipsisOutlined, + CalendarOutlined, + AppstoreAddOutlined, + FileSearchOutlined, + EnvironmentOutlined, + CompassOutlined, + FontSizeOutlined, + SketchOutlined, + BgColorsOutlined, + PrinterOutlined, + QrcodeOutlined, + BarcodeOutlined, + PictureOutlined, + LinkOutlined, + AlertOutlined, + HistoryOutlined, + ChromeOutlined, + CodeOutlined, + AntDesignOutlined, + ReadOutlined, + CrownOutlined, + LaptopOutlined, + ShoppingCartOutlined, + SkinOutlined, + ShopOutlined, + ShoppingOutlined, + AliyunOutlined, + GiftOutlined, + InsuranceOutlined, + FileZipOutlined, + SearchOutlined, + RedEnvelopeOutlined, + MoneyCollectOutlined, + TagsOutlined, + PayCircleOutlined, + RocketOutlined, + BarsOutlined, + WalletOutlined, + UngroupOutlined, + ToolOutlined, + HourglassOutlined, + FormatPainterOutlined, + CarOutlined, + DownloadOutlined, + UploadOutlined, + MailOutlined, + CloudOutlined, + ClearOutlined, + CoffeeOutlined, + CopyrightOutlined, + CompressOutlined, + CalculatorOutlined, + AimOutlined, + AudioOutlined, + BugOutlined, + CloudSyncOutlined, + CommentOutlined, + DisconnectOutlined, + DingtalkOutlined, + ExpandOutlined, + DollarOutlined, + FolderOpenOutlined, + ExperimentOutlined, + ForkOutlined, + FolderAddOutlined, + FunnelPlotOutlined, + GlobalOutlined, + LikeOutlined, + LayoutOutlined, + MergeCellsOutlined, + MehOutlined, + MobileOutlined, + NodeExpandOutlined, + PaperClipOutlined, + ScanOutlined, + ShakeOutlined, + ThunderboltOutlined, + TrademarkOutlined, + UnlockOutlined, + UsbOutlined, + WhatsAppOutlined, + WomanOutlined, + WifiOutlined, + VerifiedOutlined, + UserSwitchOutlined, + UsergroupAddOutlined, + UsergroupDeleteOutlined, + UserAddOutlined, + UserDeleteOutlined, + TranslationOutlined, + TransactionOutlined, + TrophyOutlined, + StarOutlined, + SplitCellsOutlined, + ShareAltOutlined, + RestOutlined, + PartitionOutlined, + MedicineBoxOutlined, + HeartOutlined, + GatewayOutlined, + FlagOutlined, + FireOutlined, + FieldNumberOutlined, + FieldStringOutlined, + AppleOutlined, + AndroidOutlined, + GithubOutlined, + Html5Outlined, + QqOutlined, + AlipayOutlined, + RedditOutlined, + InstagramOutlined, + WechatOutlined, + BorderOutlined, + PieChartOutlined, + AreaChartOutlined, + KeyOutlined, + LockOutlined +} from '@ant-design/icons-vue'; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..876546c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,16 @@ +import { createApp } from 'vue'; +import App from './App.vue'; +import store from './store'; +import router from './router'; +import permission from './utils/permission'; +import i18n from './i18n'; +import './styles/index.less'; + +const app = createApp(App); + +app.use(store); +app.use(router); +app.use(permission); +app.use(i18n); + +app.mount('#app'); diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..fcc68fa --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,67 @@ +/** + * 路由配置 + */ +import NProgress from 'nprogress'; +import type { _RouteLocationBase } from 'vue-router'; +import { createRouter, createWebHistory } from 'vue-router'; +import { WHITE_LIST, REDIRECT_PATH, LAYOUT_PATH } from '@/config/setting'; +import { useUserStore } from '@/store/modules/user'; +import { getToken } from '@/utils/token-util'; +import { routes, getMenuRoutes } from './routes'; +import { useTenantStore } from '@/store/modules/tenant'; + +NProgress.configure({ + speed: 200, + minimum: 0.02, + trickleSpeed: 200, + showSpinner: false +}); + +const router = createRouter({ + routes, + history: createWebHistory(), + scrollBehavior() { + return { top: 0 }; + } +}); + +/** + * 路由守卫 + */ +router.beforeEach(async (to, from) => { + if (!from.path.includes(REDIRECT_PATH)) { + NProgress.start(); + } + // 租户信息 + const tenantStore = useTenantStore(); + await tenantStore.fetchTenantInfo(); + if (!getToken()) { + // 未登录跳转登录界面 + if (!WHITE_LIST.includes(to.path)) { + return { + path: '/login', + query: to.path === LAYOUT_PATH ? {} : { from: to.path } + }; + } + return; + } + // 注册动态路由 + const userStore = useUserStore(); + if (!userStore.menus) { + const { menus, homePath } = await userStore.fetchUserInfo(); + if (menus) { + router.addRoute(getMenuRoutes(menus, homePath)); + return { ...to, replace: true }; + } + } +}); + +router.afterEach((to) => { + if (!to.path.includes(REDIRECT_PATH) && NProgress.isStarted()) { + setTimeout(() => { + NProgress.done(true); + }, 200); + } +}); + +export default router; diff --git a/src/router/routes.ts b/src/router/routes.ts new file mode 100644 index 0000000..f7c49f7 --- /dev/null +++ b/src/router/routes.ts @@ -0,0 +1,93 @@ +import type { RouteRecordRaw } from 'vue-router'; +import type { MenuItemType } from 'ele-admin-pro/es'; +import { menuToRoutes, eachTreeData } from 'ele-admin-pro/es'; +import { HOME_PATH, LAYOUT_PATH, REDIRECT_PATH } from '@/config/setting'; +import EleLayout from '@/layout/index.vue'; +import RedirectLayout from '@/components/RedirectLayout'; +const modules = import.meta.glob('/src/views/**/index.vue'); + +/** + * 静态路由 + */ +export const routes = [ + { + path: '/login', + component: () => import('@/views/passport/login/index.vue'), + meta: { title: '登录' } + }, + { + path: '/register', + component: () => import('@/views/passport/register/step/index.vue'), + meta: { title: '免费注册' } + }, + { + path: '/forget', + component: () => import('@/views/passport/forget/index.vue'), + meta: { title: '忘记密码' } + }, + { + path: '/wx-work-login', + component: () => import('@/views/passport/wx-work/index.vue'), + meta: { title: '企业微信登录' } + }, + { + path: '/token-login', + component: () => import('@/views/passport/token-login/index.vue'), + meta: { title: '快捷登录' } + }, + { + path: '/cms/category/:id', + component: () => import('@/views/cms/category/preview/index.vue'), + meta: { title: '文章列表' } + }, + { + path: '/cms/article/:id', + component: () => import('@/views/cms/article/preview/index.vue'), + meta: { title: '文章详情' } + }, + // 404 + { + path: '/:path(.*)*', + component: () => import('@/views/result/fail/index.vue') + } +]; + +/** + * 动态路由 + * @param menus 菜单数据 + * @param homePath 主页地址 + */ +export function getMenuRoutes(menus?: MenuItemType[], homePath?: string) { + const routes: RouteRecordRaw[] = [ + // 用于刷新的路由 + { + path: REDIRECT_PATH + '/:path(.*)', + component: RedirectLayout, + meta: { hideFooter: true } + } + ]; + // 路由铺平处理 + eachTreeData(menuToRoutes(menus, getComponent), (route) => { + routes.push(Object.assign({}, route, { children: void 0 })); + }); + return { + path: LAYOUT_PATH, + component: EleLayout, + redirect: HOME_PATH ?? homePath, + children: routes + }; +} + +/** + * 解析路由组件 + * @param component 组件名称 + */ +function getComponent(component?: string) { + if (component) { + const module = modules[`/src/views/${component}.vue`]; + if (!module) { + return modules[`/src/views/${component}/index.vue`]; + } + return module; + } +} diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..fe7917e --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..bf43b30 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,6 @@ +/** + * pinia + */ +import { createPinia } from 'pinia'; + +export default createPinia(); diff --git a/src/store/modules/chat.ts b/src/store/modules/chat.ts new file mode 100644 index 0000000..1ef1bf5 --- /dev/null +++ b/src/store/modules/chat.ts @@ -0,0 +1,134 @@ +import { defineStore } from 'pinia'; +import { io, Socket } from 'socket.io-client'; +import { getToken } from '@/utils/token-util'; +import { ChatConversation, ChatMessage } from '@/api/system/chat/model'; +import { + pageChatConversation, + updateChatConversation +} from '@/api/system/chat'; +import { emitter } from '@/utils/common'; + +const SOCKET_URL: string = import.meta.env.VITE_SOCKET_URL; + +interface ConnectionOptions { + token: string; + userId: number; + isAdmin: boolean; +} + +export interface ChatState { + socket: Socket | undefined; + conversations: ChatConversation[]; +} + +export const useChatStore = defineStore({ + id: 'chat', + state: (): ChatState => ({ + socket: undefined, + conversations: [] + }), + getters: { + unReadLetter(): number { + return this.conversations.reduce((count, item) => count + item.unRead, 0); + }, + unReadConversations(): ChatConversation[] { + return this.conversations + .filter((item) => item.unRead > 0) + .sort((a, b) => { + return ( + new Date(b.updateTime).getTime() - new Date(a.updateTime).getTime() + ); + }); + } + }, + actions: { + readConversation(id) { + const index = this.conversations.findIndex((item) => item.id === id); + if (index >= 0) { + updateChatConversation({ + id: this.conversations[index].id, + unRead: 0 + }); + this.conversations.splice(index, 1); + } + }, + async connectSocketIO(userId: number) { + console.log( + '---------------------------------connectSocketIO----------------------------------' + ); + const options: ConnectionOptions = { + token: getToken() || '', + userId: userId, + isAdmin: true + }; + + const socket: Socket = io(SOCKET_URL, { + query: options, + transports: ['websocket', 'polling'], + timeout: 5000 + }); + + socket.on('connect', () => { + this.socket = socket; + console.log( + '---------------------------------socket connect----------------------------------' + ); + // 获取聊天列表 + pageChatConversation({ + keywords: '', + status: 1, + page: 1, + limit: 100, + onlyFake: true + }).then((res) => { + if (res?.list) { + this.conversations = res.list; + } + }); + }); + console.log( + '---------------------------------socket----------------------------------', + socket + ); + console.log('收到socket消息>>>'); + // 收到新消息 + socket.on('message', (data: ChatMessage) => { + console.log('收到socket消息>>>'); + const index = this.conversations.findIndex( + (item) => + item.friendId === data.formUserId && item.userId === data.toUserId + ); + let content = ''; + if (data.type == 'image') { + content = '图片'; + } else if (data.type === 'card') { + content = '卡片'; + } else { + content = data.content; + } + if (index >= 0) { + this.conversations[index].unRead++; + this.conversations[index].content = content; + this.conversations[index].updateTime = Date.now(); + } else { + this.conversations.push({ + content: content, + friendInfo: data.formUserInfo, + userInfo: data.toUserInfo, + messages: [], + unRead: 1, + updateTime: Date.now(), + userId: data.toUserId, + friendId: data.formUserId + }); + } + + emitter.emit('message', data); + }); + + socket.on('connect_error', () => { + console.log('connect_error'); + }); + } + } +}); diff --git a/src/store/modules/params.ts b/src/store/modules/params.ts new file mode 100644 index 0000000..1e20ad1 --- /dev/null +++ b/src/store/modules/params.ts @@ -0,0 +1,40 @@ +/** + * 接收传参 store + */ +import { defineStore } from 'pinia'; + +export interface ParamsState { + title: string | null; + comments: string | null; + back: string | null; + redirect: string | null | undefined; +} + +export const useParamsStore = defineStore({ + id: 'params', + state: (): ParamsState => ({ + // 标题 + title: '操作成功', + // 描述 + comments: '您的申请已提交', + // 当前页面路径 + back: null, + // 跳转的页面 + redirect: null + }), + getters: {}, + actions: { + setTitle(value: string) { + this.title = value; + }, + setComments(value: string) { + this.comments = value; + }, + setBack(value: string) { + this.back = value; + }, + setRedirect(value: string) { + this.redirect = value; + } + } +}); diff --git a/src/store/modules/tenant.ts b/src/store/modules/tenant.ts new file mode 100644 index 0000000..ea600aa --- /dev/null +++ b/src/store/modules/tenant.ts @@ -0,0 +1,85 @@ +/** + * 租户信息 store + */ +import { defineStore } from 'pinia'; +import { formatMenus, toTreeData, formatTreeData } from 'ele-admin-pro'; +import type { MenuItem } from 'ele-admin-pro'; +import { USER_MENUS } from '@/config/setting'; +import { getTenantInfo } from '@/api/layout'; +import { Tenant } from '@/api/system/tennat/model'; +import { Company } from '@/api/system/company/model'; +// const EXTRA_MENUS: any = []; + +export interface UserState { + tenant: Tenant | null; + company: Company | null; + menus: MenuItem[] | null | undefined; +} + +export const useTenantStore = defineStore({ + id: 'tenant', + state: (): UserState => ({ + // 租户信息 + tenant: null, + // 企业信息 + company: null, + // 当前登录用户的菜单 + menus: null + }), + getters: {}, + actions: { + /** + * 请求用户信息、权限、角色、菜单 + */ + async fetchTenantInfo() { + const company = await getTenantInfo().catch(() => void 0); + if (!company) { + return {}; + } + // 租户信息 + this.company = company; + // 企业信息 + if (company) { + this.company = company; + localStorage.setItem('TenantId', String(company.tenantId)); + localStorage.setItem('TenantName', String(company.companyName)); + localStorage.setItem('CompanyId', String(company.companyId)); + } + // 用户菜单, 过滤掉按钮类型并转为 children 形式 + const { menus, homePath } = formatMenus( + USER_MENUS ?? + toTreeData({ + data: USER_MENUS, + idField: 'menuId', + parentIdField: 'parentId' + }) + ); + this.menus = menus; + return { menus, homePath }; + }, + /** + * 更新租户信息 + */ + setInfo(value: Tenant) { + this.tenant = value; + }, + /** + * 更新菜单的 badge + */ + setMenuBadge(path: string, value?: number | string, color?: string) { + this.menus = formatTreeData(this.menus, (m) => { + if (path === m.path) { + return { + ...m, + meta: { + ...m.meta, + badge: value, + badgeColor: color + } + }; + } + return m; + }); + } + } +}); diff --git a/src/store/modules/theme.ts b/src/store/modules/theme.ts new file mode 100644 index 0000000..2e025b5 --- /dev/null +++ b/src/store/modules/theme.ts @@ -0,0 +1,707 @@ +/** + * 主题状态管理 + */ +import { defineStore } from 'pinia'; +import { + changeColor, + screenWidth, + screenHeight, + contentWidth, + contentHeight, + WEAK_CLASS, + BODY_LIMIT_CLASS, + DISABLES_CLASS +} from 'ele-admin-pro/es'; +import type { + TabItem, + HeadStyleType, + SideStyleType, + LayoutStyleType, + SideMenuStyleType, + TabStyleType, + TabRemoveOption +} from 'ele-admin-pro/es'; +import { + TAB_KEEP_ALIVE, + KEEP_ALIVE_EXCLUDES, + THEME_STORE_NAME +} from '@/config/setting'; +// import { getCache } from '@/api/system/cache'; + +/** + * state 默认值 + */ +const DEFAULT_STATE: ThemeState = Object.freeze({ + // 页签数据 + tabs: [], + // 是否折叠侧栏 + collapse: false, + // 是否折叠一级侧栏 + sideNavCollapse: false, + // 内容区域是否全屏 + bodyFullscreen: false, + // 是否开启页签栏 + showTabs: true, + // 是否开启页脚 + showFooter: false, + // 顶栏风格: light(亮色), dark(暗色), primary(主色) + headStyle: 'dark', + // 侧栏风格: light(亮色), dark(暗色) + sideStyle: 'light', + // 布局风格: side(默认), top(顶栏导航), mix(混合导航) + layoutStyle: 'mix', + // 侧栏菜单风格: default(默认), mix(双排侧栏) + sideMenuStyle: 'default', + // 页签风格: default(默认), dot(圆点), card(卡片) + tabStyle: 'dot', + // 路由切换动画 + transitionName: 'fade', + // 是否固定顶栏 + fixedHeader: false, + // 是否固定侧栏 + fixedSidebar: true, + // 是否固定主体 + fixedBody: true, + // 内容区域宽度铺满 + bodyFull: true, + // logo 是否自适应宽度 + logoAutoSize: true, + // 侧栏是否彩色图标 + colorfulIcon: true, + // 侧栏是否只保持一个子菜单展开 + sideUniqueOpen: false, + // 是否是色弱模式 + weakMode: false, + // 是否是暗黑模式 + darkMode: false, + // 主题色 + color: '', + // 主页的组件名称 + homeComponents: [], + // 刷新路由时的参数 + routeReload: null, + // 屏幕宽度 + screenWidth: screenWidth(), + // 屏幕高度 + screenHeight: screenHeight(), + // 内容区域宽度 + contentWidth: contentWidth(), + // 内容区域高度 + contentHeight: contentHeight(), + // 是否开启响应式 + styleResponsive: true +}); +// 延时操作定时器 +let disableTransitionTimer: number, updateContentSizeTimer: number; + +/** + * 读取缓存配置 + */ +function getCacheSetting(): any { + try { + const value = localStorage.getItem(THEME_STORE_NAME); + // 加载redis缓存 + // getCache('theme').then((data) => { + // if (typeof data === 'object') { + // // 写入本地缓存 + // localStorage.setItem(THEME_STORE_NAME, JSON.stringify(data)); + // return data; + // } + // }); + if (value) { + const cache = JSON.parse(value); + // 加载本地缓存 + if (typeof cache === 'object') { + return cache; + } + } + } catch (e) { + console.error(e); + } + return {}; +} + +/** + * 缓存配置 + */ +function cacheSetting(key: string, value: any) { + const cache = getCacheSetting(); + if (cache[key] !== value) { + cache[key] = value; + // console.log(value); + // localStorage.setItem(THEME_STORE_NAME, JSON.stringify(cache)); + // updateCacheTheme({ + // key: 'theme', + // content: JSON.stringify(cache) + // }).then((res) => { + // console.log(res); + // }); + } +} + +/** + * 开关响应式布局 + */ +function changeStyleResponsive(styleResponsive: boolean) { + if (styleResponsive) { + document.body.classList.remove(BODY_LIMIT_CLASS); + } else { + document.body.classList.add(BODY_LIMIT_CLASS); + } +} + +/** + * 切换色弱模式 + */ +function changeWeakMode(weakMode: boolean) { + if (weakMode) { + document.body.classList.add(WEAK_CLASS); + } else { + document.body.classList.remove(WEAK_CLASS); + } +} + +/** + * 切换主题 + */ +function changeTheme(value?: string | null, dark?: boolean) { + return new Promise((resolve, reject) => { + try { + changeColor(value, dark); + resolve(); + } catch (e) { + reject(e); + } + }); +} + +/** + * 切换布局时禁用过渡动画 + */ +function disableTransition() { + disableTransitionTimer && clearTimeout(disableTransitionTimer); + document.body.classList.add(DISABLES_CLASS); + disableTransitionTimer = setTimeout(() => { + document.body.classList.remove(DISABLES_CLASS); + }, 100) as unknown as number; +} + +export const useThemeStore = defineStore({ + id: 'theme', + state: (): ThemeState => { + const state = { ...DEFAULT_STATE }; + // 读取本地缓存 + const cache = getCacheSetting(); + Object.keys(state).forEach((key) => { + if (typeof cache[key] !== 'undefined') { + state[key] = cache[key]; + } + }); + return state; + }, + getters: { + // 需要 keep-alive 的组件 + keepAliveInclude(): string[] { + if (!TAB_KEEP_ALIVE || !this.showTabs) { + return []; + } + const components = new Set(); + const { reloadPath, reloadHome } = this.routeReload || {}; + this.tabs?.forEach((t) => { + const isAlive = t.meta?.keepAlive !== false; + const isExclude = KEEP_ALIVE_EXCLUDES.includes(t.path as string); + const isReload = reloadPath && reloadPath === t.fullPath; + if (isAlive && !isExclude && !isReload && t.components) { + t.components.forEach((c) => { + if (typeof c === 'string' && c) { + components.add(c); + } + }); + } + }); + if (!reloadHome) { + this.homeComponents?.forEach((c) => { + if (typeof c === 'string' && c) { + components.add(c); + } + }); + } + return Array.from(components); + } + }, + actions: { + setTabs(value: TabItem[]) { + this.tabs = value; + //cacheSetting('tabs', value); + }, + setCollapse(value: boolean) { + this.collapse = value; + this.delayUpdateContentSize(800); + }, + setSideNavCollapse(value: boolean) { + this.sideNavCollapse = value; + this.delayUpdateContentSize(800); + }, + setBodyFullscreen(value: boolean) { + disableTransition(); + this.bodyFullscreen = value; + this.delayUpdateContentSize(800); + }, + setShowTabs(value: boolean) { + this.showTabs = value; + cacheSetting('showTabs', value); + this.delayUpdateContentSize(); + }, + setShowFooter(value: boolean) { + this.showFooter = value; + cacheSetting('showFooter', value); + this.delayUpdateContentSize(); + }, + setHeadStyle(value: HeadStyleType) { + this.headStyle = value; + cacheSetting('headStyle', value); + }, + setSideStyle(value: SideStyleType) { + this.sideStyle = value; + cacheSetting('sideStyle', value); + }, + setLayoutStyle(value: LayoutStyleType) { + disableTransition(); + this.layoutStyle = value; + cacheSetting('layoutStyle', value); + this.delayUpdateContentSize(); + }, + setSideMenuStyle(value: SideMenuStyleType) { + disableTransition(); + this.sideMenuStyle = value; + cacheSetting('sideMenuStyle', value); + this.delayUpdateContentSize(); + }, + setTabStyle(value: TabStyleType) { + this.tabStyle = value; + cacheSetting('tabStyle', value); + }, + setTransitionName(value: string) { + this.transitionName = value; + cacheSetting('transitionName', value); + }, + setFixedHeader(value: boolean) { + disableTransition(); + this.fixedHeader = value; + cacheSetting('fixedHeader', value); + }, + setFixedSidebar(value: boolean) { + disableTransition(); + this.fixedSidebar = value; + cacheSetting('fixedSidebar', value); + }, + setFixedBody(value: boolean) { + disableTransition(); + this.fixedBody = value; + cacheSetting('fixedBody', value); + }, + setBodyFull(value: boolean) { + this.bodyFull = value; + cacheSetting('bodyFull', value); + this.delayUpdateContentSize(); + }, + setLogoAutoSize(value: boolean) { + disableTransition(); + this.logoAutoSize = value; + cacheSetting('logoAutoSize', value); + }, + setColorfulIcon(value: boolean) { + this.colorfulIcon = value; + cacheSetting('colorfulIcon', value); + }, + setSideUniqueOpen(value: boolean) { + this.sideUniqueOpen = value; + cacheSetting('sideUniqueOpen', value); + }, + setStyleResponsive(value: boolean) { + changeStyleResponsive(value); + this.styleResponsive = value; + cacheSetting('styleResponsive', value); + }, + /** + * 切换色弱模式 + * @param value 是否是色弱模式 + */ + setWeakMode(value: boolean) { + return new Promise((resolve) => { + changeWeakMode(value); + this.weakMode = value; + cacheSetting('weakMode', value); + resolve(); + }); + }, + /** + * 切换暗黑模式 + * @param value 是否是暗黑模式 + */ + setDarkMode(value: boolean) { + return new Promise((resolve, reject) => { + changeTheme(this.color, value) + .then(() => { + this.darkMode = value; + cacheSetting('darkMode', value); + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 切换主题色 + * @param value 主题色 + */ + setColor(value?: string) { + return new Promise((resolve, reject) => { + changeTheme(value, this.darkMode) + .then(() => { + this.color = value; + cacheSetting('color', value); + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 设置主页路由对应的组件名称 + * @param components 组件名称 + */ + setHomeComponents(components: string[]) { + this.homeComponents = components; + }, + /** + * 设置刷新路由信息 + * @param option 路由刷新参数 + */ + setRouteReload(option: RouteReloadOption | null) { + this.routeReload = option; + }, + /** + * 更新屏幕尺寸 + */ + updateScreenSize() { + this.screenWidth = screenWidth(); + this.screenHeight = screenHeight(); + this.updateContentSize(); + }, + /** + * 更新内容区域尺寸 + */ + updateContentSize() { + this.contentWidth = contentWidth(); + this.contentHeight = contentHeight(); + }, + /** + * 延时更新内容区域尺寸 + * @param delay 延迟时间 + */ + delayUpdateContentSize(delay?: number) { + updateContentSizeTimer && clearTimeout(updateContentSizeTimer); + updateContentSizeTimer = setTimeout(() => { + this.updateContentSize(); + }, delay ?? 100) as unknown as number; + }, + /** + * 重置设置 + */ + resetSetting() { + return new Promise((resolve, reject) => { + disableTransition(); + this.showTabs = DEFAULT_STATE.showTabs; + this.showFooter = DEFAULT_STATE.showFooter; + this.headStyle = DEFAULT_STATE.headStyle; + this.sideStyle = DEFAULT_STATE.sideStyle; + this.layoutStyle = DEFAULT_STATE.layoutStyle; + this.sideMenuStyle = DEFAULT_STATE.sideMenuStyle; + this.tabStyle = DEFAULT_STATE.tabStyle; + this.transitionName = DEFAULT_STATE.transitionName; + this.fixedHeader = DEFAULT_STATE.fixedHeader; + this.fixedSidebar = DEFAULT_STATE.fixedSidebar; + this.fixedBody = DEFAULT_STATE.fixedBody; + this.bodyFull = DEFAULT_STATE.bodyFull; + this.logoAutoSize = DEFAULT_STATE.logoAutoSize; + this.colorfulIcon = DEFAULT_STATE.colorfulIcon; + this.sideUniqueOpen = DEFAULT_STATE.sideUniqueOpen; + this.styleResponsive = DEFAULT_STATE.styleResponsive; + this.weakMode = DEFAULT_STATE.weakMode; + this.darkMode = DEFAULT_STATE.darkMode; + this.color = DEFAULT_STATE.color; + localStorage.removeItem(THEME_STORE_NAME); + Promise.all([ + changeStyleResponsive(this.styleResponsive), + changeWeakMode(this.weakMode), + changeTheme(this.color, this.darkMode) + ]) + .then(() => { + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 恢复主题 + */ + recoverTheme() { + // 关闭响应式布局 + if (!this.styleResponsive) { + changeStyleResponsive(false); + } + // 恢复色弱模式 + if (this.weakMode) { + changeWeakMode(true); + } + // 恢复主题色 + if (this.color || this.darkMode) { + changeTheme(this.color, this.darkMode).catch((e) => { + console.error(e); + }); + } + }, + /** + * 添加页签或更新相同 key 的页签数据 + * @param data 页签数据 + */ + tabAdd(data: TabItem | TabItem[]) { + if (Array.isArray(data)) { + data.forEach((d) => { + this.tabAdd(d); + }); + return; + } + const i = this.tabs.findIndex((d) => d.key === data.key); + if (i === -1) { + this.setTabs(this.tabs.concat([data])); + } else if (data.fullPath !== this.tabs[i].fullPath) { + this.setTabs( + this.tabs + .slice(0, i) + .concat([data]) + .concat(this.tabs.slice(i + 1)) + ); + } + }, + /** + * 关闭页签 + * @param key 页签 key + */ + async tabRemove({ + key, + active + }: TabRemoveOption): Promise { + const i = this.tabs.findIndex((t) => t.key === key || t.fullPath === key); + if (i === -1) { + return {}; + } + const t = this.tabs[i]; + if (!t.closable) { + return Promise.reject(); + } + const path = this.tabs[i - 1]?.fullPath; + this.setTabs(this.tabs.filter((_d, j) => j !== i)); + return t.key === active ? { path, home: !path } : {}; + }, + /** + * 关闭左侧页签 + */ + async tabRemoveLeft({ + key, + active + }: TabRemoveOption): Promise { + let index = -1; // 选中页签的 index + for (let i = 0; i < this.tabs.length; i++) { + if (this.tabs[i].key === active) { + index = i; + } + if (this.tabs[i].key === key) { + if (i === 0) { + break; + } + const temp = this.tabs.filter((d, j) => !d.closable && j < i); + if (temp.length === i + 1) { + break; + } + const path = index === -1 ? void 0 : this.tabs[i].fullPath; + this.setTabs(temp.concat(this.tabs.slice(i))); + return { path }; + } + } + return Promise.reject(); + }, + /** + * 关闭右侧页签 + */ + async tabRemoveRight({ + key, + active + }: TabRemoveOption): Promise { + if (this.tabs.length) { + let index = -1; // 选中页签的 index + for (let i = 0; i < this.tabs.length; i++) { + if (this.tabs[i].key === active) { + index = i; + } + if (this.tabs[i].key === key) { + if (i === this.tabs.length - 1) { + return Promise.reject(); + } + const temp = this.tabs.filter((d, j) => !d.closable && j > i); + if (temp.length === this.tabs.length - i - 1) { + return Promise.reject(); + } + const path = index === -1 ? this.tabs[i].fullPath : void 0; + this.setTabs( + this.tabs + .slice(0, i + 1) + .concat(this.tabs.filter((d, j) => !d.closable && j > i)) + ); + return { path }; + } + } + // 主页时关闭全部 + const temp = this.tabs.filter((d) => !d.closable); + if (temp.length !== this.tabs.length) { + this.setTabs(temp); + return { home: index !== -1 }; + } + } + return Promise.reject(); + }, + /** + * 关闭其它页签 + */ + async tabRemoveOther({ + key, + active + }: TabRemoveOption): Promise { + let index = -1; // 选中页签的 index + let path: string | undefined; // 关闭后跳转的 path + const temp = this.tabs.filter((d, i) => { + if (d.key === active) { + index = i; + } + if (d.key === key) { + path = d.fullPath; + } + return !d.closable || d.key === key; + }); + if (temp.length === this.tabs.length) { + return Promise.reject(); + } + this.setTabs(temp); + if (index === -1) { + return {}; + } + return key === active ? {} : { path, home: !path }; + }, + /** + * 关闭全部页签 + * @param active 选中页签的 key + */ + async tabRemoveAll(active: string): Promise { + const t = this.tabs.find((d) => d.key === active); + const home = typeof t !== 'undefined' && t.closable === true; // 是否跳转主页 + const temp = this.tabs.filter((d) => !d.closable); + if (temp.length === this.tabs.length) { + return Promise.reject(); + } + this.setTabs(temp); + return { home }; + }, + /** + * 修改页签 + * @param data 页签数据 + */ + tabSetItem(data: TabItem) { + let i = -1; + if (data.key) { + i = this.tabs.findIndex((d) => d.key === data.key); + } else if (data.fullPath) { + i = this.tabs.findIndex((d) => d.fullPath === data.fullPath); + } else if (data.path) { + i = this.tabs.findIndex((d) => d.path === data.path); + } + if (i !== -1) { + const item = { ...this.tabs[i] }; + if (data.title) { + item.title = data.title; + } + if (typeof data.closable === 'boolean') { + item.closable = data.closable; + } + if (data.components) { + item.components = data.components; + } + this.setTabs( + this.tabs + .slice(0, i) + .concat([item]) + .concat(this.tabs.slice(i + 1)) + ); + } + } + } +}); + +/** + * 主题 State 类型 + */ +export interface ThemeState { + tabs: TabItem[]; + collapse: boolean; + sideNavCollapse: boolean; + bodyFullscreen: boolean; + showTabs: boolean; + showFooter: boolean; + headStyle: HeadStyleType; + sideStyle: SideStyleType; + layoutStyle: LayoutStyleType; + sideMenuStyle: SideMenuStyleType; + tabStyle: TabStyleType; + transitionName: string; + fixedHeader: boolean; + fixedSidebar: boolean; + fixedBody: boolean; + bodyFull: boolean; + logoAutoSize: boolean; + colorfulIcon: boolean; + sideUniqueOpen: boolean; + weakMode: boolean; + darkMode: boolean; + color?: string | null; + homeComponents: string[]; + routeReload: RouteReloadOption | null; + screenWidth: number; + screenHeight: number; + contentWidth: number; + contentHeight: number; + styleResponsive: boolean; +} + +/** + * 设置路由刷新方法的参数 + */ +export interface RouteReloadOption { + // 是否是刷新主页 + reloadHome?: boolean; + // 要刷新的页签路由地址 + reloadPath?: string; +} + +/** + * 关闭页签返回类型 + */ +export interface TabRemoveResult { + // 关闭后要跳转的地址 + path?: string; + // 关闭后是否跳转到主页 + home?: boolean; +} diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..81963f7 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,128 @@ +/** + * 登录用户 store + */ +import { defineStore } from 'pinia'; +import { formatMenus, toTreeData, formatTreeData } from 'ele-admin-pro/es'; +import type { MenuItemType } from 'ele-admin-pro/es'; +import type { User } from '@/api/system/user/model'; +import { TOKEN_STORE_NAME, USER_MENUS } from '@/config/setting'; +import { getUserInfo } from '@/api/layout'; +import { initialization } from '@/api/system/tennat'; +// import { isExternalLink } from 'ele-admin-pro'; +// import { message } from 'ant-design-vue'; +const EXTRA_MENUS: any = []; + +export interface UserState { + info: User | null; + menus: MenuItemType[] | null | undefined; + authorities: (string | undefined)[]; + roles: (string | undefined)[]; +} + +export const useUserStore = defineStore({ + id: 'user', + state: (): UserState => ({ + // 当前登录用户的信息 + info: null, + // 当前登录用户的菜单 + menus: null, + // 当前登录用户的权限 + authorities: [], + // 当前登录用户的角色 + roles: [] + }), + getters: {}, + actions: { + /** + * 请求用户信息、权限、角色、菜单 + */ + async fetchUserInfo() { + const result = await getUserInfo().catch(() => {}); + if (!result) { + return {}; + } + // 租户初始化 + if (result.authorities?.length == 0) { + result.roles?.map((d) => { + if (d.roleCode === 'superAdmin') { + // const hide = message.loading('系统正在初始化...', 500); + initialization(d.roleId).then(() => { + // hide(); + location.replace('/'); + return; + }); + } + }); + } + // 用户信息 + this.info = result; + // 缓存租户信息 + localStorage.setItem('TenantId', `${this.info.tenantId}`); + // 缓存企业信息 + if (this.info.companyInfo) { + localStorage.setItem( + 'CompanyLogo', + `${this.info.companyInfo?.companyLogo}` + ); + localStorage.setItem('PlanId', `${this.info.companyInfo?.planId}`); + localStorage.setItem( + 'ModulesUrl', + `${this.info.companyInfo.modulesUrl}` + ); + } + // 用户权限 + this.authorities = + result.authorities + ?.filter((d) => !!d.authority) + ?.map((d) => d.authority) ?? []; + // 用户角色 + this.roles = result.roles?.map((d) => d.roleCode) ?? []; + // 获取token + const token = localStorage.getItem(TOKEN_STORE_NAME); + // 用户菜单, 过滤掉按钮类型并转为 children 形式 + const { menus, homePath } = formatMenus( + USER_MENUS ?? + toTreeData({ + data: result.authorities + ?.filter((d) => d.menuType !== 1) + .map((d) => { + // 改造子模块的访问路径 + if (d.modulesUrl) { + d.component = `${d.modulesUrl}${d.path}?token=${token}`; + } + return d; + }), + idField: 'menuId', + parentIdField: 'parentId' + }).concat(EXTRA_MENUS) + ); + this.menus = menus; + // console.log('主控菜单', menus); + return { menus, homePath }; + }, + /** + * 更新用户信息 + */ + setInfo(value: User) { + this.info = value; + }, + /** + * 更新菜单的 badge + */ + setMenuBadge(path: string, value?: number | string, color?: string) { + this.menus = formatTreeData(this.menus, (m) => { + if (path === m.path) { + return { + ...m, + meta: { + ...m.meta, + badge: value, + badgeColor: color + } + }; + } + return m; + }); + } + } +}); diff --git a/src/styles/as-needed.less b/src/styles/as-needed.less new file mode 100644 index 0000000..1bda515 --- /dev/null +++ b/src/styles/as-needed.less @@ -0,0 +1,6 @@ +/** 按需引入 */ +@import 'ant-design-vue/es/message/style/index.less'; +@import 'ant-design-vue/es/notification/style/index.less'; +@import 'ele-admin-pro/es/style/nprogress.less'; +@import 'ele-admin-pro/es/style/display.less'; +@import 'ele-admin-pro/es/style/common.less'; diff --git a/src/styles/component.less b/src/styles/component.less new file mode 100644 index 0000000..69820a9 --- /dev/null +++ b/src/styles/component.less @@ -0,0 +1,2 @@ +/** 组件样式 */ +//@input-item: 300px; diff --git a/src/styles/global-import.less b/src/styles/global-import.less new file mode 100644 index 0000000..7fd1f81 --- /dev/null +++ b/src/styles/global-import.less @@ -0,0 +1,4 @@ +/** 全局引入 */ +@import 'cropperjs/dist/cropper.css'; +@import 'ant-design-vue/dist/antd.less'; +@import 'ele-admin-pro/es/style/index.less'; diff --git a/src/styles/index.less b/src/styles/index.less new file mode 100644 index 0000000..915cf50 --- /dev/null +++ b/src/styles/index.less @@ -0,0 +1,36 @@ +/** 全局样式 */ +@style-entry-file: as-needed; +@import './@{style-entry-file}.less'; +@import './transition/index.less'; +@import "./component.less"; + +// 主题 +@import 'ele-admin-pro/es/style/themes/dynamic.less'; + +:root { + // 灰色主题 + --grey-1: #1b1b1b; + --grey-2: #363636; + --grey-3: #4d4d4d; + --grey-4: #737373; + --grey-5: #a6a6a6; + --grey-6: #d9d9d9; + --grey-7: #e6e6e6; + --grey-8: #f2f2f2; + --grey-9: #f7f7f7; + --grey-10: #fafafa; +} + +.ele-admin-theme-dark { + // 灰色主题 + --grey-1: #fafafa; + --grey-2: #f7f7f7; + --grey-3: #f2f2f2; + --grey-4: #e6e6e6; + --grey-5: #d9d9d9; + --grey-6: #a6a6a6; + --grey-7: #737373; + --grey-8: #4d4d4d; + --grey-9: #363636; + --grey-10: #1b1b1b; +} diff --git a/src/styles/transition/fade.less b/src/styles/transition/fade.less new file mode 100644 index 0000000..9433fc0 --- /dev/null +++ b/src/styles/transition/fade.less @@ -0,0 +1,10 @@ +/* 渐变 */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.2s ease-in-out; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/src/styles/transition/index.less b/src/styles/transition/index.less new file mode 100644 index 0000000..be030fb --- /dev/null +++ b/src/styles/transition/index.less @@ -0,0 +1,4 @@ +/** 路由切换动画 */ +@import './fade.less'; +@import './slide.less'; +@import './zoom.less'; diff --git a/src/styles/transition/slide.less b/src/styles/transition/slide.less new file mode 100644 index 0000000..b1336e1 --- /dev/null +++ b/src/styles/transition/slide.less @@ -0,0 +1,31 @@ +/* 底部消退 */ +.slide-bottom-enter-active, +.slide-bottom-leave-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.slide-bottom-enter-from { + opacity: 0; + transform: translateY(-10%); +} + +.slide-bottom-leave-to { + opacity: 0; + transform: translateY(10%); +} + +/* 右侧消退 */ +.slide-right-leave-active, +.slide-right-enter-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.slide-right-enter-from { + opacity: 0; + transform: translateX(-60px); +} + +.slide-right-leave-to { + opacity: 0; + transform: translateX(60px); +} diff --git a/src/styles/transition/zoom.less b/src/styles/transition/zoom.less new file mode 100644 index 0000000..28fe401 --- /dev/null +++ b/src/styles/transition/zoom.less @@ -0,0 +1,31 @@ +/* 放大渐变 */ +.zoom-in-enter-active, +.zoom-in-leave-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.zoom-in-enter-from { + opacity: 0; + transform: scale(0.9); +} + +.zoom-in-leave-to { + opacity: 0; + transform: scale(1.1); +} + +/* 缩小渐变 */ +.zoom-out-leave-active, +.zoom-out-enter-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.zoom-out-enter-from { + opacity: 0; + transform: scale(1.2); +} + +.zoom-out-leave-to { + opacity: 0; + transform: scale(0.8); +} diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..417718e --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,322 @@ +import { message, SelectProps } from 'ant-design-vue'; +import { isExternalLink, random, toDateString } from 'ele-admin-pro'; +import router from '@/router'; +import { listDictionaryData } from '@/api/system/dictionary-data'; +import { ref } from 'vue'; +import { getJson } from '@/api/json'; +import { APP_SECRET, FILE_SERVER } from '@/config/setting'; +import mitt from 'mitt'; +import { ChatMessage } from '@/api/system/chat/model'; +import { useUserStore } from '@/store/modules/user'; +import CryptoJS from 'crypto-js'; + +type Events = { + message: ChatMessage; +}; +export const emitter = mitt(); +/** + * 常用函数封装 + */ + +// 生成编号 +export function createCode(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}`; + return code.slice(0); +} + +// 生成商户编号 +export function createMerchantCode(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getSeconds()}`; + return code.slice(3); +} + +// 生成订单编号 +export function createOrderNo(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}${random( + 8000, + 12000 + )}`; + return code.slice(0); +} + +// 跳转页面函数 +export function openUrl(url: string, params?: any): void { + const isExternal = isExternalLink(url); + if (isExternal) { + window.open(url); + } else { + if (params) { + router.push({ path: url, query: params }); + } else { + router.push(url); + } + } +} + +/** + * 弹出新窗口 + * @param url + * @constructor + */ +export function openNew(url: string) { + if (url.slice(0, 4) == 'http') { + return window.open(url); + } + window.open(`http://${url}`); +} + +/** + * 预览地址 + * @param url + * @constructor + */ +export function openPreview(url: string) { + if (url.slice(0, 4) == 'http') { + return window.open(url); + } + window.open(getDomainPath(url)); +} + +/** + * 获取网站域名 + * @param path + */ +export const getDomainPath = (path: string) => { + const domain = localStorage.getItem('Domain'); + return domain + path; +}; + +// 预览云存储文件 +export function getUrl(url: string) { + const isExternal = isExternalLink(url); + // const uploadMethod = localStorage.getItem('UploadMethod'); + // const bucketDomain = localStorage.getItem('BucketDomain'); + // if (uploadMethod == 'oss') { + // return bucketDomain + url; + // } + if (!isExternal) { + return FILE_SERVER + url; + } + return url; +} + +// 跳转页面(不弹窗) +export function navTo(url: string): void { + window.location.href = url; +} + +// 手机号脱敏 +export function getMobile(tel: string) { + const reg = /^(\d{3})\d{4}(\d{4})$/; + return tel.replace(reg, '$1****$2'); +} + +// 复制文本 +export const copyText = (text) => { + // 模拟 输入框 + const cInput = document.createElement('input'); + cInput.value = text; + document.body.appendChild(cInput); + cInput.select(); // 选取文本框内容 + + // 执行浏览器复制命令 + // 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签) + // Input要在正常的编辑状态下原生复制方法才会生效 + message.success('复制成功'); + document.execCommand('copy'); + + // 复制成功后再将构造的标签 移除 + document.body.removeChild(cInput); +}; + +/** + * 计算剩余时间 + * @param endTime + */ +export const getEndTime = (endTime) => { + const setTime = new Date(endTime); + const nowTime = new Date(); + const restSec = setTime.getTime() - nowTime.getTime(); + // 剩余天数 + const lastDay = parseInt(String(restSec / (60 * 60 * 24 * 1000) + 1)); + // let lastHour = parseInt(String((restSec / (60 * 60 * 1000)) % 24)); + // let lastMinu = parseInt(String((restSec / (60 * 1000)) % 60)); + // let lastSec = parseInt(String((restSec / 1000) % 60)); + + // 过期状态 + if (lastDay < 30 && lastDay > 0) { + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}(${lastDay}天后过期)
`; + } + if (lastDay < 0) { + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}(已过期)
`; + } + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}
`; +}; + +/** + * 获取字典数据作为下拉选项数据 + * @param dictCode + */ +export const getDictionaryOptions = (dictCode) => { + const dictOptions = ref([]); + // const key = dictCode + ':' + localStorage.getItem('TenantId'); + // const storageData = localStorage.getItem(key); + + listDictionaryData({ + dictCode + }) + .then((list) => { + // 获取远程字典数据 + if (list.length > 0) { + dictOptions.value = list.map((d) => { + return { + key: d.dictDataCode, + value: d.dictDataName, + label: d.dictDataName, + comments: d.comments + }; + }); + } else { + // 未定义则取默认的json数据 + dictOptions.value = getJson(dictCode); + } + }) + .catch((e) => { + message.error(e.message); + }); + + // if (!storageData) { + // listDictionaryData({ + // dictCode + // }) + // .then((list) => { + // // 获取远程字典数据 + // if (list.length > 0) { + // dictOptions.value = list.map((d) => { + // return { + // value: d.dictDataCode, + // label: d.dictDataName, + // text: d.dictDataName, + // comments: d.comments + // }; + // }); + // // 写入缓存 + // localStorage.setItem(key, JSON.stringify(dictOptions.value)); + // } else { + // // 未定义则取默认的json数据 + // dictOptions.value = getJson(dictCode); + // } + // }) + // .catch((e) => { + // message.error(e.message); + // }); + // } else { + // dictOptions.value = JSON.parse(storageData); + // } + return dictOptions; +}; + +// 判断是否为图片 +/* + * @param: fileName - 文件名称 + */ +export const isImage = (fileName) => { + const split = fileName.split('?'); + // 后缀获取 + let suffix = ''; + try { + const flieArr = split[0].split('.'); + suffix = flieArr[flieArr.length - 1]; + } catch (err) { + suffix = ''; + } + const imgList = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp']; + return imgList.some((item) => { + return item == suffix; + }); +}; + +export const getWeek = (text) => { + const week = [ + '星期日', + '星期一', + '星期二', + '星期三', + '星期四', + '星期五', + '星期六' + ]; + return week[text]; +}; + +/** + * 文件大小转换 + * @param text + */ +export const getFileSize = (text) => { + if (text < 1024) { + return text + 'B'; + } else if (text < 1024 * 1024) { + return (text / 1024).toFixed(1) + 'KB'; + } else if (text < 1024 * 1024 * 1024) { + return (text / 1024 / 1024).toFixed(1) + 'M'; + } else { + return (text / 1024 / 1024 / 1024).toFixed(1) + 'G'; + } +}; + +/* 原图转缩列图 */ +export const thumbnail = (url) => { + if (url.indexOf('/thumbnail') < 0) { + return url.replace(FILE_SERVER, FILE_SERVER + '/thumbnail'); + } + return url; +}; + +/* 缩列转图原图 */ +export const original = (url) => { + if (url.indexOf('/thumbnail') == 0) { + return url.replace('/thumbnail', ''); + } + return url; +}; + +export const getCompanyInfo = () => { + const user = useUserStore(); + if (user.info?.companyInfo) { + return user.info?.companyInfo; + } + return null; +}; + +export const getVersion = () => { + const companyInfo = getCompanyInfo(); + if (companyInfo?.version) { + return companyInfo?.version; + } + return null; +}; + +// AES加密 +export const encrypt = (text) => { + return CryptoJS.AES.encrypt(text, APP_SECRET).toString(); +}; + +// AES解密 +export const decrypt = (encrypt) => { + CryptoJS.AES.decrypt(encrypt, APP_SECRET); + const bytes = CryptoJS.AES.decrypt(encrypt, APP_SECRET); + return bytes.toString(CryptoJS.enc.Utf8); +}; diff --git a/src/utils/document-title-util.ts b/src/utils/document-title-util.ts new file mode 100644 index 0000000..18eccde --- /dev/null +++ b/src/utils/document-title-util.ts @@ -0,0 +1,71 @@ +import { watch } from 'vue'; +import { useRouter } from 'vue-router'; +import { useI18n } from 'vue-i18n'; +import type { RouteLocationNormalizedLoaded } from 'vue-router'; +import { + routeI18nKey, + findTabByPath +} from 'ele-admin-pro/es/ele-pro-layout/util'; +import { storeToRefs } from 'pinia'; +import { useThemeStore } from '@/store/modules/theme'; +import { PROJECT_NAME, REDIRECT_PATH, I18N_ENABLE } from '@/config/setting'; + +/** + * 修改浏览器标题 + * @param title 标题 + */ +export function setDocumentTitle(title: string) { + const names: string[] = []; + const tenantName = localStorage.getItem('TenantName'); + if (title) { + names.push(title); + } + if (tenantName) { + names.push(tenantName); + } else { + names.push(PROJECT_NAME); + } + document.title = names.join(' - '); +} + +/** + * 路由切换更新浏览器标题 + */ +export function useSetDocumentTitle() { + const { currentRoute } = useRouter(); + const { t, locale } = useI18n(); + const themeStore = useThemeStore(); + const { tabs } = storeToRefs(themeStore); + + const updateTitle = (route: RouteLocationNormalizedLoaded) => { + const { path, meta, fullPath } = route; + if (path.includes(REDIRECT_PATH)) { + return; + } + const pathKey = routeI18nKey(path); + if (!pathKey) { + return; + } + const tab = findTabByPath(fullPath, tabs.value); + const title = tab?.title || (meta?.title as string); + if (!I18N_ENABLE) { + setDocumentTitle(title); + return; + } + const k = `route.${pathKey}._name`; + const v = t(k); + setDocumentTitle(v === k || !v ? title : v); + }; + + watch( + currentRoute, + (route) => { + updateTitle(route); + }, + { immediate: true } + ); + + watch(locale, () => { + updateTitle(currentRoute.value); + }); +} diff --git a/src/utils/domain.ts b/src/utils/domain.ts new file mode 100644 index 0000000..62cb172 --- /dev/null +++ b/src/utils/domain.ts @@ -0,0 +1,98 @@ +import { isNumber } from 'ele-admin-pro'; + +// 解析域名结构 +export function getHost(): any { + const host = window.location.host; + return host.split('.'); +} + +// 是否https +export function isHttps() { + const protocol = window.location.protocol; + if (protocol == 'https:') { + return true; + } + return false; +} + +/** + * 获取原始域名 + * @return http://www.domain.com + */ +export function getOriginDomain(): string { + return window.origin; +} + +/** + * 域名的第一部分 + * 获取tenantId + * @return 10140 + */ +export function getDomainPart1(): any { + const split = getHost(); + if (split[0] == '127') { + return undefined; + } + if (isNumber(split[0])) { + return split[0]; + } + return undefined; +} + +/** + * 通过解析泛域名获取租户ID + * https://10140.wsdns.cn + * @return 10140 + */ +export function getTenantId() { + return getDomainPart1(); +} + +/** + * 获取域名 + * @return https://www.domain.com + */ +export function getDomain(): string { + return window.location.protocol + '//www.' + getRootDomain(); +} + +/** + * 获取根域名 + * abc.com + */ +export function getRootDomain(): string { + const split = getHost(); + return split[split.length - 2] + '.' + split[split.length - 1]; +} + +/** + * 获取二级域名 + * @return abc.com + */ +export function getSubDomainPath(): string { + const split = getHost(); + if (split.length == 2) { + return ''; + } + return split[split.length - 3]; +} + +/** + * 获取产品标识 + * @return 10048 + */ +export function getProductCode(): string | null { + const subDomain = getSubDomainPath(); + if (subDomain == undefined) { + return null; + } + const split = subDomain.split('-'); + return split[0]; +} + +/** + * 控制台域名 + */ +export function navSubDomain(path): string { + return `${window.location.protocol}//${path}.${getRootDomain()}`; +} diff --git a/src/utils/editor.ts b/src/utils/editor.ts new file mode 100644 index 0000000..a315ec2 --- /dev/null +++ b/src/utils/editor.ts @@ -0,0 +1,47 @@ +import { ref } from 'vue'; +import TinymceEditor from '@/components/TinymceEditor/index.vue'; + +const editorRef = ref | null>(null); +// 编辑器配置信息 +export function editorConfig(height?: 500): void { + const resultData = ref({ + height: height, + // 自定义文件上传(这里使用把选择的文件转成 blob 演示) + file_picker_callback: (callback: any, _value: any, meta: any) => { + const input = document.createElement('input'); + input.setAttribute('type', 'file'); + // 设定文件可选类型 + if (meta.filetype === 'image') { + input.setAttribute('accept', 'image/*'); + } else if (meta.filetype === 'media') { + input.setAttribute('accept', 'video/*'); + } + input.onchange = () => { + const file = input.files?.[0]; + if (!file) { + return; + } + if (meta.filetype === 'media') { + if (!file.type.startsWith('video/')) { + editorRef.value?.alert({ content: '只能选择视频文件' }); + return; + } + } + if (file.size / 1024 / 1024 > 20) { + editorRef.value?.alert({ content: '大小不能超过 20MB' }); + return; + } + const reader = new FileReader(); + reader.onload = (e) => { + if (e.target?.result != null) { + const blob = new Blob([e.target.result], { type: file.type }); + callback(URL.createObjectURL(blob)); + } + }; + reader.readAsArrayBuffer(file); + }; + input.click(); + } + }); + return resultData; +} diff --git a/src/utils/on-size-change.ts b/src/utils/on-size-change.ts new file mode 100644 index 0000000..4cce32c --- /dev/null +++ b/src/utils/on-size-change.ts @@ -0,0 +1,18 @@ +/** + * 监听屏幕尺寸改变封装 + */ +import { watch } from 'vue'; +import { storeToRefs } from 'pinia'; +import { useThemeStore } from '@/store/modules/theme'; + +export function onSizeChange(hook: Function) { + if (!hook) { + return; + } + const themeStore = useThemeStore(); + const { contentWidth } = storeToRefs(themeStore); + + watch(contentWidth, () => { + hook(); + }); +} diff --git a/src/utils/oss.js b/src/utils/oss.js new file mode 100644 index 0000000..ace265c --- /dev/null +++ b/src/utils/oss.js @@ -0,0 +1,43 @@ +import OSS from 'ali-oss'; +const baseUrl = 'http://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com'; +export const uploadAliOss = async (file, options) => { + // 构建上传文件参数 + + // 获取上传文件所需要的STS Token + // 直接通过node.js上传 + // console.log(token) + const client = new OSS({ + region: 'oss-cn-shenzhen', + accessKeyId: 'LTAI4GKGZ9Z2Z8JZ77c3GNZP', + accessKeySecret: 'BiDkpS7UXj72HWwDWaFZxiXjNFBNCM', + bucket: 'oss-aishangjia', + secure: true + }); + + const headers = { + // 指定该Object被下载时的网页缓存行为。 + 'Cache-Control': 'no-cache', + // 指定该Object被下载时的名称。 + // 指定该Object被下载时的内容编码格式。 + 'Content-Encoding': 'utf-8', + // 指定过期时间,单位为毫秒。 + Expires: '1000', + // 指定Object的存储类型。 + 'x-oss-storage-class': 'Standard', + // 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。 + 'x-oss-forbid-overwrite': 'true' + }; + + const suffix = file.name.substring(file.name.lastIndexOf('.')); // .txt + const objectName = Date.now() + suffix; + + // object-name可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。 + const result = await client.multipartUpload(objectName, file, { + ...options, + parallel: 4, + partSize: 1024 * 1024 * 5 + }); + + result.url = `${baseUrl}/${result.name}`; + return Promise.resolve(result); +}; diff --git a/src/utils/page-tab-util.ts b/src/utils/page-tab-util.ts new file mode 100644 index 0000000..7d95d72 --- /dev/null +++ b/src/utils/page-tab-util.ts @@ -0,0 +1,254 @@ +/** + * 页签操作封装 + */ +import { unref } from 'vue'; +import type { RouteLocationNormalizedLoaded } from 'vue-router'; +import type { TabItem, TabRemoveOption } from 'ele-admin-pro/es'; +import { message } from 'ant-design-vue/es'; +import router from '@/router'; +import { useThemeStore } from '@/store/modules/theme'; +import type { RouteReloadOption } from '@/store/modules/theme'; +import { removeToken } from '@/utils/token-util'; +import { setDocumentTitle } from '@/utils/document-title-util'; +import { + HOME_PATH, + LAYOUT_PATH, + REDIRECT_PATH, + REPEATABLE_TABS +} from '@/config/setting'; +const HOME_ROUTE = HOME_PATH || LAYOUT_PATH; +const BASE_URL = import.meta.env.BASE_URL; + +/** + * 刷新页签参数类型 + */ +export interface TabReloadOptions { + // 是否是主页 + isHome?: boolean; + // 路由地址 + fullPath?: string; +} + +/** + * 刷新当前路由 + */ +export function reloadPageTab(option?: TabReloadOptions) { + if (!option) { + // 刷新当前路由 + const { path, fullPath, query } = unref(router.currentRoute); + if (path.includes(REDIRECT_PATH)) { + return; + } + const isHome = isHomeRoute(unref(router.currentRoute)); + setRouteReload({ + reloadHome: isHome, + reloadPath: isHome ? void 0 : fullPath + }); + router.replace({ + path: REDIRECT_PATH + path, + query + }); + } else { + // 刷新指定页签 + const { fullPath, isHome } = option; + setRouteReload({ + reloadHome: isHome, + reloadPath: isHome ? void 0 : fullPath + }); + router.replace(REDIRECT_PATH + fullPath); + } +} + +/** + * 关闭当前页签 + */ +export function finishPageTab() { + const key = getRouteTabKey(); + removePageTab({ key, active: key }); +} + +/** + * 关闭页签 + */ +export function removePageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemove(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('当前页签不可关闭'); + }); +} + +/** + * 关闭左侧页签 + */ +export function removeLeftPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveLeft(option) + .then(({ path }) => { + if (path) { + router.push(path); + } + }) + .catch(() => { + message.error('左侧没有可关闭的页签'); + }); +} + +/** + * 关闭右侧页签 + */ +export function removeRightPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveRight(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('右侧没有可关闭的页签'); + }); +} + +/** + * 关闭其它页签 + */ +export function removeOtherPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveOther(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('没有可关闭的页签'); + }); +} + +/** + * 关闭全部页签 + * @param active 当前选中页签 + */ +export function removeAllPageTab(active: string) { + useThemeStore() + .tabRemoveAll(active) + .then(({ home }) => { + if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('没有可关闭的页签'); + }); +} + +/** + * 登录成功后清空页签 + */ +export function cleanPageTabs() { + useThemeStore().setTabs([]); +} + +/** + * 添加页签 + * @param data 页签数据 + */ +export function addPageTab(data: TabItem | TabItem[]) { + useThemeStore().tabAdd(data); +} + +/** + * 修改页签 + * @param data 页签数据 + */ +export function setPageTab(data: TabItem) { + useThemeStore().tabSetItem(data); +} + +/** + * 修改页签标题 + * @param title 标题 + */ +export function setPageTabTitle(title: string) { + setPageTab({ key: getRouteTabKey(), title }); + setDocumentTitle(title); +} + +/** + * 获取当前路由对应的页签 key + */ +export function getRouteTabKey() { + const { path, fullPath, meta } = unref(router.currentRoute); + const isUnique = meta.tabUnique === false || REPEATABLE_TABS.includes(path); + return isUnique ? fullPath : path; +} + +/** + * 设置主页的组件名称 + * @param components 组件名称 + */ +export function setHomeComponents(components: string[]) { + useThemeStore().setHomeComponents(components); +} + +/** + * 设置路由刷新信息 + * @param option 路由刷新参数 + */ +export function setRouteReload(option: RouteReloadOption | null) { + return useThemeStore().setRouteReload(option); +} + +/** + * 判断路由是否是主页 + * @param route 路由信息 + */ +export function isHomeRoute(route: RouteLocationNormalizedLoaded) { + const { path, matched } = route; + if (HOME_ROUTE === path) { + return true; + } + return ( + matched[0] && + matched[0].path === LAYOUT_PATH && + matched[0].redirect === path + ); +} + +/** + * 登录成功后跳转首页 + * @param from 登录前的地址 + */ +export function goHomeRoute(from?: string) { + router.replace(from || HOME_ROUTE); +} + +/** + * 退出登录 + * @param route 是否使用路由跳转 + * @param from 登录后跳转的地址 + */ +export function logout(route?: boolean, from?: string) { + removeToken(); + if (route) { + router.push({ + path: '/login', + query: from ? { from } : void 0 + }); + } else { + // 这样跳转避免再次登录重复注册动态路由 + location.replace(BASE_URL + 'login' + (from ? '?from=' + from : '')); + } +} diff --git a/src/utils/permission.ts b/src/utils/permission.ts new file mode 100644 index 0000000..4324d98 --- /dev/null +++ b/src/utils/permission.ts @@ -0,0 +1,119 @@ +/** + * 按钮级权限控制 + */ +import type { App } from 'vue'; +import { useUserStore } from '@/store/modules/user'; + +/* 判断数组是否有某些值 */ +function arrayHas( + array: (string | undefined)[], + value: string | string[] +): boolean { + if (!value) { + return true; + } + if (!array) { + return false; + } + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + if (array.indexOf(value[i]) === -1) { + return false; + } + } + return true; + } + return array.indexOf(value) !== -1; +} + +/* 判断数组是否有任意值 */ +function arrayHasAny( + array: (string | undefined)[], + value: string | string[] +): boolean { + if (!value) { + return true; + } + if (!array) { + return false; + } + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + if (array.indexOf(value[i]) !== -1) { + return true; + } + } + return false; + } + return array.indexOf(value) !== -1; +} + +/** + * 是否有某些角色 + * @param value 角色字符或字符数组 + */ +export function hasRole(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHas(userStore?.roles, value); +} + +/** + * 是否有任意角色 + * @param value 角色字符或字符数组 + */ +export function hasAnyRole(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHasAny(userStore?.roles, value); +} + +/** + * 是否有某些权限 + * @param value 权限字符或字符数组 + */ +export function hasPermission(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHas(userStore?.authorities, value); +} + +/** + * 是否有任意权限 + * @param value 权限字符或字符数组 + */ +export function hasAnyPermission(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHasAny(userStore?.authorities, value); +} + +export default { + install(app: App) { + // 添加自定义指令 + app.directive('role', { + mounted: (el, binding) => { + if (!hasRole(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('any-role', { + mounted: (el, binding) => { + if (!hasAnyRole(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('permission', { + mounted: (el, binding) => { + if (!hasPermission(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('any-permission', { + mounted: (el, binding) => { + if (!hasAnyPermission(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + } +}; diff --git a/src/utils/plug-uitl.ts b/src/utils/plug-uitl.ts new file mode 100644 index 0000000..349a588 --- /dev/null +++ b/src/utils/plug-uitl.ts @@ -0,0 +1,52 @@ +import { createVNode } from 'vue'; +import { Company } from '@/api/system/company/model'; +import { message, Modal } from 'ant-design-vue'; +import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; +import { messageLoading } from 'ele-admin-pro'; +import { clone } from '@/api/system/menu'; +import useFormData from '@/utils/use-form-data'; +import { Menu } from '@/api/system/menu/model'; + +// 表单数据 +const { form } = useFormData({ + title: '', + icon: '', + path: '', + component: '', + tenantId: undefined, + tenantName: '' +}); + +/** + * 一键克隆 + * @param item + */ +export const onClone = (item: Company) => { + const tenantId = Number(localStorage.getItem('TenantId')); + if (tenantId == item.tenantId) { + message.error('不能克隆自己'); + return false; + } + // 提交状态 + Modal.confirm({ + title: '确认操作吗?', + content: `将复制【${item.tenantName}】的所有菜单和权限(不含数据),原有企业数据不会删除。`, + icon: createVNode(ExclamationCircleOutlined), + maskClosable: true, + onOk: () => { + const hide = messageLoading('模块安装中请稍等...', 0); + form.tenantId = item.tenantId; + clone(form) + .then((msg) => { + hide(); + message.success(msg); + setTimeout(() => { + window.open('/', '_self'); + }, 1000); + }) + .catch((e) => { + message.error(e.message); + }); + } + }); +}; diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..66302a8 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,91 @@ +/** + * axios 实例 + */ +import axios from 'axios'; +import type { AxiosResponse } from 'axios'; +import { unref } from 'vue'; +import router from '@/router'; +import { Modal } from 'ant-design-vue'; +import { API_BASE_URL, TOKEN_HEADER_NAME, LAYOUT_PATH } from '@/config/setting'; +import { getToken, setToken } from './token-util'; +import { logout } from './page-tab-util'; +import type { ApiResult } from '@/api'; +import { getTenantId } from '@/utils/domain'; + +const service = axios.create({ + baseURL: API_BASE_URL +}); + +/** + * 添加请求拦截器 + */ +service.interceptors.request.use( + (config) => { + const TENANT_ID = localStorage.getItem('TenantId'); + const token = getToken(); + // 添加 token 到 header + if (token && config.headers) { + config.headers.common[TOKEN_HEADER_NAME] = token; + } + // 获取租户ID + if (config.headers) { + // 附加企业ID + const companyId = localStorage.getItem('CompanyId'); + if (companyId) { + config.headers.common['CompanyId'] = companyId; + } + // 解析二级域名获取租户ID + if (getTenantId()) { + config.headers.common['TenantId'] = getTenantId(); + console.log('domain'); + return config; + } + if (TENANT_ID) { + config.headers.common['TenantId'] = TENANT_ID; + console.log('TENANT_ID'); + return config; + } + } + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +/** + * 添加响应拦截器 + */ +service.interceptors.response.use( + (res: AxiosResponse>) => { + // 登录过期处理 + if (res.data?.code === 401) { + const currentPath = unref(router.currentRoute).path; + if (currentPath == LAYOUT_PATH) { + logout(true); + } else { + Modal.destroyAll(); + Modal.info({ + title: '系统提示', + content: '登录状态已过期, 请退出重新登录!', + okText: '重新登录', + onOk: () => { + logout(false, currentPath); + } + }); + } + return Promise.reject(new Error(res.data.message)); + } + // token 自动续期 + const token = res.headers[TOKEN_HEADER_NAME.toLowerCase()]; + if (token) { + setToken(token); + } + return res; + }, + (error) => { + return Promise.reject(error); + } +); + +export default service; diff --git a/src/utils/token-util.ts b/src/utils/token-util.ts new file mode 100644 index 0000000..a878c9d --- /dev/null +++ b/src/utils/token-util.ts @@ -0,0 +1,71 @@ +/** + * token 操作封装 + */ +import { APP_SECRET, TOKEN_STORE_NAME } from '@/config/setting'; +import md5 from 'js-md5'; + +/** + * 获取缓存的 token + */ +export function getToken(): string | null { + const token = localStorage.getItem(TOKEN_STORE_NAME); + if (!token) { + return sessionStorage.getItem(TOKEN_STORE_NAME); + } + return token; +} + +/** + * 缓存 token + * @param token token + * @param remember 是否永久存储 + */ +export function setToken(token?: string, remember?: boolean) { + removeToken(); + if (token) { + if (remember) { + localStorage.setItem(TOKEN_STORE_NAME, token); + } else { + sessionStorage.setItem(TOKEN_STORE_NAME, token); + } + } +} + +/** + * 移除 token + */ +export function removeToken() { + localStorage.removeItem(TOKEN_STORE_NAME); + sessionStorage.removeItem(TOKEN_STORE_NAME); + localStorage.clear(); +} + +// 封装签名 +export function getSign(form) { + if (form == null) { + return false; + } + let sign = ''; + form.timestamp = new Date().getTime(); + form.version = 'v3'; + const arr = objKeySort(form); + Object.keys(arr).forEach((k) => { + if (form[k] != null && form[k] != '') { + sign = sign.concat(form[k]).concat('-'); + } + }); + sign = sign.concat(APP_SECRET); + return md5(sign); +} +// 参数按照字母顺序排序 +export const objKeySort = (obj) => { + //排序的函数 + const newkey = Object.keys(obj).sort(); + //先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组 + const newObj = {}; //创建一个新的对象,用于存放排好序的键值对 + for (let i = 0; i < newkey.length; i++) { + //遍历newkey数组 + newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对 + } + return newObj; //返回排好序的新对象 +}; diff --git a/src/utils/use-echarts.ts b/src/utils/use-echarts.ts new file mode 100644 index 0000000..06531d8 --- /dev/null +++ b/src/utils/use-echarts.ts @@ -0,0 +1,76 @@ +/** + * echarts 自动切换主题、重置尺寸封装 + */ +import type { Ref } from 'vue'; +import { + ref, + reactive, + unref, + provide, + watch, + onActivated, + onDeactivated, + nextTick +} from 'vue'; +import { storeToRefs } from 'pinia'; +import { THEME_KEY } from 'vue-echarts'; +import type VChart from 'vue-echarts'; +import { ChartTheme, ChartThemeDark } from 'ele-admin-pro/es'; +import { useThemeStore } from '@/store/modules/theme'; +import { onSizeChange } from './on-size-change'; + +export default function (chartRefs: Ref | null>[]) { + // 当前框架是否是暗黑主题 + const themeStore = useThemeStore(); + const { darkMode } = storeToRefs(themeStore); + // 是否为 deactivated 状态 + const deactivated = ref(false); + // 当前图表是否是暗黑主题 + const isDark = ref(unref(darkMode)); + // 当前图表主题 + const chartsTheme = reactive({ + ...(unref(isDark) ? ChartThemeDark : ChartTheme) + }); + + // 设置图表主题 + provide(THEME_KEY, chartsTheme); + + /* 重置图表尺寸 */ + const resizeCharts = () => { + chartRefs.forEach((chartRef) => { + unref(chartRef)?.resize(); + }); + }; + + /* 屏幕尺寸变化监听 */ + onSizeChange(() => { + resizeCharts(); + }); + + /* 更改图表主题 */ + const changeTheme = (dark: boolean) => { + isDark.value = dark; + Object.assign(chartsTheme, dark ? ChartThemeDark : ChartTheme); + }; + + onActivated(() => { + deactivated.value = false; + nextTick(() => { + if (unref(isDark) !== unref(darkMode)) { + changeTheme(unref(darkMode)); + } else { + resizeCharts(); + } + }); + }); + + onDeactivated(() => { + deactivated.value = true; + }); + + watch(darkMode, (dark) => { + if (!unref(deactivated)) { + changeTheme(dark); + } + }); +} diff --git a/src/utils/use-form-data.ts b/src/utils/use-form-data.ts new file mode 100644 index 0000000..a3e6511 --- /dev/null +++ b/src/utils/use-form-data.ts @@ -0,0 +1,29 @@ +import { reactive } from 'vue'; + +/** + * 表单数据 hook + * @param initValue 默认值 + */ +export default function (initValue?: T) { + const form = reactive({ ...initValue } as T); + + const resetFields = () => { + Object.keys(form).forEach((key) => { + form[key] = initValue ? initValue[key] : void 0; + }); + }; + + const assignFields = (data: object) => { + Object.keys(form).forEach((key) => { + form[key] = data[key]; + }); + }; + + return { + form, + // 重置为初始值 + resetFields, + // 赋值不改变字段 + assignFields + }; +} diff --git a/src/utils/use-search.ts b/src/utils/use-search.ts new file mode 100644 index 0000000..5638737 --- /dev/null +++ b/src/utils/use-search.ts @@ -0,0 +1,27 @@ +import { reactive } from 'vue'; + +/** + * 搜索表单 hook + * @param initValue 默认值 + */ +export default function (initValue?: T) { + const where = reactive({ ...initValue } as T); + + const resetFields = () => { + Object.keys(where).forEach((key) => { + where[key] = initValue ? initValue[key] : void 0; + }); + }; + + const assignFields = (data: object) => { + Object.keys(where).forEach((key) => { + where[key] = data[key]; + }); + }; + + return { + where, + resetFields, + assignFields + }; +} diff --git a/src/views/booking/account/components/merchantAccountEdit.vue b/src/views/booking/account/components/merchantAccountEdit.vue new file mode 100644 index 0000000..55b4e74 --- /dev/null +++ b/src/views/booking/account/components/merchantAccountEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/booking/account/components/search.vue b/src/views/booking/account/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/booking/account/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/booking/account/index.vue b/src/views/booking/account/index.vue new file mode 100644 index 0000000..1e6bf86 --- /dev/null +++ b/src/views/booking/account/index.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/views/booking/category/components/category-edit.vue b/src/views/booking/category/components/category-edit.vue new file mode 100644 index 0000000..c023b50 --- /dev/null +++ b/src/views/booking/category/components/category-edit.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/src/views/booking/category/index.vue b/src/views/booking/category/index.vue new file mode 100644 index 0000000..bd84544 --- /dev/null +++ b/src/views/booking/category/index.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/src/views/booking/category/preview/index.vue b/src/views/booking/category/preview/index.vue new file mode 100644 index 0000000..bad10c7 --- /dev/null +++ b/src/views/booking/category/preview/index.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/src/views/booking/goods/add/index.vue b/src/views/booking/goods/add/index.vue new file mode 100644 index 0000000..9cfc9b9 --- /dev/null +++ b/src/views/booking/goods/add/index.vue @@ -0,0 +1,1012 @@ + + + + + + diff --git a/src/views/booking/goods/components/goodsEdit.vue b/src/views/booking/goods/components/goodsEdit.vue new file mode 100644 index 0000000..0b4d064 --- /dev/null +++ b/src/views/booking/goods/components/goodsEdit.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/src/views/booking/goods/components/search.vue b/src/views/booking/goods/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/booking/goods/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/booking/goods/index.vue b/src/views/booking/goods/index.vue new file mode 100644 index 0000000..248ee6f --- /dev/null +++ b/src/views/booking/goods/index.vue @@ -0,0 +1,267 @@ + + + + + + + diff --git a/src/views/booking/school/components/merchantEdit.vue b/src/views/booking/school/components/merchantEdit.vue new file mode 100644 index 0000000..3c0a6bf --- /dev/null +++ b/src/views/booking/school/components/merchantEdit.vue @@ -0,0 +1,474 @@ + + + + + + diff --git a/src/views/booking/school/components/search.vue b/src/views/booking/school/components/search.vue new file mode 100644 index 0000000..cef0560 --- /dev/null +++ b/src/views/booking/school/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/booking/school/index.vue b/src/views/booking/school/index.vue new file mode 100644 index 0000000..cfe79e5 --- /dev/null +++ b/src/views/booking/school/index.vue @@ -0,0 +1,259 @@ + + + + + + + diff --git a/src/views/booking/schoolType/components/merchantTypeEdit.vue b/src/views/booking/schoolType/components/merchantTypeEdit.vue new file mode 100644 index 0000000..84d357e --- /dev/null +++ b/src/views/booking/schoolType/components/merchantTypeEdit.vue @@ -0,0 +1,197 @@ + + + + diff --git a/src/views/booking/schoolType/components/search.vue b/src/views/booking/schoolType/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/booking/schoolType/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/booking/schoolType/index.vue b/src/views/booking/schoolType/index.vue new file mode 100644 index 0000000..04825b3 --- /dev/null +++ b/src/views/booking/schoolType/index.vue @@ -0,0 +1,239 @@ + + + + + + + diff --git a/src/views/booking/student/components/org-select.vue b/src/views/booking/student/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/booking/student/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/booking/student/components/role-select.vue b/src/views/booking/student/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/booking/student/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/booking/student/components/sex-select.vue b/src/views/booking/student/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/booking/student/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/booking/student/components/user-edit.vue b/src/views/booking/student/components/user-edit.vue new file mode 100644 index 0000000..41c2f67 --- /dev/null +++ b/src/views/booking/student/components/user-edit.vue @@ -0,0 +1,313 @@ + + + + diff --git a/src/views/booking/student/components/user-import.vue b/src/views/booking/student/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/booking/student/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/booking/student/components/user-info.vue b/src/views/booking/student/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/booking/student/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/booking/student/components/user-search.vue b/src/views/booking/student/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/booking/student/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/booking/student/details/index.vue b/src/views/booking/student/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/booking/student/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/booking/student/index.vue b/src/views/booking/student/index.vue new file mode 100644 index 0000000..0083135 --- /dev/null +++ b/src/views/booking/student/index.vue @@ -0,0 +1,503 @@ + + + + + + + diff --git a/src/views/booking/teacher/components/merchantEdit.vue b/src/views/booking/teacher/components/merchantEdit.vue new file mode 100644 index 0000000..3c0a6bf --- /dev/null +++ b/src/views/booking/teacher/components/merchantEdit.vue @@ -0,0 +1,474 @@ + + + + + + diff --git a/src/views/booking/teacher/components/search.vue b/src/views/booking/teacher/components/search.vue new file mode 100644 index 0000000..7e6bb6a --- /dev/null +++ b/src/views/booking/teacher/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/booking/teacher/components/teacherEdit.vue b/src/views/booking/teacher/components/teacherEdit.vue new file mode 100644 index 0000000..4d269d6 --- /dev/null +++ b/src/views/booking/teacher/components/teacherEdit.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/views/booking/teacher/index.vue b/src/views/booking/teacher/index.vue new file mode 100644 index 0000000..a2868fc --- /dev/null +++ b/src/views/booking/teacher/index.vue @@ -0,0 +1,247 @@ + + + + + + + diff --git a/src/views/booking/teacher3/components/org-select.vue b/src/views/booking/teacher3/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/booking/teacher3/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/booking/teacher3/components/role-select.vue b/src/views/booking/teacher3/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/booking/teacher3/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/booking/teacher3/components/sex-select.vue b/src/views/booking/teacher3/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/booking/teacher3/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/booking/teacher3/components/user-edit.vue b/src/views/booking/teacher3/components/user-edit.vue new file mode 100644 index 0000000..99932e4 --- /dev/null +++ b/src/views/booking/teacher3/components/user-edit.vue @@ -0,0 +1,312 @@ + + + + diff --git a/src/views/booking/teacher3/components/user-import.vue b/src/views/booking/teacher3/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/booking/teacher3/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/booking/teacher3/components/user-info.vue b/src/views/booking/teacher3/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/booking/teacher3/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/booking/teacher3/components/user-search.vue b/src/views/booking/teacher3/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/booking/teacher3/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/booking/teacher3/details/index.vue b/src/views/booking/teacher3/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/booking/teacher3/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/booking/teacher3/index.vue b/src/views/booking/teacher3/index.vue new file mode 100644 index 0000000..bbf8048 --- /dev/null +++ b/src/views/booking/teacher3/index.vue @@ -0,0 +1,511 @@ + + + + + + + diff --git a/src/views/cms/ad/components/ad-edit.vue b/src/views/cms/ad/components/ad-edit.vue new file mode 100644 index 0000000..eccd473 --- /dev/null +++ b/src/views/cms/ad/components/ad-edit.vue @@ -0,0 +1,368 @@ + + + + + diff --git a/src/views/cms/ad/components/search.vue b/src/views/cms/ad/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/ad/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/ad/index.vue b/src/views/cms/ad/index.vue new file mode 100644 index 0000000..4867d94 --- /dev/null +++ b/src/views/cms/ad/index.vue @@ -0,0 +1,266 @@ + + + + + + + diff --git a/src/views/cms/article/components/article-edit.vue b/src/views/cms/article/components/article-edit.vue new file mode 100644 index 0000000..0049480 --- /dev/null +++ b/src/views/cms/article/components/article-edit.vue @@ -0,0 +1,590 @@ + + + + + diff --git a/src/views/cms/article/components/article-info.vue b/src/views/cms/article/components/article-info.vue new file mode 100644 index 0000000..5a12b85 --- /dev/null +++ b/src/views/cms/article/components/article-info.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/src/views/cms/article/components/article-search.vue b/src/views/cms/article/components/article-search.vue new file mode 100644 index 0000000..947c54f --- /dev/null +++ b/src/views/cms/article/components/article-search.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/views/cms/article/components/category-edit.bak.vue b/src/views/cms/article/components/category-edit.bak.vue new file mode 100644 index 0000000..8fc1e91 --- /dev/null +++ b/src/views/cms/article/components/category-edit.bak.vue @@ -0,0 +1,350 @@ + + + + diff --git a/src/views/cms/article/components/category-edit.vue b/src/views/cms/article/components/category-edit.vue new file mode 100644 index 0000000..b8fd417 --- /dev/null +++ b/src/views/cms/article/components/category-edit.vue @@ -0,0 +1,289 @@ + + + + diff --git a/src/views/cms/article/components/category-select.vue b/src/views/cms/article/components/category-select.vue new file mode 100644 index 0000000..97b4940 --- /dev/null +++ b/src/views/cms/article/components/category-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/cms/article/dictionary/source-select.vue b/src/views/cms/article/dictionary/source-select.vue new file mode 100644 index 0000000..6b79072 --- /dev/null +++ b/src/views/cms/article/dictionary/source-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/cms/article/index.vue b/src/views/cms/article/index.vue new file mode 100644 index 0000000..cdf854f --- /dev/null +++ b/src/views/cms/article/index.vue @@ -0,0 +1,244 @@ + + + + + + + diff --git a/src/views/cms/article/list.vue b/src/views/cms/article/list.vue new file mode 100644 index 0000000..4743174 --- /dev/null +++ b/src/views/cms/article/list.vue @@ -0,0 +1,324 @@ + + + diff --git a/src/views/cms/article/preview/index.vue b/src/views/cms/article/preview/index.vue new file mode 100644 index 0000000..22ca895 --- /dev/null +++ b/src/views/cms/article/preview/index.vue @@ -0,0 +1,82 @@ + + + + + + diff --git a/src/views/cms/category/components/category-edit.vue b/src/views/cms/category/components/category-edit.vue new file mode 100644 index 0000000..83e1643 --- /dev/null +++ b/src/views/cms/category/components/category-edit.vue @@ -0,0 +1,264 @@ + + + + + + diff --git a/src/views/cms/category/index.vue b/src/views/cms/category/index.vue new file mode 100644 index 0000000..61e1596 --- /dev/null +++ b/src/views/cms/category/index.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/src/views/cms/category/preview/index.vue b/src/views/cms/category/preview/index.vue new file mode 100644 index 0000000..bad10c7 --- /dev/null +++ b/src/views/cms/category/preview/index.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/src/views/cms/clear-cache/index.vue b/src/views/cms/clear-cache/index.vue new file mode 100644 index 0000000..580a32b --- /dev/null +++ b/src/views/cms/clear-cache/index.vue @@ -0,0 +1,41 @@ + + + + diff --git a/src/views/cms/dashboard/components/activities-card.vue b/src/views/cms/dashboard/components/activities-card.vue new file mode 100644 index 0000000..864f5d9 --- /dev/null +++ b/src/views/cms/dashboard/components/activities-card.vue @@ -0,0 +1,138 @@ + + + + + + diff --git a/src/views/cms/dashboard/components/app-list.vue b/src/views/cms/dashboard/components/app-list.vue new file mode 100644 index 0000000..7f397e0 --- /dev/null +++ b/src/views/cms/dashboard/components/app-list.vue @@ -0,0 +1,81 @@ + + + + + + + diff --git a/src/views/cms/dashboard/components/article-list.vue b/src/views/cms/dashboard/components/article-list.vue new file mode 100644 index 0000000..5c10c0e --- /dev/null +++ b/src/views/cms/dashboard/components/article-list.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/views/cms/dashboard/components/count-user.vue b/src/views/cms/dashboard/components/count-user.vue new file mode 100644 index 0000000..b1fe386 --- /dev/null +++ b/src/views/cms/dashboard/components/count-user.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/cms/dashboard/components/docs.vue b/src/views/cms/dashboard/components/docs.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/cms/dashboard/components/docs.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/cms/dashboard/components/goal-card.vue b/src/views/cms/dashboard/components/goal-card.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/cms/dashboard/components/goal-card.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/cms/dashboard/components/link-card.vue b/src/views/cms/dashboard/components/link-card.vue new file mode 100644 index 0000000..b7b2a4a --- /dev/null +++ b/src/views/cms/dashboard/components/link-card.vue @@ -0,0 +1,178 @@ + + + + + + + + diff --git a/src/views/cms/dashboard/components/link-icons.ts b/src/views/cms/dashboard/components/link-icons.ts new file mode 100644 index 0000000..6632262 --- /dev/null +++ b/src/views/cms/dashboard/components/link-icons.ts @@ -0,0 +1,14 @@ +export { + UserOutlined, + TeamOutlined, + FileSearchOutlined, + ChromeOutlined, + ShoppingOutlined, + LaptopOutlined, + AppstoreAddOutlined, + DesktopOutlined, + AntDesignOutlined, + SettingOutlined, + InstagramOutlined, + LayoutOutlined +} from '@ant-design/icons-vue'; diff --git a/src/views/cms/dashboard/components/link-list.vue b/src/views/cms/dashboard/components/link-list.vue new file mode 100644 index 0000000..7a66e92 --- /dev/null +++ b/src/views/cms/dashboard/components/link-list.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/cms/dashboard/components/more-icon.vue b/src/views/cms/dashboard/components/more-icon.vue new file mode 100644 index 0000000..2823738 --- /dev/null +++ b/src/views/cms/dashboard/components/more-icon.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/views/cms/dashboard/components/profile-card.vue b/src/views/cms/dashboard/components/profile-card.vue new file mode 100644 index 0000000..6f70629 --- /dev/null +++ b/src/views/cms/dashboard/components/profile-card.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/src/views/cms/dashboard/components/qrcode.vue b/src/views/cms/dashboard/components/qrcode.vue new file mode 100644 index 0000000..213a8fe --- /dev/null +++ b/src/views/cms/dashboard/components/qrcode.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/cms/dashboard/components/task-card.vue b/src/views/cms/dashboard/components/task-card.vue new file mode 100644 index 0000000..c445450 --- /dev/null +++ b/src/views/cms/dashboard/components/task-card.vue @@ -0,0 +1,112 @@ + + + + + + + diff --git a/src/views/cms/dashboard/components/user-list.vue b/src/views/cms/dashboard/components/user-list.vue new file mode 100644 index 0000000..a189372 --- /dev/null +++ b/src/views/cms/dashboard/components/user-list.vue @@ -0,0 +1,84 @@ + + + + + + diff --git a/src/views/cms/dashboard/index.vue b/src/views/cms/dashboard/index.vue new file mode 100644 index 0000000..dc89999 --- /dev/null +++ b/src/views/cms/dashboard/index.vue @@ -0,0 +1,360 @@ + + + + + + + diff --git a/src/views/cms/design/components/design-edit.vue b/src/views/cms/design/components/design-edit.vue new file mode 100644 index 0000000..8fd444a --- /dev/null +++ b/src/views/cms/design/components/design-edit.vue @@ -0,0 +1,387 @@ + + + + + diff --git a/src/views/cms/design/components/search.vue b/src/views/cms/design/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/design/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/design/detail/index.vue b/src/views/cms/design/detail/index.vue new file mode 100644 index 0000000..bd223c0 --- /dev/null +++ b/src/views/cms/design/detail/index.vue @@ -0,0 +1,174 @@ + + + + + + + diff --git a/src/views/cms/design/index.vue b/src/views/cms/design/index.vue new file mode 100644 index 0000000..c4a4e16 --- /dev/null +++ b/src/views/cms/design/index.vue @@ -0,0 +1,292 @@ + + + + + + + diff --git a/src/views/cms/dict/components/dict-edit.vue b/src/views/cms/dict/components/dict-edit.vue new file mode 100644 index 0000000..0dce1dc --- /dev/null +++ b/src/views/cms/dict/components/dict-edit.vue @@ -0,0 +1,177 @@ + + + + diff --git a/src/views/cms/dict/index.vue b/src/views/cms/dict/index.vue new file mode 100644 index 0000000..fb27a76 --- /dev/null +++ b/src/views/cms/dict/index.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/src/views/cms/docs-book/components/docs-book-edit.vue b/src/views/cms/docs-book/components/docs-book-edit.vue new file mode 100644 index 0000000..595d568 --- /dev/null +++ b/src/views/cms/docs-book/components/docs-book-edit.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/cms/docs-book/components/search.vue b/src/views/cms/docs-book/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/docs-book/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/docs-book/index.vue b/src/views/cms/docs-book/index.vue new file mode 100644 index 0000000..ce1d8c3 --- /dev/null +++ b/src/views/cms/docs-book/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/cms/docs-md-bak/components/docs-edit.vue b/src/views/cms/docs-md-bak/components/docs-edit.vue new file mode 100644 index 0000000..4fd6435 --- /dev/null +++ b/src/views/cms/docs-md-bak/components/docs-edit.vue @@ -0,0 +1,184 @@ + + + + diff --git a/src/views/cms/docs-md-bak/components/docs-select.vue b/src/views/cms/docs-md-bak/components/docs-select.vue new file mode 100644 index 0000000..70cfa38 --- /dev/null +++ b/src/views/cms/docs-md-bak/components/docs-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/cms/docs-md-bak/content.vue b/src/views/cms/docs-md-bak/content.vue new file mode 100644 index 0000000..eabad3d --- /dev/null +++ b/src/views/cms/docs-md-bak/content.vue @@ -0,0 +1,169 @@ + + + + + + diff --git a/src/views/cms/docs-md-bak/index.vue b/src/views/cms/docs-md-bak/index.vue new file mode 100644 index 0000000..9f116a3 --- /dev/null +++ b/src/views/cms/docs-md-bak/index.vue @@ -0,0 +1,258 @@ + + + + + + diff --git a/src/views/cms/docs-md-bak/markdown.vue b/src/views/cms/docs-md-bak/markdown.vue new file mode 100644 index 0000000..525fc18 --- /dev/null +++ b/src/views/cms/docs-md-bak/markdown.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/views/cms/docs-md-bak/tinymce.vue b/src/views/cms/docs-md-bak/tinymce.vue new file mode 100644 index 0000000..525fc18 --- /dev/null +++ b/src/views/cms/docs-md-bak/tinymce.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/views/cms/docs/components/docs-edit.vue b/src/views/cms/docs/components/docs-edit.vue new file mode 100644 index 0000000..905e823 --- /dev/null +++ b/src/views/cms/docs/components/docs-edit.vue @@ -0,0 +1,167 @@ + + + + diff --git a/src/views/cms/docs/components/docs-select.vue b/src/views/cms/docs/components/docs-select.vue new file mode 100644 index 0000000..70cfa38 --- /dev/null +++ b/src/views/cms/docs/components/docs-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/cms/docs/content.vue b/src/views/cms/docs/content.vue new file mode 100644 index 0000000..eabad3d --- /dev/null +++ b/src/views/cms/docs/content.vue @@ -0,0 +1,169 @@ + + + + + + diff --git a/src/views/cms/docs/index.vue b/src/views/cms/docs/index.vue new file mode 100644 index 0000000..a01b7e0 --- /dev/null +++ b/src/views/cms/docs/index.vue @@ -0,0 +1,311 @@ + + + + + + diff --git a/src/views/cms/docs/markdown.vue b/src/views/cms/docs/markdown.vue new file mode 100644 index 0000000..525fc18 --- /dev/null +++ b/src/views/cms/docs/markdown.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/src/views/cms/docs/tinymce.vue b/src/views/cms/docs/tinymce.vue new file mode 100644 index 0000000..5ce7c29 --- /dev/null +++ b/src/views/cms/docs/tinymce.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/views/cms/domain/components/domain-edit.vue b/src/views/cms/domain/components/domain-edit.vue new file mode 100644 index 0000000..3a0df56 --- /dev/null +++ b/src/views/cms/domain/components/domain-edit.vue @@ -0,0 +1,227 @@ + + + + diff --git a/src/views/cms/domain/components/search.vue b/src/views/cms/domain/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/domain/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/domain/index.vue b/src/views/cms/domain/index.vue new file mode 100644 index 0000000..fd10e29 --- /dev/null +++ b/src/views/cms/domain/index.vue @@ -0,0 +1,237 @@ + + + + diff --git a/src/views/cms/down/components/video-edit.vue b/src/views/cms/down/components/video-edit.vue new file mode 100644 index 0000000..4924ca8 --- /dev/null +++ b/src/views/cms/down/components/video-edit.vue @@ -0,0 +1,223 @@ + + + + diff --git a/src/views/cms/down/index.vue b/src/views/cms/down/index.vue new file mode 100644 index 0000000..a9449e0 --- /dev/null +++ b/src/views/cms/down/index.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/cms/down/player/index.vue b/src/views/cms/down/player/index.vue new file mode 100644 index 0000000..3749f9f --- /dev/null +++ b/src/views/cms/down/player/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/views/cms/form-record/components/form-record-edit.vue b/src/views/cms/form-record/components/form-record-edit.vue new file mode 100644 index 0000000..504a0ee --- /dev/null +++ b/src/views/cms/form-record/components/form-record-edit.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/src/views/cms/form-record/components/search.vue b/src/views/cms/form-record/components/search.vue new file mode 100644 index 0000000..3545dc3 --- /dev/null +++ b/src/views/cms/form-record/components/search.vue @@ -0,0 +1,74 @@ + + + + diff --git a/src/views/cms/form-record/index.vue b/src/views/cms/form-record/index.vue new file mode 100644 index 0000000..c7aad0d --- /dev/null +++ b/src/views/cms/form-record/index.vue @@ -0,0 +1,292 @@ + + + + + + + diff --git a/src/views/cms/form/detail/components/checkbox-form.vue b/src/views/cms/form/detail/components/checkbox-form.vue new file mode 100644 index 0000000..9bd497e --- /dev/null +++ b/src/views/cms/form/detail/components/checkbox-form.vue @@ -0,0 +1,178 @@ + + + + + diff --git a/src/views/cms/form/detail/components/radio-form.vue b/src/views/cms/form/detail/components/radio-form.vue new file mode 100644 index 0000000..ee08dc6 --- /dev/null +++ b/src/views/cms/form/detail/components/radio-form.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/views/cms/form/detail/index.vue b/src/views/cms/form/detail/index.vue new file mode 100644 index 0000000..63b0c75 --- /dev/null +++ b/src/views/cms/form/detail/index.vue @@ -0,0 +1,851 @@ + + + + + + + diff --git a/src/views/cms/form/index.vue b/src/views/cms/form/index.vue new file mode 100644 index 0000000..e80b82d --- /dev/null +++ b/src/views/cms/form/index.vue @@ -0,0 +1,350 @@ + + + + + + + diff --git a/src/views/cms/navigation/components/navigation-edit.vue b/src/views/cms/navigation/components/navigation-edit.vue new file mode 100644 index 0000000..79c9245 --- /dev/null +++ b/src/views/cms/navigation/components/navigation-edit.vue @@ -0,0 +1,527 @@ + + + + + + diff --git a/src/views/cms/navigation/index.vue b/src/views/cms/navigation/index.vue new file mode 100644 index 0000000..478e0ca --- /dev/null +++ b/src/views/cms/navigation/index.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/cms/photo/components/photo-edit.vue b/src/views/cms/photo/components/photo-edit.vue new file mode 100644 index 0000000..968b981 --- /dev/null +++ b/src/views/cms/photo/components/photo-edit.vue @@ -0,0 +1,272 @@ + + + + diff --git a/src/views/cms/photo/dict/components/dict-edit.vue b/src/views/cms/photo/dict/components/dict-edit.vue new file mode 100644 index 0000000..7dedbbd --- /dev/null +++ b/src/views/cms/photo/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/photo/dict/index.vue b/src/views/cms/photo/dict/index.vue new file mode 100644 index 0000000..b70e2c5 --- /dev/null +++ b/src/views/cms/photo/dict/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/views/cms/photo/image.vue b/src/views/cms/photo/image.vue new file mode 100644 index 0000000..c6f4579 --- /dev/null +++ b/src/views/cms/photo/image.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/src/views/cms/photo/index.vue b/src/views/cms/photo/index.vue new file mode 100644 index 0000000..51af189 --- /dev/null +++ b/src/views/cms/photo/index.vue @@ -0,0 +1,170 @@ + + + + + + + diff --git a/src/views/cms/photo/list.vue b/src/views/cms/photo/list.vue new file mode 100644 index 0000000..63bebdd --- /dev/null +++ b/src/views/cms/photo/list.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/src/views/cms/photo/player/index.vue b/src/views/cms/photo/player/index.vue new file mode 100644 index 0000000..f5e3310 --- /dev/null +++ b/src/views/cms/photo/player/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/views/cms/setting/components/field.vue b/src/views/cms/setting/components/field.vue new file mode 100644 index 0000000..e1baa8c --- /dev/null +++ b/src/views/cms/setting/components/field.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/src/views/cms/setting/components/website-field-edit.vue b/src/views/cms/setting/components/website-field-edit.vue new file mode 100644 index 0000000..3b5110e --- /dev/null +++ b/src/views/cms/setting/components/website-field-edit.vue @@ -0,0 +1,151 @@ + + + + diff --git a/src/views/cms/setting/components/website-field-search.vue b/src/views/cms/setting/components/website-field-search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/cms/setting/components/website-field-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/cms/setting/components/website-field.vue b/src/views/cms/setting/components/website-field.vue new file mode 100644 index 0000000..31d2330 --- /dev/null +++ b/src/views/cms/setting/components/website-field.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/views/cms/setting/index.vue b/src/views/cms/setting/index.vue new file mode 100644 index 0000000..a1c9075 --- /dev/null +++ b/src/views/cms/setting/index.vue @@ -0,0 +1,380 @@ + + + + + + diff --git a/src/views/cms/video/components/video-edit.vue b/src/views/cms/video/components/video-edit.vue new file mode 100644 index 0000000..255a930 --- /dev/null +++ b/src/views/cms/video/components/video-edit.vue @@ -0,0 +1,241 @@ + + + + diff --git a/src/views/cms/video/index.vue b/src/views/cms/video/index.vue new file mode 100644 index 0000000..7cfc9d1 --- /dev/null +++ b/src/views/cms/video/index.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/src/views/cms/video/player/index.vue b/src/views/cms/video/player/index.vue new file mode 100644 index 0000000..f5e3310 --- /dev/null +++ b/src/views/cms/video/player/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/views/oa/app/components/app-edit.vue b/src/views/oa/app/components/app-edit.vue new file mode 100644 index 0000000..74fa121 --- /dev/null +++ b/src/views/oa/app/components/app-edit.vue @@ -0,0 +1,247 @@ + + + + + + diff --git a/src/views/oa/app/components/renew-list.vue b/src/views/oa/app/components/renew-list.vue new file mode 100644 index 0000000..7b78717 --- /dev/null +++ b/src/views/oa/app/components/renew-list.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/views/oa/app/components/search.vue b/src/views/oa/app/components/search.vue new file mode 100644 index 0000000..ce0d33b --- /dev/null +++ b/src/views/oa/app/components/search.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/views/oa/app/components/task-list.vue b/src/views/oa/app/components/task-list.vue new file mode 100644 index 0000000..94ba130 --- /dev/null +++ b/src/views/oa/app/components/task-list.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-about-edit.vue b/src/views/oa/app/detail/components/app-about-edit.vue new file mode 100644 index 0000000..b0ea951 --- /dev/null +++ b/src/views/oa/app/detail/components/app-about-edit.vue @@ -0,0 +1,283 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-about.vue b/src/views/oa/app/detail/components/app-about.vue new file mode 100644 index 0000000..a03d41b --- /dev/null +++ b/src/views/oa/app/detail/components/app-about.vue @@ -0,0 +1,60 @@ + + diff --git a/src/views/oa/app/detail/components/app-annex-edit.vue b/src/views/oa/app/detail/components/app-annex-edit.vue new file mode 100644 index 0000000..e35e936 --- /dev/null +++ b/src/views/oa/app/detail/components/app-annex-edit.vue @@ -0,0 +1,221 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-annex.vue b/src/views/oa/app/detail/components/app-annex.vue new file mode 100644 index 0000000..3dd410f --- /dev/null +++ b/src/views/oa/app/detail/components/app-annex.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-field-edit.vue b/src/views/oa/app/detail/components/app-field-edit.vue new file mode 100644 index 0000000..d9422f4 --- /dev/null +++ b/src/views/oa/app/detail/components/app-field-edit.vue @@ -0,0 +1,177 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-field-search.vue b/src/views/oa/app/detail/components/app-field-search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/oa/app/detail/components/app-field-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/oa/app/detail/components/app-field.vue b/src/views/oa/app/detail/components/app-field.vue new file mode 100644 index 0000000..6bd51b2 --- /dev/null +++ b/src/views/oa/app/detail/components/app-field.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-info-edit.vue b/src/views/oa/app/detail/components/app-info-edit.vue new file mode 100644 index 0000000..9742814 --- /dev/null +++ b/src/views/oa/app/detail/components/app-info-edit.vue @@ -0,0 +1,559 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-info.vue b/src/views/oa/app/detail/components/app-info.vue new file mode 100644 index 0000000..75a5a12 --- /dev/null +++ b/src/views/oa/app/detail/components/app-info.vue @@ -0,0 +1,176 @@ + + diff --git a/src/views/oa/app/detail/components/app-nenew.vue b/src/views/oa/app/detail/components/app-nenew.vue new file mode 100644 index 0000000..b7d5a87 --- /dev/null +++ b/src/views/oa/app/detail/components/app-nenew.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-photo-edit.vue b/src/views/oa/app/detail/components/app-photo-edit.vue new file mode 100644 index 0000000..cb26f47 --- /dev/null +++ b/src/views/oa/app/detail/components/app-photo-edit.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-photo.vue b/src/views/oa/app/detail/components/app-photo.vue new file mode 100644 index 0000000..f81208d --- /dev/null +++ b/src/views/oa/app/detail/components/app-photo.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/oa/app/detail/components/app-profile-edit.vue b/src/views/oa/app/detail/components/app-profile-edit.vue new file mode 100644 index 0000000..0d28aad --- /dev/null +++ b/src/views/oa/app/detail/components/app-profile-edit.vue @@ -0,0 +1,256 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-profile.vue b/src/views/oa/app/detail/components/app-profile.vue new file mode 100644 index 0000000..63c23a7 --- /dev/null +++ b/src/views/oa/app/detail/components/app-profile.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/oa/app/detail/components/app-secret-form.vue b/src/views/oa/app/detail/components/app-secret-form.vue new file mode 100644 index 0000000..8931218 --- /dev/null +++ b/src/views/oa/app/detail/components/app-secret-form.vue @@ -0,0 +1,210 @@ + + + + + + diff --git a/src/views/oa/app/detail/components/app-task-search.vue b/src/views/oa/app/detail/components/app-task-search.vue new file mode 100644 index 0000000..75a557d --- /dev/null +++ b/src/views/oa/app/detail/components/app-task-search.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/views/oa/app/detail/components/app-task.vue b/src/views/oa/app/detail/components/app-task.vue new file mode 100644 index 0000000..7754149 --- /dev/null +++ b/src/views/oa/app/detail/components/app-task.vue @@ -0,0 +1,298 @@ + + + + + + + diff --git a/src/views/oa/app/detail/components/app-url-edit.vue b/src/views/oa/app/detail/components/app-url-edit.vue new file mode 100644 index 0000000..7bde622 --- /dev/null +++ b/src/views/oa/app/detail/components/app-url-edit.vue @@ -0,0 +1,157 @@ + + + + diff --git a/src/views/oa/app/detail/components/app-url-search.vue b/src/views/oa/app/detail/components/app-url-search.vue new file mode 100644 index 0000000..948c933 --- /dev/null +++ b/src/views/oa/app/detail/components/app-url-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/oa/app/detail/components/app-url.vue b/src/views/oa/app/detail/components/app-url.vue new file mode 100644 index 0000000..30008c0 --- /dev/null +++ b/src/views/oa/app/detail/components/app-url.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/oa/app/detail/components/app-users.vue b/src/views/oa/app/detail/components/app-users.vue new file mode 100644 index 0000000..45de87c --- /dev/null +++ b/src/views/oa/app/detail/components/app-users.vue @@ -0,0 +1,140 @@ + + diff --git a/src/views/oa/app/detail/index.vue b/src/views/oa/app/detail/index.vue new file mode 100644 index 0000000..20ace07 --- /dev/null +++ b/src/views/oa/app/detail/index.vue @@ -0,0 +1,342 @@ + + + + + diff --git a/src/views/oa/app/dict/components/dict-edit.vue b/src/views/oa/app/dict/components/dict-edit.vue new file mode 100644 index 0000000..a27556c --- /dev/null +++ b/src/views/oa/app/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/oa/app/dict/index.vue b/src/views/oa/app/dict/index.vue new file mode 100644 index 0000000..5892b69 --- /dev/null +++ b/src/views/oa/app/dict/index.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/oa/app/index.vue b/src/views/oa/app/index.vue new file mode 100644 index 0000000..3ca170e --- /dev/null +++ b/src/views/oa/app/index.vue @@ -0,0 +1,477 @@ + + + + + + + diff --git a/src/views/oa/app/renew/components/app-edit.vue b/src/views/oa/app/renew/components/app-edit.vue new file mode 100644 index 0000000..a66a55a --- /dev/null +++ b/src/views/oa/app/renew/components/app-edit.vue @@ -0,0 +1,379 @@ + + + + + + + diff --git a/src/views/oa/app/renew/components/renew-list.vue b/src/views/oa/app/renew/components/renew-list.vue new file mode 100644 index 0000000..060cf87 --- /dev/null +++ b/src/views/oa/app/renew/components/renew-list.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/views/oa/app/renew/components/search.vue b/src/views/oa/app/renew/components/search.vue new file mode 100644 index 0000000..10b0374 --- /dev/null +++ b/src/views/oa/app/renew/components/search.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/oa/app/renew/index.vue b/src/views/oa/app/renew/index.vue new file mode 100644 index 0000000..5717870 --- /dev/null +++ b/src/views/oa/app/renew/index.vue @@ -0,0 +1,354 @@ + + + + + + + diff --git a/src/views/oa/assets/server/components/assets-edit.vue b/src/views/oa/assets/server/components/assets-edit.vue new file mode 100644 index 0000000..110d266 --- /dev/null +++ b/src/views/oa/assets/server/components/assets-edit.vue @@ -0,0 +1,623 @@ + + + + + + diff --git a/src/views/oa/assets/server/components/renew-list.vue b/src/views/oa/assets/server/components/renew-list.vue new file mode 100644 index 0000000..7b78717 --- /dev/null +++ b/src/views/oa/assets/server/components/renew-list.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/views/oa/assets/server/components/search.vue b/src/views/oa/assets/server/components/search.vue new file mode 100644 index 0000000..38034d6 --- /dev/null +++ b/src/views/oa/assets/server/components/search.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/views/oa/assets/server/components/task-list.vue b/src/views/oa/assets/server/components/task-list.vue new file mode 100644 index 0000000..94ba130 --- /dev/null +++ b/src/views/oa/assets/server/components/task-list.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/oa/assets/server/detail/components/assets-info-edit.vue b/src/views/oa/assets/server/detail/components/assets-info-edit.vue new file mode 100644 index 0000000..aae1d93 --- /dev/null +++ b/src/views/oa/assets/server/detail/components/assets-info-edit.vue @@ -0,0 +1,454 @@ + + + + diff --git a/src/views/oa/assets/server/detail/components/assets-info.vue b/src/views/oa/assets/server/detail/components/assets-info.vue new file mode 100644 index 0000000..a2bbf2a --- /dev/null +++ b/src/views/oa/assets/server/detail/components/assets-info.vue @@ -0,0 +1,131 @@ + + diff --git a/src/views/oa/assets/server/detail/components/assets-users.vue b/src/views/oa/assets/server/detail/components/assets-users.vue new file mode 100644 index 0000000..dc28ea2 --- /dev/null +++ b/src/views/oa/assets/server/detail/components/assets-users.vue @@ -0,0 +1,95 @@ + + diff --git a/src/views/oa/assets/server/detail/index.vue b/src/views/oa/assets/server/detail/index.vue new file mode 100644 index 0000000..ea8f233 --- /dev/null +++ b/src/views/oa/assets/server/detail/index.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/oa/assets/server/dict/components/dict-edit.vue b/src/views/oa/assets/server/dict/components/dict-edit.vue new file mode 100644 index 0000000..a27556c --- /dev/null +++ b/src/views/oa/assets/server/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/oa/assets/server/dict/index.vue b/src/views/oa/assets/server/dict/index.vue new file mode 100644 index 0000000..aeb5158 --- /dev/null +++ b/src/views/oa/assets/server/dict/index.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/views/oa/assets/server/index.vue b/src/views/oa/assets/server/index.vue new file mode 100644 index 0000000..aa97000 --- /dev/null +++ b/src/views/oa/assets/server/index.vue @@ -0,0 +1,371 @@ + + + + + + + diff --git a/src/views/oa/assets/server2/components/assets-edit.vue b/src/views/oa/assets/server2/components/assets-edit.vue new file mode 100644 index 0000000..91ee078 --- /dev/null +++ b/src/views/oa/assets/server2/components/assets-edit.vue @@ -0,0 +1,726 @@ + + + + + + diff --git a/src/views/oa/assets/server2/components/search.vue b/src/views/oa/assets/server2/components/search.vue new file mode 100644 index 0000000..1e2b866 --- /dev/null +++ b/src/views/oa/assets/server2/components/search.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/views/oa/assets/server2/index.vue b/src/views/oa/assets/server2/index.vue new file mode 100644 index 0000000..27ab79d --- /dev/null +++ b/src/views/oa/assets/server2/index.vue @@ -0,0 +1,295 @@ + + + + + + + + diff --git a/src/views/oa/company/components/company-edit.vue b/src/views/oa/company/components/company-edit.vue new file mode 100644 index 0000000..9350588 --- /dev/null +++ b/src/views/oa/company/components/company-edit.vue @@ -0,0 +1,701 @@ + + + + + diff --git a/src/views/oa/company/components/company-info.vue b/src/views/oa/company/components/company-info.vue new file mode 100644 index 0000000..9d7633e --- /dev/null +++ b/src/views/oa/company/components/company-info.vue @@ -0,0 +1,298 @@ + + + + + + + diff --git a/src/views/oa/company/components/search.vue b/src/views/oa/company/components/search.vue new file mode 100644 index 0000000..f5d7d28 --- /dev/null +++ b/src/views/oa/company/components/search.vue @@ -0,0 +1,232 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-about-edit.vue b/src/views/oa/company/detail/components/company-about-edit.vue new file mode 100644 index 0000000..34350df --- /dev/null +++ b/src/views/oa/company/detail/components/company-about-edit.vue @@ -0,0 +1,245 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-about.vue b/src/views/oa/company/detail/components/company-about.vue new file mode 100644 index 0000000..8b3b432 --- /dev/null +++ b/src/views/oa/company/detail/components/company-about.vue @@ -0,0 +1,60 @@ + + diff --git a/src/views/oa/company/detail/components/company-annex-edit.vue b/src/views/oa/company/detail/components/company-annex-edit.vue new file mode 100644 index 0000000..e35e936 --- /dev/null +++ b/src/views/oa/company/detail/components/company-annex-edit.vue @@ -0,0 +1,221 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-annex.vue b/src/views/oa/company/detail/components/company-annex.vue new file mode 100644 index 0000000..4bb01a6 --- /dev/null +++ b/src/views/oa/company/detail/components/company-annex.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/src/views/oa/company/detail/components/company-field-edit.vue b/src/views/oa/company/detail/components/company-field-edit.vue new file mode 100644 index 0000000..1bd915a --- /dev/null +++ b/src/views/oa/company/detail/components/company-field-edit.vue @@ -0,0 +1,177 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-field-search.vue b/src/views/oa/company/detail/components/company-field-search.vue new file mode 100644 index 0000000..a7a5a6d --- /dev/null +++ b/src/views/oa/company/detail/components/company-field-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/oa/company/detail/components/company-field.vue b/src/views/oa/company/detail/components/company-field.vue new file mode 100644 index 0000000..7561eb1 --- /dev/null +++ b/src/views/oa/company/detail/components/company-field.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/views/oa/company/detail/components/company-info-edit.vue b/src/views/oa/company/detail/components/company-info-edit.vue new file mode 100644 index 0000000..729ea64 --- /dev/null +++ b/src/views/oa/company/detail/components/company-info-edit.vue @@ -0,0 +1,500 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-info.vue b/src/views/oa/company/detail/components/company-info.vue new file mode 100644 index 0000000..fa12369 --- /dev/null +++ b/src/views/oa/company/detail/components/company-info.vue @@ -0,0 +1,161 @@ + + diff --git a/src/views/oa/company/detail/components/company-nenew.vue b/src/views/oa/company/detail/components/company-nenew.vue new file mode 100644 index 0000000..b7d5a87 --- /dev/null +++ b/src/views/oa/company/detail/components/company-nenew.vue @@ -0,0 +1,255 @@ + + + + + diff --git a/src/views/oa/company/detail/components/company-photo-edit.vue b/src/views/oa/company/detail/components/company-photo-edit.vue new file mode 100644 index 0000000..850b98f --- /dev/null +++ b/src/views/oa/company/detail/components/company-photo-edit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-photo.vue b/src/views/oa/company/detail/components/company-photo.vue new file mode 100644 index 0000000..1f02c32 --- /dev/null +++ b/src/views/oa/company/detail/components/company-photo.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/oa/company/detail/components/company-profile-edit.vue b/src/views/oa/company/detail/components/company-profile-edit.vue new file mode 100644 index 0000000..0d28aad --- /dev/null +++ b/src/views/oa/company/detail/components/company-profile-edit.vue @@ -0,0 +1,256 @@ + + + + diff --git a/src/views/oa/company/detail/components/company-profile.vue b/src/views/oa/company/detail/components/company-profile.vue new file mode 100644 index 0000000..23d4098 --- /dev/null +++ b/src/views/oa/company/detail/components/company-profile.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/oa/company/detail/components/company-secret-form.vue b/src/views/oa/company/detail/components/company-secret-form.vue new file mode 100644 index 0000000..8931218 --- /dev/null +++ b/src/views/oa/company/detail/components/company-secret-form.vue @@ -0,0 +1,210 @@ + + + + + + diff --git a/src/views/oa/company/detail/components/company-task-search.vue b/src/views/oa/company/detail/components/company-task-search.vue new file mode 100644 index 0000000..75a557d --- /dev/null +++ b/src/views/oa/company/detail/components/company-task-search.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/views/oa/company/detail/components/company-task.vue b/src/views/oa/company/detail/components/company-task.vue new file mode 100644 index 0000000..58b3046 --- /dev/null +++ b/src/views/oa/company/detail/components/company-task.vue @@ -0,0 +1,298 @@ + + + + + + + diff --git a/src/views/oa/company/detail/components/company-users.vue b/src/views/oa/company/detail/components/company-users.vue new file mode 100644 index 0000000..41b3279 --- /dev/null +++ b/src/views/oa/company/detail/components/company-users.vue @@ -0,0 +1,110 @@ + + diff --git a/src/views/oa/company/detail/index.vue b/src/views/oa/company/detail/index.vue new file mode 100644 index 0000000..7ec323f --- /dev/null +++ b/src/views/oa/company/detail/index.vue @@ -0,0 +1,203 @@ + + + + + diff --git a/src/views/oa/company/dict/components/dict-edit.vue b/src/views/oa/company/dict/components/dict-edit.vue new file mode 100644 index 0000000..8d44bb2 --- /dev/null +++ b/src/views/oa/company/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/oa/company/dict/index.vue b/src/views/oa/company/dict/index.vue new file mode 100644 index 0000000..ecbb72c --- /dev/null +++ b/src/views/oa/company/dict/index.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/views/oa/company/index.vue b/src/views/oa/company/index.vue new file mode 100644 index 0000000..4880b40 --- /dev/null +++ b/src/views/oa/company/index.vue @@ -0,0 +1,315 @@ + + + + + + + diff --git a/src/views/oa/customer/components/customer-edit.vue b/src/views/oa/customer/components/customer-edit.vue new file mode 100644 index 0000000..593310c --- /dev/null +++ b/src/views/oa/customer/components/customer-edit.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/src/views/oa/customer/components/customer-edit/progress-select.vue b/src/views/oa/customer/components/customer-edit/progress-select.vue new file mode 100644 index 0000000..7ebcab6 --- /dev/null +++ b/src/views/oa/customer/components/customer-edit/progress-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/oa/customer/components/customer-edit/source-select.vue b/src/views/oa/customer/components/customer-edit/source-select.vue new file mode 100644 index 0000000..36c9d4e --- /dev/null +++ b/src/views/oa/customer/components/customer-edit/source-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/oa/customer/components/customer-edit/status-select.vue b/src/views/oa/customer/components/customer-edit/status-select.vue new file mode 100644 index 0000000..11205a3 --- /dev/null +++ b/src/views/oa/customer/components/customer-edit/status-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/oa/customer/components/customer-edit/type-select.vue b/src/views/oa/customer/components/customer-edit/type-select.vue new file mode 100644 index 0000000..b72cb11 --- /dev/null +++ b/src/views/oa/customer/components/customer-edit/type-select.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/views/oa/customer/components/customer-edit/user-select.vue b/src/views/oa/customer/components/customer-edit/user-select.vue new file mode 100644 index 0000000..a55353f --- /dev/null +++ b/src/views/oa/customer/components/customer-edit/user-select.vue @@ -0,0 +1,76 @@ + + + + diff --git a/src/views/oa/customer/components/customer-info.vue b/src/views/oa/customer/components/customer-info.vue new file mode 100644 index 0000000..5fa7b89 --- /dev/null +++ b/src/views/oa/customer/components/customer-info.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/oa/customer/components/customer-move.vue b/src/views/oa/customer/components/customer-move.vue new file mode 100644 index 0000000..35f260a --- /dev/null +++ b/src/views/oa/customer/components/customer-move.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/views/oa/customer/components/customer-search.vue b/src/views/oa/customer/components/customer-search.vue new file mode 100644 index 0000000..43461ad --- /dev/null +++ b/src/views/oa/customer/components/customer-search.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/views/oa/customer/components/search.vue b/src/views/oa/customer/components/search.vue new file mode 100644 index 0000000..c17d457 --- /dev/null +++ b/src/views/oa/customer/components/search.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/oa/customer/components/status-select.vue b/src/views/oa/customer/components/status-select.vue new file mode 100644 index 0000000..11205a3 --- /dev/null +++ b/src/views/oa/customer/components/status-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/oa/customer/components/type-select.vue b/src/views/oa/customer/components/type-select.vue new file mode 100644 index 0000000..cde59fe --- /dev/null +++ b/src/views/oa/customer/components/type-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/oa/customer/index.vue b/src/views/oa/customer/index.vue new file mode 100644 index 0000000..831da86 --- /dev/null +++ b/src/views/oa/customer/index.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/views/oa/customer/list.vue b/src/views/oa/customer/list.vue new file mode 100644 index 0000000..501f27d --- /dev/null +++ b/src/views/oa/customer/list.vue @@ -0,0 +1,352 @@ + + + + + + + diff --git a/src/views/oa/dashboard/components/activities-card.vue b/src/views/oa/dashboard/components/activities-card.vue new file mode 100644 index 0000000..864f5d9 --- /dev/null +++ b/src/views/oa/dashboard/components/activities-card.vue @@ -0,0 +1,138 @@ + + + + + + diff --git a/src/views/oa/dashboard/components/app-list.vue b/src/views/oa/dashboard/components/app-list.vue new file mode 100644 index 0000000..b6a0c2a --- /dev/null +++ b/src/views/oa/dashboard/components/app-list.vue @@ -0,0 +1,91 @@ + + + + + + + diff --git a/src/views/oa/dashboard/components/article-list.vue b/src/views/oa/dashboard/components/article-list.vue new file mode 100644 index 0000000..07096f0 --- /dev/null +++ b/src/views/oa/dashboard/components/article-list.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/views/oa/dashboard/components/count-user.vue b/src/views/oa/dashboard/components/count-user.vue new file mode 100644 index 0000000..b1fe386 --- /dev/null +++ b/src/views/oa/dashboard/components/count-user.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/oa/dashboard/components/docs.vue b/src/views/oa/dashboard/components/docs.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/oa/dashboard/components/docs.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/oa/dashboard/components/goal-card.vue b/src/views/oa/dashboard/components/goal-card.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/oa/dashboard/components/goal-card.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/oa/dashboard/components/link-card.vue b/src/views/oa/dashboard/components/link-card.vue new file mode 100644 index 0000000..96ff957 --- /dev/null +++ b/src/views/oa/dashboard/components/link-card.vue @@ -0,0 +1,181 @@ + + + + + + + + diff --git a/src/views/oa/dashboard/components/link-icons.ts b/src/views/oa/dashboard/components/link-icons.ts new file mode 100644 index 0000000..1c5d8ed --- /dev/null +++ b/src/views/oa/dashboard/components/link-icons.ts @@ -0,0 +1,15 @@ +export { + UserOutlined, + TeamOutlined, + FileSearchOutlined, + ChromeOutlined, + ShoppingOutlined, + LaptopOutlined, + AppstoreAddOutlined, + DesktopOutlined, + AntDesignOutlined, + SettingOutlined, + CheckSquareOutlined, + GatewayOutlined, + RedditOutlined +} from '@ant-design/icons-vue'; diff --git a/src/views/oa/dashboard/components/link-list.vue b/src/views/oa/dashboard/components/link-list.vue new file mode 100644 index 0000000..6dee136 --- /dev/null +++ b/src/views/oa/dashboard/components/link-list.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/oa/dashboard/components/more-icon.vue b/src/views/oa/dashboard/components/more-icon.vue new file mode 100644 index 0000000..2823738 --- /dev/null +++ b/src/views/oa/dashboard/components/more-icon.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/views/oa/dashboard/components/profile-card.vue b/src/views/oa/dashboard/components/profile-card.vue new file mode 100644 index 0000000..6f70629 --- /dev/null +++ b/src/views/oa/dashboard/components/profile-card.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/src/views/oa/dashboard/components/qrcode.vue b/src/views/oa/dashboard/components/qrcode.vue new file mode 100644 index 0000000..213a8fe --- /dev/null +++ b/src/views/oa/dashboard/components/qrcode.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/oa/dashboard/components/task-card.vue b/src/views/oa/dashboard/components/task-card.vue new file mode 100644 index 0000000..ff765c5 --- /dev/null +++ b/src/views/oa/dashboard/components/task-card.vue @@ -0,0 +1,116 @@ + + + + + + + diff --git a/src/views/oa/dashboard/components/user-list.vue b/src/views/oa/dashboard/components/user-list.vue new file mode 100644 index 0000000..a189372 --- /dev/null +++ b/src/views/oa/dashboard/components/user-list.vue @@ -0,0 +1,84 @@ + + + + + + diff --git a/src/views/oa/dashboard/index.vue b/src/views/oa/dashboard/index.vue new file mode 100644 index 0000000..43a3983 --- /dev/null +++ b/src/views/oa/dashboard/index.vue @@ -0,0 +1,353 @@ + + + + + + + diff --git a/src/views/oa/link/components/link-edit.vue b/src/views/oa/link/components/link-edit.vue new file mode 100644 index 0000000..48a2a8f --- /dev/null +++ b/src/views/oa/link/components/link-edit.vue @@ -0,0 +1,262 @@ + + + + diff --git a/src/views/oa/link/components/link-search.vue b/src/views/oa/link/components/link-search.vue new file mode 100644 index 0000000..47ed3cb --- /dev/null +++ b/src/views/oa/link/components/link-search.vue @@ -0,0 +1,135 @@ + + + + diff --git a/src/views/oa/link/dict/components/dict-edit.vue b/src/views/oa/link/dict/components/dict-edit.vue new file mode 100644 index 0000000..f9b755d --- /dev/null +++ b/src/views/oa/link/dict/components/dict-edit.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/views/oa/link/dict/index.vue b/src/views/oa/link/dict/index.vue new file mode 100644 index 0000000..eba458a --- /dev/null +++ b/src/views/oa/link/dict/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/views/oa/link/index.vue b/src/views/oa/link/index.vue new file mode 100644 index 0000000..b61dd80 --- /dev/null +++ b/src/views/oa/link/index.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/views/oa/order/components/order-edit.vue b/src/views/oa/order/components/order-edit.vue new file mode 100644 index 0000000..1f20110 --- /dev/null +++ b/src/views/oa/order/components/order-edit.vue @@ -0,0 +1,476 @@ + + + + + + diff --git a/src/views/oa/order/components/search.vue b/src/views/oa/order/components/search.vue new file mode 100644 index 0000000..64f82b2 --- /dev/null +++ b/src/views/oa/order/components/search.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/views/oa/order/index.vue b/src/views/oa/order/index.vue new file mode 100644 index 0000000..8029f6a --- /dev/null +++ b/src/views/oa/order/index.vue @@ -0,0 +1,259 @@ + + + + + + + diff --git a/src/views/oa/product/components/product-edit.vue b/src/views/oa/product/components/product-edit.vue new file mode 100644 index 0000000..45a58b6 --- /dev/null +++ b/src/views/oa/product/components/product-edit.vue @@ -0,0 +1,1243 @@ + + + + + + + diff --git a/src/views/oa/product/components/renew-list.vue b/src/views/oa/product/components/renew-list.vue new file mode 100644 index 0000000..7b78717 --- /dev/null +++ b/src/views/oa/product/components/renew-list.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/views/oa/product/components/search.vue b/src/views/oa/product/components/search.vue new file mode 100644 index 0000000..425ef5d --- /dev/null +++ b/src/views/oa/product/components/search.vue @@ -0,0 +1,107 @@ + + + + diff --git a/src/views/oa/product/components/task-list.vue b/src/views/oa/product/components/task-list.vue new file mode 100644 index 0000000..94ba130 --- /dev/null +++ b/src/views/oa/product/components/task-list.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/views/oa/product/detail/components/product-about.vue b/src/views/oa/product/detail/components/product-about.vue new file mode 100644 index 0000000..6d47970 --- /dev/null +++ b/src/views/oa/product/detail/components/product-about.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/views/oa/product/detail/components/product-annex-edit.vue b/src/views/oa/product/detail/components/product-annex-edit.vue new file mode 100644 index 0000000..69c7c66 --- /dev/null +++ b/src/views/oa/product/detail/components/product-annex-edit.vue @@ -0,0 +1,232 @@ + + + + diff --git a/src/views/oa/product/detail/components/product-annex.vue b/src/views/oa/product/detail/components/product-annex.vue new file mode 100644 index 0000000..e83c9da --- /dev/null +++ b/src/views/oa/product/detail/components/product-annex.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/src/views/oa/product/detail/components/product-info.vue b/src/views/oa/product/detail/components/product-info.vue new file mode 100644 index 0000000..55aa72c --- /dev/null +++ b/src/views/oa/product/detail/components/product-info.vue @@ -0,0 +1,141 @@ + + diff --git a/src/views/oa/product/detail/components/product-photo.vue b/src/views/oa/product/detail/components/product-photo.vue new file mode 100644 index 0000000..78b2d81 --- /dev/null +++ b/src/views/oa/product/detail/components/product-photo.vue @@ -0,0 +1,27 @@ + + diff --git a/src/views/oa/product/detail/components/product-tabs-edit.vue b/src/views/oa/product/detail/components/product-tabs-edit.vue new file mode 100644 index 0000000..ebd370a --- /dev/null +++ b/src/views/oa/product/detail/components/product-tabs-edit.vue @@ -0,0 +1,177 @@ + + + + diff --git a/src/views/oa/product/detail/components/product-tabs-search.vue b/src/views/oa/product/detail/components/product-tabs-search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/oa/product/detail/components/product-tabs-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/oa/product/detail/components/product-tabs.vue b/src/views/oa/product/detail/components/product-tabs.vue new file mode 100644 index 0000000..1563063 --- /dev/null +++ b/src/views/oa/product/detail/components/product-tabs.vue @@ -0,0 +1,234 @@ + + + + + + + diff --git a/src/views/oa/product/detail/index.vue b/src/views/oa/product/detail/index.vue new file mode 100644 index 0000000..f4156a8 --- /dev/null +++ b/src/views/oa/product/detail/index.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/views/oa/product/index.vue b/src/views/oa/product/index.vue new file mode 100644 index 0000000..4fcbd78 --- /dev/null +++ b/src/views/oa/product/index.vue @@ -0,0 +1,325 @@ + + + + + + + diff --git a/src/views/oa/project/components/category-select.vue b/src/views/oa/project/components/category-select.vue new file mode 100644 index 0000000..0573d0e --- /dev/null +++ b/src/views/oa/project/components/category-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/oa/project/components/customer-select.vue b/src/views/oa/project/components/customer-select.vue new file mode 100644 index 0000000..e049a3b --- /dev/null +++ b/src/views/oa/project/components/customer-select.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/oa/project/components/markdown.vue b/src/views/oa/project/components/markdown.vue new file mode 100644 index 0000000..222b1bf --- /dev/null +++ b/src/views/oa/project/components/markdown.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/views/oa/project/components/project-edit.vue b/src/views/oa/project/components/project-edit.vue new file mode 100644 index 0000000..d5fd69c --- /dev/null +++ b/src/views/oa/project/components/project-edit.vue @@ -0,0 +1,488 @@ + + + + + diff --git a/src/views/oa/project/components/project-info.vue b/src/views/oa/project/components/project-info.vue new file mode 100644 index 0000000..562c399 --- /dev/null +++ b/src/views/oa/project/components/project-info.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/src/views/oa/project/components/project-search.vue b/src/views/oa/project/components/project-search.vue new file mode 100644 index 0000000..7d51a07 --- /dev/null +++ b/src/views/oa/project/components/project-search.vue @@ -0,0 +1,74 @@ + + + + diff --git a/src/views/oa/project/components/search.vue b/src/views/oa/project/components/search.vue new file mode 100644 index 0000000..799e82d --- /dev/null +++ b/src/views/oa/project/components/search.vue @@ -0,0 +1,89 @@ + + + + diff --git a/src/views/oa/project/components/status-select.vue b/src/views/oa/project/components/status-select.vue new file mode 100644 index 0000000..fce92dc --- /dev/null +++ b/src/views/oa/project/components/status-select.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/views/oa/project/index.vue b/src/views/oa/project/index.vue new file mode 100644 index 0000000..930e430 --- /dev/null +++ b/src/views/oa/project/index.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/src/views/oa/project/list.vue b/src/views/oa/project/list.vue new file mode 100644 index 0000000..b7a1faa --- /dev/null +++ b/src/views/oa/project/list.vue @@ -0,0 +1,267 @@ + + + + + + + diff --git a/src/views/oa/task/add/index.vue b/src/views/oa/task/add/index.vue new file mode 100644 index 0000000..0216d67 --- /dev/null +++ b/src/views/oa/task/add/index.vue @@ -0,0 +1,345 @@ + + + + + diff --git a/src/views/oa/task/admin/components/count-pending-all.vue b/src/views/oa/task/admin/components/count-pending-all.vue new file mode 100644 index 0000000..37f7560 --- /dev/null +++ b/src/views/oa/task/admin/components/count-pending-all.vue @@ -0,0 +1,154 @@ + + + + diff --git a/src/views/oa/task/admin/components/count-pending.vue b/src/views/oa/task/admin/components/count-pending.vue new file mode 100644 index 0000000..7d76cfe --- /dev/null +++ b/src/views/oa/task/admin/components/count-pending.vue @@ -0,0 +1,153 @@ + + + + diff --git a/src/views/oa/task/admin/components/count-rate.vue b/src/views/oa/task/admin/components/count-rate.vue new file mode 100644 index 0000000..4f49fc6 --- /dev/null +++ b/src/views/oa/task/admin/components/count-rate.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/views/oa/task/admin/components/count-satisfaction.vue b/src/views/oa/task/admin/components/count-satisfaction.vue new file mode 100644 index 0000000..7fcf111 --- /dev/null +++ b/src/views/oa/task/admin/components/count-satisfaction.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/views/oa/task/admin/components/qrcode.vue b/src/views/oa/task/admin/components/qrcode.vue new file mode 100644 index 0000000..6acef7b --- /dev/null +++ b/src/views/oa/task/admin/components/qrcode.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/oa/task/admin/index.vue b/src/views/oa/task/admin/index.vue new file mode 100644 index 0000000..b38379a --- /dev/null +++ b/src/views/oa/task/admin/index.vue @@ -0,0 +1,150 @@ + + + + + + + diff --git a/src/views/oa/task/components/carousel.vue b/src/views/oa/task/components/carousel.vue new file mode 100644 index 0000000..6a11709 --- /dev/null +++ b/src/views/oa/task/components/carousel.vue @@ -0,0 +1,14 @@ + + + + + diff --git a/src/views/oa/task/components/count-num.vue b/src/views/oa/task/components/count-num.vue new file mode 100644 index 0000000..304a2ee --- /dev/null +++ b/src/views/oa/task/components/count-num.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/views/oa/task/components/count-pending.vue b/src/views/oa/task/components/count-pending.vue new file mode 100644 index 0000000..4c9efde --- /dev/null +++ b/src/views/oa/task/components/count-pending.vue @@ -0,0 +1,176 @@ + + + + diff --git a/src/views/oa/task/components/count-rate.vue b/src/views/oa/task/components/count-rate.vue new file mode 100644 index 0000000..e88c449 --- /dev/null +++ b/src/views/oa/task/components/count-rate.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/views/oa/task/components/count-satisfaction.vue b/src/views/oa/task/components/count-satisfaction.vue new file mode 100644 index 0000000..4933d1a --- /dev/null +++ b/src/views/oa/task/components/count-satisfaction.vue @@ -0,0 +1,79 @@ + + + diff --git a/src/views/oa/task/components/count-user.vue b/src/views/oa/task/components/count-user.vue new file mode 100644 index 0000000..b1fe386 --- /dev/null +++ b/src/views/oa/task/components/count-user.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/oa/task/components/more-icon.vue b/src/views/oa/task/components/more-icon.vue new file mode 100644 index 0000000..43b2c2f --- /dev/null +++ b/src/views/oa/task/components/more-icon.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/views/oa/task/components/news.vue b/src/views/oa/task/components/news.vue new file mode 100644 index 0000000..8a1ee7a --- /dev/null +++ b/src/views/oa/task/components/news.vue @@ -0,0 +1,12 @@ + + + + + diff --git a/src/views/oa/task/components/qrcode.vue b/src/views/oa/task/components/qrcode.vue new file mode 100644 index 0000000..213a8fe --- /dev/null +++ b/src/views/oa/task/components/qrcode.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/oa/task/components/search.vue b/src/views/oa/task/components/search.vue new file mode 100644 index 0000000..f9ca52b --- /dev/null +++ b/src/views/oa/task/components/search.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/views/oa/task/components/task-list.vue b/src/views/oa/task/components/task-list.vue new file mode 100644 index 0000000..581ccd9 --- /dev/null +++ b/src/views/oa/task/components/task-list.vue @@ -0,0 +1,215 @@ + + + + + + + diff --git a/src/views/oa/task/components/tools.vue b/src/views/oa/task/components/tools.vue new file mode 100644 index 0000000..66a3ffa --- /dev/null +++ b/src/views/oa/task/components/tools.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/oa/task/detail/components/app-info.vue b/src/views/oa/task/detail/components/app-info.vue new file mode 100644 index 0000000..b7af6eb --- /dev/null +++ b/src/views/oa/task/detail/components/app-info.vue @@ -0,0 +1,346 @@ + + + diff --git a/src/views/oa/task/detail/components/assign.vue b/src/views/oa/task/detail/components/assign.vue new file mode 100644 index 0000000..23473e8 --- /dev/null +++ b/src/views/oa/task/detail/components/assign.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/views/oa/task/detail/components/help.vue b/src/views/oa/task/detail/components/help.vue new file mode 100644 index 0000000..5dcb345 --- /dev/null +++ b/src/views/oa/task/detail/components/help.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/oa/task/detail/components/links.vue b/src/views/oa/task/detail/components/links.vue new file mode 100644 index 0000000..ac81ce0 --- /dev/null +++ b/src/views/oa/task/detail/components/links.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/views/oa/task/detail/components/task-edit.vue b/src/views/oa/task/detail/components/task-edit.vue new file mode 100644 index 0000000..da8258a --- /dev/null +++ b/src/views/oa/task/detail/components/task-edit.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/views/oa/task/detail/components/task-qrcode.vue b/src/views/oa/task/detail/components/task-qrcode.vue new file mode 100644 index 0000000..74e4707 --- /dev/null +++ b/src/views/oa/task/detail/components/task-qrcode.vue @@ -0,0 +1,83 @@ + + + diff --git a/src/views/oa/task/detail/components/task-record-edit.vue b/src/views/oa/task/detail/components/task-record-edit.vue new file mode 100644 index 0000000..49fb160 --- /dev/null +++ b/src/views/oa/task/detail/components/task-record-edit.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/views/oa/task/detail/index.vue b/src/views/oa/task/detail/index.vue new file mode 100644 index 0000000..d79ed00 --- /dev/null +++ b/src/views/oa/task/detail/index.vue @@ -0,0 +1,706 @@ + + + + + + + diff --git a/src/views/oa/task/dict/components/dict-edit.vue b/src/views/oa/task/dict/components/dict-edit.vue new file mode 100644 index 0000000..0f5155a --- /dev/null +++ b/src/views/oa/task/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/oa/task/dict/index.vue b/src/views/oa/task/dict/index.vue new file mode 100644 index 0000000..29b7cb3 --- /dev/null +++ b/src/views/oa/task/dict/index.vue @@ -0,0 +1,224 @@ + + + + + diff --git a/src/views/oa/task/hall/components/category.vue b/src/views/oa/task/hall/components/category.vue new file mode 100644 index 0000000..c99174e --- /dev/null +++ b/src/views/oa/task/hall/components/category.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/views/oa/task/hall/components/pending-all.vue b/src/views/oa/task/hall/components/pending-all.vue new file mode 100644 index 0000000..f6c4b05 --- /dev/null +++ b/src/views/oa/task/hall/components/pending-all.vue @@ -0,0 +1,216 @@ + + + + + + + diff --git a/src/views/oa/task/hall/components/search.vue b/src/views/oa/task/hall/components/search.vue new file mode 100644 index 0000000..717fe61 --- /dev/null +++ b/src/views/oa/task/hall/components/search.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/views/oa/task/hall/index.vue b/src/views/oa/task/hall/index.vue new file mode 100644 index 0000000..4749e14 --- /dev/null +++ b/src/views/oa/task/hall/index.vue @@ -0,0 +1,69 @@ + + + + + + + diff --git a/src/views/oa/task/index.vue b/src/views/oa/task/index.vue new file mode 100644 index 0000000..f5f6786 --- /dev/null +++ b/src/views/oa/task/index.vue @@ -0,0 +1,78 @@ + + + + + + + diff --git a/src/views/oa/task/search/components/search.vue b/src/views/oa/task/search/components/search.vue new file mode 100644 index 0000000..1b7eec8 --- /dev/null +++ b/src/views/oa/task/search/components/search.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/views/oa/task/search/index.vue b/src/views/oa/task/search/index.vue new file mode 100644 index 0000000..8298480 --- /dev/null +++ b/src/views/oa/task/search/index.vue @@ -0,0 +1,307 @@ + + + + + + + diff --git a/src/views/passport/forget/index.vue b/src/views/passport/forget/index.vue new file mode 100644 index 0000000..708e3b7 --- /dev/null +++ b/src/views/passport/forget/index.vue @@ -0,0 +1,428 @@ + + + + + diff --git a/src/views/passport/login/components/register/step/components/step-confirm.vue b/src/views/passport/login/components/register/step/components/step-confirm.vue new file mode 100644 index 0000000..6083285 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-confirm.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/src/views/passport/login/components/register/step/components/step-edit.vue b/src/views/passport/login/components/register/step/components/step-edit.vue new file mode 100644 index 0000000..bf618a2 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-edit.vue @@ -0,0 +1,286 @@ + + + + diff --git a/src/views/passport/login/components/register/step/components/step-success.vue b/src/views/passport/login/components/register/step/components/step-success.vue new file mode 100644 index 0000000..21f5042 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-success.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/passport/login/components/register/step/index.vue b/src/views/passport/login/components/register/step/index.vue new file mode 100644 index 0000000..b682053 --- /dev/null +++ b/src/views/passport/login/components/register/step/index.vue @@ -0,0 +1,67 @@ + + + + + + + diff --git a/src/views/passport/login/components/register/step/model/index.ts b/src/views/passport/login/components/register/step/model/index.ts new file mode 100644 index 0000000..c6038ae --- /dev/null +++ b/src/views/passport/login/components/register/step/model/index.ts @@ -0,0 +1,12 @@ +export interface StepForm { + type?: number; + apply?: string; + username?: string; + password?: string; + password2?: string; + phone?: string; + code?: string; + nickname?: string; + companyName?: string; + tenantId?: number; +} diff --git a/src/views/passport/login/components/wx-work.vue b/src/views/passport/login/components/wx-work.vue new file mode 100644 index 0000000..a491d60 --- /dev/null +++ b/src/views/passport/login/components/wx-work.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/passport/login/index.vue b/src/views/passport/login/index.vue new file mode 100644 index 0000000..75ee1db --- /dev/null +++ b/src/views/passport/login/index.vue @@ -0,0 +1,532 @@ + + + + + diff --git a/src/views/passport/register/components/register.vue b/src/views/passport/register/components/register.vue new file mode 100644 index 0000000..017aea1 --- /dev/null +++ b/src/views/passport/register/components/register.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/passport/register/index.vue b/src/views/passport/register/index.vue new file mode 100644 index 0000000..2aa5d94 --- /dev/null +++ b/src/views/passport/register/index.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/views/passport/register/step/components/step-confirm.vue b/src/views/passport/register/step/components/step-confirm.vue new file mode 100644 index 0000000..25b0a80 --- /dev/null +++ b/src/views/passport/register/step/components/step-confirm.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/src/views/passport/register/step/components/step-edit.vue b/src/views/passport/register/step/components/step-edit.vue new file mode 100644 index 0000000..bd2b6e8 --- /dev/null +++ b/src/views/passport/register/step/components/step-edit.vue @@ -0,0 +1,302 @@ + + + + diff --git a/src/views/passport/register/step/components/step-success.vue b/src/views/passport/register/step/components/step-success.vue new file mode 100644 index 0000000..3633f6c --- /dev/null +++ b/src/views/passport/register/step/components/step-success.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/views/passport/register/step/index.vue b/src/views/passport/register/step/index.vue new file mode 100644 index 0000000..58e5d32 --- /dev/null +++ b/src/views/passport/register/step/index.vue @@ -0,0 +1,93 @@ + + + + + + + diff --git a/src/views/passport/register/step/model/index.ts b/src/views/passport/register/step/model/index.ts new file mode 100644 index 0000000..c4b0bbb --- /dev/null +++ b/src/views/passport/register/step/model/index.ts @@ -0,0 +1,11 @@ +export interface StepForm { + type?: number; + apply?: string; + username?: string; + password?: string; + password2?: string; + phone?: string; + code?: string; + nickname?: string; + companyName?: string; +} diff --git a/src/views/passport/token-login/index.vue b/src/views/passport/token-login/index.vue new file mode 100644 index 0000000..36c8bad --- /dev/null +++ b/src/views/passport/token-login/index.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/views/passport/wx-work/index.vue b/src/views/passport/wx-work/index.vue new file mode 100644 index 0000000..a340ea6 --- /dev/null +++ b/src/views/passport/wx-work/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/result/fail/index.vue b/src/views/result/fail/index.vue new file mode 100644 index 0000000..5f14729 --- /dev/null +++ b/src/views/result/fail/index.vue @@ -0,0 +1,62 @@ + + + + + + + diff --git a/src/views/result/success/index.vue b/src/views/result/success/index.vue new file mode 100644 index 0000000..f34fa01 --- /dev/null +++ b/src/views/result/success/index.vue @@ -0,0 +1,34 @@ + + + + diff --git a/src/views/shop/brand/components/brandEdit.vue b/src/views/shop/brand/components/brandEdit.vue new file mode 100644 index 0000000..2c3535c --- /dev/null +++ b/src/views/shop/brand/components/brandEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/shop/brand/components/search.vue b/src/views/shop/brand/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/brand/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/brand/index.vue b/src/views/shop/brand/index.vue new file mode 100644 index 0000000..59f2fed --- /dev/null +++ b/src/views/shop/brand/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/shop/goods/add/index.vue b/src/views/shop/goods/add/index.vue new file mode 100644 index 0000000..30ddd02 --- /dev/null +++ b/src/views/shop/goods/add/index.vue @@ -0,0 +1,1003 @@ + + + + + + diff --git a/src/views/shop/goods/components/goodsEdit.vue b/src/views/shop/goods/components/goodsEdit.vue new file mode 100644 index 0000000..0b4d064 --- /dev/null +++ b/src/views/shop/goods/components/goodsEdit.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/src/views/shop/goods/components/search.vue b/src/views/shop/goods/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/goods/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/goods/index.vue b/src/views/shop/goods/index.vue new file mode 100644 index 0000000..9e6e73a --- /dev/null +++ b/src/views/shop/goods/index.vue @@ -0,0 +1,256 @@ + + + + + + + diff --git a/src/views/shop/goodsCategory/components/category-edit.vue b/src/views/shop/goodsCategory/components/category-edit.vue new file mode 100644 index 0000000..c023b50 --- /dev/null +++ b/src/views/shop/goodsCategory/components/category-edit.vue @@ -0,0 +1,300 @@ + + + + + + diff --git a/src/views/shop/goodsCategory/index.vue b/src/views/shop/goodsCategory/index.vue new file mode 100644 index 0000000..bd84544 --- /dev/null +++ b/src/views/shop/goodsCategory/index.vue @@ -0,0 +1,406 @@ + + + + + diff --git a/src/views/shop/goodsCategory/preview/index.vue b/src/views/shop/goodsCategory/preview/index.vue new file mode 100644 index 0000000..bad10c7 --- /dev/null +++ b/src/views/shop/goodsCategory/preview/index.vue @@ -0,0 +1,124 @@ + + + + + + diff --git a/src/views/shop/goodsSku/components/goodsSkuEdit.vue b/src/views/shop/goodsSku/components/goodsSkuEdit.vue new file mode 100644 index 0000000..9c5f9b8 --- /dev/null +++ b/src/views/shop/goodsSku/components/goodsSkuEdit.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/shop/goodsSku/components/search.vue b/src/views/shop/goodsSku/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/goodsSku/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/goodsSku/index.vue b/src/views/shop/goodsSku/index.vue new file mode 100644 index 0000000..ee007de --- /dev/null +++ b/src/views/shop/goodsSku/index.vue @@ -0,0 +1,218 @@ + + + + + + + diff --git a/src/views/shop/goodsSpec/components/goodsSpecEdit.vue b/src/views/shop/goodsSpec/components/goodsSpecEdit.vue new file mode 100644 index 0000000..ec938fb --- /dev/null +++ b/src/views/shop/goodsSpec/components/goodsSpecEdit.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/shop/goodsSpec/components/search.vue b/src/views/shop/goodsSpec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/goodsSpec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/goodsSpec/index.vue b/src/views/shop/goodsSpec/index.vue new file mode 100644 index 0000000..5ccbd19 --- /dev/null +++ b/src/views/shop/goodsSpec/index.vue @@ -0,0 +1,218 @@ + + + + + + + diff --git a/src/views/shop/goodsSpecRel/components/goodsSpecRelEdit.vue b/src/views/shop/goodsSpecRel/components/goodsSpecRelEdit.vue new file mode 100644 index 0000000..779af72 --- /dev/null +++ b/src/views/shop/goodsSpecRel/components/goodsSpecRelEdit.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/shop/goodsSpecRel/components/search.vue b/src/views/shop/goodsSpecRel/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/goodsSpecRel/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/goodsSpecRel/index.vue b/src/views/shop/goodsSpecRel/index.vue new file mode 100644 index 0000000..23030dd --- /dev/null +++ b/src/views/shop/goodsSpecRel/index.vue @@ -0,0 +1,218 @@ + + + + + + + diff --git a/src/views/shop/merchant/components/merchantEdit.vue b/src/views/shop/merchant/components/merchantEdit.vue new file mode 100644 index 0000000..a1438db --- /dev/null +++ b/src/views/shop/merchant/components/merchantEdit.vue @@ -0,0 +1,474 @@ + + + + + + diff --git a/src/views/shop/merchant/components/search.vue b/src/views/shop/merchant/components/search.vue new file mode 100644 index 0000000..6803e8a --- /dev/null +++ b/src/views/shop/merchant/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/merchant/index.vue b/src/views/shop/merchant/index.vue new file mode 100644 index 0000000..41b9be2 --- /dev/null +++ b/src/views/shop/merchant/index.vue @@ -0,0 +1,259 @@ + + + + + + + diff --git a/src/views/shop/merchantAccount/components/merchantAccountEdit.vue b/src/views/shop/merchantAccount/components/merchantAccountEdit.vue new file mode 100644 index 0000000..55b4e74 --- /dev/null +++ b/src/views/shop/merchantAccount/components/merchantAccountEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/shop/merchantAccount/components/search.vue b/src/views/shop/merchantAccount/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/merchantAccount/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/merchantAccount/index.vue b/src/views/shop/merchantAccount/index.vue new file mode 100644 index 0000000..1e6bf86 --- /dev/null +++ b/src/views/shop/merchantAccount/index.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/views/shop/merchantApply/components/merchantApplyEdit.vue b/src/views/shop/merchantApply/components/merchantApplyEdit.vue new file mode 100644 index 0000000..93d5ec9 --- /dev/null +++ b/src/views/shop/merchantApply/components/merchantApplyEdit.vue @@ -0,0 +1,288 @@ + + + + diff --git a/src/views/shop/merchantApply/components/search.vue b/src/views/shop/merchantApply/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/merchantApply/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/merchantApply/index.vue b/src/views/shop/merchantApply/index.vue new file mode 100644 index 0000000..614fa2a --- /dev/null +++ b/src/views/shop/merchantApply/index.vue @@ -0,0 +1,235 @@ + + + + + + + diff --git a/src/views/shop/merchantType/components/merchantTypeEdit.vue b/src/views/shop/merchantType/components/merchantTypeEdit.vue new file mode 100644 index 0000000..8c56230 --- /dev/null +++ b/src/views/shop/merchantType/components/merchantTypeEdit.vue @@ -0,0 +1,197 @@ + + + + diff --git a/src/views/shop/merchantType/components/search.vue b/src/views/shop/merchantType/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/merchantType/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/merchantType/index.vue b/src/views/shop/merchantType/index.vue new file mode 100644 index 0000000..5a83ea1 --- /dev/null +++ b/src/views/shop/merchantType/index.vue @@ -0,0 +1,239 @@ + + + + + + + diff --git a/src/views/shop/order/components/orderEdit.vue b/src/views/shop/order/components/orderEdit.vue new file mode 100644 index 0000000..053d448 --- /dev/null +++ b/src/views/shop/order/components/orderEdit.vue @@ -0,0 +1,396 @@ + + + + diff --git a/src/views/shop/order/components/search.vue b/src/views/shop/order/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/order/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/order/index.vue b/src/views/shop/order/index.vue new file mode 100644 index 0000000..39d28b0 --- /dev/null +++ b/src/views/shop/order/index.vue @@ -0,0 +1,283 @@ + + + + + + + diff --git a/src/views/shop/spec/components/search.vue b/src/views/shop/spec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/spec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/spec/components/specEdit.vue b/src/views/shop/spec/components/specEdit.vue new file mode 100644 index 0000000..03b8e7c --- /dev/null +++ b/src/views/shop/spec/components/specEdit.vue @@ -0,0 +1,163 @@ + + + + diff --git a/src/views/shop/spec/index.vue b/src/views/shop/spec/index.vue new file mode 100644 index 0000000..2718f6e --- /dev/null +++ b/src/views/shop/spec/index.vue @@ -0,0 +1,250 @@ + + + + + + + diff --git a/src/views/shop/specValue/components/search.vue b/src/views/shop/specValue/components/search.vue new file mode 100644 index 0000000..61f53fc --- /dev/null +++ b/src/views/shop/specValue/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/specValue/components/specValueEdit.vue b/src/views/shop/specValue/components/specValueEdit.vue new file mode 100644 index 0000000..549fc92 --- /dev/null +++ b/src/views/shop/specValue/components/specValueEdit.vue @@ -0,0 +1,141 @@ + + + + diff --git a/src/views/shop/specValue/index.vue b/src/views/shop/specValue/index.vue new file mode 100644 index 0000000..1f04498 --- /dev/null +++ b/src/views/shop/specValue/index.vue @@ -0,0 +1,253 @@ + + + + + + + diff --git a/src/views/shop/user/components/org-select.vue b/src/views/shop/user/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/shop/user/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/shop/user/components/role-select.vue b/src/views/shop/user/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/shop/user/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/shop/user/components/sex-select.vue b/src/views/shop/user/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/shop/user/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/shop/user/components/user-edit.vue b/src/views/shop/user/components/user-edit.vue new file mode 100644 index 0000000..41c2f67 --- /dev/null +++ b/src/views/shop/user/components/user-edit.vue @@ -0,0 +1,313 @@ + + + + diff --git a/src/views/shop/user/components/user-import.vue b/src/views/shop/user/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/shop/user/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/shop/user/components/user-info.vue b/src/views/shop/user/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/shop/user/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/shop/user/components/user-search.vue b/src/views/shop/user/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/shop/user/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/shop/user/details/index.vue b/src/views/shop/user/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/shop/user/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/shop/user/index.vue b/src/views/shop/user/index.vue new file mode 100644 index 0000000..0aecb16 --- /dev/null +++ b/src/views/shop/user/index.vue @@ -0,0 +1,502 @@ + + + + + + + diff --git a/src/views/system/access-key/components/accesskey-edit.vue b/src/views/system/access-key/components/accesskey-edit.vue new file mode 100644 index 0000000..56c0685 --- /dev/null +++ b/src/views/system/access-key/components/accesskey-edit.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/src/views/system/access-key/index.vue b/src/views/system/access-key/index.vue new file mode 100644 index 0000000..eb87902 --- /dev/null +++ b/src/views/system/access-key/index.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/src/views/system/appstore/components/buy.vue b/src/views/system/appstore/components/buy.vue new file mode 100644 index 0000000..544cba5 --- /dev/null +++ b/src/views/system/appstore/components/buy.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/src/views/system/appstore/components/dict/progress-select.vue b/src/views/system/appstore/components/dict/progress-select.vue new file mode 100644 index 0000000..7ebcab6 --- /dev/null +++ b/src/views/system/appstore/components/dict/progress-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/system/appstore/components/dict/source-select.vue b/src/views/system/appstore/components/dict/source-select.vue new file mode 100644 index 0000000..36c9d4e --- /dev/null +++ b/src/views/system/appstore/components/dict/source-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/system/appstore/components/dict/status-select.vue b/src/views/system/appstore/components/dict/status-select.vue new file mode 100644 index 0000000..11205a3 --- /dev/null +++ b/src/views/system/appstore/components/dict/status-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/appstore/components/dict/type-select.vue b/src/views/system/appstore/components/dict/type-select.vue new file mode 100644 index 0000000..b72cb11 --- /dev/null +++ b/src/views/system/appstore/components/dict/type-select.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/views/system/appstore/components/dict/user-select.vue b/src/views/system/appstore/components/dict/user-select.vue new file mode 100644 index 0000000..a55353f --- /dev/null +++ b/src/views/system/appstore/components/dict/user-select.vue @@ -0,0 +1,76 @@ + + + + diff --git a/src/views/system/appstore/components/edit.vue b/src/views/system/appstore/components/edit.vue new file mode 100644 index 0000000..2211b95 --- /dev/null +++ b/src/views/system/appstore/components/edit.vue @@ -0,0 +1,400 @@ + + + + + diff --git a/src/views/system/appstore/components/search.vue b/src/views/system/appstore/components/search.vue new file mode 100644 index 0000000..8193fd4 --- /dev/null +++ b/src/views/system/appstore/components/search.vue @@ -0,0 +1,96 @@ + + + + diff --git a/src/views/system/appstore/components/setting.vue b/src/views/system/appstore/components/setting.vue new file mode 100644 index 0000000..b023a70 --- /dev/null +++ b/src/views/system/appstore/components/setting.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/authority-edit.vue b/src/views/system/appstore/components/setting/authority-edit.vue new file mode 100644 index 0000000..e4a816e --- /dev/null +++ b/src/views/system/appstore/components/setting/authority-edit.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/authority.vue b/src/views/system/appstore/components/setting/authority.vue new file mode 100644 index 0000000..898031f --- /dev/null +++ b/src/views/system/appstore/components/setting/authority.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/basic.vue b/src/views/system/appstore/components/setting/basic.vue new file mode 100644 index 0000000..2b50aa1 --- /dev/null +++ b/src/views/system/appstore/components/setting/basic.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/content.vue b/src/views/system/appstore/components/setting/content.vue new file mode 100644 index 0000000..44e32f1 --- /dev/null +++ b/src/views/system/appstore/components/setting/content.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/menu-edit.vue b/src/views/system/appstore/components/setting/menu-edit.vue new file mode 100644 index 0000000..72347c5 --- /dev/null +++ b/src/views/system/appstore/components/setting/menu-edit.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/menu.vue b/src/views/system/appstore/components/setting/menu.vue new file mode 100644 index 0000000..495dd8c --- /dev/null +++ b/src/views/system/appstore/components/setting/menu.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/views/system/appstore/components/setting/setting.vue b/src/views/system/appstore/components/setting/setting.vue new file mode 100644 index 0000000..ec1e1ea --- /dev/null +++ b/src/views/system/appstore/components/setting/setting.vue @@ -0,0 +1,405 @@ + + + + + diff --git a/src/views/system/appstore/components/step/components/step-confirm.vue b/src/views/system/appstore/components/step/components/step-confirm.vue new file mode 100644 index 0000000..a8de86d --- /dev/null +++ b/src/views/system/appstore/components/step/components/step-confirm.vue @@ -0,0 +1,268 @@ + + + + + diff --git a/src/views/system/appstore/components/step/components/step-edit.vue b/src/views/system/appstore/components/step/components/step-edit.vue new file mode 100644 index 0000000..2602670 --- /dev/null +++ b/src/views/system/appstore/components/step/components/step-edit.vue @@ -0,0 +1,196 @@ + + + + diff --git a/src/views/system/appstore/components/step/components/step-success.vue b/src/views/system/appstore/components/step/components/step-success.vue new file mode 100644 index 0000000..82a4a41 --- /dev/null +++ b/src/views/system/appstore/components/step/components/step-success.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/views/system/appstore/components/step/index.vue b/src/views/system/appstore/components/step/index.vue new file mode 100644 index 0000000..6309865 --- /dev/null +++ b/src/views/system/appstore/components/step/index.vue @@ -0,0 +1,112 @@ + + + + + + + diff --git a/src/views/system/appstore/components/step/model/index.ts b/src/views/system/appstore/components/step/model/index.ts new file mode 100644 index 0000000..d509d08 --- /dev/null +++ b/src/views/system/appstore/components/step/model/index.ts @@ -0,0 +1,11 @@ +export interface StepForm { + applyType?: number; + apply?: string; + username?: string; + password?: string; + password2?: string; + phone?: string; + code?: string; + nickname?: string; + companyName?: string; +} diff --git a/src/views/system/appstore/index.vue b/src/views/system/appstore/index.vue new file mode 100644 index 0000000..ac409c6 --- /dev/null +++ b/src/views/system/appstore/index.vue @@ -0,0 +1,54 @@ + + + + + + + diff --git a/src/views/system/appstore/list.vue b/src/views/system/appstore/list.vue new file mode 100644 index 0000000..f831055 --- /dev/null +++ b/src/views/system/appstore/list.vue @@ -0,0 +1,508 @@ + + + + + + + diff --git a/src/views/system/appstore/menu-icons.ts b/src/views/system/appstore/menu-icons.ts new file mode 100644 index 0000000..fc99aeb --- /dev/null +++ b/src/views/system/appstore/menu-icons.ts @@ -0,0 +1,56 @@ +/** 菜单用到的图标 */ +export { + HomeOutlined, + SettingOutlined, + TeamOutlined, + DesktopOutlined, + FileTextOutlined, + TableOutlined, + AppstoreOutlined, + CheckCircleOutlined, + ExclamationCircleOutlined, + UserOutlined, + TagOutlined, + IdcardOutlined, + BarChartOutlined, + AuditOutlined, + PicLeftOutlined, + CloseCircleOutlined, + QuestionCircleOutlined, + SoundOutlined, + ApartmentOutlined, + DashboardOutlined, + OneToOneOutlined, + DragOutlined, + InteractionOutlined, + BankOutlined, + BlockOutlined, + CheckSquareOutlined, + ProfileOutlined, + WarningOutlined, + FolderOutlined, + YoutubeOutlined, + ControlOutlined, + EllipsisOutlined, + CalendarOutlined, + AppstoreAddOutlined, + FileSearchOutlined, + EnvironmentOutlined, + CompassOutlined, + FontSizeOutlined, + SketchOutlined, + BgColorsOutlined, + PrinterOutlined, + QrcodeOutlined, + BarcodeOutlined, + PictureOutlined, + LinkOutlined, + AlertOutlined, + HistoryOutlined, + ChromeOutlined, + CodeOutlined, + ReadOutlined, + LaptopOutlined, + ShoppingCartOutlined, + SkinOutlined +} from '@ant-design/icons-vue'; diff --git a/src/views/system/cache/components/cache-edit.vue b/src/views/system/cache/components/cache-edit.vue new file mode 100644 index 0000000..b1eb5bc --- /dev/null +++ b/src/views/system/cache/components/cache-edit.vue @@ -0,0 +1,165 @@ + + + + + + diff --git a/src/views/system/cache/components/send-sms.vue b/src/views/system/cache/components/send-sms.vue new file mode 100644 index 0000000..56c0685 --- /dev/null +++ b/src/views/system/cache/components/send-sms.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/src/views/system/cache/index.vue b/src/views/system/cache/index.vue new file mode 100644 index 0000000..8de4d19 --- /dev/null +++ b/src/views/system/cache/index.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/system/dashboard/components/activities-card.vue b/src/views/system/dashboard/components/activities-card.vue new file mode 100644 index 0000000..864f5d9 --- /dev/null +++ b/src/views/system/dashboard/components/activities-card.vue @@ -0,0 +1,138 @@ + + + + + + diff --git a/src/views/system/dashboard/components/app-list.vue b/src/views/system/dashboard/components/app-list.vue new file mode 100644 index 0000000..bf4ac5d --- /dev/null +++ b/src/views/system/dashboard/components/app-list.vue @@ -0,0 +1,82 @@ + + + + + + + diff --git a/src/views/system/dashboard/components/article-list.vue b/src/views/system/dashboard/components/article-list.vue new file mode 100644 index 0000000..0efc79e --- /dev/null +++ b/src/views/system/dashboard/components/article-list.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/views/system/dashboard/components/count-user.vue b/src/views/system/dashboard/components/count-user.vue new file mode 100644 index 0000000..b1fe386 --- /dev/null +++ b/src/views/system/dashboard/components/count-user.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/system/dashboard/components/docs.vue b/src/views/system/dashboard/components/docs.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/system/dashboard/components/docs.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/system/dashboard/components/goal-card.vue b/src/views/system/dashboard/components/goal-card.vue new file mode 100644 index 0000000..b5ebf76 --- /dev/null +++ b/src/views/system/dashboard/components/goal-card.vue @@ -0,0 +1,70 @@ + + + + + + diff --git a/src/views/system/dashboard/components/link-card.vue b/src/views/system/dashboard/components/link-card.vue new file mode 100644 index 0000000..023ca1d --- /dev/null +++ b/src/views/system/dashboard/components/link-card.vue @@ -0,0 +1,178 @@ + + + + + + + + diff --git a/src/views/system/dashboard/components/link-icons.ts b/src/views/system/dashboard/components/link-icons.ts new file mode 100644 index 0000000..ab399aa --- /dev/null +++ b/src/views/system/dashboard/components/link-icons.ts @@ -0,0 +1,12 @@ +export { + UserOutlined, + TeamOutlined, + FileSearchOutlined, + ChromeOutlined, + ShoppingOutlined, + LaptopOutlined, + AppstoreAddOutlined, + DesktopOutlined, + AntDesignOutlined, + SettingOutlined +} from '@ant-design/icons-vue'; diff --git a/src/views/system/dashboard/components/link-list.vue b/src/views/system/dashboard/components/link-list.vue new file mode 100644 index 0000000..7a66e92 --- /dev/null +++ b/src/views/system/dashboard/components/link-list.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/views/system/dashboard/components/more-icon.vue b/src/views/system/dashboard/components/more-icon.vue new file mode 100644 index 0000000..2823738 --- /dev/null +++ b/src/views/system/dashboard/components/more-icon.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/views/system/dashboard/components/profile-card.vue b/src/views/system/dashboard/components/profile-card.vue new file mode 100644 index 0000000..6f70629 --- /dev/null +++ b/src/views/system/dashboard/components/profile-card.vue @@ -0,0 +1,121 @@ + + + + + + diff --git a/src/views/system/dashboard/components/qrcode.vue b/src/views/system/dashboard/components/qrcode.vue new file mode 100644 index 0000000..213a8fe --- /dev/null +++ b/src/views/system/dashboard/components/qrcode.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/system/dashboard/components/task-card.vue b/src/views/system/dashboard/components/task-card.vue new file mode 100644 index 0000000..c445450 --- /dev/null +++ b/src/views/system/dashboard/components/task-card.vue @@ -0,0 +1,112 @@ + + + + + + + diff --git a/src/views/system/dashboard/components/user-list.vue b/src/views/system/dashboard/components/user-list.vue new file mode 100644 index 0000000..a189372 --- /dev/null +++ b/src/views/system/dashboard/components/user-list.vue @@ -0,0 +1,84 @@ + + + + + + diff --git a/src/views/system/dashboard/index.vue b/src/views/system/dashboard/index.vue new file mode 100644 index 0000000..47aa431 --- /dev/null +++ b/src/views/system/dashboard/index.vue @@ -0,0 +1,359 @@ + + + + + + + diff --git a/src/views/system/demo/index.vue b/src/views/system/demo/index.vue new file mode 100644 index 0000000..6c39fa2 --- /dev/null +++ b/src/views/system/demo/index.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/src/views/system/dict/components/dict-data-edit.vue b/src/views/system/dict/components/dict-data-edit.vue new file mode 100644 index 0000000..3dece81 --- /dev/null +++ b/src/views/system/dict/components/dict-data-edit.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/views/system/dict/components/dict-data-search.vue b/src/views/system/dict/components/dict-data-search.vue new file mode 100644 index 0000000..b43643f --- /dev/null +++ b/src/views/system/dict/components/dict-data-search.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/views/system/dict/components/dict-data.vue b/src/views/system/dict/components/dict-data.vue new file mode 100644 index 0000000..6878d2c --- /dev/null +++ b/src/views/system/dict/components/dict-data.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/views/system/dict/components/dict-edit.vue b/src/views/system/dict/components/dict-edit.vue new file mode 100644 index 0000000..9dd9bf0 --- /dev/null +++ b/src/views/system/dict/components/dict-edit.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue new file mode 100644 index 0000000..2e3c7f3 --- /dev/null +++ b/src/views/system/dict/index.vue @@ -0,0 +1,192 @@ + + + + + + + diff --git a/src/views/system/dict/list.vue b/src/views/system/dict/list.vue new file mode 100644 index 0000000..39890b1 --- /dev/null +++ b/src/views/system/dict/list.vue @@ -0,0 +1,210 @@ + + + + + + + diff --git a/src/views/system/dictionary/components/dict-data-edit.vue b/src/views/system/dictionary/components/dict-data-edit.vue new file mode 100644 index 0000000..560b43e --- /dev/null +++ b/src/views/system/dictionary/components/dict-data-edit.vue @@ -0,0 +1,170 @@ + + + + diff --git a/src/views/system/dictionary/components/dict-data-search.vue b/src/views/system/dictionary/components/dict-data-search.vue new file mode 100644 index 0000000..34d24d1 --- /dev/null +++ b/src/views/system/dictionary/components/dict-data-search.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/views/system/dictionary/components/dict-data.vue b/src/views/system/dictionary/components/dict-data.vue new file mode 100644 index 0000000..e329110 --- /dev/null +++ b/src/views/system/dictionary/components/dict-data.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/src/views/system/dictionary/components/dict-edit.vue b/src/views/system/dictionary/components/dict-edit.vue new file mode 100644 index 0000000..9fa4070 --- /dev/null +++ b/src/views/system/dictionary/components/dict-edit.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/views/system/dictionary/index.vue b/src/views/system/dictionary/index.vue new file mode 100644 index 0000000..806bf03 --- /dev/null +++ b/src/views/system/dictionary/index.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/src/views/system/dictionary/list.vue b/src/views/system/dictionary/list.vue new file mode 100644 index 0000000..8dea81f --- /dev/null +++ b/src/views/system/dictionary/list.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/src/views/system/exception/403/index.vue b/src/views/system/exception/403/index.vue new file mode 100644 index 0000000..6b2bc27 --- /dev/null +++ b/src/views/system/exception/403/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/system/exception/404/index.vue b/src/views/system/exception/404/index.vue new file mode 100644 index 0000000..b156e83 --- /dev/null +++ b/src/views/system/exception/404/index.vue @@ -0,0 +1,70 @@ + + + + + + + diff --git a/src/views/system/exception/500/index.vue b/src/views/system/exception/500/index.vue new file mode 100644 index 0000000..ff7c853 --- /dev/null +++ b/src/views/system/exception/500/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/system/file/components/file-search.vue b/src/views/system/file/components/file-search.vue new file mode 100644 index 0000000..bd9ded8 --- /dev/null +++ b/src/views/system/file/components/file-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/file/index.vue b/src/views/system/file/index.vue new file mode 100644 index 0000000..d31c687 --- /dev/null +++ b/src/views/system/file/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/views/system/grade/components/grade-edit.vue b/src/views/system/grade/components/grade-edit.vue new file mode 100644 index 0000000..4676ad1 --- /dev/null +++ b/src/views/system/grade/components/grade-edit.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/src/views/system/grade/components/search.vue b/src/views/system/grade/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/grade/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/grade/index.vue b/src/views/system/grade/index.vue new file mode 100644 index 0000000..a5ee659 --- /dev/null +++ b/src/views/system/grade/index.vue @@ -0,0 +1,292 @@ + + + + + + + diff --git a/src/views/system/login-record/components/login-record-search.vue b/src/views/system/login-record/components/login-record-search.vue new file mode 100644 index 0000000..0dfc6f5 --- /dev/null +++ b/src/views/system/login-record/components/login-record-search.vue @@ -0,0 +1,115 @@ + + + + diff --git a/src/views/system/login-record/index.vue b/src/views/system/login-record/index.vue new file mode 100644 index 0000000..e2c951a --- /dev/null +++ b/src/views/system/login-record/index.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/views/system/menu/components/clone.vue b/src/views/system/menu/components/clone.vue new file mode 100644 index 0000000..f27f16e --- /dev/null +++ b/src/views/system/menu/components/clone.vue @@ -0,0 +1,192 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-edit.vue b/src/views/system/menu/components/menu-edit.vue new file mode 100644 index 0000000..1c720f1 --- /dev/null +++ b/src/views/system/menu/components/menu-edit.vue @@ -0,0 +1,469 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-plug.vue b/src/views/system/menu/components/menu-plug.vue new file mode 100644 index 0000000..4fac699 --- /dev/null +++ b/src/views/system/menu/components/menu-plug.vue @@ -0,0 +1,168 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-search.vue b/src/views/system/menu/components/menu-search.vue new file mode 100644 index 0000000..81afbf5 --- /dev/null +++ b/src/views/system/menu/components/menu-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..bc13878 --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/src/views/system/modules/components/modules-edit.vue b/src/views/system/modules/components/modules-edit.vue new file mode 100644 index 0000000..eeeb4f5 --- /dev/null +++ b/src/views/system/modules/components/modules-edit.vue @@ -0,0 +1,171 @@ + + + + diff --git a/src/views/system/modules/components/modules-search.vue b/src/views/system/modules/components/modules-search.vue new file mode 100644 index 0000000..d505fd8 --- /dev/null +++ b/src/views/system/modules/components/modules-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/modules/index.vue b/src/views/system/modules/index.vue new file mode 100644 index 0000000..429d575 --- /dev/null +++ b/src/views/system/modules/index.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/system/operation-record/components/operation-record-detail.vue b/src/views/system/operation-record/components/operation-record-detail.vue new file mode 100644 index 0000000..deb5740 --- /dev/null +++ b/src/views/system/operation-record/components/operation-record-detail.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/system/operation-record/components/operation-record-search.vue b/src/views/system/operation-record/components/operation-record-search.vue new file mode 100644 index 0000000..d6e4309 --- /dev/null +++ b/src/views/system/operation-record/components/operation-record-search.vue @@ -0,0 +1,112 @@ + + + + diff --git a/src/views/system/operation-record/components/text-ellipsis.vue b/src/views/system/operation-record/components/text-ellipsis.vue new file mode 100644 index 0000000..05b204a --- /dev/null +++ b/src/views/system/operation-record/components/text-ellipsis.vue @@ -0,0 +1,59 @@ + + + + + + diff --git a/src/views/system/operation-record/index.vue b/src/views/system/operation-record/index.vue new file mode 100644 index 0000000..a2de40f --- /dev/null +++ b/src/views/system/operation-record/index.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/views/system/organization/components/org-edit.vue b/src/views/system/organization/components/org-edit.vue new file mode 100644 index 0000000..9ebea46 --- /dev/null +++ b/src/views/system/organization/components/org-edit.vue @@ -0,0 +1,229 @@ + + + + diff --git a/src/views/system/organization/components/org-select.vue b/src/views/system/organization/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/system/organization/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/organization/components/org-type-select.vue b/src/views/system/organization/components/org-type-select.vue new file mode 100644 index 0000000..c969d57 --- /dev/null +++ b/src/views/system/organization/components/org-type-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/organization/components/org-user-edit.vue b/src/views/system/organization/components/org-user-edit.vue new file mode 100644 index 0000000..ef5ddbf --- /dev/null +++ b/src/views/system/organization/components/org-user-edit.vue @@ -0,0 +1,296 @@ + + + + diff --git a/src/views/system/organization/components/org-user-list.vue b/src/views/system/organization/components/org-user-list.vue new file mode 100644 index 0000000..81c670d --- /dev/null +++ b/src/views/system/organization/components/org-user-list.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/src/views/system/organization/components/org-user-search.vue b/src/views/system/organization/components/org-user-search.vue new file mode 100644 index 0000000..a8afc0e --- /dev/null +++ b/src/views/system/organization/components/org-user-search.vue @@ -0,0 +1,83 @@ + + + + diff --git a/src/views/system/organization/components/role-select.vue b/src/views/system/organization/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/system/organization/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/system/organization/components/sex-select.vue b/src/views/system/organization/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/organization/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/organization/index.vue b/src/views/system/organization/index.vue new file mode 100644 index 0000000..301599e --- /dev/null +++ b/src/views/system/organization/index.vue @@ -0,0 +1,208 @@ + + + + + + + diff --git a/src/views/system/plug/components/menu-edit.vue b/src/views/system/plug/components/menu-edit.vue new file mode 100644 index 0000000..5346a07 --- /dev/null +++ b/src/views/system/plug/components/menu-edit.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/views/system/plug/components/menu-search.vue b/src/views/system/plug/components/menu-search.vue new file mode 100644 index 0000000..81afbf5 --- /dev/null +++ b/src/views/system/plug/components/menu-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/plug/components/plug-edit.vue b/src/views/system/plug/components/plug-edit.vue new file mode 100644 index 0000000..e722b6b --- /dev/null +++ b/src/views/system/plug/components/plug-edit.vue @@ -0,0 +1,253 @@ + + + + + + diff --git a/src/views/system/plug/components/plug-search.vue b/src/views/system/plug/components/plug-search.vue new file mode 100644 index 0000000..0340488 --- /dev/null +++ b/src/views/system/plug/components/plug-search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/system/plug/components/plug.vue b/src/views/system/plug/components/plug.vue new file mode 100644 index 0000000..e691af5 --- /dev/null +++ b/src/views/system/plug/components/plug.vue @@ -0,0 +1,213 @@ + + + + diff --git a/src/views/system/plug/components/tenant.vue b/src/views/system/plug/components/tenant.vue new file mode 100644 index 0000000..e9b653c --- /dev/null +++ b/src/views/system/plug/components/tenant.vue @@ -0,0 +1,254 @@ + + + diff --git a/src/views/system/plug/create/components/clone.vue b/src/views/system/plug/create/components/clone.vue new file mode 100644 index 0000000..e2c30c7 --- /dev/null +++ b/src/views/system/plug/create/components/clone.vue @@ -0,0 +1,186 @@ + + + + + + diff --git a/src/views/system/plug/create/components/plug-edit.vue b/src/views/system/plug/create/components/plug-edit.vue new file mode 100644 index 0000000..0fb3559 --- /dev/null +++ b/src/views/system/plug/create/components/plug-edit.vue @@ -0,0 +1,261 @@ + + + + + + + diff --git a/src/views/system/plug/create/components/plug-search.vue b/src/views/system/plug/create/components/plug-search.vue new file mode 100644 index 0000000..a4d0cd0 --- /dev/null +++ b/src/views/system/plug/create/components/plug-search.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/system/plug/create/index.vue b/src/views/system/plug/create/index.vue new file mode 100644 index 0000000..c12fa1c --- /dev/null +++ b/src/views/system/plug/create/index.vue @@ -0,0 +1,296 @@ + + + + + + + diff --git a/src/views/system/plug/detail/index.vue b/src/views/system/plug/detail/index.vue new file mode 100644 index 0000000..69fab78 --- /dev/null +++ b/src/views/system/plug/detail/index.vue @@ -0,0 +1,400 @@ + + + + + + + diff --git a/src/views/system/plug/index.vue b/src/views/system/plug/index.vue new file mode 100644 index 0000000..680a1cd --- /dev/null +++ b/src/views/system/plug/index.vue @@ -0,0 +1,33 @@ + + + + + + + diff --git a/src/views/system/plug/list/index.vue b/src/views/system/plug/list/index.vue new file mode 100644 index 0000000..7609a11 --- /dev/null +++ b/src/views/system/plug/list/index.vue @@ -0,0 +1,253 @@ + + + + + + + diff --git a/src/views/system/plug/search/index.vue b/src/views/system/plug/search/index.vue new file mode 100644 index 0000000..7950afd --- /dev/null +++ b/src/views/system/plug/search/index.vue @@ -0,0 +1,286 @@ + + + + + + + diff --git a/src/views/system/profile/components/field.vue b/src/views/system/profile/components/field.vue new file mode 100644 index 0000000..3f11203 --- /dev/null +++ b/src/views/system/profile/components/field.vue @@ -0,0 +1,275 @@ + + + + + diff --git a/src/views/system/profile/components/sex-select.vue b/src/views/system/profile/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/profile/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/profile/index.vue b/src/views/system/profile/index.vue new file mode 100644 index 0000000..e545cdf --- /dev/null +++ b/src/views/system/profile/index.vue @@ -0,0 +1,441 @@ + + + + + + diff --git a/src/views/system/role/components/role-auth.vue b/src/views/system/role/components/role-auth.vue new file mode 100644 index 0000000..ae3ff0b --- /dev/null +++ b/src/views/system/role/components/role-auth.vue @@ -0,0 +1,159 @@ + + + + + + diff --git a/src/views/system/role/components/role-edit.vue b/src/views/system/role/components/role-edit.vue new file mode 100644 index 0000000..82e044f --- /dev/null +++ b/src/views/system/role/components/role-edit.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/views/system/role/components/role-search.vue b/src/views/system/role/components/role-search.vue new file mode 100644 index 0000000..2169dca --- /dev/null +++ b/src/views/system/role/components/role-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..ab6ebca --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/views/system/setting/components/basic.vue b/src/views/system/setting/components/basic.vue new file mode 100644 index 0000000..88bc418 --- /dev/null +++ b/src/views/system/setting/components/basic.vue @@ -0,0 +1,318 @@ + + + diff --git a/src/views/system/setting/components/clear.vue b/src/views/system/setting/components/clear.vue new file mode 100644 index 0000000..30e78f1 --- /dev/null +++ b/src/views/system/setting/components/clear.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/views/system/setting/components/developer.vue b/src/views/system/setting/components/developer.vue new file mode 100644 index 0000000..4dc4887 --- /dev/null +++ b/src/views/system/setting/components/developer.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/views/system/setting/components/mp-weixin.vue b/src/views/system/setting/components/mp-weixin.vue new file mode 100644 index 0000000..8d902e4 --- /dev/null +++ b/src/views/system/setting/components/mp-weixin.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/system/setting/components/payment.vue b/src/views/system/setting/components/payment.vue new file mode 100644 index 0000000..9ba153a --- /dev/null +++ b/src/views/system/setting/components/payment.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/src/views/system/setting/components/printer.vue b/src/views/system/setting/components/printer.vue new file mode 100644 index 0000000..aee9642 --- /dev/null +++ b/src/views/system/setting/components/printer.vue @@ -0,0 +1,214 @@ + + + diff --git a/src/views/system/setting/components/register.vue b/src/views/system/setting/components/register.vue new file mode 100644 index 0000000..96f0b05 --- /dev/null +++ b/src/views/system/setting/components/register.vue @@ -0,0 +1,236 @@ + + + diff --git a/src/views/system/setting/components/role-select.vue b/src/views/system/setting/components/role-select.vue new file mode 100644 index 0000000..61d43dd --- /dev/null +++ b/src/views/system/setting/components/role-select.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/views/system/setting/components/sms.vue b/src/views/system/setting/components/sms.vue new file mode 100644 index 0000000..b9b8723 --- /dev/null +++ b/src/views/system/setting/components/sms.vue @@ -0,0 +1,246 @@ + + + diff --git a/src/views/system/setting/components/upload.vue b/src/views/system/setting/components/upload.vue new file mode 100644 index 0000000..db56f2c --- /dev/null +++ b/src/views/system/setting/components/upload.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/src/views/system/setting/components/wx-official.vue b/src/views/system/setting/components/wx-official.vue new file mode 100644 index 0000000..09cb99c --- /dev/null +++ b/src/views/system/setting/components/wx-official.vue @@ -0,0 +1,176 @@ + + + diff --git a/src/views/system/setting/components/wx-work.vue b/src/views/system/setting/components/wx-work.vue new file mode 100644 index 0000000..b905607 --- /dev/null +++ b/src/views/system/setting/components/wx-work.vue @@ -0,0 +1,210 @@ + + + diff --git a/src/views/system/setting/index.vue b/src/views/system/setting/index.vue new file mode 100644 index 0000000..c2798ae --- /dev/null +++ b/src/views/system/setting/index.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/src/views/system/user-group/components/category-select.vue b/src/views/system/user-group/components/category-select.vue new file mode 100644 index 0000000..e87cc38 --- /dev/null +++ b/src/views/system/user-group/components/category-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/user-group/components/group-edit.vue b/src/views/system/user-group/components/group-edit.vue new file mode 100644 index 0000000..4bd763e --- /dev/null +++ b/src/views/system/user-group/components/group-edit.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/views/system/user-group/components/search.vue b/src/views/system/user-group/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/user-group/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/user-group/index.vue b/src/views/system/user-group/index.vue new file mode 100644 index 0000000..f18ce18 --- /dev/null +++ b/src/views/system/user-group/index.vue @@ -0,0 +1,267 @@ + + + + + + + diff --git a/src/views/system/user-info/index.vue b/src/views/system/user-info/index.vue new file mode 100644 index 0000000..3f10214 --- /dev/null +++ b/src/views/system/user-info/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/views/system/user/components/org-select.vue b/src/views/system/user/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/system/user/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/user/components/role-select.vue b/src/views/system/user/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/system/user/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/system/user/components/sex-select.vue b/src/views/system/user/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/user/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/user/components/user-edit.vue b/src/views/system/user/components/user-edit.vue new file mode 100644 index 0000000..3415fd8 --- /dev/null +++ b/src/views/system/user/components/user-edit.vue @@ -0,0 +1,338 @@ + + + + diff --git a/src/views/system/user/components/user-import.vue b/src/views/system/user/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/system/user/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/system/user/components/user-info.vue b/src/views/system/user/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/system/user/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/system/user/components/user-search.vue b/src/views/system/user/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/system/user/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/system/user/details/index.vue b/src/views/system/user/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/system/user/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 0000000..236dce6 --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,564 @@ + + + + + + + diff --git a/src/views/system/version/components/version-edit.vue b/src/views/system/version/components/version-edit.vue new file mode 100644 index 0000000..644d8d3 --- /dev/null +++ b/src/views/system/version/components/version-edit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/system/version/index.vue b/src/views/system/version/index.vue new file mode 100644 index 0000000..bf6d022 --- /dev/null +++ b/src/views/system/version/index.vue @@ -0,0 +1,221 @@ + + + + + + diff --git a/src/views/system/white-domain/components/search.vue b/src/views/system/white-domain/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/white-domain/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/white-domain/components/white-domain-edit.vue b/src/views/system/white-domain/components/white-domain-edit.vue new file mode 100644 index 0000000..3ee684f --- /dev/null +++ b/src/views/system/white-domain/components/white-domain-edit.vue @@ -0,0 +1,156 @@ + + + + diff --git a/src/views/system/white-domain/index.vue b/src/views/system/white-domain/index.vue new file mode 100644 index 0000000..97e7911 --- /dev/null +++ b/src/views/system/white-domain/index.vue @@ -0,0 +1,203 @@ + + + + diff --git a/src/views/user/balance-log/index.vue b/src/views/user/balance-log/index.vue new file mode 100644 index 0000000..720cf18 --- /dev/null +++ b/src/views/user/balance-log/index.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/src/views/user/batch-recharge/components/org-user-list.vue b/src/views/user/batch-recharge/components/org-user-list.vue new file mode 100644 index 0000000..01ef4fc --- /dev/null +++ b/src/views/user/batch-recharge/components/org-user-list.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/views/user/batch-recharge/components/org-user-search.vue b/src/views/user/batch-recharge/components/org-user-search.vue new file mode 100644 index 0000000..315014d --- /dev/null +++ b/src/views/user/batch-recharge/components/org-user-search.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/views/user/batch-recharge/components/recharge.vue b/src/views/user/batch-recharge/components/recharge.vue new file mode 100644 index 0000000..0d9236f --- /dev/null +++ b/src/views/user/batch-recharge/components/recharge.vue @@ -0,0 +1,168 @@ + + + + diff --git a/src/views/user/batch-recharge/index.vue b/src/views/user/batch-recharge/index.vue new file mode 100644 index 0000000..39c0af3 --- /dev/null +++ b/src/views/user/batch-recharge/index.vue @@ -0,0 +1,124 @@ + + + + + + + diff --git a/src/views/user/company/components/role-select.vue b/src/views/user/company/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/user/company/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/user/company/components/sex-select.vue b/src/views/user/company/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/user/company/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/user/company/components/user-edit.vue b/src/views/user/company/components/user-edit.vue new file mode 100644 index 0000000..d22ba84 --- /dev/null +++ b/src/views/user/company/components/user-edit.vue @@ -0,0 +1,276 @@ + + + + diff --git a/src/views/user/company/components/user-import.vue b/src/views/user/company/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/user/company/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/user/company/components/user-info.vue b/src/views/user/company/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/user/company/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/user/company/components/user-search.vue b/src/views/user/company/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/user/company/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/user/company/details/index.vue b/src/views/user/company/details/index.vue new file mode 100644 index 0000000..2737472 --- /dev/null +++ b/src/views/user/company/details/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/views/user/company/index.vue b/src/views/user/company/index.vue new file mode 100644 index 0000000..2f91167 --- /dev/null +++ b/src/views/user/company/index.vue @@ -0,0 +1,439 @@ + + + + + diff --git a/src/views/user/grade/components/grade-edit.vue b/src/views/user/grade/components/grade-edit.vue new file mode 100644 index 0000000..8d86cde --- /dev/null +++ b/src/views/user/grade/components/grade-edit.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/user/grade/components/search.vue b/src/views/user/grade/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/user/grade/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/user/grade/index.vue b/src/views/user/grade/index.vue new file mode 100644 index 0000000..9f089de --- /dev/null +++ b/src/views/user/grade/index.vue @@ -0,0 +1,320 @@ + + + + + + + diff --git a/src/views/user/index/components/org-select.vue b/src/views/user/index/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/user/index/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/user/index/components/role-select.vue b/src/views/user/index/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/user/index/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/user/index/components/sex-select.vue b/src/views/user/index/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/user/index/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/user/index/components/user-edit.vue b/src/views/user/index/components/user-edit.vue new file mode 100644 index 0000000..5303341 --- /dev/null +++ b/src/views/user/index/components/user-edit.vue @@ -0,0 +1,366 @@ + + + + diff --git a/src/views/user/index/components/user-import.vue b/src/views/user/index/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/user/index/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/user/index/components/user-info.vue b/src/views/user/index/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/user/index/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/user/index/components/user-search.vue b/src/views/user/index/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/user/index/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/user/index/details/index.vue b/src/views/user/index/details/index.vue new file mode 100644 index 0000000..2737472 --- /dev/null +++ b/src/views/user/index/details/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/views/user/index/index.vue b/src/views/user/index/index.vue new file mode 100644 index 0000000..70b04f2 --- /dev/null +++ b/src/views/user/index/index.vue @@ -0,0 +1,632 @@ + + + + + + + diff --git a/src/views/user/profile/components/sex-select.vue b/src/views/user/profile/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/user/profile/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/user/profile/index.vue b/src/views/user/profile/index.vue new file mode 100644 index 0000000..512fc75 --- /dev/null +++ b/src/views/user/profile/index.vue @@ -0,0 +1,456 @@ + + + + + + + diff --git a/src/views/user/recharge/components/recharge.vue b/src/views/user/recharge/components/recharge.vue new file mode 100644 index 0000000..6db337d --- /dev/null +++ b/src/views/user/recharge/components/recharge.vue @@ -0,0 +1,203 @@ + + + + diff --git a/src/views/user/recharge/details/index.vue b/src/views/user/recharge/details/index.vue new file mode 100644 index 0000000..2737472 --- /dev/null +++ b/src/views/user/recharge/details/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/src/views/user/recharge/index.vue b/src/views/user/recharge/index.vue new file mode 100644 index 0000000..4783bc7 --- /dev/null +++ b/src/views/user/recharge/index.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..dd32d4b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": true, + "strictFunctionTypes": false, + "jsx": "preserve", + "baseUrl": "./", + "allowJs": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "experimentalDecorators": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"], + "typeRoots": ["./node_modules/@types/"], + "noImplicitAny": false, + "skipLibCheck": true, + "paths": { + "@/*": ["src/*"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "components.d.ts", + "vite.config.ts" + ], + "exclude": ["node_modules", "dist", "**/*.js"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..230bf57 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,79 @@ +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import ViteCompression from 'vite-plugin-compression'; +import ViteComponents from 'unplugin-vue-components/vite'; +import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; +import { EleAdminResolver } from 'ele-admin-pro/lib/utils/resolvers'; +import { DynamicAntdLess } from 'ele-admin-pro/lib/utils/dynamic-theme'; +import { resolve } from 'path'; + +export default defineConfig(({ command }) => { + const isBuild = command === 'build'; + return { + // 在这里增加 base 写子路径 + base: '/', + resolve: { + alias: { + '@/': resolve('src') + '/', + 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js' + } + }, + // server: { + // proxy: { + // '/api': 'https://server.gxwebsoft.com' + // } + // }, + plugins: [ + vue(), + // 组件按需引入 + ViteComponents({ + dts: false, + resolvers: [ + AntDesignVueResolver({ + importStyle: isBuild ? 'less' : false + }), + EleAdminResolver({ + importStyle: isBuild ? 'less' : false + }) + ], + directoryAsNamespace: true + }), + // gzip 压缩 + ViteCompression({ + disable: !isBuild, + threshold: 10240, + algorithm: 'gzip', + ext: '.gz' + }) + ], + css: { + preprocessorOptions: { + less: { + javascriptEnabled: true, + plugins: [new DynamicAntdLess()], + modifyVars: { + // 组件样式开发环境全局引入生产环境按需引入 + 'style-entry-file': isBuild ? 'as-needed' : 'global-import' + } + } + } + }, + optimizeDeps: { + include: [ + 'sortablejs', + 'vuedraggable', + 'echarts/core', + 'echarts/charts', + 'echarts/renderers', + 'echarts/components', + 'vue-echarts', + 'echarts-wordcloud', + 'xlsx' + ] + }, + build: { + target: 'chrome63', + chunkSizeWarningLimit: 2000 + } + }; +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..d0b609c --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4463 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@amap/amap-jsapi-loader@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz" + integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw== + +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + version "4.2.1" + resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz" + integrity sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw== + +"@ant-design/icons-vue@^6.1.0": + version "6.1.0" + resolved "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz" + integrity sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + +"@antfu/utils@^0.5.2": + version "0.5.2" + resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz" + integrity sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA== + +"@babel/parser@^7.16.4": + version "7.18.13" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.13.tgz" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== + +"@babel/runtime@^7.10.5": + version "7.18.9" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/standalone@^7.18.12": + version "7.18.13" + resolved "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz" + integrity sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g== + +"@bytemd/plugin-gfm@^1.17.2": + version "1.17.2" + resolved "https://registry.npmmirror.com/@bytemd/plugin-gfm/-/plugin-gfm-1.17.2.tgz" + integrity sha512-u3DBMdPTcRMIRvzc582ylZhvrFumnoGjWNnUO3aXQH0mJ98XyGXxdWYAh7jow+XevhApp966ks5bvDAbYjzRTQ== + dependencies: + "@icon-park/svg" "^1.4.2" + remark-gfm "^3.0.1" + +"@bytemd/plugin-highlight-ssr@^1.20.2": + version "1.21.0" + resolved "https://registry.npmmirror.com/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.21.0.tgz" + integrity sha512-iUf94WgFRH4o6eUJ00Y7lIUUkPWu+uk422n5uMXmhTOmg60YlS9EpiEMjOL81Xe5xjSFwDnxZJTHzHq8eW4gkQ== + dependencies: + rehype-highlight "^6.0.0" + +"@bytemd/plugin-highlight@^1.17.4": + version "1.20.2" + resolved "https://registry.npmmirror.com/@bytemd/plugin-highlight/-/plugin-highlight-1.20.2.tgz" + integrity sha512-OBm0SkH4ecKyRC+h7CPUQhbp9dDus/WIpTlialhZ3ueKk/PRwRcstiuzQNXwYDBjgUQPBapmCukITN7oFliZBg== + dependencies: + highlight.js "^11.7.0" + +"@ctrl/tinycolor@^3.4.0": + version "3.4.1" + resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" + integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== + +"@esbuild/linux-loong64@0.14.54": + version "0.14.54" + resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028" + integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw== + +"@eslint/eslintrc@^1.3.1": + version "1.3.1" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz" + integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@fast-csv/format@4.3.5": + version "4.3.5" + resolved "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz" + integrity sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A== + dependencies: + "@types/node" "^14.0.1" + lodash.escaperegexp "^4.1.2" + lodash.isboolean "^3.0.3" + lodash.isequal "^4.5.0" + lodash.isfunction "^3.0.9" + lodash.isnil "^4.0.0" + +"@fast-csv/parse@4.3.6": + version "4.3.6" + resolved "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz" + integrity sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA== + dependencies: + "@types/node" "^14.0.1" + lodash.escaperegexp "^4.1.2" + lodash.groupby "^4.6.0" + lodash.isfunction "^3.0.9" + lodash.isnil "^4.0.0" + lodash.isundefined "^3.0.1" + lodash.uniq "^4.5.0" + +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + version "1.0.2" + resolved "https://registry.npmmirror.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz" + integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@icon-park/svg@^1.4.2": + version "1.4.2" + resolved "https://registry.npmmirror.com/@icon-park/svg/-/svg-1.4.2.tgz" + integrity sha512-1X0DA+1e0R0liYvw+Nb2BQmF1oEo/wS3o/JYkQYifPJXCGYij2vN9sJf/NNhbzDsJWTg4W2bbzZjJvC7Q4w4oQ== + +"@intlify/core-base@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz" + integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA== + dependencies: + "@intlify/devtools-if" "9.2.2" + "@intlify/message-compiler" "9.2.2" + "@intlify/shared" "9.2.2" + "@intlify/vue-devtools" "9.2.2" + +"@intlify/devtools-if@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz" + integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg== + dependencies: + "@intlify/shared" "9.2.2" + +"@intlify/message-compiler@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz" + integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA== + dependencies: + "@intlify/shared" "9.2.2" + source-map "0.6.1" + +"@intlify/shared@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz" + integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q== + +"@intlify/vue-devtools@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz" + integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg== + dependencies: + "@intlify/core-base" "9.2.2" + "@intlify/shared" "9.2.2" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.15" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@popperjs/core@^2.11.5", "@popperjs/core@^2.9.0": + version "2.11.6" + resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz" + integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== + +"@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@simonwep/pickr@~1.8.0": + version "1.8.2" + resolved "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz" + integrity sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA== + dependencies: + core-js "^3.15.1" + nanopop "^2.1.0" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz" + integrity sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg== + +"@types/codemirror@^5.60.5": + version "5.60.5" + resolved "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz" + integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== + dependencies: + "@types/tern" "*" + +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/hast@^2.0.0", "@types/hast@^2.3.4": + version "2.3.4" + resolved "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz" + integrity sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g== + dependencies: + "@types/unist" "*" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/lodash-es@^4.17.6": + version "4.17.6" + resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz" + integrity sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.14.184" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.10": + version "3.0.10" + resolved "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== + dependencies: + "@types/unist" "*" + +"@types/mdurl@^1.0.0": + version "1.0.2" + resolved "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@^14.0.1": + version "14.18.48" + resolved "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz" + integrity sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg== + +"@types/node@^18.7.14": + version "18.7.14" + resolved "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz" + integrity sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA== + +"@types/nprogress@^0.2.0": + version "0.2.0" + resolved "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz" + integrity sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== + +"@types/parse5@^6.0.0": + version "6.0.3" + resolved "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/sortablejs@^1.13.0": + version "1.13.0" + resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz" + integrity sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ== + +"@types/tern@*": + version "0.23.4" + resolved "https://registry.npmmirror.com/@types/tern/-/tern-0.23.4.tgz" + integrity sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg== + dependencies: + "@types/estree" "*" + +"@types/unist@*", "@types/unist@^2.0.0": + version "2.0.6" + resolved "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== + +"@typescript-eslint/eslint-plugin@^5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz" + integrity sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA== + dependencies: + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/type-utils" "5.36.1" + "@typescript-eslint/utils" "5.36.1" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz" + integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A== + dependencies: + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz" + integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w== + dependencies: + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" + +"@typescript-eslint/type-utils@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz" + integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q== + dependencies: + "@typescript-eslint/typescript-estree" "5.36.1" + "@typescript-eslint/utils" "5.36.1" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz" + integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg== + +"@typescript-eslint/typescript-estree@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz" + integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g== + dependencies: + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz" + integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz" + integrity sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ== + dependencies: + "@typescript-eslint/types" "5.36.1" + eslint-visitor-keys "^3.3.0" + +"@vitejs/plugin-legacy@^2.0.1": + version "2.0.1" + resolved "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz" + integrity sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q== + dependencies: + "@babel/standalone" "^7.18.12" + core-js "^3.24.1" + magic-string "^0.26.2" + regenerator-runtime "^0.13.9" + systemjs "^6.12.1" + +"@vitejs/plugin-vue@^3.0.3": + version "3.0.3" + resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz" + integrity sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g== + +"@volar/code-gen@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz" + integrity sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w== + dependencies: + "@volar/source-map" "0.40.5" + +"@volar/source-map@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz" + integrity sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA== + dependencies: + "@vue/reactivity" "3.2.37" + +"@volar/typescript-faster@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/typescript-faster/-/typescript-faster-0.40.5.tgz" + integrity sha512-DfIVkQawbesz+8ghbYS1NnlIQjfMIDsSJY/bumIJk98M/tM/2Fykhiil3GDfTr6ju/fAqDpfF8VF8XpYDWPc7w== + dependencies: + semver "^7.3.7" + +"@volar/vue-language-core@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-0.40.5.tgz" + integrity sha512-4EpMQdLaORWg3EBZtgqzgkNRm1+qvyvCyLbnWHT2SPkUuHObPcbyA3giXbOEnPB0pnQpr2nVTv+tRLWvksXdyA== + dependencies: + "@volar/code-gen" "0.40.5" + "@volar/source-map" "0.40.5" + "@vue/compiler-core" "^3.2.37" + "@vue/compiler-dom" "^3.2.37" + "@vue/compiler-sfc" "^3.2.37" + "@vue/reactivity" "^3.2.37" + "@vue/shared" "^3.2.37" + +"@volar/vue-typescript@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.40.5.tgz" + integrity sha512-6OHJ87e8A3Z0xuWmBg72X5aYbW/EatogB168827j/OL371eiy3dExqa5y2+eJuWYjDiRJOmlHzhUElN+OEQRZQ== + dependencies: + "@volar/code-gen" "0.40.5" + "@volar/typescript-faster" "0.40.5" + "@volar/vue-language-core" "0.40.5" + +"@vue/compiler-core@3.2.38", "@vue/compiler-core@^3.2.37": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.38.tgz" + integrity sha512-/FsvnSu7Z+lkd/8KXMa4yYNUiqQrI22135gfsQYVGuh5tqEgOB0XqrUdb/KnCLa5+TmQLPwvyUnKMyCpu+SX3Q== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.38" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.38", "@vue/compiler-dom@^3.2.37": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.38.tgz" + integrity sha512-zqX4FgUbw56kzHlgYuEEJR8mefFiiyR3u96498+zWPsLeh1WKvgIReoNE+U7gG8bCUdvsrJ0JRmev0Ky6n2O0g== + dependencies: + "@vue/compiler-core" "3.2.38" + "@vue/shared" "3.2.38" + +"@vue/compiler-sfc@3.2.38", "@vue/compiler-sfc@^3.2.37", "@vue/compiler-sfc@^3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.38.tgz" + integrity sha512-KZjrW32KloMYtTcHAFuw3CqsyWc5X6seb8KbkANSWt3Cz9p2qA8c1GJpSkksFP9ABb6an0FLCFl46ZFXx3kKpg== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.38" + "@vue/compiler-dom" "3.2.38" + "@vue/compiler-ssr" "3.2.38" + "@vue/reactivity-transform" "3.2.38" + "@vue/shared" "3.2.38" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.38.tgz" + integrity sha512-bm9jOeyv1H3UskNm4S6IfueKjUNFmi2kRweFIGnqaGkkRePjwEcfCVqyS3roe7HvF4ugsEkhf4+kIvDhip6XzQ== + dependencies: + "@vue/compiler-dom" "3.2.38" + "@vue/shared" "3.2.38" + +"@vue/devtools-api@^6.1.4", "@vue/devtools-api@^6.2.1": + version "6.2.1" + resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz" + integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ== + +"@vue/reactivity-transform@3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.38.tgz" + integrity sha512-3SD3Jmi1yXrDwiNJqQ6fs1x61WsDLqVk4NyKVz78mkaIRh6d3IqtRnptgRfXn+Fzf+m6B1KxBYWq1APj6h4qeA== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.38" + "@vue/shared" "3.2.38" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.37": + version "3.2.37" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz" + integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A== + dependencies: + "@vue/shared" "3.2.37" + +"@vue/reactivity@3.2.38", "@vue/reactivity@^3.2.37": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.38.tgz" + integrity sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw== + dependencies: + "@vue/shared" "3.2.38" + +"@vue/runtime-core@3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.38.tgz" + integrity sha512-kk0qiSiXUU/IKxZw31824rxmFzrLr3TL6ZcbrxWTKivadoKupdlzbQM4SlGo4MU6Zzrqv4fzyUasTU1jDoEnzg== + dependencies: + "@vue/reactivity" "3.2.38" + "@vue/shared" "3.2.38" + +"@vue/runtime-dom@3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.38.tgz" + integrity sha512-4PKAb/ck2TjxdMSzMsnHViOrrwpudk4/A56uZjhzvusoEU9xqa5dygksbzYepdZeB5NqtRw5fRhWIiQlRVK45A== + dependencies: + "@vue/runtime-core" "3.2.38" + "@vue/shared" "3.2.38" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.38": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.38.tgz" + integrity sha512-pg+JanpbOZ5kEfOZzO2bt02YHd+ELhYP8zPeLU1H0e7lg079NtuuSB8fjLdn58c4Ou8UQ6C1/P+528nXnLPAhA== + dependencies: + "@vue/compiler-ssr" "3.2.38" + "@vue/shared" "3.2.38" + +"@vue/shared@3.2.37": + version "3.2.37" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz" + integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw== + +"@vue/shared@3.2.38", "@vue/shared@^3.2.37": + version "3.2.38" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.38.tgz" + integrity sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg== + +"@wecom/jssdk@^1.3.1": + version "1.3.2" + resolved "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz" + integrity sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.5.0, acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +address@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + +agentkeepalive@^3.4.1: + version "3.5.2" + resolved "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz" + integrity sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ali-oss@^6.18.0: + version "6.18.1" + resolved "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz" + integrity sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA== + dependencies: + address "^1.2.2" + agentkeepalive "^3.4.1" + bowser "^1.6.0" + copy-to "^2.0.1" + dateformat "^2.0.0" + debug "^4.3.4" + destroy "^1.0.4" + end-or-error "^1.0.1" + get-ready "^1.0.0" + humanize-ms "^1.2.0" + is-type-of "^1.4.0" + js-base64 "^2.5.2" + jstoxml "^2.0.0" + merge-descriptors "^1.0.1" + mime "^2.4.5" + platform "^1.3.1" + pump "^3.0.0" + sdk-base "^2.0.1" + stream-http "2.8.2" + stream-wormhole "^1.0.4" + urllib "2.41.0" + utility "^1.18.0" + xml2js "^0.6.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ant-design-vue@^3.2.11: + version "3.2.11" + resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz" + integrity sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-vue" "^6.1.0" + "@babel/runtime" "^7.10.5" + "@ctrl/tinycolor" "^3.4.0" + "@simonwep/pickr" "~1.8.0" + array-tree-filter "^2.1.0" + async-validator "^4.0.0" + dayjs "^1.10.5" + dom-align "^1.12.1" + dom-scroll-into-view "^2.0.0" + lodash "^4.17.21" + lodash-es "^4.17.15" + resize-observer-polyfill "^1.5.1" + scroll-into-view-if-needed "^2.2.25" + shallow-equal "^1.0.0" + vue-types "^3.0.0" + warning "^4.0.0" + +any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver@^5.0.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz" + integrity sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.3" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.0.0" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +async-validator@^4.0.0: + version "4.2.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.17: + version "1.6.51" + resolved "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz" + integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bowser@^1.6.0: + version "1.9.4" + resolved "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof-polyfill@~1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz" + integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytemd@^1.17.2: + version "1.17.2" + resolved "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz" + integrity sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ== + dependencies: + "@icon-park/svg" "^1.4.2" + "@popperjs/core" "^2.11.5" + "@types/codemirror" "^5.60.5" + "@types/hast" "^2.3.4" + "@types/lodash-es" "^4.17.6" + "@types/mdast" "^3.0.10" + codemirror-ssr "^0.65.0" + hast-util-sanitize "^4.0.0" + lodash-es "^4.17.21" + rehype-raw "^6.1.1" + rehype-sanitize "^5.0.1" + rehype-stringify "^9.0.3" + remark-parse "^10.0.1" + remark-rehype "^10.1.0" + select-files "^1.0.1" + tippy.js "^6.3.7" + unified "^10.1.2" + unist-util-visit "^4.1.0" + vfile "^5.3.4" + word-count "^0.2.2" + +call-bind@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +cfb@~1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz" + integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== + dependencies: + adler-32 "~1.3.0" + crc-32 "~1.2.0" + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz" + integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@^2.3.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +codemirror-ssr@^0.65.0: + version "0.65.0" + resolved "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz" + integrity sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g== + +codepage@~1.15.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz" + integrity sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg== + +commander@^2.15.1, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +compress-commons@^4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz" + integrity sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-type@^1.0.2: + version "1.0.5" + resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + +core-js@^3.15.1, core-js@^3.24.1: + version "3.25.0" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.25.0.tgz" + integrity sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA== + +core-util-is@^1.0.2, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +countup.js@^2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/countup.js/-/countup.js-2.3.2.tgz" + integrity sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q== + +crc-32@^1.2.0, crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.2" + resolved "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz" + integrity sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +cropperjs@^1.5.12: + version "1.5.12" + resolved "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz" + integrity sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw== + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^2.6.8: + version "2.6.20" + resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz" + integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +danmu.js@^0.5.9: + version "0.5.10" + resolved "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz" + integrity sha512-zLpSd5Yi+fxVVd0GHjrf5lZA45KKpbvc4Q8BbSVO3OdmCBkoB2vlDCGnVn18cnKpTNqi8Soy7AnzUw1YcqtzUA== + dependencies: + event-emitter "^0.3.5" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz" + integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw== + +dayjs@^1.10.5, dayjs@^1.11.5, dayjs@^1.8.34: + version "1.11.5" + resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-user-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz" + integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw== + dependencies: + os-name "~1.0.3" + +define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +digest-header@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz" + integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-align@^1.12.1: + version "1.12.3" + resolved "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz" + integrity sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA== + +dom-scroll-into-view@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz" + integrity sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w== + +downloadjs@1.4.7: + version "1.4.7" + resolved "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz" + integrity sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q== + +draggabilly@^2.2.0: + version "2.4.1" + resolved "https://registry.npmmirror.com/draggabilly/-/draggabilly-2.4.1.tgz" + integrity sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A== + dependencies: + get-size "^2.0.2" + unidragger "^2.4.0" + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz" + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== + dependencies: + readable-stream "^2.0.2" + +echarts-wordcloud@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz" + integrity sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g== + +echarts@^5.3.3: + version "5.3.3" + resolved "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz" + integrity sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw== + dependencies: + tslib "2.3.0" + zrender "5.3.2" + +ee-first@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ele-admin-pro@^1.10.1: + version "1.10.1" + resolved "https://registry.npmmirror.com/ele-admin-pro/-/ele-admin-pro-1.10.1.tgz" + integrity sha512-EiNJcfGGA/4F20cuHlz7bxr2UJ1RdQGM3+MA7dsiNOp7DxLpP3dOo8wgg+MKyMUZUM2dcpp+Dmz94Q5VDpr44Q== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +end-or-error@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz" + integrity sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ== + +engine.io-client@~6.5.1: + version "6.5.1" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.1.tgz" + integrity sha512-hE5wKXH8Ru4L19MbM1GgYV/2Qo54JSMh1rlJbfpa40bEWkCKNo3ol2eOtGmowcr+ysgbI7+SGL+by42Q3pt/Ng== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.1.0" + ws "~8.11.0" + xmlhttprequest-ssl "~2.0.0" + +engine.io-parser@~5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz" + integrity sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.62" + resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +esbuild-android-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be" + integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ== + +esbuild-android-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771" + integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg== + +esbuild-darwin-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25" + integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug== + +esbuild-darwin-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz" + integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== + +esbuild-freebsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d" + integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg== + +esbuild-freebsd-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48" + integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q== + +esbuild-linux-32@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5" + integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw== + +esbuild-linux-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652" + integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg== + +esbuild-linux-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b" + integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig== + +esbuild-linux-arm@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59" + integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw== + +esbuild-linux-mips64le@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34" + integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw== + +esbuild-linux-ppc64le@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e" + integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ== + +esbuild-linux-riscv64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8" + integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg== + +esbuild-linux-s390x@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6" + integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA== + +esbuild-netbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81" + integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w== + +esbuild-openbsd-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b" + integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw== + +esbuild-sunos-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da" + integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw== + +esbuild-windows-32@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31" + integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w== + +esbuild-windows-64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4" + integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ== + +esbuild-windows-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982" + integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg== + +esbuild@^0.14.47: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== + optionalDependencies: + "@esbuild/linux-loong64" "0.14.54" + esbuild-android-64 "0.14.54" + esbuild-android-arm64 "0.14.54" + esbuild-darwin-64 "0.14.54" + esbuild-darwin-arm64 "0.14.54" + esbuild-freebsd-64 "0.14.54" + esbuild-freebsd-arm64 "0.14.54" + esbuild-linux-32 "0.14.54" + esbuild-linux-64 "0.14.54" + esbuild-linux-arm "0.14.54" + esbuild-linux-arm64 "0.14.54" + esbuild-linux-mips64le "0.14.54" + esbuild-linux-ppc64le "0.14.54" + esbuild-linux-riscv64 "0.14.54" + esbuild-linux-s390x "0.14.54" + esbuild-netbsd-64 "0.14.54" + esbuild-openbsd-64 "0.14.54" + esbuild-sunos-64 "0.14.54" + esbuild-windows-32 "0.14.54" + esbuild-windows-64 "0.14.54" + esbuild-windows-arm64 "0.14.54" + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-define-config@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz" + integrity sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.4.0: + version "9.4.0" + resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz" + integrity sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ== + dependencies: + eslint-utils "^3.0.0" + natural-compare "^1.4.0" + nth-check "^2.0.1" + postcss-selector-parser "^6.0.9" + semver "^7.3.5" + vue-eslint-parser "^9.0.1" + xml-name-validator "^4.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.23.0: + version "8.23.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz" + integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== + dependencies: + "@eslint/eslintrc" "^1.3.1" + "@humanwhocodes/config-array" "^0.10.4" + "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" + "@humanwhocodes/module-importer" "^1.0.1" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + globby "^11.1.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.3.1, espree@^9.4.0: + version "9.4.0" + resolved "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@~1.2.2: + version "1.2.5" + resolved "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz" + integrity sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.1, estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ev-emitter@^1.0.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/ev-emitter/-/ev-emitter-1.1.1.tgz" + integrity sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +exceljs@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz" + integrity sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w== + dependencies: + archiver "^5.0.0" + dayjs "^1.8.34" + fast-csv "^4.3.1" + jszip "^3.5.0" + readable-stream "^3.6.0" + saxes "^5.0.1" + tmp "^0.2.0" + unzipper "^0.10.11" + uuid "^8.3.0" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-csv@^4.3.1: + version "4.3.6" + resolved "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz" + integrity sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw== + dependencies: + "@fast-csv/format" "4.3.5" + "@fast-csv/parse" "4.3.6" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.11, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fault@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz" + integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== + dependencies: + format "^0.2.0" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.14.9: + version "1.15.1" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmmirror.com/format/-/format-0.2.2.tgz" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +formstream@^1.1.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz" + integrity sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g== + dependencies: + destroy "^1.0.4" + mime "^2.5.2" + pause-stream "~0.0.11" + +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-5.0.0.tgz" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +generate-source-map@0.0.5: + version "0.0.5" + resolved "https://registry.npmmirror.com/generate-source-map/-/generate-source-map-0.0.5.tgz" + integrity sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg== + dependencies: + esprima "~1.2.2" + source-map "~0.1.34" + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-ready@^1.0.0, get-ready@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz" + integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw== + +get-size@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/get-size/-/get-size-2.0.3.tgz" + integrity sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q== + +github-markdown-css@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz" + integrity sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3, glob@^7.1.4: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.10" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +hast-to-hyperscript@^10.0.0: + version "10.0.1" + resolved "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz" + integrity sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw== + dependencies: + "@types/unist" "^2.0.0" + comma-separated-tokens "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + style-to-object "^0.3.0" + unist-util-is "^5.0.0" + web-namespaces "^2.0.0" + +hast-util-from-parse5@^7.0.0: + version "7.1.0" + resolved "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz" + integrity sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ== + dependencies: + "@types/hast" "^2.0.0" + "@types/parse5" "^6.0.0" + "@types/unist" "^2.0.0" + hastscript "^7.0.0" + property-information "^6.0.0" + vfile "^5.0.0" + vfile-location "^4.0.0" + web-namespaces "^2.0.0" + +hast-util-is-element@^2.0.0: + version "2.1.2" + resolved "https://registry.npmmirror.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz" + integrity sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + +hast-util-parse-selector@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz" + integrity sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-raw@^7.2.0: + version "7.2.2" + resolved "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz" + integrity sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ== + dependencies: + "@types/hast" "^2.0.0" + "@types/parse5" "^6.0.0" + hast-util-from-parse5 "^7.0.0" + hast-util-to-parse5 "^7.0.0" + html-void-elements "^2.0.0" + parse5 "^6.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-sanitize@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz" + integrity sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-to-html@^8.0.0: + version "8.0.3" + resolved "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz" + integrity sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A== + dependencies: + "@types/hast" "^2.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-is-element "^2.0.0" + hast-util-whitespace "^2.0.0" + html-void-elements "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.2" + unist-util-is "^5.0.0" + +hast-util-to-parse5@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz" + integrity sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A== + dependencies: + "@types/hast" "^2.0.0" + "@types/parse5" "^6.0.0" + hast-to-hyperscript "^10.0.0" + property-information "^6.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-text@^3.0.0: + version "3.1.2" + resolved "https://registry.npmmirror.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz" + integrity sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + hast-util-is-element "^2.0.0" + unist-util-find-after "^4.0.0" + +hast-util-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz" + integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== + +hastscript@^7.0.0: + version "7.0.2" + resolved "https://registry.npmmirror.com/hastscript/-/hastscript-7.0.2.tgz" + integrity sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^3.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + +highlight.js@^11.7.0, highlight.js@~11.8.0: + version "11.8.0" + resolved "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz" + integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg== + +html-void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz" + integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + +humanize-ms@^1.2.0, humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@^0.4.15: + version "0.4.24" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-class-hotfix@~0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz" + integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ== + +is-core-module@^2.9.0: + version "2.10.0" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.10.0.tgz" + integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== + dependencies: + has "^1.0.3" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +is-plain-object@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== + +is-type-of@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz" + integrity sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ== + dependencies: + core-util-is "^1.0.2" + is-class-hotfix "~0.0.6" + isstream "~0.1.2" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-base64@^2.5.2: + version "2.6.4" + resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + +js-md5@^0.7.3: + version "0.7.3" + resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz" + integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbarcode@^3.11.5: + version "3.11.5" + resolved "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz" + integrity sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jstoxml@^2.0.0: + version "2.2.9" + resolved "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz" + integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw== + +jszip@^3.5.0: + version "3.10.1" + resolved "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +less@^4.1.3: + version "4.1.3" + resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz" + integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== + +local-pkg@^0.4.2: + version "0.4.2" + resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz" + integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.15, lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" + integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.groupby@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz" + integrity sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isnil@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz" + integrity sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isundefined@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz" + integrity sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest-streak@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz" + integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowlight@^2.0.0: + version "2.9.0" + resolved "https://registry.npmmirror.com/lowlight/-/lowlight-2.9.0.tgz" + integrity sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw== + dependencies: + "@types/hast" "^2.0.0" + fault "^2.0.0" + highlight.js "~11.8.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.26.2: + version "0.26.3" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz" + integrity sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +markdown-table@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz" + integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== + +mdast-util-definitions@^5.0.0: + version "5.1.1" + resolved "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz" + integrity sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-find-and-replace@^2.0.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz" + integrity sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw== + dependencies: + escape-string-regexp "^5.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz" + integrity sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-gfm-autolink-literal@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz" + integrity sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg== + dependencies: + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-find-and-replace "^2.0.0" + micromark-util-character "^1.0.0" + +mdast-util-gfm-footnote@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz" + integrity sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + micromark-util-normalize-identifier "^1.0.0" + +mdast-util-gfm-strikethrough@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz" + integrity sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-table@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz" + integrity sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w== + dependencies: + markdown-table "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-task-list-item@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz" + integrity sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz" + integrity sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ== + dependencies: + mdast-util-from-markdown "^1.0.0" + mdast-util-gfm-autolink-literal "^1.0.0" + mdast-util-gfm-footnote "^1.0.0" + mdast-util-gfm-strikethrough "^1.0.0" + mdast-util-gfm-table "^1.0.0" + mdast-util-gfm-task-list-item "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-to-hast@^12.1.0: + version "12.2.1" + resolved "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.1.tgz" + integrity sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + "@types/mdurl" "^1.0.0" + mdast-util-definitions "^5.0.0" + mdurl "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + trim-lines "^3.0.0" + unist-builder "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz" + integrity sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz" + integrity sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +merge-descriptors@^1.0.1: + version "1.0.3" + resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.0.6" + resolved "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz" + integrity sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz" + integrity sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-footnote@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz" + integrity sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-strikethrough@^1.0.0: + version "1.0.4" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz" + integrity sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-table@^1.0.0: + version "1.0.5" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz" + integrity sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-tagfilter@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz" + integrity sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-gfm-task-list-item@^1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz" + integrity sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz" + integrity sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA== + dependencies: + micromark-extension-gfm-autolink-literal "^1.0.0" + micromark-extension-gfm-footnote "^1.0.0" + micromark-extension-gfm-strikethrough "^1.0.0" + micromark-extension-gfm-table "^1.0.0" + micromark-extension-gfm-tagfilter "^1.0.0" + micromark-extension-gfm-task-list-item "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz" + integrity sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz" + integrity sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz" + integrity sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz" + integrity sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz" + integrity sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz" + integrity sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz" + integrity sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz" + integrity sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz" + integrity sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz" + integrity sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz" + integrity sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz" + integrity sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA== + +micromark-util-html-tag-name@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz" + integrity sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA== + +micromark-util-normalize-identifier@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz" + integrity sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz" + integrity sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz" + integrity sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz" + integrity sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz" + integrity sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz" + integrity sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w== + +micromark@^3.0.0: + version "3.0.10" + resolved "https://registry.npmmirror.com/micromark/-/micromark-3.0.10.tgz" + integrity sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.5, mime@^2.5.2: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0: + version "5.1.6" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + +"mkdirp@>=0.5 0", mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2, ms@^2.0.0, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanopop@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz" + integrity sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz" + integrity sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +os-name@~1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz" + integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew== + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + +osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz" + integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A== + dependencies: + minimist "^1.1.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@~0.0.11: + version "0.0.11" + resolved "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinia@^2.0.21: + version "2.0.21" + resolved "https://registry.npmmirror.com/pinia/-/pinia-2.0.21.tgz" + integrity sha512-6ol04PtL29O0Z6JHI47O3JUSoyOJ7Og0rstXrHVMZSP4zAldsQBXJCNF0i/H7m8vp/Hjd/CSmuPl7C5QAwpeWQ== + dependencies: + "@vue/devtools-api" "^6.2.1" + vue-demi "*" + +platform@^1.3.1: + version "1.3.6" + resolved "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss@^8.1.10, postcss@^8.4.16: + version "8.4.16" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.16.tgz" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +property-information@^6.0.0: + version "6.1.1" + resolved "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@^6.4.0: + version "6.11.2" + resolved "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-glob@^1.0.0: + version "1.1.3" + resolved "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: + version "0.13.9" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +rehype-highlight@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz" + integrity sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw== + dependencies: + "@types/hast" "^2.0.0" + hast-util-to-text "^3.0.0" + lowlight "^2.0.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + +rehype-raw@^6.1.1: + version "6.1.1" + resolved "https://registry.npmmirror.com/rehype-raw/-/rehype-raw-6.1.1.tgz" + integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ== + dependencies: + "@types/hast" "^2.0.0" + hast-util-raw "^7.2.0" + unified "^10.0.0" + +rehype-sanitize@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz" + integrity sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A== + dependencies: + "@types/hast" "^2.0.0" + hast-util-sanitize "^4.0.0" + unified "^10.0.0" + +rehype-stringify@^9.0.3: + version "9.0.3" + resolved "https://registry.npmmirror.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz" + integrity sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw== + dependencies: + "@types/hast" "^2.0.0" + hast-util-to-html "^8.0.0" + unified "^10.0.0" + +remark-gfm@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz" + integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-gfm "^2.0.0" + micromark-extension-gfm "^2.0.0" + unified "^10.0.0" + +remark-parse@^10.0.1: + version "10.0.1" + resolved "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.1.tgz" + integrity sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.1.0: + version "10.1.0" + resolved "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-10.1.0.tgz" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + +resize-detector@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz" + integrity sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@2: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +"rollup@>=2.75.6 <2.77.0 || ~2.77.0": + version "2.77.3" + resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz" + integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scroll-into-view-if-needed@^2.2.25: + version "2.2.29" + resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz" + integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg== + dependencies: + compute-scroll-into-view "^1.0.17" + +sdk-base@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz" + integrity sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q== + dependencies: + get-ready "~1.0.0" + +select-files@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz" + integrity sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ== + +semver@^5.0.1: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.3.5, semver@^7.3.6, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +setimmediate@^1.0.5, setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shallow-equal@^1.0.0: + version "1.2.1" + resolved "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +socket.io-client@^4.7.1: + version "4.7.1" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz" + integrity sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.5.1" + socket.io-parser "~4.2.4" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +sortablejs@1.14.0: + version "1.14.0" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz" + integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== + +sortablejs@^1.15.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz" + integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.1.34: + version "0.1.43" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.1.43.tgz" + integrity sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ== + dependencies: + amdefine ">=0.0.4" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz" + integrity sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw== + +ssf@~0.11.2: + version "0.11.2" + resolved "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz" + integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g== + dependencies: + frac "~1.1.2" + +statuses@^1.3.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-http@2.8.2: + version "2.8.2" + resolved "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz" + integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-wormhole@^1.0.4: + version "1.1.0" + resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz" + integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^4.0.2: + version "4.0.3" + resolved "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz" + integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +systemjs@^6.12.1: + version "6.12.6" + resolved "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz" + integrity sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw== + +tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +terser@^5.15.0: + version "5.15.0" + resolved "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz" + integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through@~2.3: + version "2.3.8" + resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinymce@^5.10.5: + version "5.10.9" + resolved "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.9.tgz#1dfacb3231c71a688d90ff44a0b3f2e91b3b9edf" + integrity sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg== + +tippy.js@^6.3.7: + version "6.3.7" + resolved "https://registry.npmmirror.com/tippy.js/-/tippy.js-6.3.7.tgz" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== + dependencies: + "@popperjs/core" "^2.9.0" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz" + integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + +tslib@2.3.0, tslib@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typescript@^4.8.2: + version "4.8.2" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== + +unescape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz" + integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== + dependencies: + extend-shallow "^2.0.1" + +unidragger@^2.4.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/unidragger/-/unidragger-2.4.0.tgz" + integrity sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w== + dependencies: + unipointer "^2.4.0" + +unified@^10.0.0, unified@^10.1.2: + version "10.1.2" + resolved "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unipointer@^2.4.0: + version "2.4.0" + resolved "https://registry.npmmirror.com/unipointer/-/unipointer-2.4.0.tgz" + integrity sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw== + dependencies: + ev-emitter "^1.0.1" + +unist-builder@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/unist-builder/-/unist-builder-3.0.0.tgz" + integrity sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-find-after@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz" + integrity sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-generated@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz" + integrity sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw== + +unist-util-is@^5.0.0: + version "5.1.1" + resolved "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.1.1.tgz" + integrity sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ== + +unist-util-position@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-4.0.3.tgz" + integrity sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz" + integrity sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz" + integrity sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0, unist-util-visit@^4.1.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz" + integrity sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unplugin-vue-components@^0.22.4: + version "0.22.4" + resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz" + integrity sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ== + dependencies: + "@antfu/utils" "^0.5.2" + "@rollup/pluginutils" "^4.2.1" + chokidar "^3.5.3" + debug "^4.3.4" + fast-glob "^3.2.11" + local-pkg "^0.4.2" + magic-string "^0.26.2" + minimatch "^5.1.0" + resolve "^1.22.1" + unplugin "^0.9.0" + +unplugin@^0.9.0: + version "0.9.5" + resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz" + integrity sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg== + dependencies: + acorn "^8.8.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.4" + +unzipper@^0.10.11: + version "0.10.14" + resolved "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz" + integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + graceful-fs "^4.2.2" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urllib@2.41.0: + version "2.41.0" + resolved "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz" + integrity sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g== + dependencies: + any-promise "^1.3.0" + content-type "^1.0.2" + debug "^2.6.9" + default-user-agent "^1.0.0" + digest-header "^1.0.0" + ee-first "~1.1.1" + formstream "^1.1.0" + humanize-ms "^1.2.0" + iconv-lite "^0.4.15" + ip "^1.1.5" + pump "^3.0.0" + qs "^6.4.0" + statuses "^1.3.1" + utility "^1.16.1" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility@^1.16.1, utility@^1.18.0: + version "1.18.0" + resolved "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz" + integrity sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA== + dependencies: + copy-to "^2.0.1" + escape-html "^1.0.3" + mkdirp "^0.5.1" + mz "^2.7.0" + unescape "^1.0.1" + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + +vfile-location@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/vfile-location/-/vfile-location-4.0.1.tgz" + integrity sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw== + dependencies: + "@types/unist" "^2.0.0" + vfile "^5.0.0" + +vfile-message@^3.0.0: + version "3.1.2" + resolved "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.2.tgz" + integrity sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0, vfile@^5.3.4: + version "5.3.4" + resolved "https://registry.npmmirror.com/vfile/-/vfile-5.3.4.tgz" + integrity sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +vite-plugin-compression@^0.5.1: + version "0.5.1" + resolved "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz" + integrity sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg== + dependencies: + chalk "^4.1.2" + debug "^4.3.3" + fs-extra "^10.0.0" + +vite@^3.0.9: + version "3.0.9" + resolved "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz" + integrity sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw== + dependencies: + esbuild "^0.14.47" + postcss "^8.4.16" + resolve "^1.22.1" + rollup ">=2.75.6 <2.77.0 || ~2.77.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@*, vue-demi@^0.13.2: + version "0.13.11" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz" + integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + +vue-echarts@^6.2.3: + version "6.2.3" + resolved "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz" + integrity sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w== + dependencies: + resize-detector "^0.3.0" + vue-demi "^0.13.2" + +vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.0.3: + version "9.0.3" + resolved "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz" + integrity sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og== + dependencies: + debug "^4.3.4" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.3.1" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.6" + +vue-i18n@^9.2.2: + version "9.2.2" + resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz" + integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ== + dependencies: + "@intlify/core-base" "9.2.2" + "@intlify/shared" "9.2.2" + "@intlify/vue-devtools" "9.2.2" + "@vue/devtools-api" "^6.2.1" + +vue-router@^4.1.5: + version "4.1.5" + resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.5.tgz" + integrity sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ== + dependencies: + "@vue/devtools-api" "^6.1.4" + +vue-tsc@^0.40.5: + version "0.40.5" + resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz" + integrity sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA== + dependencies: + "@volar/vue-language-core" "0.40.5" + "@volar/vue-typescript" "0.40.5" + +vue-types@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz" + integrity sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw== + dependencies: + is-plain-object "3.0.1" + +vue@3.2.38: + version "3.2.38" + resolved "https://registry.npmmirror.com/vue/-/vue-3.2.38.tgz" + integrity sha512-hHrScEFSmDAWL0cwO4B6WO7D3sALZPbfuThDsGBebthrNlDxdJZpGR3WB87VbjpPh96mep1+KzukYEhpHDFa8Q== + dependencies: + "@vue/compiler-dom" "3.2.38" + "@vue/compiler-sfc" "3.2.38" + "@vue/runtime-dom" "3.2.38" + "@vue/server-renderer" "3.2.38" + "@vue/shared" "3.2.38" + +vuedraggable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz" + integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww== + dependencies: + sortablejs "1.14.0" + +warning@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.4.4: + version "0.4.4" + resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz" + integrity sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz" + integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw== + dependencies: + semver "^5.0.1" + +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word-count@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/word-count/-/word-count-0.2.2.tgz" + integrity sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA== + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/word/-/word-0.3.0.tgz" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + +xgplayer-subtitles@^1.0.19: + version "1.0.22" + resolved "https://registry.npmmirror.com/xgplayer-subtitles/-/xgplayer-subtitles-1.0.22.tgz" + integrity sha512-+m1fo+FFynL+2ymO4UQBUSnJAz3WuIthpJFCrKBjd+ukcLRoy3vTcsylXEOo5AZN1xT28fpHmxvZQKEIEYA+6w== + dependencies: + eventemitter3 "^4.0.7" + generate-source-map "0.0.5" + +xgplayer@^2.31.7: + version "2.31.7" + resolved "https://registry.npmmirror.com/xgplayer/-/xgplayer-2.31.7.tgz" + integrity sha512-Wksoj/+BQgsDD7hVsd0d8jICHWWL7SGV6c6V01kH3LfLS6JgwVKyNnr4rRHZFFztlr/kOgBnqPqlV3Fiefmviw== + dependencies: + chalk "^2.3.2" + commander "^2.15.1" + danmu.js "^0.5.9" + downloadjs "1.4.7" + draggabilly "^2.2.0" + event-emitter "^0.3.5" + fs-extra "^5.0.0" + xgplayer-subtitles "^1.0.19" + +xlsx@^0.18.5: + version "0.18.5" + resolved "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz" + integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== + dependencies: + adler-32 "~1.3.0" + cfb "~1.2.1" + codepage "~1.15.0" + crc-32 "~1.2.1" + ssf "~0.11.2" + wmf "~1.0.1" + word "~0.3.0" + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zip-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz" + integrity sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A== + dependencies: + archiver-utils "^2.1.0" + compress-commons "^4.1.0" + readable-stream "^3.6.0" + +zrender@5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz" + integrity sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w== + dependencies: + tslib "2.3.0" + +zwitch@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz" + integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==